summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2013-10-10 12:29:35 +0000
committernicm <nicm>2013-10-10 12:29:35 +0000
commitc1ccefc62d2a70c91ac31cff141031d61cc0a12c (patch)
tree924a96d6a8d0f1fe0e98e1ad8c6bb9af6bf2be27
parent6ac7abe8f038c21c1cf33d50a02e970f0de81c09 (diff)
We accidentally haven't been using $TMUX to work out the session for a
while and in fact it is less useful that using the client ttyname. So don't bother and don't pass it from the client. If we need it in future it is in c->environ.
-rw-r--r--client.c4
-rw-r--r--cmd.c8
-rw-r--r--server-client.c2
-rw-r--r--tmux.c30
-rw-r--r--tmux.h7
5 files changed, 10 insertions, 41 deletions
diff --git a/client.c b/client.c
index 0d57b793..3b929b71 100644
--- a/client.c
+++ b/client.c
@@ -280,10 +280,6 @@ client_main(int argc, char **argv, int flags)
size += strlen(argv[i]) + 1;
data = xmalloc((sizeof *data) + size);
- /* Fill in command line arguments. */
- data->pid = environ_pid;
- data->session_id = environ_session_id;
-
/* Prepare command for server. */
data->argc = argc;
if (cmd_pack_argv(argc, argv, (char*)(data + 1), size) != 0) {
diff --git a/cmd.c b/cmd.c
index b349da77..2edda633 100644
--- a/cmd.c
+++ b/cmd.c
@@ -314,7 +314,6 @@ cmd_print(struct cmd *cmd, char *buf, size_t len)
struct session *
cmd_current_session(struct cmd_q *cmdq, int prefer_unattached)
{
- struct msg_command_data *data = cmdq->msgdata;
struct client *c = cmdq->client;
struct session *s;
struct sessionslist ss;
@@ -356,13 +355,6 @@ cmd_current_session(struct cmd_q *cmdq, int prefer_unattached)
return (s);
}
- /* Use the session from the TMUX environment variable. */
- if (data != NULL && data->pid == getpid() && data->session_id != -1) {
- s = session_find_by_id(data->session_id);
- if (s != NULL)
- return (s);
- }
-
return (cmd_choose_session(prefer_unattached));
}
diff --git a/server-client.c b/server-client.c
index e202902e..6aa2a0fa 100644
--- a/server-client.c
+++ b/server-client.c
@@ -62,6 +62,8 @@ server_client_create(int fd)
fatal("gettimeofday failed");
memcpy(&c->activity_time, &c->creation_time, sizeof c->activity_time);
+ environ_init(&c->environ);
+
c->cmdq = cmdq_new(c);
c->cmdq->client_exit = 1;
diff --git a/tmux.c b/tmux.c
index a78746ae..74d827a5 100644
--- a/tmux.c
+++ b/tmux.c
@@ -49,11 +49,8 @@ time_t start_time;
char socket_path[MAXPATHLEN];
int login_shell;
char *environ_path;
-pid_t environ_pid = -1;
-int environ_session_id = -1;
__dead void usage(void);
-void parseenvironment(void);
char *makesocketpath(const char *);
__dead void
@@ -124,23 +121,6 @@ areshell(const char *shell)
return (0);
}
-void
-parseenvironment(void)
-{
- char *env, path[256];
- long pid;
- int id;
-
- if ((env = getenv("TMUX")) == NULL)
- return;
-
- if (sscanf(env, "%255[^,],%ld,%d", path, &pid, &id) != 3)
- return;
- environ_path = xstrdup(path);
- environ_pid = pid;
- environ_session_id = id;
-}
-
char *
makesocketpath(const char *label)
{
@@ -223,7 +203,9 @@ main(int argc, char **argv)
{
struct passwd *pw;
char *s, *path, *label, *home, **var, tmp[MAXPATHLEN];
- int opt, flags, quiet, keys;
+ char in[256];
+ long long pid;
+ int opt, flags, quiet, keys, session;
#ifdef DEBUG
malloc_options = (char *) "AFGJPX";
@@ -351,11 +333,15 @@ main(int argc, char **argv)
}
}
+ /* Get path from environment. */
+ s = getenv("TMUX");
+ if (s != NULL && sscanf(s, "%255[^,],%lld,%d", in, &pid, &session) == 3)
+ environ_path = xstrdup(in);
+
/*
* Figure out the socket path. If specified on the command-line with -S
* or -L, use it, otherwise try $TMUX or assume -L default.
*/
- parseenvironment();
if (path == NULL) {
/* If no -L, use the environment. */
if (label == NULL) {
diff --git a/tmux.h b/tmux.h
index e281790d..e18176e8 100644
--- a/tmux.h
+++ b/tmux.h
@@ -464,9 +464,6 @@ enum msgtype {
* Don't forget to bump PROTOCOL_VERSION if any of these change!
*/
struct msg_command_data {
- pid_t pid; /* from $TMUX or -1 */
- int session_id; /* from $TMUX or -1 */
-
int argc;
}; /* followed by packed argv */
@@ -1408,8 +1405,6 @@ struct cmd_q {
void (*emptyfn)(struct cmd_q *);
void *data;
- struct msg_command_data *msgdata;
-
TAILQ_ENTRY(cmd_q) waitentry;
};
@@ -1503,8 +1498,6 @@ extern time_t start_time;
extern char socket_path[MAXPATHLEN];
extern int login_shell;
extern char *environ_path;
-extern pid_t environ_pid;
-extern int environ_session_id;
void logfile(const char *);
const char *getshell(void);
int checkshell(const char *);