tex: backslash as escape character in file names - neatvi - [fork] simple vi-type editor with UTF-8 support
 (HTM) git clone git://src.adamsgaard.dk/neatvi
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit cfcaaf89225f9e1f28dffa447668a4b2437f4586
 (DIR) parent 3a4ce478980b560dd436c5fd93e867b1adb35c6a
 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
       Date:   Wed,  4 Nov 2015 22:53:44 +0330
       
       ex: backslash as escape character in file names
       
       Reported by yoelion at github.
       
       Diffstat:
         M ex.c                                |      16 ++++++++++++++--
       
       1 file changed, 14 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/ex.c b/ex.c
       t@@ -154,8 +154,11 @@ static char *ex_arg(char *s, char *arg)
                s = ex_cmd(s, arg);
                while (isspace((unsigned char) *s))
                        s++;
       -        while (*s && !isspace((unsigned char) *s))
       +        while (*s && !isspace((unsigned char) *s)) {
       +                if (*s == '\\' && s[1])
       +                        s++;
                        *arg++ = *s++;
       +        }
                *arg = '\0';
                return s;
        }
       t@@ -852,7 +855,16 @@ void ex(void)
        int ex_init(char **files)
        {
                char cmd[EXLEN];
       -        snprintf(cmd, sizeof(cmd), "e %s", files[0] ? files[0] : "");
       +        char *s = cmd;
       +        char *r = files[0] ? files[0] : "";
       +        *s++ = 'e';
       +        *s++ = ' ';
       +        while (*r && s + 2 < cmd + sizeof(cmd)) {
       +                if (*r == ' ')
       +                        *s++ = '\\';
       +                *s++ = *r++;
       +        }
       +        *s = '\0';
                if (ec_edit(cmd))
                        return 1;
                if (getenv("EXINIT"))