=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-source-file.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- src/usr.bin/tmux/cmd-source-file.c 2016/10/16 19:04:05 1.30 +++ src/usr.bin/tmux/cmd-source-file.c 2017/01/09 19:27:00 1.31 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-source-file.c,v 1.30 2016/10/16 19:04:05 nicm Exp $ */ +/* $OpenBSD: cmd-source-file.c,v 1.31 2017/01/09 19:27:00 nicm Exp $ */ /* * Copyright (c) 2008 Tiago Cunha @@ -18,7 +18,10 @@ #include +#include +#include #include +#include #include "tmux.h" @@ -48,23 +51,28 @@ 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) { + 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); } + quiet = args_has(args, 'q'); + + 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