diff options
Diffstat (limited to 'system/procps/use-utmpx.patch')
-rw-r--r-- | system/procps/use-utmpx.patch | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/system/procps/use-utmpx.patch b/system/procps/use-utmpx.patch new file mode 100644 index 000000000..83047cf22 --- /dev/null +++ b/system/procps/use-utmpx.patch @@ -0,0 +1,132 @@ +diff --git a/configure.ac b/configure.ac +index bc84a0d..da2916e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -44,7 +44,7 @@ AC_PROG_MAKE_SET + + # Checks for header files. + AC_HEADER_MAJOR +-AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h langinfo.h libintl.h limits.h locale.h netinet/in.h stdint.h stdio_ext.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/time.h termios.h unistd.h utmp.h values.h wchar.h wctype.h]) ++AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h langinfo.h libintl.h limits.h locale.h netinet/in.h stdint.h stdio_ext.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/time.h termios.h unistd.h utmp.h utmpx.h values.h wchar.h wctype.h]) + + # Checks for typedefs, structures, and compiler characteristics. + AC_CHECK_HEADER_STDBOOL +diff --git a/proc/whattime.c b/proc/whattime.c +index c223cad..d55fd22 100644 +--- a/proc/whattime.c ++++ b/proc/whattime.c +@@ -33,7 +33,7 @@ + #include <fcntl.h> + #include <unistd.h> + #include <time.h> +-#include <utmp.h> ++#include <utmpx.h> + #include <sys/ioctl.h> + #include "whattime.h" + #include "sysinfo.h" +@@ -42,7 +42,7 @@ static char buf[256]; + static double av[3]; + + char *sprint_uptime(int human_readable) { +- struct utmp *utmpstruct; ++ struct utmpx *utmpstruct; + int upminutes, uphours, updays, upweeks, upyears, updecades; + int pos; + int comma; +@@ -98,13 +98,13 @@ char *sprint_uptime(int human_readable) { + /* count the number of users */ + + numuser = 0; +- setutent(); +- while ((utmpstruct = getutent())) { ++ setutxent(); ++ while ((utmpstruct = getutxent())) { + if ((utmpstruct->ut_type == USER_PROCESS) && + (utmpstruct->ut_name[0] != '\0')) + numuser++; + } +- endutent(); ++ endutxent(); + + pos += sprintf(buf + pos, "%2d user%s, ", numuser, numuser == 1 ? "" : "s"); + +diff --git a/w.c b/w.c +index 35710a3..6caa8a6 100644 +--- a/w.c ++++ b/w.c +@@ -23,6 +23,7 @@ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include "config.h" + #include "c.h" + #include "fileutils.h" + #include "nls.h" +@@ -54,14 +55,22 @@ + #include <termios.h> + #include <time.h> + #include <unistd.h> +-#include <utmp.h> ++#ifdef HAVE_UTMPX_H ++# include <utmpx.h> ++#else ++# include <utmp.h> ++#endif + #include <arpa/inet.h> + + static int ignoreuser = 0; /* for '-u' */ + static int oldstyle = 0; /* for '-o' */ + static proc_t **procs; /* our snapshot of the process table */ + ++#ifdef HAVE_UTMPX_H ++typedef struct utmpx utmp_t; ++#else + typedef struct utmp utmp_t; ++#endif + + #ifdef W_SHOWFROM + # define FROM_STRING "on" +@@ -604,11 +613,19 @@ int main(int argc, char **argv) + printf(_(" IDLE WHAT\n")); + } + ++#ifdef HAVE_UTMPX_H ++ setutxent(); ++#else + utmpname(UTMP_FILE); + setutent(); ++#endif + if (user) { + for (;;) { ++#ifdef HAVE_UTMPX_H ++ u = getutxent(); ++#else + u = getutent(); ++#endif + if (unlikely(!u)) + break; + if (u->ut_type != USER_PROCESS) +@@ -619,7 +636,11 @@ int main(int argc, char **argv) + } + } else { + for (;;) { ++#ifdef HAVE_UTMPX_H ++ u = getutxent(); ++#else + u = getutent(); ++#endif + if (unlikely(!u)) + break; + if (u->ut_type != USER_PROCESS) +@@ -629,7 +650,11 @@ int main(int argc, char **argv) + fromlen, ip_addresses); + } + } ++#ifdef HAVE_UTMPX_H ++ endutxent(); ++#else + endutent(); ++#endif + + return EXIT_SUCCESS; + } |