X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgetlogin_r.c;h=b9b76c64b255d6c7089c3ec0ec4a7c10c0f32f96;hb=5fa5d3d767b29cf1d757609afbb56459b09743fa;hp=c02db2fe6559e8370c3f126ed931cc4bb13eacde;hpb=2eb4c7c4b75c78250ba27a844e3d5f1958c113b6;p=gnulib.git diff --git a/lib/getlogin_r.c b/lib/getlogin_r.c index c02db2fe6..b9b76c64b 100644 --- a/lib/getlogin_r.c +++ b/lib/getlogin_r.c @@ -18,7 +18,7 @@ /* written by Paul Eggert and Derek Price */ -#if HAVE_CONFIG_H +#ifdef HAVE_CONFIG_H # include #endif @@ -44,8 +44,15 @@ getlogin_r (char *name, size_t size) errno = 0; n = getlogin (); + + /* A system function like getlogin_r is never supposed to set errno + to zero, so make sure errno is nonzero here. ENOENT is a + reasonable errno value if getlogin returns NULL. */ + if (!errno) + errno = ENOENT; + if (!n) - return errno ? errno : ENOENT; + return errno; nlen = strlen (n); if (size <= nlen) return ERANGE;