Really do not truncate w output with option -n

OBS-URL: https://build.opensuse.org/package/show/Base:System/procps?expand=0&rev=246
This commit is contained in:
Dr. Werner Fink 2023-08-18 09:10:18 +00:00 committed by Git OBS Bridge
parent 6bd5d60c8a
commit e672438e6e
3 changed files with 86 additions and 72 deletions

View File

@ -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 <systemd/sd-daemon.h>
+#include <systemd/sd-login.h>
+#endif
+#ifdef WITH_ELOGIND
+#include <elogind/sd-daemon.h>
+#include <elogind/sd-login.h>
+#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 <time.h>
#include <unistd.h>
@ -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 <systemd/sd-daemon.h>
+#include <systemd/sd-login.h>
+#endif
+#ifdef WITH_ELOGIND
+#include <elogind/sd-daemon.h>
+#include <elogind/sd-login.h>
+#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");

View File

@ -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;

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Fri Aug 18 09:08:36 UTC 2023 - Dr. Werner Fink <werner@suse.de>
- 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 <kukuk@suse.com>