diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-01-09 20:01:12 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-01-09 20:01:12 +0000 |
commit | 95f5d406e5a5de6f44023436cfc273ac937875bc (patch) | |
tree | 2b7ec971b5f61b83b1cec682110cbe9efa71653f | |
parent | d90fa2ec137eede58d41e0737e354b49b73d1b5a (diff) | |
parent | 561b5c6fdbdafae52ac5b4bd963f0d75af344c5b (diff) | |
download | rtmux-95f5d406e5a5de6f44023436cfc273ac937875bc.tar.gz rtmux-95f5d406e5a5de6f44023436cfc273ac937875bc.tar.bz2 rtmux-95f5d406e5a5de6f44023436cfc273ac937875bc.zip |
Merge branch 'obsd-master'
-rw-r--r-- | cfg.c | 10 | ||||
-rw-r--r-- | cmd-source-file.c | 28 | ||||
-rw-r--r-- | tmux.1 | 5 | ||||
-rw-r--r-- | tmux.h | 2 |
4 files changed, 29 insertions, 16 deletions
@@ -27,11 +27,11 @@ #include "tmux.h" -char *cfg_file; -int cfg_finished; -static char **cfg_causes; -static u_int cfg_ncauses; -struct client *cfg_client; +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) diff --git a/cmd-source-file.c b/cmd-source-file.c index d2178692..4ca47193 100644 --- a/cmd-source-file.c +++ b/cmd-source-file.c @@ -18,7 +18,10 @@ #include <sys/types.h> +#include <errno.h> +#include <glob.h> #include <stdlib.h> +#include <string.h> #include "tmux.h" @@ -48,23 +51,30 @@ cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) struct client *c = item->client; int quiet; struct cmdq_item *new_item; + enum cmd_retval retval; + glob_t g; + int i; quiet = args_has(args, 'q'); - switch (load_cfg(args->argv[0], c, item, quiet)) { - case -1: - if (cfg_finished) - cfg_print_causes(item); + if (glob(args->argv[0], 0, NULL, &g) != 0) { + if (quiet && errno == ENOENT) + return (CMD_RETURN_NORMAL); + cmdq_error(item, "%s: %s", args->argv[0], strerror(errno)); return (CMD_RETURN_ERROR); - case 0: - if (cfg_finished) - cfg_print_causes(item); - return (CMD_RETURN_NORMAL); + } + + retval = CMD_RETURN_NORMAL; + for (i = 0; i < g.gl_pathc; i++) { + if (load_cfg(g.gl_pathv[i], c, item, quiet) != 0) + retval = CMD_RETURN_ERROR; } if (cfg_finished) { new_item = cmdq_get_callback(cmd_source_file_done, NULL); cmdq_insert_after(item, new_item); } - return (CMD_RETURN_NORMAL); + + globfree(&g); + return (retval); } static enum cmd_retval @@ -925,7 +925,10 @@ show debugging information about jobs and terminals. .Xc .D1 (alias: Ic source ) Execute commands from -.Ar path . +.Ar path +(which may be a +.Xr glob 3 +pattern). If .Fl q is given, no error will be returned if @@ -78,7 +78,7 @@ struct tmuxproc; #define READ_CHANGE_HITS 3 -/* Attribute to make gcc check printf-like arguments. */ +/* Attribute to make GCC check printf-like arguments. */ #define printflike(a, b) __attribute__ ((format (printf, a, b))) /* Number of items in array. */ |