diff --git a/appl/login/utmpx_login.c b/appl/login/utmpx_login.c index dd7351e62..a8404126d 100644 --- a/appl/login/utmpx_login.c +++ b/appl/login/utmpx_login.c @@ -30,13 +30,17 @@ utmpx_login(char *line, char *user, char *host) strncpy(ut->ut_line, line, sizeof(ut->ut_line)); strncpy(ut->ut_user, user, sizeof(ut->ut_user)); strncpy(ut->ut_host, host, sizeof(ut->ut_host)); +#ifdef HAVE_UT_SYSLEN ut->ut_syslen = strlen(host) + 1; if (ut->ut_syslen > sizeof(ut->ut_host)) ut->ut_syslen = sizeof(ut->ut_host); +#endif ut->ut_type = USER_PROCESS; gettimeofday(&(ut->ut_tv), 0); pututxline(ut); +#ifdef WTMPX_FILE updwtmpx(WTMPX_FILE, ut); +#endif ret = 0; break; } diff --git a/appl/telnet/telnetd/sys_term.c b/appl/telnet/telnetd/sys_term.c index c75d95e34..f721dbc62 100644 --- a/appl/telnet/telnetd/sys_term.c +++ b/appl/telnet/telnetd/sys_term.c @@ -45,7 +45,7 @@ RCSID("$Id$"); #include #endif -#if defined(CRAY) || defined(__hpux) +#if defined(CRAY) || (defined(__hpux) && !defined(HAVE_UTMPX_H)) # define PARENT_DOES_UTMP #endif @@ -53,7 +53,7 @@ RCSID("$Id$"); #error NEWINIT not supported #endif -#ifdef HAVE_UTMPX +#ifdef HAVE_UTMPX #include struct utmpx wtmp; #else @@ -1634,11 +1634,18 @@ rmut(void) if (utxp) { strcpy(utxp->ut_user, ""); utxp->ut_type = DEAD_PROCESS; +#ifdef _STRUCT___EXIT_STATUS + utxp->ut_exit.__e_termination = 0; + utxp->ut_exit.__e_exit = 0; +#else utxp->ut_exit.e_termination = 0; utxp->ut_exit.e_exit = 0; +#endif gettimeofday(&utxp->ut_tv, NULL); pututxline(utxp); +#ifdef WTMPX_FILE updwtmpx(WTMPX_FILE, utxp); +#endif } endutxent(); } /* end of rmut */ @@ -1702,7 +1709,7 @@ rmut(void) } /* end of rmut */ #endif /* CRAY */ -#ifdef __hpux +#if defined(__hpux) && !defined(HAVE_UTMPX) static void rmut (char *line) @@ -1803,8 +1810,6 @@ cleanup(int sig) #else /* PARENT_DOES_UTMP */ -extern void rmut(void); - void cleanup(int sig) {