diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-07-09 17:41:02 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-07-09 17:41:02 +0000 |
commit | c8bb4b9413f72f2e9c5f81b5f1674c9341ed369f (patch) | |
tree | 74770120ab2da93e9432f04d90eab006c8bd534d /imap4d | |
parent | 00668ac3d890df067217835b0ebb127b60902099 (diff) | |
download | mailutils-c8bb4b9413f72f2e9c5f81b5f1674c9341ed369f.tar.gz mailutils-c8bb4b9413f72f2e9c5f81b5f1674c9341ed369f.tar.bz2 |
Rewrite using new envelope accessors
Diffstat (limited to 'imap4d')
-rw-r--r-- | imap4d/append.c | 18 | ||||
-rw-r--r-- | imap4d/fetch.c | 23 | ||||
-rw-r--r-- | imap4d/search.c | 27 |
3 files changed, 38 insertions, 30 deletions
diff --git a/imap4d/append.c b/imap4d/append.c index a5ba8c6ad..fc62093bf 100644 --- a/imap4d/append.c +++ b/imap4d/append.c @@ -65,16 +65,25 @@ static int _append_date (mu_envelope_t envelope, char *buf, size_t len, size_t *pnwrite) { mu_message_t msg = mu_envelope_get_owner (envelope); - struct tm **tm = mu_message_get_owner (msg); - - mu_strftime (buf, len, "%a %b %d %H:%M:%S %Y", *tm); + size_t size; + if (!buf) + size = MU_ENVELOPE_DATE_LENGTH; + else + { + struct tm **tm = mu_message_get_owner (msg); + size = mu_strftime (buf, len, "%a %b %d %H:%M:%S %Y", *tm); + } + if (pnwrite) + *pnwrite = size; return 0; } static int _append_sender (mu_envelope_t envelope, char *buf, size_t len, size_t *pnwrite) { - strncpy (buf, "GNU-imap4d", len); + size_t n = mu_cpystr (buf, "GNU-imap4d", len); + if (pnwrite) + *pnwrite = n; return 0; } @@ -139,4 +148,3 @@ imap4d_append0 (mu_mailbox_t mbox, int flags, char *text) } - diff --git a/imap4d/fetch.c b/imap4d/fetch.c index 62787fd9e..655fa7ae5 100644 --- a/imap4d/fetch.c +++ b/imap4d/fetch.c @@ -349,27 +349,24 @@ fetch_flags (struct fetch_command *command, char **arg) static int fetch_internaldate (struct fetch_command *command, char **arg MU_ARG_UNUSED) { - char date[128]; + const char *date; mu_envelope_t env = NULL; struct tm tm, *tmp = NULL; mu_timezone tz; + char datebuf[sizeof ("13-Jul-2002 00:00:00")]; mu_message_get_envelope (command->msg, &env); - date[0] = '\0'; - if (mu_envelope_date (env, date, sizeof (date), NULL) == 0) - { - char *p = date; - if (mu_parse_ctime_date_time ((const char **) &p, &tm, &tz) == 0) - tmp = &tm; - } - if (!tmp) + if (mu_envelope_sget_date (env, &date) == 0 + && mu_parse_ctime_date_time (&date, &tm, &tz) == 0) + tmp = &tm; + else { - time_t t = time(NULL); - tmp = localtime(&t); + time_t t = time (NULL); + tmp = localtime (&t); } - mu_strftime (date, sizeof (date), "%d-%b-%Y %H:%M:%S", tmp); + mu_strftime (datebuf, sizeof (datebuf), "%d-%b-%Y %H:%M:%S", tmp); util_send ("%s", command->name); - util_send (" \"%s +0000\"", date); + util_send (" \"%s +0000\"", datebuf); return RESP_OK; } diff --git a/imap4d/search.c b/imap4d/search.c index 76782710d..48375a4d3 100644 --- a/imap4d/search.c +++ b/imap4d/search.c @@ -790,12 +790,13 @@ cond_before (struct parsebuf *pb) { time_t t = (time_t)_search_arg (pb); time_t mesg_time; - char buffer[512]; + const char *date; mu_envelope_t env; mu_message_get_envelope (pb->msg, &env); - mu_envelope_date (env, buffer, sizeof (buffer), NULL); - util_parse_ctime_date (buffer, &mesg_time); + if (mu_envelope_sget_date (env, &date)) + return 0; + util_parse_ctime_date (date, &mesg_time); _search_push (pb, mesg_time < t); } @@ -816,12 +817,12 @@ cond_from (struct parsebuf *pb) { char *s = _search_arg (pb); mu_envelope_t env; - char buffer[512]; + const char *from; int rc = 0; mu_message_get_envelope (pb->msg, &env); - if (mu_envelope_sender (env, buffer, sizeof (buffer), NULL) == 0) - rc = util_strcasestr (buffer, s) != NULL; + if (mu_envelope_sget_sender (env, &from) == 0) + rc = util_strcasestr (from, s) != NULL; _search_push (pb, _scan_header (pb, "from", s)); } @@ -859,12 +860,13 @@ cond_on (struct parsebuf *pb) { time_t t = (time_t)_search_arg (pb); time_t mesg_time; - char buffer[512]; + const char *date; mu_envelope_t env; mu_message_get_envelope (pb->msg, &env); - mu_envelope_date (env, buffer, sizeof (buffer), NULL); - util_parse_ctime_date (buffer, &mesg_time); + if (mu_envelope_sget_date (env, &date)) + return 0; + util_parse_ctime_date (date, &mesg_time); _search_push (pb, t <= mesg_time && mesg_time <= t + 86400); } @@ -903,12 +905,13 @@ cond_since (struct parsebuf *pb) { time_t t = (time_t)_search_arg (pb); time_t mesg_time; - char buffer[512]; + const char *date; mu_envelope_t env; mu_message_get_envelope (pb->msg, &env); - mu_envelope_date (env, buffer, sizeof (buffer), NULL); - util_parse_ctime_date (buffer, &mesg_time); + if (mu_envelope_sget_date (env, &date)) + return 0; + util_parse_ctime_date (date, &mesg_time); _search_push (pb, mesg_time >= t); } |