-2009-06-25 21:46 +0200 Rocco Rutte <pdmef@gmx.net> (c5d0252e8f72)
+2009-06-26 20:27 +0200 Rocco Rutte <pdmef@gmx.net> (156e6d6e34fc)
- * rfc3676.c: Fix f=f corner case with DelSp=yes abuse
+ * doc/manual.xml.head: Manual: try to explain that and why
+ copiousoutput should come last
-2009-06-25 17:31 +0200 Rocco Rutte <pdmef@gmx.net> (5f590adfdf1a)
+ * po/de.po: Update German translation
- * ChangeLog, sendlib.c: header folding: treat From_ specially, never
- wrap on sending side
+2009-06-25 21:46 +0200 Rocco Rutte <pdmef@gmx.net> (c5d0252e8f72)
-2009-06-25 14:36 +0200 Rocco Rutte <pdmef@gmx.net> (e0ec1856e3f3)
+ * rfc3676.c: Fix f=f corner case with DelSp=yes abuse
- * sendlib.c: Add Date: header to postponed messages
+ * sendlib.c: header folding: treat From_ specially, never wrap on
+ sending side
-2009-06-25 14:29 +0200 Rocco Rutte <pdmef@gmx.net> (64402a72e968)
+ * sendlib.c: Add Date: header to postponed messages
- * ChangeLog, sendlib.c: Only add Status: header (fcc/postpone) when
+ * sendlib.c: Only add Status: header (fcc/postpone) when
saving to mbox/mmdf
-2009-06-25 14:29 +0200 Rocco Rutte <pdmef@gmx.net> (bd0828adede8)
-
* compose.c: Treat messages written with <write-fcc> as fcc, not
postponed.
2009-06-23 10:13 -0700 Vincent Lefevre <vincent@vinc17.org> (bc2463863c15)
- * ChangeLog, po/fr.po: Updated French translation.
+ * po/fr.po: Updated French translation.
2009-06-23 16:56 +0200 Rocco Rutte <pdmef@gmx.net> (d152033cf967)
#define IMAP_CMD_PASS (1<<1)
#define IMAP_CMD_QUEUE (1<<2)
+/* length of "DD-MMM-YYYY HH:MM:SS +ZZzz" (null-terminated) */
+#define IMAP_DATELEN 27
+
enum
{
IMAP_FATAL = 1,
int imap_mxcmp (const char* mx1, const char* mx2);
char* imap_next_word (char* s);
time_t imap_parse_date (char* s);
+void imap_make_date (char* buf, time_t timestamp);
void imap_qualify_path (char *dest, size_t len, IMAP_MBOX *mx, char* path);
void imap_quote_string (char* dest, size_t slen, const char* src);
void imap_unquote_string (char* s);
char buf[LONG_STRING];
char mbox[LONG_STRING];
char mailbox[LONG_STRING];
+ char internaldate[IMAP_DATELEN];
size_t len;
progress_t progressbar;
size_t sent;
M_PROGRESS_SIZE, NetInc, len);
imap_munge_mbox_name (mbox, sizeof (mbox), mailbox);
- snprintf (buf, sizeof (buf), "APPEND %s (%s%s%s%s%s) {%lu}", mbox,
+ imap_make_date (internaldate, msg->received);
+ snprintf (buf, sizeof (buf), "APPEND %s (%s%s%s%s%s) \"%s\" {%lu}", mbox,
msg->flags.read ? "\\Seen" : "",
msg->flags.read && (msg->flags.replied || msg->flags.flagged) ? " " : "",
msg->flags.replied ? "\\Answered" : "",
msg->flags.replied && msg->flags.flagged ? " " : "",
msg->flags.flagged ? "\\Flagged" : "",
+ internaldate,
(unsigned long) len);
imap_cmd_start (idata, buf);
return (mutt_mktime (&t, 0) + tz);
}
+/* format date in IMAP style: DD-MMM-YYYY HH:MM:SS +ZZzz.
+ * Caller should provide a buffer of IMAP_DATELEN bytes */
+void imap_make_date (char *buf, time_t timestamp)
+{
+ struct tm* tm = localtime (×tamp);
+ time_t tz = mutt_local_tz (timestamp);
+
+ tz /= 60;
+
+ snprintf (buf, IMAP_DATELEN, "%02d-%s-%d %02d:%02d:%02d %+03d%02d",
+ tm->tm_mday, Months[tm->tm_mon], tm->tm_year + 1900,
+ tm->tm_hour, tm->tm_min, tm->tm_sec,
+ (int) tz / 60, (int) abs (tz) % 60);
+}
+
/* imap_qualify_path: make an absolute IMAP folder target, given IMAP_MBOX
* and relative path. */
void imap_qualify_path (char *dest, size_t len, IMAP_MBOX *mx, char* path)