tex: handle spaces in shell commands - 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 aae3a82a9f44f2b7fe2b6babb9390ad23517172a
 (DIR) parent 49e4029728927afb1a22864698be10cf445413aa
 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
       Date:   Mon, 27 Jul 2020 19:03:45 +0430
       
       ex: handle spaces in shell commands
       
       Diffstat:
         M ex.c                                |      14 +++++++-------
       
       1 file changed, 7 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/ex.c b/ex.c
       t@@ -169,12 +169,12 @@ static char *ex_arg(char *s, char *arg)
        }
        
        /* read ex file argument */
       -static char *ex_filearg(char *s, char *arg)
       +static char *ex_filearg(char *s, char *arg, int spaceallowed)
        {
                s = ex_cmd(s, arg);
                while (isspace((unsigned char) *s))
                        s++;
       -        while (*s && !isspace((unsigned char) *s)) {
       +        while (*s && (spaceallowed || !isspace((unsigned char) *s))) {
                        int c = (unsigned char) *s++;
                        if (c == '%') {
                                if (!bufs[0].path || !bufs[0].path[0]) {
       t@@ -368,7 +368,7 @@ static int ec_edit(char *ec)
                char path[EXLEN];
                int fd;
                ex_cmd(ec, cmd);
       -        if (!ex_filearg(ec, path))
       +        if (!ex_filearg(ec, path, 0))
                        return 1;
                if (!strchr(cmd, '!'))
                        if (xb && ex_modifiedbuffer("buffer modified\n"))
       t@@ -416,7 +416,7 @@ static int ec_read(char *ec)
                        return 1;
                if (arg[0] == '!') {
                        int pos = MIN(xrow + 1, lbuf_len(xb));
       -                if (!ex_filearg(ec, arg))
       +                if (!ex_filearg(ec, arg, 1))
                                return 1;
                        obuf = cmd_pipe(arg + 1, NULL, 0, 1);
                        if (obuf)
       t@@ -463,7 +463,7 @@ static int ec_write(char *ec)
                        end = lbuf_len(xb);
                }
                if (arg[0] == '!') {
       -                if (!ex_filearg(ec, arg))
       +                if (!ex_filearg(ec, arg, 1))
                                return 1;
                        ibuf = lbuf_cp(xb, beg, end);
                        ex_print(NULL);
       t@@ -747,7 +747,7 @@ static int ec_exec(char *ec)
                char *rep;
                ex_modifiedbuffer(NULL);
                ex_loc(ec, loc);
       -        if (!ex_filearg(ec, arg))
       +        if (!ex_filearg(ec, arg, 1))
                        return 1;
                if (!loc[0]) {
                        ex_print(NULL);
       t@@ -769,7 +769,7 @@ static int ec_make(char *ec)
                char arg[EXLEN];
                char make[EXLEN];
                ex_modifiedbuffer(NULL);
       -        if (!ex_filearg(ec, arg))
       +        if (!ex_filearg(ec, arg, 1))
                        return 1;
                sprintf(make, "make %s", arg);
                ex_print(NULL);