diff options
author | Thomas Adam <thomas@xteddy.org> | 2021-10-11 14:01:13 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2021-10-11 14:01:13 +0100 |
commit | af82106fae823f55fd3c746e1b48bc8e52a55e68 (patch) | |
tree | 2189aea822dbccb9d70837e6d088cd79c821e664 /cmd-display-menu.c | |
parent | 7ca863c5af3dbbb78d45bec5b113a69f983f2fdc (diff) | |
parent | 759efe1b3327a7244c03ecc7b90e0e3c49712d06 (diff) | |
download | rtmux-af82106fae823f55fd3c746e1b48bc8e52a55e68.tar.gz rtmux-af82106fae823f55fd3c746e1b48bc8e52a55e68.tar.bz2 rtmux-af82106fae823f55fd3c746e1b48bc8e52a55e68.zip |
Merge branch 'obsd-master' into master
Diffstat (limited to 'cmd-display-menu.c')
-rw-r--r-- | cmd-display-menu.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/cmd-display-menu.c b/cmd-display-menu.c index 1a11bd01..d1e974db 100644 --- a/cmd-display-menu.c +++ b/cmd-display-menu.c @@ -52,10 +52,10 @@ const struct cmd_entry cmd_display_popup_entry = { .name = "display-popup", .alias = "popup", - .args = { "BCc:d:Eh:t:w:x:y:", 0, -1, NULL }, - .usage = "[-BCE] [-c target-client] [-d start-directory] [-h height] " - CMD_TARGET_PANE_USAGE " [-w width] " - "[-x position] [-y position] [shell-command]", + .args = { "BCc:d:e:Eh:t:w:x:y:", 0, -1, NULL }, + .usage = "[-BCE] [-c target-client] [-d start-directory] " + "[-e environment] [-h height] " CMD_TARGET_PANE_USAGE " " + "[-w width] [-x position] [-y position] [shell-command]", .target = { 't', CMD_FIND_PANE, 0 }, @@ -356,6 +356,8 @@ cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item) char *cwd, *cause, **argv = NULL; int flags = 0, argc = 0; u_int px, py, w, h, count = args_count(args); + struct args_value *av; + struct environ *env = NULL; if (args_has(args, 'C')) { server_client_clear_overlay(tc); @@ -409,17 +411,30 @@ cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item) } else args_to_vector(args, &argc, &argv); + if (args_has(args, 'e') >= 1) { + env = environ_create(); + av = args_first_value(args, 'e'); + while (av != NULL) { + environ_put(env, av->string, 0); + av = args_next_value(av); + } + } + if (args_has(args, 'E') > 1) flags |= POPUP_CLOSEEXITZERO; else if (args_has(args, 'E')) flags |= POPUP_CLOSEEXIT; if (args_has(args, 'B')) flags |= POPUP_NOBORDER; - if (popup_display(flags, item, px, py, w, h, shellcmd, argc, argv, cwd, - tc, s, NULL, NULL) != 0) { + if (popup_display(flags, item, px, py, w, h, env, shellcmd, argc, argv, + cwd, tc, s, NULL, NULL) != 0) { cmd_free_argv(argc, argv); + if (env != NULL) + environ_free(env); return (CMD_RETURN_NORMAL); } + if (env != NULL) + environ_free(env); cmd_free_argv(argc, argv); return (CMD_RETURN_WAIT); } |