From: David Herrmann Date: Sun, 25 May 2014 09:54:55 +0000 (+0200) Subject: Partly revert "shl: handle pathconf() errors" X-Git-Tag: 8.0~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fupstream;hp=41e76d11dff6dd9bc08bf829751f9634f32cdd38;p=platform%2Fupstream%2Fkmscon.git 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 Signed-off-by: David Herrmann --- 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);