2013-01-23 [colin] 3.9.0cvs59
authorColin Leroy <colin@colino.net>
Wed, 23 Jan 2013 16:17:00 +0000 (16:17 +0000)
committerColin Leroy <colin@colino.net>
Wed, 23 Jan 2013 16:17:00 +0000 (16:17 +0000)
* src/action.c
* src/common/utils.c
Fix actions with spaces (and quotes). Thanks to H. Merijn Brand

ChangeLog
PATCHSETS
configure.ac
src/action.c
src/common/utils.c

index 52d061f5f41302b6c126856fe5cff057bcbbb8bd..35440831359fe0882b4732c6aff92ab85b861b58 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-01-23 [colin]     3.9.0cvs59
+
+       * src/action.c
+       * src/common/utils.c
+               Fix actions with spaces (and quotes). Thanks to H. Merijn Brand
+
 2013-01-23 [colin]     3.9.0cvs58
 
        * src/imap.c
index a81259450e446485f45a551857fce74d2b30baf5..7a2b22c5ed8d44cb5c7fd0433af946a956eaa2ca 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.9.2.61 -r 1.9.2.62 src/common/defs.h;  cvs diff -u -r 1.4.2.88 -r 1.4.2.89 src/gtk/about.c;  ) > 3.9.0cvs56.patchset
 ( cvs diff -u -r 1.15.2.29 -r 1.15.2.30 src/codeconv.h;  cvs diff -u -r 1.49.2.154 -r 1.49.2.155 src/procmime.c;  ) > 3.9.0cvs57.patchset
 ( cvs diff -u -r 1.179.2.270 -r 1.179.2.271 src/imap.c;  ) > 3.9.0cvs58.patchset
+( cvs diff -u -r 1.12.2.80 -r 1.12.2.81 src/action.c;  cvs diff -u -r 1.36.2.212 -r 1.36.2.213 src/common/utils.c;  ) > 3.9.0cvs59.patchset
index 0d81aaf70076e03340131a158ff4d80d3416bf7c..0a72cb344b80b01def2b38c4b2265ee8c2cc76f8 100644 (file)
@@ -12,7 +12,7 @@ MINOR_VERSION=9
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=58
+EXTRA_VERSION=59
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
@@ -158,9 +158,9 @@ fi
 
 CFLAGS="$CFLAGS -Wall"
 
-#if test $USE_MAINTAINER_MODE = yes; then
-#      CFLAGS="-g -Wall -Wno-pointer-sign -DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED -DGTK_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_DEPRECATED -DGSEAL_ENABLE"
-#fi
+if test $USE_MAINTAINER_MODE = yes; then
+       CFLAGS="-g -Wall -Wno-pointer-sign"
+fi
 
 pthread_name=
 case "$target" in
index 669f32596a19d2c97aa56f067e3d0ee7e6b9ba93..e26ca5704f52d7b63c922287fbd5867427750017 100644 (file)
@@ -386,8 +386,9 @@ static gboolean parse_append_filename(GString *cmd, MsgInfo *msginfo)
        }
 
        p = filename;
+       g_string_append(cmd, "\"");
 #ifdef G_OS_UNIX
-       while ((q = strpbrk(p, "$\"`'\\ \t*?[]&|;<>()!#~")) != NULL) {
+       while ((q = strpbrk(p, "$\"`\\~")) != NULL) {
                escape_ch[1] = *q;
                *q = '\0';
                g_string_append(cmd, p);
@@ -397,10 +398,9 @@ static gboolean parse_append_filename(GString *cmd, MsgInfo *msginfo)
 
        g_string_append(cmd, p);
 #else
-       g_string_append(cmd, "\"");
        g_string_append(cmd, filename);
-       g_string_append(cmd, "\"");
 #endif
+       g_string_append(cmd, "\"");
        g_free(filename);
 
        return TRUE;
@@ -948,8 +948,15 @@ static ChildInfo *fork_child(gchar *cmd, const gchar *msg_str,
        while (g_ascii_isspace(trim_cmd[0]))
                trim_cmd++;
 
+#ifdef G_OS_UNIX
+       argv = g_new0(gchar *, 4);
+       argv[0] = g_strdup("/bin/sh");
+       argv[1] = g_strdup("-c");
+       argv[2] = g_strdup(trim_cmd);
+       argv[3] = 0;
+#else
        argv = strsplit_with_quote(trim_cmd, " ", 0);
-
+#endif
        g_free(ret_str);
 
        if (follow_child) {
index a5936e0ee11f091a63c78e76a644d9d56e09a5cc..a48d4e4cf7168a5fdda6d17245571338cf1326fa 100644 (file)
@@ -1273,6 +1273,9 @@ static gchar *strstr_with_skip_quote(const gchar *haystack, const gchar *needle)
                                in_dquote = FALSE;
                        else if (!in_squote)
                                in_dquote = TRUE;
+               } else if (*haystack == '\\') {
+                       haystack++;
+                       haystack_len--;
                }
 
                haystack++;