diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2014-05-25 11:54:55 +0200 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2014-05-25 11:56:50 +0200 |
commit | 074792020c9cec199959d4f5c39f3ef21318c031 (patch) | |
tree | f49c3876c51d855dd35af2e8bc7f9347aecd6457 /src | |
parent | 41e76d11dff6dd9bc08bf829751f9634f32cdd38 (diff) |
Partly revert "shl: handle pathconf() errors"
This partly reverts commit 41e76d11dff6dd9bc08bf829751f9634f32cdd38. I
removed the "superfluous" errno-handling, which in fact is needed. Turns
out pathconf() might leave errno unchanged.
Reported-by: Lubomir Rintel <lkundrak@v3.sk>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/kmscon_module.c | 2 | ||||
-rw-r--r-- | src/shl_misc.h | 10 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/kmscon_module.c b/src/kmscon_module.c index f480914..2bf0576 100644 --- a/src/kmscon_module.c +++ b/src/kmscon_module.c @@ -181,7 +181,7 @@ void kmscon_load_modules(void) { int ret; DIR *ent; - struct dirent *buf = NULL, *de; + struct dirent *buf, *de; char *file; struct kmscon_module *mod; diff --git a/src/shl_misc.h b/src/shl_misc.h index f4a6d90..fc37d9d 100644 --- a/src/shl_misc.h +++ b/src/shl_misc.h @@ -54,9 +54,15 @@ static inline int shl_dirent(const char *path, struct dirent **ent) struct dirent *tmp; long name_max; + /* errno may be left unchanged, see pathconf(3p) */ + errno = 0; name_max = pathconf(path, _PC_NAME_MAX); - if (name_max < 0) - return -errno; + if (name_max < 0) { + if (errno) + return -errno; + else + return -EINVAL; + } len = offsetof(struct dirent, d_name) + name_max + 1; tmp = malloc(len); |