Added an assert - at this point a backtrace would be more useful than a
authorJeffrey Stedfast <fejj@ximian.com>
Fri, 10 Aug 2001 22:07:46 +0000 (22:07 +0000)
committerJeffrey Stedfast <fejj@src.gnome.org>
Fri, 10 Aug 2001 22:07:46 +0000 (22:07 +0000)
2001-08-10  Jeffrey Stedfast  <fejj@ximian.com>

* providers/imap/camel-imap-utils.c (imap_quote_string): Added an
assert - at this point a backtrace would be more useful than a
transaction log for debugging.

camel/ChangeLog
camel/providers/imap/camel-imap-command.c
camel/providers/imap/camel-imap-utils.c

index e64ba22..baed2cf 100644 (file)
@@ -1,8 +1,12 @@
 2001-08-10  Jeffrey Stedfast  <fejj@ximian.com>
 
+       * providers/imap/camel-imap-utils.c (imap_quote_string): Added an
+       assert - at this point a backtrace would be more useful than a
+       transaction log for debugging.
+
        * providers/imap/camel-imap-command.c (imap_command_start): Return
        FALSE here, not NULL.
-
+       
        * providers/imap/camel-imap-folder.c (imap_rescan): Don't
        g_strdup() the uid into the trigger_event call.
 
index 6dae25a..9dcc56c 100644 (file)
@@ -720,6 +720,7 @@ imap_command_strdup_vprintf (CamelImapStore *store, const char *fmt,
                                               strlen (string), string);
                        } else {
                                char *quoted = imap_quote_string (string);
+                               
                                op += sprintf (op, "%s", quoted);
                                g_free (quoted);
                        }
index 648712a..a449ea2 100644 (file)
@@ -549,6 +549,17 @@ imap_parse_body (char **body_p, CamelFolder *folder,
        *body_p = body;
 }
 
+static void
+strip (char *str, char c)
+{
+       char *src, *dst;
+       
+       for (src = dst = str; *src; src++)
+               if (*src != c)
+                       *dst++ = *src;
+       *dst = '\0';
+}
+
 /**
  * imap_quote_string:
  * @str: the string to quote, which must not contain CR or LF
@@ -563,6 +574,8 @@ imap_quote_string (const char *str)
        char *quoted, *q;
        int len;
        
+       g_assert (strchr (str, '\r') == NULL);
+       
        len = strlen (str);
        p = str;
        while ((p = strpbrk (p, "\"\\"))) {
@@ -572,14 +585,13 @@ imap_quote_string (const char *str)
        
        quoted = q = g_malloc (len + 3);
        *q++ = '"';
-       while ((p = strpbrk (str, "\"\\"))) {
-               memcpy (q, str, p - str);
-               q += p - str;
-               *q++ = '\\';
+       for (p = str; *p; ) {
+               if (strchr ("\"\\", *p))
+                       *q++ = '\\';
                *q++ = *p++;
-               str = p;
        }
-       sprintf (q, "%s\"", str);
+       *q++ = '"';
+       *q = '\0';
        
        return quoted;
 }