summaryrefslogtreecommitdiff
path: root/imap4d
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2007-07-09 17:41:02 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2007-07-09 17:41:02 +0000
commitc8bb4b9413f72f2e9c5f81b5f1674c9341ed369f (patch)
tree74770120ab2da93e9432f04d90eab006c8bd534d /imap4d
parent00668ac3d890df067217835b0ebb127b60902099 (diff)
downloadmailutils-c8bb4b9413f72f2e9c5f81b5f1674c9341ed369f.tar.gz
mailutils-c8bb4b9413f72f2e9c5f81b5f1674c9341ed369f.tar.bz2
Rewrite using new envelope accessors
Diffstat (limited to 'imap4d')
-rw-r--r--imap4d/append.c18
-rw-r--r--imap4d/fetch.c23
-rw-r--r--imap4d/search.c27
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);
}

Return to:

Send suggestions and report system problems to the System administrator.