diff options
author | 2019-12-18 07:48:56 +0000 | |
---|---|---|
committer | 2019-12-18 07:48:56 +0000 | |
commit | b58687ef2f8b9f942b1f18d4f0e2aef597b470a6 (patch) | |
tree | d26d019b5f92e2374b0905307731b735d5b8c28e /usr.bin/tmux/cmd-source-file.c | |
parent | remove reference to a non-existent page; advised by jsg (diff) | |
download | wireguard-openbsd-b58687ef2f8b9f942b1f18d4f0e2aef597b470a6.tar.xz wireguard-openbsd-b58687ef2f8b9f942b1f18d4f0e2aef597b470a6.zip |
Do not rely on errno after glob(3) fails.
Diffstat (limited to 'usr.bin/tmux/cmd-source-file.c')
-rw-r--r-- | usr.bin/tmux/cmd-source-file.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/usr.bin/tmux/cmd-source-file.c b/usr.bin/tmux/cmd-source-file.c index c22a82bfe34..1295668eee2 100644 --- a/usr.bin/tmux/cmd-source-file.c +++ b/usr.bin/tmux/cmd-source-file.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-source-file.c,v 1.42 2019/12/12 12:49:36 nicm Exp $ */ +/* $OpenBSD: cmd-source-file.c,v 1.43 2019/12/18 07:48:56 nicm Exp $ */ /* * Copyright (c) 2008 Tiago Cunha <me@tiagocunha.org> @@ -130,7 +130,7 @@ cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) char *pattern, *cwd; const char *path, *error; glob_t g; - int i; + int i, result; u_int j; cdata = xcalloc(1, sizeof *cdata); @@ -158,9 +158,15 @@ cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) xasprintf(&pattern, "%s/%s", cwd, path); log_debug("%s: %s", __func__, pattern); - if (glob(pattern, 0, NULL, &g) != 0) { - error = strerror(errno); - if (errno != ENOENT || (~flags & CMD_PARSE_QUIET)) { + if ((result = glob(pattern, 0, NULL, &g)) != 0) { + if (result != GLOB_NOMATCH || + (~flags & CMD_PARSE_QUIET)) { + if (result == GLOB_NOMATCH) + error = strerror(ENOENT); + else if (result == GLOB_NOSPACE) + error = strerror(ENOMEM); + else + error = strerror(EINVAL); cmdq_error(item, "%s: %s", path, error); retval = CMD_RETURN_ERROR; } |