Merge branch 'hm/maint-imap-send-crlf' into maint-1.6.6
* hm/maint-imap-send-crlf: git-imap-send: Convert LF to CRLF before storing patch to draft box
This commit is contained in:
commit
47b333f759
40
imap-send.c
40
imap-send.c
@ -91,7 +91,6 @@ struct msg_data {
|
||||
char *data;
|
||||
int len;
|
||||
unsigned char flags;
|
||||
unsigned int crlf:1;
|
||||
};
|
||||
|
||||
static const char imap_send_usage[] = "git imap-send < <mbox>";
|
||||
@ -1166,6 +1165,44 @@ 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;
|
||||
|
||||
if (msg->data[0] == '\n')
|
||||
lfnum++;
|
||||
for (i = 1; i < msg->len; i++) {
|
||||
if (msg->data[i - 1] != '\r' && msg->data[i] == '\n')
|
||||
lfnum++;
|
||||
}
|
||||
|
||||
new = xmalloc(msg->len + lfnum);
|
||||
if (msg->data[0] == '\n') {
|
||||
new[0] = '\r';
|
||||
new[1] = '\n';
|
||||
i = 1;
|
||||
j = 2;
|
||||
} else {
|
||||
new[0] = msg->data[0];
|
||||
i = 1;
|
||||
j = 1;
|
||||
}
|
||||
for ( ; i < msg->len; i++) {
|
||||
if (msg->data[i] != '\n') {
|
||||
new[j++] = msg->data[i];
|
||||
continue;
|
||||
}
|
||||
if (msg->data[i - 1] != '\r')
|
||||
new[j++] = '\r';
|
||||
/* otherwise it already had CR before */
|
||||
new[j++] = '\n';
|
||||
}
|
||||
msg->len += lfnum;
|
||||
free(msg->data);
|
||||
msg->data = new;
|
||||
}
|
||||
|
||||
static int imap_store_msg(struct store *gctx, struct msg_data *data)
|
||||
{
|
||||
struct imap_store *ctx = (struct imap_store *)gctx;
|
||||
@ -1175,6 +1212,7 @@ static int imap_store_msg(struct store *gctx, struct msg_data *data)
|
||||
int ret, d;
|
||||
char flagstr[128];
|
||||
|
||||
lf_to_crlf(data);
|
||||
memset(&cb, 0, sizeof(cb));
|
||||
|
||||
cb.dlen = data->len;
|
||||
|
Loading…
Reference in New Issue
Block a user