Do not run the config file in the context of the first client, instead
authornicm <nicm@openbsd.org>
Fri, 21 Apr 2017 13:15:43 +0000 (13:15 +0000)
committernicm <nicm@openbsd.org>
Fri, 21 Apr 2017 13:15:43 +0000 (13:15 +0000)
use no client like we did before. This means commands like new-session
won't try to attach if they are in the config file.

usr.bin/tmux/cfg.c

index 04e9780..bc49bb9 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cfg.c,v 1.55 2017/04/05 10:45:39 nicm Exp $ */
+/* $OpenBSD: cfg.c,v 1.56 2017/04/21 13:15:43 nicm Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -32,7 +32,6 @@ static char    *cfg_file;
 int              cfg_finished;
 static char    **cfg_causes;
 static u_int     cfg_ncauses;
-struct client   *cfg_client;
 
 static enum cmd_retval
 cfg_done(__unused struct cmdq_item *item, __unused void *data)
@@ -44,8 +43,6 @@ cfg_done(__unused struct cmdq_item *item, __unused void *data)
        if (!RB_EMPTY(&sessions))
                cfg_show_causes(RB_MIN(sessions, &sessions));
 
-       if (cfg_client != NULL)
-               server_client_unref(cfg_client);
        return (CMD_RETURN_NORMAL);
 }
 
@@ -62,20 +59,22 @@ start_cfg(void)
        const char      *home;
        int              quiet = 0;
 
-       cfg_client = TAILQ_FIRST(&clients);
-       if (cfg_client != NULL)
-               cfg_client->references++;
+       /*
+        * Note that the configuration files are loaded without a client, so
+        * NULL is passed into load_cfg() which means that commands run in the
+        * global queue and item->client is NULL for all commands.
+        */
 
-       load_cfg(TMUX_CONF, cfg_client, NULL, 1);
+       load_cfg(TMUX_CONF, NULL, NULL, 1);
 
        if (cfg_file == NULL && (home = find_home()) != NULL) {
                xasprintf(&cfg_file, "%s/.tmux.conf", home);
                quiet = 1;
        }
        if (cfg_file != NULL)
-               load_cfg(cfg_file, cfg_client, NULL, quiet);
+               load_cfg(cfg_file, NULL, NULL, quiet);
 
-       cmdq_append(cfg_client, cmdq_get_callback(cfg_done, NULL));
+       cmdq_append(NULL, cmdq_get_callback(cfg_done, NULL));
 }
 
 int