diff options
-rw-r--r-- | usr.bin/getconf/getconf.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/usr.bin/getconf/getconf.c b/usr.bin/getconf/getconf.c index 0ba45a0..5f88db6 100644 --- a/usr.bin/getconf/getconf.c +++ b/usr.bin/getconf/getconf.c @@ -139,19 +139,23 @@ static void do_confstr(const char *name, int key) { size_t len; + int savederr; + savederr = errno; + errno = 0; len = confstr(key, 0, 0); - if (len == (size_t)-1) - err(EX_OSERR, "confstr: %s", name); - - if (len == 0) - printf("undefined\n"); - else { + if (len == 0) { + if (errno) + err(EX_OSERR, "confstr: %s", name); + else + printf("undefined\n"); + } else { char buf[len + 1]; confstr(key, buf, len); printf("%s\n", buf); } + errno = savederr; } static void |