Do not expand the file given with -f so it can contain :s.
authornicm <nicm@openbsd.org>
Thu, 10 Jun 2021 07:52:29 +0000 (07:52 +0000)
committernicm <nicm@openbsd.org>
Thu, 10 Jun 2021 07:52:29 +0000 (07:52 +0000)
usr.bin/tmux/tmux.c

index 82cb97f..01a992a 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.c,v 1.206 2021/02/22 11:42:50 nicm Exp $ */
+/* $OpenBSD: tmux.c,v 1.207 2021/06/10 07:52:29 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -338,7 +338,7 @@ main(int argc, char **argv)
        char                                    *path = NULL, *label = NULL;
        char                                    *cause, **var;
        const char                              *s, *cwd;
-       int                                      opt, keys, feat = 0;
+       int                                      opt, keys, feat = 0, fflag = 0;
        uint64_t                                 flags = 0;
        const struct options_table_entry        *oe;
        u_int                                    i;
@@ -383,10 +383,15 @@ main(int argc, char **argv)
                                flags |= CLIENT_CONTROL;
                        break;
                case 'f':
-                       for (i = 0; i < cfg_nfiles; i++)
-                               free(cfg_files[i]);
-                       free(cfg_files);
-                       expand_paths(optarg, &cfg_files, &cfg_nfiles, 0);
+                       if (!fflag) {
+                               fflag = 1;
+                               for (i = 0; i < cfg_nfiles; i++)
+                                       free(cfg_files[i]);
+                               cfg_nfiles = 0;
+                       }
+                       cfg_files = xreallocarray(cfg_files, cfg_nfiles + 1,
+                           sizeof *cfg_files);
+                       cfg_files[cfg_nfiles++] = xstrdup(optarg);
                        cfg_quiet = 0;
                        break;
                case 'V':