changeset 5887:cfb8f3b61b7f

Fix a few glitches in getlogin_r.
author Paul Eggert <eggert@cs.ucla.edu>
date Wed, 25 May 2005 19:14:06 +0000
parents 775f86a9883a
children 266767a72575
files ChangeLog lib/ChangeLog lib/getlogin_r.c lib/getlogin_r.h m4/ChangeLog
diffstat 5 files changed, 25 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,7 @@
 2005-05-25  Derek Price  <derek@ximbiot.com>
 	    Paul Eggert  <eggert@cs.ucla.edu>
 
-	* lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
-	modules/getlogin_r: New files.
+	* modules/getlogin_r: New files.
 
 2005-05-18  Derek Price  <derek@ximbiot.com>
 
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-25  Derek Price  <derek@ximbiot.com>
+	    Paul Eggert  <eggert@cs.ucla.edu>
+
+	* getlogin_r.c, getlogin_r.h: New files.
+
 2005-05-22  Bruno Haible  <bruno@clisp.org>
 
 	* minmax.h: Include <limits.h> only when it defines MIN, MAX.
--- a/lib/getlogin_r.c
+++ b/lib/getlogin_r.c
@@ -18,7 +18,9 @@
 
 /* written by Paul Eggert and Derek Price */
 
-#include <config.h>
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
 
 #include "getlogin_r.h"
 
@@ -38,22 +40,15 @@
 getlogin_r (char *name, size_t size)
 {
   char *n;
-  int save_errno = errno;
+  size_t nlen;
 
   errno = 0;
   n = getlogin ();
-  if (n)
-    {
-      size_t nlen = strlen (n);
-      if (nlen < size)
-        {
-          memcpy (name, n, nlen + 1);
-          return 0;
-        }
-      errno = ERANGE;
-    }
-
-  if (errno) return errno;
-  errno = save_errno;
-  return -1;
+  if (!n)
+    return errno ? errno : ENOENT;
+  nlen = strlen (n);
+  if (size <= nlen)
+    return ERANGE;
+  memcpy (name, n, nlen + 1);
+  return 0;
 }
--- a/lib/getlogin_r.h
+++ b/lib/getlogin_r.h
@@ -33,5 +33,6 @@
 
    See <http://www.opengroup.org/onlinepubs/009695399/functions/getlogin.html>.
  */
+# include <stddef.h>
 int getlogin_r (char *name, size_t size);
 #endif
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-25  Derek Price  <derek@ximbiot.com>
+	    Paul Eggert  <eggert@cs.ucla.edu>
+
+	* getlogin_r.m4: New files.
+
 2005-05-22  Bruno Haible  <bruno@clisp.org>
 
 	* minmax.m4: New file.
@@ -4226,7 +4231,7 @@
 	* uintmax_t.m4: New file.
 	* Makefile.am (EXTRA_DIST): Add inttypes_h.m4 and uintmax_t.m4.
 
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
   Free Software Foundation, Inc.
 Copying and distribution of this file, with or without modification,
-are permitted provided the copyright notice and this notice are preserved.
\ No newline at end of file
+are permitted provided the copyright notice and this notice are preserved.