tvi: exit if ex_init() fails - 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 f614d398653cac4aad4dbc17d730145b11c33167
 (DIR) parent 1792d21d88ee1fcb629fed89d35406957cc305b3
 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
       Date:   Sat, 25 Jul 2015 19:24:09 +0430
       
       vi: exit if ex_init() fails
       
       Diffstat:
         M ex.c                                |       6 ++++--
         M vi.c                                |      17 +++++++++--------
         M vi.h                                |       2 +-
       
       3 files changed, 14 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/ex.c b/ex.c
       t@@ -810,13 +810,15 @@ void ex(void)
                }
        }
        
       -void ex_init(char **files)
       +int ex_init(char **files)
        {
                char cmd[EXLEN];
                snprintf(cmd, sizeof(cmd), "e %s", files[0] ? files[0] : "");
       -        ec_edit(cmd);
       +        if (ec_edit(cmd))
       +                return 1;
                if (getenv("EXINIT"))
                        ex_command(getenv("EXINIT"));
       +        return 0;
        }
        
        void ex_done(void)
 (DIR) diff --git a/vi.c b/vi.c
       t@@ -1294,14 +1294,15 @@ int main(int argc, char *argv[])
                syn_init();
                if (xled || xvis)
                        term_init();
       -        ex_init(argv + i);
       -        if (xvis)
       -                vi();
       -        else
       -                ex();
       -        if (xled || xvis)
       -                term_done();
       -        ex_done();
       +        if (!ex_init(argv + i)) {
       +                if (xvis)
       +                        vi();
       +                else
       +                        ex();
       +                if (xled || xvis)
       +                        term_done();
       +                ex_done();
       +        }
                reg_done();
                syn_done();
                dir_done();
 (DIR) diff --git a/vi.h b/vi.h
       t@@ -138,7 +138,7 @@ void ex_command(char *cmd);
        char *ex_read(char *msg);
        void ex_print(char *line);
        void ex_show(char *msg);
       -void ex_init(char **files);
       +int ex_init(char **files);
        void ex_done(void);
        char *ex_path(void);
        char *ex_filetype(void);