aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/pty_process_unix.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-12-12 01:31:15 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-12-13 22:17:38 +0100
commit6203c23449cfdf8fb09c33d3ab267703d57123fa (patch)
treeb0ede1594dd81cdea2b910e7d29f868bc529fd5a /src/nvim/os/pty_process_unix.c
parent34057045beca40406673ff421a4ef1e8e8c08853 (diff)
downloadrneovim-6203c23449cfdf8fb09c33d3ab267703d57123fa.tar.gz
rneovim-6203c23449cfdf8fb09c33d3ab267703d57123fa.tar.bz2
rneovim-6203c23449cfdf8fb09c33d3ab267703d57123fa.zip
pty_process_unix: _exit() on execvp() failure
Mostly cargo-culting based on a reading of the manpages, interwebs, and the Vim source.
Diffstat (limited to 'src/nvim/os/pty_process_unix.c')
-rw-r--r--src/nvim/os/pty_process_unix.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/os/pty_process_unix.c b/src/nvim/os/pty_process_unix.c
index 53301e4b53..855ca2ae47 100644
--- a/src/nvim/os/pty_process_unix.c
+++ b/src/nvim/os/pty_process_unix.c
@@ -72,8 +72,7 @@ int pty_process_spawn(PtyProcess *ptyproc)
ELOG("forkpty failed: %s", strerror(errno));
return status;
} else if (pid == 0) {
- init_child(ptyproc);
- abort();
+ init_child(ptyproc); // never returns
}
// make sure the master file descriptor is non blocking
@@ -163,14 +162,15 @@ static void init_child(PtyProcess *ptyproc) FUNC_ATTR_NONNULL_ALL
Process *proc = (Process *)ptyproc;
if (proc->cwd && os_chdir(proc->cwd) != 0) {
- fprintf(stderr, "chdir failed: %s\n", strerror(errno));
+ ELOG("chdir failed: %s", strerror(errno));
return;
}
char *prog = ptyproc->process.argv[0];
setenv("TERM", ptyproc->term_name ? ptyproc->term_name : "ansi", 1);
execvp(prog, ptyproc->process.argv);
- fprintf(stderr, "execvp failed: %s: %s\n", strerror(errno), prog);
+ ELOG("execvp failed: %s: %s", strerror(errno), prog);
+ _exit(122); // 122 is EXEC_FAILED in the Vim source.
}
static void init_termios(struct termios *termios) FUNC_ATTR_NONNULL_ALL