diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/Zle/computil.c | 23 |
2 files changed, 25 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index e42286121..57a76186d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-04-17 Sven Wischnowsky <wischnow@zsh.org> + + * 16998: Src/Zle/computil.c: make compvalues unquote the string + from the line like comparguments does + 2002-04-16 Felix Rosencrantz <f_rosencrantz@yahoo.com> * 16956: Completion/Unix/Command/_java: Changed to use diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c index b5610fb77..a426a9a5b 100644 --- a/Src/Zle/computil.c +++ b/Src/Zle/computil.c @@ -2768,6 +2768,23 @@ cv_get_val(Cvdef d, char *name) return NULL; } +static Cvval +cv_quote_get_val(Cvdef d, char *name) +{ + int ne; + + /* remove quotes */ + name = dupstring(name); + ne = noerrs; + noerrs = 2; + parse_subst_string(name); + noerrs = ne; + remnulargs(name); + untokenize(name); + + return cv_get_val(d, name); +} + /* Handle a xor list. */ static void @@ -2820,7 +2837,7 @@ cv_next(Cvdef d, char **sp, char **ap) do { sav = *++s; *s = '\0'; - if ((r = cv_get_val(d, v))) { + if ((r = cv_quote_get_val(d, v))) { *s = sav; break; @@ -2864,7 +2881,7 @@ cv_next(Cvdef d, char **sp, char **ap) sav = *sap; *sap = '\0'; } - if ((!(r = cv_get_val(d, s)) || r->type == CVV_NOARG) && skip) + if ((!(r = cv_quote_get_val(d, s)) || r->type == CVV_NOARG) && skip) ns = as; if (sap) @@ -2886,7 +2903,7 @@ cv_next(Cvdef d, char **sp, char **ap) } else *ap = sap = NULL; - r = cv_get_val(d, s); + r = cv_quote_get_val(d, s); if (sap) *sap = sav; |