summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2010-06-21 11:11:01 +0100
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-06-28 13:02:34 +0100
commita4736654e84cf076d26094feb25ef51526bedc3d (patch)
tree261dfcd83a17b5466ab113fad3701cc7b3a983af
parent47997e9affad501f1b121cf95a4761c7f782f4bd (diff)
downloadevolution-data-server-a4736654e84cf076d26094feb25ef51526bedc3d.tar.gz
Encode folder names as literals when sending commands, where needed
(cherry picked from commit 95ae72c47280933c7ed5e467d668ce61ff4968ec)
-rw-r--r--camel/providers/imapx/camel-imapx-server.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 6ce78eae6..e4ed21d9d 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -591,6 +591,7 @@ imapx_command_addv(CamelIMAPXCommand *ic, const gchar *fmt, va_list ap)
case 's': /* simple string */
s = va_arg(ap, gchar *);
c(printf("got string '%s'\n", s));
+ output_string:
if (*s) {
guchar mask = imapx_is_mask(s);
@@ -617,6 +618,10 @@ imapx_command_addv(CamelIMAPXCommand *ic, const gchar *fmt, va_list ap)
} else {
camel_stream_write((CamelStream *)ic->mem, "\"\"", 2);
}
+ if (encoded) {
+ g_free(encoded);
+ encoded = NULL;
+ }
break;
case 'f': /* imap folder name */
folder = va_arg(ap, CamelFolder *);
@@ -628,9 +633,12 @@ imapx_command_addv(CamelIMAPXCommand *ic, const gchar *fmt, va_list ap)
} else
encoded = camel_utf8_utf7 (folder->full_name);
- camel_stream_printf((CamelStream *)ic->mem, "\"%s\"", encoded?encoded:"");
+ if (encoded) {
+ s = encoded;
+ goto output_string;
+ } else
+ camel_stream_write((CamelStream *)ic->mem, "\"\"", 2);
- g_free (encoded);
break;
case 'F': /* IMAP flags set */
f = va_arg(ap, guint32);