diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | nss/nsswitch.c | 8 | ||||
-rw-r--r-- | sysdeps/generic/getutmp.c | 22 | ||||
-rw-r--r-- | sysdeps/generic/getutmpx.c | 30 |
4 files changed, 41 insertions, 26 deletions
@@ -1,3 +1,10 @@ +1999-05-14 Mark Kettenis <kettenis@gnu.org> + + * sysdeps/generic/getutmp.c: Include <string.h> + (getutmp): Rewrite to only copy those members that are really + present in `struct utmp'. + * sysdeps/generic/getutmpx.c: Likewise. + 1999-05-14 Ulrich Drepper <drepper@cygnus.com> * nss/getXXbyYY.c: Add free_mem function which disposes all diff --git a/nss/nsswitch.c b/nss/nsswitch.c index 8874b0caa1..0fac09ef65 100644 --- a/nss/nsswitch.c +++ b/nss/nsswitch.c @@ -755,12 +755,6 @@ nss_new_service (name_database *database, const char *name) } -static void -nothing (void *ptr __attribute__ ((unused))) -{ -} - - /* Free all resources if necessary. */ static void __attribute__ ((unused)) free_mem (void) @@ -787,7 +781,7 @@ free_mem (void) service_user *olds = service; if (service->known != NULL) - __tdestroy (service->known, nothing); + __tdestroy (service->known, free); service = service->next; free (olds); diff --git a/sysdeps/generic/getutmp.c b/sysdeps/generic/getutmp.c index 317a886752..0d3bf05bd8 100644 --- a/sysdeps/generic/getutmp.c +++ b/sysdeps/generic/getutmp.c @@ -16,25 +16,31 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <string.h> #include <utmp.h> #include <utmpx.h> +/* Copy the information in UTMPX to UTMP. */ void getutmp (const struct utmpx *utmpx, struct utmp *utmp) { +#if _HAVE_UT_TYPE - 0 utmp->ut_type = utmpx->ut_type; +#endif +#if _HAVE_UT_PID - 0 utmp->ut_pid = utmpx->ut_pid; +#endif memcpy (utmp->ut_line, utmpx->ut_line, sizeof (utmp->ut_line)); - memcpy (utmp->ut_id, utmpx->ut_id, sizeof (utmp->ut_id)); memcpy (utmp->ut_user, utmpx->ut_user, sizeof (utmp->ut_user)); +#if _HAVE_UT_ID - 0 + memcpy (utmp->ut_id, utmpx->ut_id, sizeof (utmp->ut_id)); +#endif +#if _HAVE_UT_HOST - 0 memcpy (utmp->ut_host, utmpx->ut_host, sizeof (utmp->ut_host)); -#ifdef _GNU_SOURCE - utmp->ut_exit.e_termination = utmpx->ut_exit.e_termination; - utmp->ut_exit.e_exit = utmpx->ut_exit.e_exit; -#else - utmp->ut_exit.__e_termination = utmpx->ut_exit.e_termination; - utmp->ut_exit.__e_exit = utmpx->ut_exit.e_exit; #endif - utmp->ut_session = utmpx->ut_session; +#if _HAVE_UT_TV - 0 utmp->ut_tv = utmpx->ut_tv; +#else + utmp->ut_time = utmpx->ut_time; +#endif } diff --git a/sysdeps/generic/getutmpx.c b/sysdeps/generic/getutmpx.c index 41dfeaed69..e707a6488c 100644 --- a/sysdeps/generic/getutmpx.c +++ b/sysdeps/generic/getutmpx.c @@ -16,25 +16,33 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <string.h> #include <utmp.h> #include <utmpx.h> +/* Copy the information in UTMP to UTMPX. */ void getutmpx (const struct utmp *utmp, struct utmpx *utmpx) { + memset (utmpx, 0, sizeof (struct utmpx)); + +#if _HAVE_UT_TYPE - 0 utmpx->ut_type = utmp->ut_type; +#endif +#if _HAVE_UT_PID - 0 utmpx->ut_pid = utmp->ut_pid; - memcpy (utmpx->ut_line, utmp->ut_line, sizeof (utmpx->ut_line)); - memcpy (utmpx->ut_id, utmp->ut_id, sizeof (utmpx->ut_id)); - memcpy (utmpx->ut_user, utmp->ut_user, sizeof (utmpx->ut_user)); - memcpy (utmpx->ut_host, utmp->ut_host, sizeof (utmpx->ut_host)); -#ifdef _GNU_SOURCE - utmpx->ut_exit.e_termination = utmp->ut_exit.e_termination; - utmpx->ut_exit.e_exit = utmp->ut_exit.e_exit; -#else - utmpx->ut_exit.__e_termination = utmp->ut_exit.e_termination; - utmpx->ut_exit.__e_exit = utmp->ut_exit.e_exit; #endif - utmpx->ut_session = utmp->ut_session; + memcpy (utmpx->ut_line, utmp->ut_line, sizeof (utmp->ut_line)); + memcpy (utmpx->ut_user, utmp->ut_user, sizeof (utmp->ut_user)); +#if _HAVE_UT_ID - 0 + memcpy (utmpx->ut_id, utmp->ut_id, sizeof (utmp->ut_id)); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (utmpx->ut_host, utmp->ut_host, sizeof (utmp->ut_host)); +#endif +#if _HAVE_UT_TV - 0 utmpx->ut_tv = utmp->ut_tv; +#else + utmpx->ut_time = utmp->ut_time; +#endif } |