diff options
Diffstat (limited to 'tabbed.c')
| -rw-r--r-- | tabbed.c | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -169,6 +169,7 @@ static char winid[64]; static char **cmd; static char *wmname = "tabbed"; static const char *geometry; +static char *append_first; char *argv0; @@ -959,13 +960,15 @@ setcmd(int argc, char *argv[], int replace) { int i; - cmd = ecalloc(argc + 3, sizeof(*cmd)); + cmd = ecalloc(argc + 3 + (append_first != 0), sizeof(*cmd)); if (argc == 0) return; for (i = 0; i < argc; i++) cmd[i] = argv[i]; cmd[replace > 0 ? replace : argc] = winid; cmd_append_pos = argc + !replace; + if (append_first) + cmd[cmd_append_pos++] = append_first; cmd[cmd_append_pos] = cmd[cmd_append_pos + 1] = NULL; } @@ -1107,6 +1110,11 @@ spawn(const Arg *arg) perror(" failed"); exit(0); } + + if (append_first) { + cmd[--cmd_append_pos] = NULL; + append_first = 0; + } } int @@ -1270,7 +1278,7 @@ usage(void) { die("usage: %s [-dfksv] [-g geometry] [-n name] [-p [s+/-]pos]\n" " [-r narg] [-o color] [-O color] [-t color] [-T color]\n" - " [-u color] [-U color] command...\n", argv0); + " [-u color] [-U color] [-a first] command...\n", argv0); } int @@ -1333,6 +1341,9 @@ main(int argc, char *argv[]) case 'u': urgbgcolor = EARGF(usage()); break; + case 'a': + append_first = EARGF(usage()); + break; case 'v': die("tabbed-"VERSION", © 2009-2016 tabbed engineers, " "see LICENSE for details.\n"); |