Subject: Re: [PATCH 1/2] imap-send.c: implements the GIT_CURL_DEBUG environment variable

From: Torsten Bögershausen <[email-masked]>
Date: Fri, 1 Apr 2016 13:44:28 +0200

On 01.04.16 12:44, Elia Pinto wrote:
> Implements the GIT_CURL_DEBUG environment variable to allow a greater
> degree of detail of GIT_CURL_VERBOSE, in particular the complete
> transport header and all the data payload exchanged.
> It might be useful if a particular situation could require a more
> thorough debugging analysis.
> 
> Signed-off-by: Elia Pinto <[email-masked]>
> ---
>  imap-send.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 97 insertions(+), 2 deletions(-)
> 
> diff --git a/imap-send.c b/imap-send.c
> index 4d3b773..cf79e7f 100644
> --- a/imap-send.c
> +++ b/imap-send.c
> @@ -1395,6 +1395,96 @@ static int append_msgs_to_imap(struct imap_server_conf *server,
>  }
>  
>  #ifdef USE_CURL_FOR_IMAP_SEND
> +
> +static
> +void curl_dump(const char *text,
> +	  FILE * stream, unsigned char *ptr, size_t size, char nohex)
Style: FILE *stream
> +{
> +	size_t i;
> +	size_t c;
c is typically a character.
'j' may be better, unless you find a longer,
and more descriptive name.

> +
> +	unsigned int width = 0x10;
> +
> +	if (nohex)
> +		/* without the hex output, we can fit more on screen */
> +		width = 0x40;
> +
> +	fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
> +		text, (long)size, (long)size);
> +
> +	for (i = 0; i < size; i += width) {
> +
> +		fprintf(stream, "%4.4lx: ", (long)i);
> +
> +		if (!nohex) {
> +			/* hex not disabled, show it */
> +			for (c = 0; c < width; c++)
> +				if (i + c < size)
> +					fprintf(stream, "%02x ", ptr[i + c]);
> +				else
> +					fputs("   ", stream);
> +		}
> +
> +		for (c = 0; (c < width) && (i + c < size); c++) {
> +			/* check for 0D0A; if found, skip past and start a new line of output */
Should we write '\r' and '\n' instead for hex codes ?
and CRLF instead of 0D0A ? (Yes the RFC use hexcodes, but we write readable C-code)