diff options
author | 2011-01-23 11:03:43 +0000 | |
---|---|---|
committer | 2011-01-23 11:03:43 +0000 | |
commit | 07bd7bef9493f9e11e3fac393166c62539ae6f73 (patch) | |
tree | 40976d811ff847e03db2b73a1e405aec3f8abd51 /usr.bin/tmux/tmux.c | |
parent | Ansify functions. (diff) | |
download | wireguard-openbsd-07bd7bef9493f9e11e3fac393166c62539ae6f73.tar.xz wireguard-openbsd-07bd7bef9493f9e11e3fac393166c62539ae6f73.zip |
Set $TMUX without the session when background jobs are run.
Diffstat (limited to 'usr.bin/tmux/tmux.c')
-rw-r--r-- | usr.bin/tmux/tmux.c | 47 |
1 files changed, 10 insertions, 37 deletions
diff --git a/usr.bin/tmux/tmux.c b/usr.bin/tmux/tmux.c index a6a0a972f84..fedc8903e4b 100644 --- a/usr.bin/tmux/tmux.c +++ b/usr.bin/tmux/tmux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.c,v 1.102 2011/01/12 22:23:58 nicm Exp $ */ +/* $OpenBSD: tmux.c,v 1.103 2011/01/23 11:03:43 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -48,8 +48,8 @@ time_t start_time; char socket_path[MAXPATHLEN]; int login_shell; char *environ_path; -pid_t environ_pid; -u_int environ_idx; +pid_t environ_pid = -1; +int environ_idx = -1; __dead void usage(void); void parseenvironment(void); @@ -125,45 +125,18 @@ areshell(const char *shell) void parseenvironment(void) { - char *env, *path_pid, *pid_idx, buf[256]; - size_t len; - const char *errstr; - long long ll; + char *env, path[256]; + long pid; + int idx; - environ_pid = -1; if ((env = getenv("TMUX")) == NULL) return; - if ((path_pid = strchr(env, ',')) == NULL || path_pid == env) + if (sscanf(env, "%255s,%ld,%d", path, &pid, &idx) != 3) return; - if ((pid_idx = strchr(path_pid + 1, ',')) == NULL) - return; - if ((pid_idx == path_pid + 1 || pid_idx[1] == '\0')) - return; - - /* path */ - len = path_pid - env; - environ_path = xmalloc(len + 1); - memcpy(environ_path, env, len); - environ_path[len] = '\0'; - - /* pid */ - len = pid_idx - path_pid - 1; - if (len > (sizeof buf) - 1) - return; - memcpy(buf, path_pid + 1, len); - buf[len] = '\0'; - - ll = strtonum(buf, 0, LONG_MAX, &errstr); - if (errstr != NULL) - return; - environ_pid = ll; - - /* idx */ - ll = strtonum(pid_idx + 1, 0, UINT_MAX, &errstr); - if (errstr != NULL) - return; - environ_idx = ll; + environ_path = xstrdup(path); + environ_pid = pid; + environ_idx = idx; } char * |