Merge branch 'obsd-master'

Conflicts:
	cmd-pipe-pane.c
	proc.c
	tmux.c
	window.c
This commit is contained in:
Thomas Adam
2017-07-12 13:39:59 +01:00
12 changed files with 144 additions and 184 deletions

11
job.c
View File

@ -50,6 +50,7 @@ job_run(const char *cmd, struct session *s, const char *cwd,
pid_t pid;
int nullfd, out[2];
const char *home;
sigset_t set, oldset;
if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, out) != 0)
return (NULL);
@ -60,14 +61,18 @@ job_run(const char *cmd, struct session *s, const char *cwd,
*/
env = environ_for_session(s, !cfg_finished);
sigfillset(&set);
sigprocmask(SIG_BLOCK, &set, &oldset);
switch (pid = fork()) {
case -1:
sigprocmask(SIG_SETMASK, &oldset, NULL);
environ_free(env);
close(out[0]);
close(out[1]);
return (NULL);
case 0: /* child */
clear_signals(1);
case 0:
proc_clear_signals(server_proc);
sigprocmask(SIG_SETMASK, &oldset, NULL);
if (cwd == NULL || chdir(cwd) != 0) {
if ((home = find_home()) == NULL || chdir(home) != 0)
@ -99,7 +104,7 @@ job_run(const char *cmd, struct session *s, const char *cwd,
fatal("execl failed");
}
/* parent */
sigprocmask(SIG_SETMASK, &oldset, NULL);
environ_free(env);
close(out[1]);