81 lines
2.7 KiB
Diff
81 lines
2.7 KiB
Diff
---
|
|
w.1 | 3 +++
|
|
w.c | 19 ++++++++++++++++---
|
|
2 files changed, 19 insertions(+), 3 deletions(-)
|
|
|
|
--- w.1
|
|
+++ 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.
|
|
.TP
|
|
+\fB\-n\fR, \fB\-\-no\-truncat\fR
|
|
+Do not truncate the output format. This option might become renamed in future versions.
|
|
+.TP
|
|
\fB\-f\fR, \fB\-\-from\fR
|
|
Toggle printing the
|
|
.B from
|
|
--- w.c
|
|
+++ w.c 2023-08-18 08:37:32.143482035 +0000
|
|
@@ -394,7 +394,7 @@ static const proc_t *getproc(const utmp_
|
|
}
|
|
|
|
static void showinfo(utmp_t * u, int formtype, int maxcmd, int from,
|
|
- const int userlen, const int fromlen, const int ip_addresses)
|
|
+ int userlen, int fromlen, const int ip_addresses)
|
|
{
|
|
unsigned long long jcpu;
|
|
int ut_pid_found;
|
|
@@ -424,7 +424,14 @@ static void showinfo(utmp_t * u, int for
|
|
strncpy(uname, u->ut_user, UT_NAMESIZE);
|
|
|
|
if (formtype) {
|
|
- printf("%-*.*s%-9.8s", userlen + 1, userlen, uname, u->ut_line);
|
|
+ int utlnlen = 8;
|
|
+ if (formtype > 1) {
|
|
+ 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 +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);
|
|
+ fputs(_(" -n, --no-truncat non truncated listing (large)\n"),out);
|
|
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 +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'},
|
|
+ {"no-truncat", no_argument, NULL, 'n'},
|
|
{"from", no_argument, NULL, 'f'},
|
|
{"old-style", no_argument, NULL, 'o'},
|
|
{"ip-addr", no_argument, NULL, 'i'},
|
|
@@ -535,7 +544,7 @@ int main(int argc, char **argv)
|
|
#endif
|
|
|
|
while ((ch =
|
|
- getopt_long(argc, argv, "husfoVi", longopts, NULL)) != -1)
|
|
+ getopt_long(argc, argv, "husnfoVi", longopts, NULL)) != -1)
|
|
switch (ch) {
|
|
case 'h':
|
|
header = 0;
|
|
@@ -546,6 +555,10 @@ int main(int argc, char **argv)
|
|
case 's':
|
|
longform = 0;
|
|
break;
|
|
+ case 'n':
|
|
+ longform = 2;
|
|
+ header = 0;
|
|
+ break;
|
|
case 'f':
|
|
from = !from;
|
|
break;
|