Blob Blame History Raw
diff -up netkit-rwho-0.17/ruptime/ruptime.1.hostnamelen netkit-rwho-0.17/ruptime/ruptime.1
--- netkit-rwho-0.17/ruptime/ruptime.1.hostnamelen	2000-07-31 01:57:06.000000000 +0200
+++ netkit-rwho-0.17/ruptime/ruptime.1	2011-12-07 15:41:10.009068689 +0100
@@ -41,6 +41,7 @@
 .Sh SYNOPSIS
 .Nm ruptime
 .Op Fl alrtu
+.Op Fl n=length
 .Sh DESCRIPTION
 .Nm Ruptime
 gives a status line like
@@ -65,6 +66,8 @@ Reverses the sort order.
 Sort by uptime.
 .It Fl u
 Sort by number of users.
+.It Fl n=length
+Specify hostname length in output.
 .El
 .Pp
 The default listing is sorted by host name.
diff -up netkit-rwho-0.17/ruptime/ruptime.c.hostnamelen netkit-rwho-0.17/ruptime/ruptime.c
--- netkit-rwho-0.17/ruptime/ruptime.c.hostnamelen	2011-12-07 15:40:54.566069745 +0100
+++ netkit-rwho-0.17/ruptime/ruptime.c	2011-12-07 15:40:54.690069736 +0100
@@ -66,6 +66,7 @@ struct hs {
 
 #define	ISDOWN(h)	(now - (h)->hs_recvtime > 11 * 60)
 #define	WHDRSIZE	((int)(sizeof (awhod) - sizeof (awhod.wd_we)))
+#define HOSTNAMELEN 12
 
 static size_t nhosts, hspace = 20;
 static struct hs *hs;
@@ -93,10 +94,11 @@ main(int argc, char **argv)
 	unsigned i;
 	struct whod buf;
 	int (*cmp)(const void *, const void *) = hscmp;
+	int hostnamelen = HOSTNAMELEN;
 	time_t correction;
 
 	aflg = 0;
-	while ((ch = getopt(argc, argv, "alrut")) != -1)
+	while ((ch = getopt(argc, argv, "alrutn:")) != -1)
 		switch((char)ch) {
 		case 'a':
 			aflg = 1;
@@ -113,8 +115,15 @@ main(int argc, char **argv)
 		case 'u':
 			cmp = ucmp;
 			break;
+		case 'n':
+			hostnamelen = atoi(optarg+1);
+			if(hostnamelen < 0){
+				fprintf(stderr,"Error, hostname length can't be negative number!\n");
+				exit(1);
+			}
+			break;
 		default: 
-			(void)fprintf(stderr, "usage: ruptime [-alrut]\n");
+			(void)fprintf(stderr, "usage: ruptime [-alrutn]\n");
 			exit(1);
 		}
 
@@ -182,15 +191,20 @@ main(int argc, char **argv)
 	}
 	(void)time(&now);
 	qsort(hs, nhosts, sizeof(hs[0]), cmp);
+	char output_format[512];
+	char *down_pattern = "%%-%i.%is%%s\n";
+	char *up_pattern = "%%-%i.%is%%s,  %%4d user%%s  load %%*.2f, %%*.2f, %%*.2f\n";
 	for (i = 0; i < nhosts; i++) {
 		hsp = &hs[i];
 		if (ISDOWN(hsp)) {
-			(void)printf("%-12.12s%s\n", hsp->hs_hostname,
+			sprintf(output_format, down_pattern, hostnamelen,hostnamelen);
+			(void)printf(output_format, hsp->hs_hostname,
 			    interval(now - hsp->hs_recvtime, "down"));
 			continue;
 		}
+		sprintf(output_format, up_pattern, hostnamelen,hostnamelen);
 		(void)printf(
-		    "%-12.12s%s,  %4d user%s  load %*.2f, %*.2f, %*.2f\n",
+		    output_format,
 		    hsp->hs_hostname,
 		    interval((time_t)hsp->hs_sendtime -
 			(time_t)hsp->hs_boottime, "  up"),