Re: [PATCH v2 2/2] git-imap-send: Convert LF to CRLF before storing patch to draft box

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hitoshi Mitake <mitake@xxxxxxxxxxxxxxxxxxxxx> writes:

> According to RFC of IMAP, all messages must not have "bare newlines ('\n')".
> '\n' should be converted to "\r\n" before storing messages to IMAP's mailbox.
> This patch implements the converting function to git-imap-send.
>
> Cc: Erik Faye-Lund <kusmabite@xxxxxxxxxxxxxx>
> Cc: Jakub Narebski <jnareb@xxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Jeff King <peff@xxxxxxxx>
> Signed-off-by: Hitoshi Mitake <mitake@xxxxxxxxxxxxxxxxxxxxx>
> ---
>  imap-send.c |   25 +++++++++++++++++++++++++
>  1 files changed, 25 insertions(+), 0 deletions(-)
>
> diff --git a/imap-send.c b/imap-send.c
> index dcd8a2a..dbc72ca 100644
> --- a/imap-send.c
> +++ b/imap-send.c
> @@ -1279,6 +1279,30 @@ static int imap_make_flags(int flags, char *buf)
>  	return d;
>  }
>  
> +static void lf_to_crlf(struct msg_data *msg)
> +{
> +	char *new;
> +	int i, j, lfnum = 0;
> +
> +	for (i = 0; i < msg->len; i++) {
> +		if (msg->data[i] == '\n')
> +			lfnum++;
> +	}
> +	new = xcalloc(msg->len + lfnum, sizeof(char));
> +	for (i = 0, j = 0; i < msg->len; i++) {
> +		if (msg->data[i] != '\n') {
> +			new[j++] = msg->data[i];
> +			continue;
> +		}
> +		new[j++] = '\r';
> +		new[j++] = '\n';
> +	}
> +	msg->len += lfnum;
> +	free(msg->data);
> +	msg->data = new;
> +	msg->crlf = 1;
> +}

Thanks.

Two questions:

 - "msg->crlf" -- what is it used for?  Do we need to maintain it?

 - Can the incoming payload already be CRLF terminated?  If so, do we want
   to convert it into CRCRLF?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]