File procps-v3.3.3-w-notruncate.diff of Package procps

--- w.c
+++ w.c	2012-06-01 14:11:59.508510289 +0000
@@ -239,7 +239,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)
+		     int userlen, int fromlen)
 {
 	unsigned long long jcpu;
 	int ut_pid_found;
@@ -269,7 +269,13 @@ 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);
+		}
+		printf("%-*.*s%-*.*s", userlen + 1, userlen, uname, utlnlen + 1, utlnlen, u->ut_line);
 		if (from)
 			print_host(u->ut_host, UT_HOSTSIZE, fromlen);
 		print_logintime(u->ut_time, stdout);
@@ -319,6 +325,7 @@ static void __attribute__ ((__noreturn__
 	fputs(_(" -h, --no-header     do not print header\n"
 		" -u, --no-current    ignore current process username\n"
 		" -s, --short         short format\n"
+		" -n, --no-truncat    non truncated listing (large)\n"
 		" -f, --from          show remote hostname field\n"
 		" -o, --old-style     old style output\n"), out);
 	fputs(USAGE_SEPARATOR, out);
@@ -347,6 +354,7 @@ int main(int argc, char **argv)
 		{"no-header", no_argument, NULL, 'h'},
 		{"no-current", no_argument, NULL, 'u'},
 		{"sort", no_argument, NULL, 's'},
+		{"no-truncat", no_argument, NULL, 'n'},
 		{"from", no_argument, NULL, 'f'},
 		{"old-style", no_argument, NULL, 'o'},
 		{"help", no_argument, NULL, HELP_OPTION},
@@ -365,7 +373,7 @@ int main(int argc, char **argv)
 #endif
 
 	while ((ch =
-		getopt_long(argc, argv, "husfoV", longopts, NULL)) != -1)
+		getopt_long(argc, argv, "husnfoV", longopts, NULL)) != -1)
 		switch (ch) {
 		case 'h':
 			header = 0;
@@ -376,6 +384,10 @@ int main(int argc, char **argv)
 		case 's':
 			longform = 0;
 			break;
+		case 'n':
+			longform = 2;
+			header = 0;
+			break;
 		case 'f':
 			from = !from;
 			break;
openSUSE Build Service is sponsored by