From e672438e6e590c0527645325686522015eeb93f77439d9b1ecd8a1b101a04b51 Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Fri, 18 Aug 2023 09:10:18 +0000 Subject: [PATCH] Really do not truncate w output with option -n OBS-URL: https://build.opensuse.org/package/show/Base:System/procps?expand=0&rev=246 --- procps-ng-3.3.17-logind.patch | 131 ++++++++++++++++-------------- procps-ng-3.3.9-w-notruncate.diff | 19 +++-- procps.changes | 8 ++ 3 files changed, 86 insertions(+), 72 deletions(-) diff --git a/procps-ng-3.3.17-logind.patch b/procps-ng-3.3.17-logind.patch index 3e8032a..27d399c 100644 --- a/procps-ng-3.3.17-logind.patch +++ b/procps-ng-3.3.17-logind.patch @@ -1,7 +1,12 @@ -diff -ur procps-3.3.17/configure.ac procps-3.3.17-logind/configure.ac ---- procps-3.3.17/configure.ac 2021-02-09 11:11:25.000000000 +0100 -+++ procps-3.3.17-logind/configure.ac 2023-08-17 10:13:43.400631603 +0200 -@@ -206,6 +206,13 @@ +--- + configure.ac | 7 + + proc/whattime.c | 18 ++++ + w.c | 206 ++++++++++++++++++++++++++++++++++++++++++++++++-------- + 3 files changed, 203 insertions(+), 28 deletions(-) + +--- a/configure.ac ++++ b/configure.ac 2023-08-17 08:13:43.400631603 +0000 +@@ -214,6 +214,13 @@ AC_ARG_WITH([systemd], AS_IF([test "x$with_systemd" != "xno"], [ PKG_CHECK_MODULES([SYSTEMD], [libsystemd]) AC_DEFINE(WITH_SYSTEMD, 1, [enable systemd support]) @@ -15,51 +20,8 @@ diff -ur procps-3.3.17/configure.ac procps-3.3.17-logind/configure.ac ]) AM_CONDITIONAL([WITH_SYSTEMD], [test x$with_systemd != xno]) -diff -ur procps-3.3.17/proc/whattime.c procps-3.3.17-logind/proc/whattime.c ---- procps-3.3.17/proc/whattime.c 2021-02-09 11:11:25.000000000 +0100 -+++ procps-3.3.17-logind/proc/whattime.c 2023-08-17 10:13:43.400631603 +0200 -@@ -38,6 +38,15 @@ - #include "whattime.h" - #include "sysinfo.h" - -+#ifdef WITH_SYSTEMD -+#include -+#include -+#endif -+#ifdef WITH_ELOGIND -+#include -+#include -+#endif -+ - static char buf[256]; - static double av[3]; - -@@ -98,6 +107,11 @@ - /* count the number of users */ - - numuser = 0; -+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND) -+ if (sd_booted() > 0) -+ numuser = sd_get_sessions(NULL); -+ else { -+#endif - setutent(); - while ((utmpstruct = getutent())) { - if ((utmpstruct->ut_type == USER_PROCESS) && -@@ -105,6 +119,10 @@ - numuser++; - } - endutent(); -+#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND) -+ } -+#endif -+ - - pos += sprintf(buf + pos, "%2d user%s, ", numuser, numuser == 1 ? "" : "s"); - -diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c ---- procps-3.3.17/w.c 2023-08-17 10:13:18.040481829 +0200 -+++ procps-3.3.17-logind/w.c 2023-08-17 14:40:26.000000000 +0200 +--- a/w.c ++++ b/w.c 2023-08-18 09:05:49.745019308 +0000 @@ -56,11 +56,22 @@ #include #include @@ -84,7 +46,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c static int ignoreuser = 0; /* for '-u' */ static int oldstyle = 0; /* for '-o' */ -@@ -72,12 +83,6 @@ +@@ -72,12 +83,6 @@ typedef struct utmpx utmp_t; typedef struct utmp utmp_t; #endif @@ -97,7 +59,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c #ifdef W_SHOWFROM # define FROM_STRING "on" #else -@@ -198,7 +203,25 @@ +@@ -198,7 +203,25 @@ static void print_display_or_interface(c /* This routine prints either the hostname or the IP address of the remote */ @@ -124,7 +86,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c char buf[fromlen + 1]; char buf_ipv6[INET6_ADDRSTRLEN]; int len; -@@ -243,6 +266,9 @@ +@@ -243,6 +266,9 @@ static void print_from(const utmp_t *res #else print_host(u->ut_host, UT_HOSTSIZE, fromlen); #endif @@ -134,7 +96,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c } -@@ -341,7 +367,11 @@ +@@ -341,7 +367,11 @@ error: * the user for that login session is doing currently. This the * essential core of 'w'. */ @@ -147,7 +109,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c const char *restrict const tty, unsigned long long *restrict const jcpu, int *restrict const found_utpid) -@@ -351,9 +381,16 @@ +@@ -351,9 +381,16 @@ static const proc_t *getproc(const utmp_ const proc_t *best = NULL; const proc_t *secondbest = NULL; unsigned uid = ~0U; @@ -164,7 +126,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c char buf[UT_NAMESIZE + 1]; /* pointer to static data */ struct passwd *passwd_data; -@@ -364,12 +401,21 @@ +@@ -364,12 +401,21 @@ static const proc_t *getproc(const utmp_ return NULL; uid = passwd_data->pw_uid; /* OK to have passwd_data go out of scope here */ @@ -188,7 +150,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c *found_utpid = 1; if (!best) best = tmp; -@@ -393,7 +439,11 @@ +@@ -393,7 +439,11 @@ static const proc_t *getproc(const utmp_ return best ? best : secondbest; } @@ -201,7 +163,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c int userlen, int fromlen, const int ip_addresses) { unsigned long long jcpu; -@@ -402,14 +452,36 @@ +@@ -402,14 +452,36 @@ static void showinfo(utmp_t * u, int for char uname[UT_NAMESIZE + 1] = "", tty[5 + UT_LINESIZE + 1] = "/dev/"; const proc_t *best; @@ -239,7 +201,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c /* * just skip if stale utmp entry (i.e. login proc doesn't -@@ -420,25 +492,55 @@ +@@ -420,26 +492,56 @@ static void showinfo(utmp_t * u, int for if (!ut_pid_found) return; @@ -259,6 +221,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c - userlen = strnlen(uname, UT_NAMESIZE); - fromlen = strnlen(u->ut_host, UT_HOSTSIZE); - utlnlen = strnlen(u->ut_line, UT_LINESIZE); +- maxcmd = MAX_CMD_WIDTH; + int utlnlen = 8; + if (formtype > 1) { + userlen = strnlen(uname, UT_NAMESIZE); @@ -270,6 +233,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c + utlnlen = strlen (tty+5); } - printf("%-*.*s%-*.*s", userlen + 1, userlen, uname, utlnlen + 1, utlnlen, u->ut_line); ++ maxcmd = MAX_CMD_WIDTH; + } + printf("%-*.*s%-*.*s", userlen + 1, userlen, uname, utlnlen + 1, utlnlen, tty+5); +#if (defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)) && defined(HAVE_SD_SESSION_GET_LEADER) @@ -304,7 +268,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c /* idle unknown for xdm logins */ printf(" ?xdm? "); else -@@ -456,8 +558,12 @@ +@@ -457,8 +559,12 @@ static void showinfo(utmp_t * u, int for printf("%-*.*s%-9.8s", userlen + 1, userlen, u->ut_user, u->ut_line); if (from) @@ -319,7 +283,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c /* idle unknown for xdm logins */ printf(" ?xdm? "); else -@@ -634,7 +740,40 @@ +@@ -635,7 +741,40 @@ int main(int argc, char **argv) else printf(_(" IDLE WHAT\n")); } @@ -361,7 +325,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c #ifdef HAVE_UTMPX_H setutxent(); #else -@@ -653,7 +792,11 @@ +@@ -654,7 +793,11 @@ int main(int argc, char **argv) if (u->ut_type != USER_PROCESS) continue; if (!strncmp(u->ut_user, user, UT_NAMESIZE)) @@ -374,7 +338,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c fromlen, ip_addresses); } } else { -@@ -668,7 +811,11 @@ +@@ -669,7 +812,11 @@ int main(int argc, char **argv) if (u->ut_type != USER_PROCESS) continue; if (*u->ut_user) @@ -387,7 +351,7 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c fromlen, ip_addresses); } } -@@ -677,6 +824,9 @@ +@@ -678,6 +825,9 @@ int main(int argc, char **argv) #else endutent(); #endif @@ -397,3 +361,44 @@ diff -ur procps-3.3.17/w.c procps-3.3.17-logind/w.c return EXIT_SUCCESS; } +--- a/proc/whattime.c ++++ b/proc/whattime.c 2023-08-17 08:13:43.400631603 +0000 +@@ -38,6 +38,15 @@ + #include "whattime.h" + #include "sysinfo.h" + ++#ifdef WITH_SYSTEMD ++#include ++#include ++#endif ++#ifdef WITH_ELOGIND ++#include ++#include ++#endif ++ + static char buf[256]; + static double av[3]; + +@@ -98,6 +107,11 @@ char *sprint_uptime(int human_readable) + /* count the number of users */ + + numuser = 0; ++#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND) ++ if (sd_booted() > 0) ++ numuser = sd_get_sessions(NULL); ++ else { ++#endif + setutent(); + while ((utmpstruct = getutent())) { + if ((utmpstruct->ut_type == USER_PROCESS) && +@@ -105,6 +119,10 @@ char *sprint_uptime(int human_readable) + numuser++; + } + endutent(); ++#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND) ++ } ++#endif ++ + + pos += sprintf(buf + pos, "%2d user%s, ", numuser, numuser == 1 ? "" : "s"); + diff --git a/procps-ng-3.3.9-w-notruncate.diff b/procps-ng-3.3.9-w-notruncate.diff index faa54e2..d78b760 100644 --- a/procps-ng-3.3.9-w-notruncate.diff +++ b/procps-ng-3.3.9-w-notruncate.diff @@ -1,10 +1,10 @@ --- w.1 | 3 +++ - w.c | 18 +++++++++++++++--- - 2 files changed, 18 insertions(+), 3 deletions(-) + w.c | 19 ++++++++++++++++--- + 2 files changed, 19 insertions(+), 3 deletions(-) --- w.1 -+++ w.1 2021-02-10 09:47:10.894888530 +0000 ++++ w.1 2023-08-18 08:21:51.764340794 +0000 @@ -40,6 +40,9 @@ and a \fB\-s\fR, \fB\-\-short\fR Use the short format. Don't print the login time, JCPU or PCPU times. @@ -16,7 +16,7 @@ Toggle printing the .B from --- w.c -+++ w.c 2021-02-10 09:51:09.750284453 +0000 ++++ w.c 2023-08-18 08:37:32.143482035 +0000 @@ -394,7 +394,7 @@ static const proc_t *getproc(const utmp_ } @@ -26,7 +26,7 @@ { unsigned long long jcpu; int ut_pid_found; -@@ -424,7 +424,13 @@ static void showinfo(utmp_t * u, int for +@@ -424,7 +424,14 @@ static void showinfo(utmp_t * u, int for strncpy(uname, u->ut_user, UT_NAMESIZE); if (formtype) { @@ -36,12 +36,13 @@ + userlen = strnlen(uname, UT_NAMESIZE); + fromlen = strnlen(u->ut_host, UT_HOSTSIZE); + utlnlen = strnlen(u->ut_line, UT_LINESIZE); ++ maxcmd = MAX_CMD_WIDTH; + } + printf("%-*.*s%-*.*s", userlen + 1, userlen, uname, utlnlen + 1, utlnlen, u->ut_line); if (from) print_from(u, ip_addresses, fromlen); #ifdef HAVE_UTMPX_H -@@ -478,6 +484,7 @@ static void __attribute__ ((__noreturn__ +@@ -478,6 +485,7 @@ static void __attribute__ ((__noreturn__ fputs(_(" -h, --no-header do not print header\n"),out); fputs(_(" -u, --no-current ignore current process username\n"),out); fputs(_(" -s, --short short format\n"),out); @@ -49,7 +50,7 @@ fputs(_(" -f, --from show remote hostname field\n"),out); fputs(_(" -o, --old-style old style output\n"),out); fputs(_(" -i, --ip-addr display IP address instead of hostname (if possible)\n"), out); -@@ -514,6 +521,7 @@ int main(int argc, char **argv) +@@ -514,6 +522,7 @@ int main(int argc, char **argv) {"no-header", no_argument, NULL, 'h'}, {"no-current", no_argument, NULL, 'u'}, {"short", no_argument, NULL, 's'}, @@ -57,7 +58,7 @@ {"from", no_argument, NULL, 'f'}, {"old-style", no_argument, NULL, 'o'}, {"ip-addr", no_argument, NULL, 'i'}, -@@ -535,7 +543,7 @@ int main(int argc, char **argv) +@@ -535,7 +544,7 @@ int main(int argc, char **argv) #endif while ((ch = @@ -66,7 +67,7 @@ switch (ch) { case 'h': header = 0; -@@ -546,6 +554,10 @@ int main(int argc, char **argv) +@@ -546,6 +555,10 @@ int main(int argc, char **argv) case 's': longform = 0; break; diff --git a/procps.changes b/procps.changes index b26f068..6e7dabc 100644 --- a/procps.changes +++ b/procps.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Aug 18 09:08:36 UTC 2023 - Dr. Werner Fink + +- Modify patches + * procps-ng-3.3.9-w-notruncate.diff + * procps-ng-3.3.17-logind.patch + to real to not truncate output of w with option -n + ------------------------------------------------------------------- Wed Aug 16 13:50:25 UTC 2023 - Thorsten Kukuk