/* expando? */
func = expando_find_long(key);
- if (func != NULL)
+ if (func != NULL) {
+ current_expando = key;
return func(server, item, free_ret);
+ }
/* internal setting? */
type = settings_get_type(key);
}
*free_ret = FALSE;
func = expando_find_char(**cmd);
- return func == NULL ? NULL : func(server, item, free_ret);
+ if (func == NULL)
+ return NULL;
+ else {
+ char str[2];
+
+ str[0] = **cmd; str[1] = '\0';
+ current_expando = str;
+ return func(server, item, free_ret);
+ }
}
static char *get_history(char **cmd, void *item, int *free_ret)
}
nest_free = FALSE; nest_value = NULL;
- if (**cmd == '(') {
+ if (**cmd == '(' && (*cmd)[1] != '\0') {
/* subvariable */
int toplevel = nested_orig_cmd == NULL;
flags);
}
+ if (nest_value == NULL || *nest_value == '\0')
+ return NULL;
+
while ((*nested_orig_cmd)[1] != '\0') {
(*nested_orig_cmd)++;
if (**nested_orig_cmd == ')')
brackets = FALSE;
else {
/* special value is inside {...} (foo${test}bar -> fooXXXbar) */
+ if ((*cmd)[1] == '\0')
+ return NULL;
(*cmd)++;
brackets = TRUE;
}