From 2eb4c7c4b75c78250ba27a844e3d5f1958c113b6 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 25 May 2005 19:14:06 +0000 Subject: [PATCH] Fix a few glitches in getlogin_r. --- ChangeLog | 3 +-- lib/ChangeLog | 5 +++++ lib/getlogin_r.c | 27 +++++++++++---------------- lib/getlogin_r.h | 1 + m4/ChangeLog | 9 +++++++-- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d6aca495..2a5cb3aa1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,7 @@ 2005-05-25 Derek Price Paul Eggert - * 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 diff --git a/lib/ChangeLog b/lib/ChangeLog index f938e2d30..b19e466ca 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2005-05-25 Derek Price + Paul Eggert + + * getlogin_r.c, getlogin_r.h: New files. + 2005-05-22 Bruno Haible * minmax.h: Include only when it defines MIN, MAX. diff --git a/lib/getlogin_r.c b/lib/getlogin_r.c index 5683504c7..c02db2fe6 100644 --- a/lib/getlogin_r.c +++ b/lib/getlogin_r.c @@ -18,7 +18,9 @@ /* written by Paul Eggert and Derek Price */ -#include +#if HAVE_CONFIG_H +# include +#endif #include "getlogin_r.h" @@ -38,22 +40,15 @@ int 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; } diff --git a/lib/getlogin_r.h b/lib/getlogin_r.h index d6f31beb2..90df726aa 100644 --- a/lib/getlogin_r.h +++ b/lib/getlogin_r.h @@ -33,5 +33,6 @@ See . */ +# include int getlogin_r (char *name, size_t size); #endif diff --git a/m4/ChangeLog b/m4/ChangeLog index 930047e7f..94fc9c17e 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,8 @@ +2005-05-25 Derek Price + Paul Eggert + + * getlogin_r.m4: New files. + 2005-05-22 Bruno Haible * 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. -- 2.11.0