! needs to be escaped in tab-completion otherwise this happens.

$ ls
Season 4 UPDATE!-FFdJhCSr8ng.mp4
$ ls Season\ 4\ UPDATE!-FFdJhCSr8ng.mp4
ls: Season 4 UPDATE!4: No such file or directory

ok?

Index: edit.c
===================================================================
RCS file: /cvs/src/bin/ksh/edit.c,v
retrieving revision 1.39
diff -u -p -r1.39 edit.c
--- edit.c      17 Dec 2013 16:37:05 -0000      1.39
+++ edit.c      8 Mar 2015 19:47:31 -0000
@@ -805,7 +805,7 @@ x_escape(const char *s, size_t len, int 
        int rval = 0;
 
        for (add = 0, wlen = len; wlen - add > 0; add++) {
-               if (strchr("\"#$&'()*:;<=>?[\\]`{|}", s[add]) ||
+               if (strchr("\"#$&'()*:;<=>?[\\]`{|}!", s[add]) ||
                    strchr(ifs, s[add])) {
                        if (putbuf_func(s, add) != 0) {
                                rval = -1;

Reply via email to