=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/tmux.c,v retrieving revision 1.102 retrieving revision 1.103 diff -c -r1.102 -r1.103 *** src/usr.bin/tmux/tmux.c 2011/01/12 22:23:58 1.102 --- src/usr.bin/tmux/tmux.c 2011/01/23 11:03:43 1.103 *************** *** 1,4 **** ! /* $OpenBSD: tmux.c,v 1.102 2011/01/12 22:23:58 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: tmux.c,v 1.103 2011/01/23 11:03:43 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 48,55 **** char socket_path[MAXPATHLEN]; int login_shell; char *environ_path; ! pid_t environ_pid; ! u_int environ_idx; __dead void usage(void); void parseenvironment(void); --- 48,55 ---- char socket_path[MAXPATHLEN]; int login_shell; char *environ_path; ! pid_t environ_pid = -1; ! int environ_idx = -1; __dead void usage(void); void parseenvironment(void); *************** *** 125,169 **** void parseenvironment(void) { ! char *env, *path_pid, *pid_idx, buf[256]; ! size_t len; ! const char *errstr; ! long long ll; - environ_pid = -1; if ((env = getenv("TMUX")) == NULL) return; ! if ((path_pid = strchr(env, ',')) == NULL || path_pid == env) 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; } char * --- 125,142 ---- void parseenvironment(void) { ! char *env, path[256]; ! long pid; ! int idx; if ((env = getenv("TMUX")) == NULL) return; ! if (sscanf(env, "%255s,%ld,%d", path, &pid, &idx) != 3) return; ! environ_path = xstrdup(path); ! environ_pid = pid; ! environ_idx = idx; } char *