diff options
-rw-r--r-- | camel/ChangeLog | 16 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-utils.c | 43 |
2 files changed, 37 insertions, 22 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index c744399186..4809e2b277 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,19 @@ +2000-09-26 Jeffrey Stedfast <fejj@helixcode.com> + + * providers/imap/camel-imap-folder.c + (imap_get_message_count_internal): Quote the folder name as it may + contain spaces. + (imap_get_subfolder_info_internal): Same. + + * providers/imap/camel-imap-utils.c (imap_parse_list_response): Do + proper unquoting for folder names. + (func_get_current_date): Implemented. + + * providers/imap/camel-imap-store.c + (imap_folder_exists): Quote the folder name as it may have spaces. + (imap_create): Same. + (check_current_folder): Same. + 2000-09-22 Dan Winship <danw@helixcode.com> * providers/imap/camel-imap-folder.c diff --git a/camel/providers/imap/camel-imap-utils.c b/camel/providers/imap/camel-imap-utils.c index 925ae13891..bb110f1f90 100644 --- a/camel/providers/imap/camel-imap-utils.c +++ b/camel/providers/imap/camel-imap-utils.c @@ -111,7 +111,7 @@ func_and (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) GList **list = data; ESExpResult *r; - fprintf (stderr, "in AND func (argc = %d)\n", argc); + d(fprintf (stderr, "in AND func (argc = %d)\n", argc)); if (argc > 0) { char **strings; int i; @@ -122,14 +122,14 @@ func_and (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) for (i = 0; i < argc; i++) { GList *list_head = *list; - fprintf (stderr, "\tAND func: %s\n", (*list) ? (char *) (*list)->data : "(null)"); + d(fprintf (stderr, "\tAND func: %s\n", (*list) ? (char *) (*list)->data : "(null)")); strings[argc - (i+1)] = (*list) ? (*list)->data : g_strdup (""); *list = g_list_remove_link (*list, *list); g_list_free_1 (list_head); } *list = g_list_prepend (*list, g_strjoinv (" ", strings)); - fprintf (stderr, "%s\n", (char *) (*list)->data); + d(fprintf (stderr, "%s\n", (char *) (*list)->data)); for (i = 0 ; i < argc; i ++) g_free (strings[i]); @@ -149,7 +149,7 @@ func_or (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) GList **list = data; ESExpResult *r; - fprintf (stderr, "in OR func (argc = %d)\n", argc); + d(fprintf (stderr, "in OR func (argc = %d)\n", argc)); if (argc == 2 && (*list)->data && (*list)->next && (*list)->next->data) { char **strings; int i; @@ -161,14 +161,14 @@ func_or (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) for (i = 0; i < 2; i++) { GList *list_head = *list; - fprintf (stderr, "\tOR func: %s\n", (*list) ? (char *) (*list)->data : "(null)"); + d(fprintf (stderr, "\tOR func: %s\n", (*list) ? (char *) (*list)->data : "(null)")); strings[argc - i] = (*list) ? (*list)->data : g_strdup (""); *list = g_list_remove_link (*list, *list); g_list_free_1 (list_head); } *list = g_list_prepend (*list, g_strjoinv (" ", strings)); - fprintf (stderr, "%s\n", (char *) (*list)->data); + d(fprintf (stderr, "%s\n", (char *) (*list)->data)); for (i = 0 ; i < argc + 2; i ++) g_free (strings[i]); @@ -188,13 +188,13 @@ func_not (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) GList **list = data; ESExpResult *r; - fprintf (stderr, "in NOT func\n"); + d(fprintf (stderr, "in NOT func\n")); /* just replace the head of the list with the NOT of it. */ if (argc > 0) { char *term = (*list)->data; (*list)->data = g_strdup_printf ("NOT %s", term); - fprintf (stderr, "%s\n", (char *) (*list)->data); + d(fprintf (stderr, "%s\n", (char *) (*list)->data)); g_free (term); } @@ -233,7 +233,7 @@ func_lt (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) time_t date = (time_t) (argv[1])->value.number; ESExpResult *r; - fprintf (stderr, "in less-than func: (%d) (%s) (%d)\n", argc, type, (int) date); + d(fprintf (stderr, "in less-than func: (%d) (%s) (%d)\n", argc, type, (int) date)); if (argc > 0) { char *string, *date_str; @@ -263,7 +263,7 @@ func_gt (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) time_t date = (time_t) (argv[1])->value.number; ESExpResult *r; - fprintf (stderr, "in greater-than func: (%d) (%s) (%d)\n", argc, type, (int) date); + d(fprintf (stderr, "in greater-than func: (%d) (%s) (%d)\n", argc, type, (int) date)); if (argc > 0) { char *string, *date_str; @@ -293,7 +293,7 @@ func_eq (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) time_t date = (time_t) (argv[1])->value.number; ESExpResult *r; - fprintf (stderr, "in equal-to func: (%d) (%s) (%d)\n", argc, type, (int) date); + d(fprintf (stderr, "in equal-to func: (%d) (%s) (%d)\n", argc, type, (int) date)); if (argc > 0) { char *string, *date_str; @@ -424,11 +424,10 @@ func_get_received_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, static ESExpResult * func_get_current_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data) { - /* FIXME: what do I do here? */ ESExpResult *r; - r = e_sexp_result_new (ESEXP_RES_BOOL); - r->value.bool = FALSE; + r = e_sexp_result_new (ESEXP_RES_INT); + r->value.number = time (NULL); return r; } @@ -504,9 +503,9 @@ imap_create_flag_list (guint32 flags) { GString *gstr; char *flag_list; - + gstr = g_string_new ("("); - + if (flags & CAMEL_MESSAGE_ANSWERED) g_string_append (gstr, "\\Answered "); if (flags & CAMEL_MESSAGE_DELETED) @@ -517,12 +516,12 @@ imap_create_flag_list (guint32 flags) g_string_append (gstr, "\\Flagged "); if (flags & CAMEL_MESSAGE_SEEN) g_string_append (gstr, "\\Seen "); - + if (gstr->str[gstr->len - 1] == ' ') gstr->str[gstr->len - 1] = ')'; else g_string_append_c (gstr, ')'); - + flag_list = gstr->str; g_string_free (gstr, FALSE); return flag_list; @@ -533,10 +532,10 @@ imap_parse_flag_list (const char *flag_list) { guint32 flags = 0; int len; - + if (*flag_list++ != '(') return 0; - + while (*flag_list != ')') { len = strcspn (flag_list, " )"); if (!g_strncasecmp (flag_list, "\\Answered", len)) @@ -549,11 +548,11 @@ imap_parse_flag_list (const char *flag_list) flags |= CAMEL_MESSAGE_FLAGGED; else if (!g_strncasecmp (flag_list, "\\Seen", len)) flags |= CAMEL_MESSAGE_SEEN; - + flag_list += len; if (*flag_list == ' ') flag_list++; } - + return flags; } |