(getlogin_r): Don't set errno to 0 on return.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 28 May 2005 06:11:39 +0000 (06:11 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 28 May 2005 06:11:39 +0000 (06:11 +0000)
lib/getlogin_r.c

index c02db2f..d269b92 100644 (file)
@@ -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;