Rocco Rutte:
authorpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Fri, 9 Sep 2005 03:22:19 +0000 (03:22 +0000)
committerpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Fri, 9 Sep 2005 03:22:19 +0000 (03:22 +0000)
- when expanding init strings for option init, quote them for mutt_extract_token()

git-svn-id: svn://svn.berlios.de/mutt-ng/trunk@499 e385b8ad-14ed-0310-8656-cc95a2468c6d

VERSION.svn
init.c

index f9aaa4d..761fcd3 100644 (file)
@@ -1 +1 @@
-498
+499
diff --git a/init.c b/init.c
index 10333ee..1d6c933 100644 (file)
--- a/init.c
+++ b/init.c
@@ -442,6 +442,7 @@ static int rx_from_string (struct option_t* dst, const char* val,
     regerror (e, rx, errbuf, errlen);
     regfree (rx);
     mem_free (&rx);
     regerror (e, rx, errbuf, errlen);
     regfree (rx);
     mem_free (&rx);
+    return (0);
   }
 
   if (p->pattern && p->rx) {
   }
 
   if (p->pattern && p->rx) {
@@ -1367,21 +1368,25 @@ static void del_option (void* p) {
 }
 
 static int init_expand (char** dst, const char* src) {
 }
 
 static int init_expand (char** dst, const char* src) {
-  BUFFER token;
-  BUFFER in;
+  BUFFER token, in;
+  size_t len = 0;
+
+  mem_free (dst);
 
   if (src && *src) {
     memset (&token, 0, sizeof (BUFFER));
     memset (&in, 0, sizeof (BUFFER));
 
   if (src && *src) {
     memset (&token, 0, sizeof (BUFFER));
     memset (&in, 0, sizeof (BUFFER));
-    in.data = (char*) src;
+    len = str_len (src) + 2;
+    in.data = mem_malloc (len+1);
+    snprintf (in.data, len, "\"%s\"", src);
     in.dptr = in.data;
     in.dptr = in.data;
-    in.dsize = str_len (src);
-    mutt_extract_token (&token, &in, M_TOKEN_SPACE);
-    mem_free (dst);
+    in.dsize = len;
+    mutt_extract_token (&token, &in, 0);
     if (token.data && *token.data)
       *dst = str_dup (token.data);
     else
       *dst = str_dup ("");
     if (token.data && *token.data)
       *dst = str_dup (token.data);
     else
       *dst = str_dup ("");
+    mem_free (&in.data);
     mem_free (&token.data);
   } else
     *dst = str_dup ("");
     mem_free (&token.data);
   } else
     *dst = str_dup ("");