summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/special-vars.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/core/special-vars.c b/src/core/special-vars.c
index 196a2cae..f1563238 100644
--- a/src/core/special-vars.c
+++ b/src/core/special-vars.c
@@ -546,25 +546,28 @@ void eval_special_string(const char *cmd, const char *data,
/* get a list of all the commands to run */
orig = start = str = g_strdup(cmd);
do {
- if (is_split_char(str, start))
+ if (is_split_char(str, start)) {
*str++ = '\0';
- else if (*str != '\0') {
+ while (*str == ' ') str++;
+ } else if (*str != '\0') {
str++;
continue;
}
ret = parse_special_string(start, server, item,
data, &arg_used, 0);
- if (arg_used) arg_used_ever = TRUE;
+ if (*ret != '\0') {
+ if (arg_used) arg_used_ever = TRUE;
- if (strchr(cmdchars, *ret) == NULL) {
- /* no command char - let's put it there.. */
- char *old = ret;
+ if (strchr(cmdchars, *ret) == NULL) {
+ /* no command char - let's put it there.. */
+ char *old = ret;
- ret = g_strdup_printf("%c%s", *cmdchars, old);
- g_free(old);
+ ret = g_strdup_printf("%c%s", *cmdchars, old);
+ g_free(old);
+ }
+ commands = g_slist_append(commands, ret);
}
- commands = g_slist_append(commands, ret);
start = str;
} while (*start != '\0');