version 1.36, 2018/05/24 09:42:49 |
version 1.37, 2019/05/20 13:23:32 |
|
|
cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) |
cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) |
{ |
{ |
struct args *args = self->args; |
struct args *args = self->args; |
int quiet = args_has(args, 'q'); |
int flags = 0; |
struct client *c = item->client; |
struct client *c = item->client; |
struct cmdq_item *new_item; |
struct cmdq_item *new_item, *after; |
enum cmd_retval retval; |
enum cmd_retval retval; |
char *pattern, *tmp; |
char *pattern, *tmp; |
const char *path = args->argv[0]; |
const char *path = args->argv[0]; |
glob_t g; |
glob_t g; |
u_int i; |
u_int i; |
|
|
|
if (args_has(args, 'q')) |
|
flags |= CFG_QUIET; |
|
|
if (*path == '/') |
if (*path == '/') |
pattern = xstrdup(path); |
pattern = xstrdup(path); |
else { |
else { |
|
|
|
|
retval = CMD_RETURN_NORMAL; |
retval = CMD_RETURN_NORMAL; |
if (glob(pattern, 0, NULL, &g) != 0) { |
if (glob(pattern, 0, NULL, &g) != 0) { |
if (!quiet || errno != ENOENT) { |
if (errno != ENOENT || (~flags & CFG_QUIET)) { |
cmdq_error(item, "%s: %s", path, strerror(errno)); |
cmdq_error(item, "%s: %s", path, strerror(errno)); |
retval = CMD_RETURN_ERROR; |
retval = CMD_RETURN_ERROR; |
} |
} |
|
|
} |
} |
free(pattern); |
free(pattern); |
|
|
|
after = item; |
for (i = 0; i < (u_int)g.gl_pathc; i++) { |
for (i = 0; i < (u_int)g.gl_pathc; i++) { |
if (load_cfg(g.gl_pathv[i], c, item, quiet) < 0) |
if (load_cfg(g.gl_pathv[i], c, after, flags, &new_item) < 0) |
retval = CMD_RETURN_ERROR; |
retval = CMD_RETURN_ERROR; |
|
else if (new_item != NULL) |
|
after = new_item; |
} |
} |
if (cfg_finished) { |
if (cfg_finished) { |
new_item = cmdq_get_callback(cmd_source_file_done, NULL); |
new_item = cmdq_get_callback(cmd_source_file_done, NULL); |