@@ -52,7 +52,7 @@ struct job {
char *cmd;
pid_t pid;
- char tty[TTY_NAME_MAX];
+ char tty[TTY_NAME_MAX];
int status;
int fd;
@@ -141,14 +141,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);