A couple more fixes for the template machinery
authorPavel Labath <pavelo@centrum.sk>
Thu, 4 Jun 2009 15:55:45 +0000 (17:55 +0200)
committerBrenden Matthews <brenden@rty.ca>
Sat, 6 Jun 2009 03:07:32 +0000 (21:07 -0600)
Signed-off-by: Brenden Matthews <brenden@rty.ca>

src/conky.c

index ee20248..1bfec8a 100644 (file)
@@ -2982,12 +2982,12 @@ static char *handle_template(const char *tmpl, const char *args)
                args_dup = strdup(args);
                p = args_dup;
                while (*p) {
-                       while (*p && (*p == ' ' && *(p - 1) != '\\'))
+                       while (*p && (*p == ' ' && p > args_dup && *(p - 1) != '\\'))
                                p++;
-                       if (*(p - 1) == '\\')
+                       if (p > args_dup && *(p - 1) == '\\')
                                p--;
                        p_old = p;
-                       while (*p && (*p != ' ' || *(p - 1) == '\\'))
+                       while (*p && (*p != ' ' || p == args_dup || *(p - 1) == '\\'))
                                p++;
                        if (*p) {
                                (*p) = '\0';
@@ -3069,6 +3069,7 @@ static char *find_and_replace_templates(const char *inbuf)
                tmpl_out = handle_template(templ, args);
                if (tmpl_out) {
                        outlen += strlen(tmpl_out);
+                       *o = '\0';
                        outbuf = realloc(outbuf, outlen * sizeof(char));
                        strcat (outbuf, tmpl_out);
                        free(tmpl_out);