diff options
Diffstat (limited to 'camel/providers/imap4/camel-imap4-command.c')
-rw-r--r-- | camel/providers/imap4/camel-imap4-command.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/camel/providers/imap4/camel-imap4-command.c b/camel/providers/imap4/camel-imap4-command.c index dc3d43c5d4..9b6061dbd4 100644 --- a/camel/providers/imap4/camel-imap4-command.c +++ b/camel/providers/imap4/camel-imap4-command.c @@ -197,6 +197,7 @@ camel_imap4_command_newv (CamelIMAP4Engine *engine, CamelIMAP4Folder *imap4_fold if (ch == '%') { CamelIMAP4Literal *literal; CamelIMAP4Folder *folder; + char *function, **strv; unsigned int u; char *string; size_t len; @@ -263,6 +264,24 @@ camel_imap4_command_newv (CamelIMAP4Engine *engine, CamelIMAP4Folder *imap4_fold g_string_truncate (str, 0); break; + case 'V': + /* a string vector of arguments which may need to be quoted or made into literals */ + function = str->str + str->len - 2; + while (*function != ' ') + function--; + function++; + + function = g_strdup (function); + + strv = va_arg (args, char **); + for (d = 0; strv[d]; d++) { + if (d > 0) + g_string_append (str, function); + imap4_command_append_string (engine, &tail, str, strv[d]); + } + + g_free (function); + break; case 'S': /* string which may need to be quoted or made into a literal */ string = va_arg (args, char *); |