From 1f3502bac79f1df54e14addda65318382df349bc Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Fri, 1 Jan 2010 13:49:52 +0330 Subject: [PATCH] mbox: mix writing when stat hdr exists mail_write() --- mbox.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/mbox.c b/mbox.c index c18c4da..3778f54 100644 --- a/mbox.c +++ b/mbox.c @@ -204,21 +204,20 @@ void mail_write(struct mail *mail, int fd) if (mail->stat & STAT_NEW) *s++ = 'N'; *s++ = '\n'; - if (!mail->stat_hdr) { - xwrite(fd, mail->head, mail->body - mail->head); - xwrite(fd, stat, s - stat); - xwrite(fd, mail->body, mail->body_len); - return; - } if (!mail_changed(mail)) { xwrite(fd, mail->head, mail->len); } else { - char *hdr_end = strchr(mail->stat_hdr, '\n'); - xwrite(fd, mail->head, mail->stat_hdr - mail->head); + char *hdr_beg = mail->body; + char *hdr_end = mail->body; + if (mail->stat_hdr) { + char *nl = strchr(mail->stat_hdr, '\n'); + hdr_beg = mail->stat_hdr; + hdr_end = nl ? nl + 1 : mail->body; + } + xwrite(fd, mail->head, hdr_beg - mail->head); xwrite(fd, stat, s - stat); if (hdr_end) - xwrite(fd, hdr_end + 1, - mail->head + mail->len - hdr_end - 1); + xwrite(fd, hdr_end, mail->head + mail->len - hdr_end); } } -- 2.11.4.GIT