From: Junio C Hamano Date: Thu, 11 Feb 2010 20:48:08 GMT Subject: Re: [PATCH v2 2/2] git-imap-send: Convert LF to CRLF before storing patch to draft box Message-ID: <7viqa31otz.fsf@alter.siamese.dyndns.org> In-Reply-To: <1265899135-11488-2-git-send-email-mitake@dcl.info.waseda.ac.jp> Hitoshi Mitake 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 > Cc: Jakub Narebski > Cc: Linus Torvalds > Cc: Jeff King > Signed-off-by: Hitoshi Mitake > --- > 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?