diff --git a/cmd-source-file.c b/cmd-source-file.c index 30edb18d..f6962b08 100644 --- a/cmd-source-file.c +++ b/cmd-source-file.c @@ -201,7 +201,7 @@ cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) cdata->flags |= CMD_PARSE_QUIET; if (args_has(args, 'n')) cdata->flags |= CMD_PARSE_PARSEONLY; - if (args_has(args, 'v') && (~c->flags & CLIENT_CONTROL)) + if (args_has(args, 'v') && (c == NULL || ~c->flags & CLIENT_CONTROL)) cdata->flags |= CMD_PARSE_VERBOSE; cwd = cmd_source_file_quote_for_glob(server_client_get_cwd(c, NULL)); diff --git a/job.c b/job.c index 17f4eaa7..72dbec95 100644 --- a/job.c +++ b/job.c @@ -50,7 +50,7 @@ struct job { char *cmd; pid_t pid; - char tty[TTY_NAME_MAX]; + char tty[TTY_NAME_MAX]; int status; int fd; @@ -139,14 +139,16 @@ job_run(const char *cmd, int argc, char **argv, struct environ *e, proc_clear_signals(server_proc, 1); sigprocmask(SIG_SETMASK, &oldset, NULL); - if (chdir(cwd) == 0) - environ_set(env, "PWD", 0, "%s", cwd); - else if ((home = find_home()) != NULL && chdir(home) == 0) - environ_set(env, "PWD", 0, "%s", home); - else if (chdir("/") == 0) - environ_set(env, "PWD", 0, "/"); - else - fatal("chdir failed"); + if (cwd != NULL) { + if (chdir(cwd) == 0) + environ_set(env, "PWD", 0, "%s", cwd); + else if ((home = find_home()) != NULL && chdir(home) == 0) + environ_set(env, "PWD", 0, "%s", home); + else if (chdir("/") == 0) + environ_set(env, "PWD", 0, "/"); + else + fatal("chdir failed"); + } environ_push(env); environ_free(env);