summaryrefslogtreecommitdiff
path: root/net/radiusd-cistron/patches/patch-af
blob: 5fc2463ba936bffa07ad6a1632eab18ef11e330e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
$NetBSD: patch-af,v 1.3 2003/12/16 19:19:41 martti Exp $

--- src/radwho.c.orig	Wed Jul  2 12:39:03 2003
+++ src/radwho.c	Tue Dec 16 20:20:12 2003
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <sys/stat.h>
 #include <sys/utsname.h>
+#include <sys/ioctl.h>
 #include <time.h>
 #include <ctype.h>
 #include <netinet/in.h>
@@ -40,18 +41,20 @@
  *	Header above output and format.
  */
 char *hdr1 = 
-"Login      Name              What  TTY  When      From      Location";
-char *ufmt1 = "%-10.10s %-17.17s %-5.5s %-4.4s %-9.9s %-9.9s %-.16s%s";
+"Login            Name              What  TTY  When      From      Location";
+char *ufmt1 = "%-16.16s %-17.17s %-5.5s %-4.4s %-9.9s %-9.9s %-.*s%s";
 char *ufmt1r = "%s,%s,%s,%s,%s,%s,%s%s";
-char *rfmt1 = "%-10.10s %-17.17s %-5.5s %s%-3d %-9.9s %-9.9s %-.19s%s";
+char *rfmt1 = "%-16.16s %-17.17s %-5.5s %s%-3d %-9.9s %-9.9s %-.*s%s";
 char *rfmt1r = "%s,%s,%s,%s%u,%s,%s,%s%s";
+#define FMT1_HOST_SIZE	13
 
 char *hdr2 = 
-"Login      Port    What   When          From       Location";
-char *ufmt2 = "%-10.10s %-6.6d %-7.7s %-13.13s %-10.10s %-.16s%s";
+"Login           Port    What   When          From       Location";
+char *ufmt2 = "%-16.16s %-6.6d %-7.7s %-13.13s %-10.10s %-.*s%s";
 char *ufmt2r = "%s,%u,%s,%s,%s,%s%s";
-char *rfmt2 = "%-10.10s %s%-5d  %-6.6s %-13.13s %-10.10s %-.28s%s";
+char *rfmt2 = "%-16.16s %s%-5d  %-6.6s %-13.13s %-10.10s %-.*s%s";
 char *rfmt2r = "%s,%s%u,%s,%s,%s,%s%s";
+#define FMT2_HOST_SIZE	19
 
 char *eol = "\n";
 NAS *naslist;
@@ -307,7 +310,8 @@
 		return tmp;
 	}
 	if (strncmp(tty, "cu", 2) == 0) {
-		return tmp + 2;
+		sprintf(tmp, "%.15s", tty + 2);
+		return tmp;
 	}
 	return "??";
 }
@@ -371,6 +375,8 @@
  */
 int main(int argc, char **argv)
 {
+	struct winsize	ws;
+	int extra_width = 0;
 	FILE *fp;
 	struct radutmp rt;
 	struct utmp ut;
@@ -389,6 +395,11 @@
 	char *p, *q, *portind;
 	int c, portno;
 
+	ioctl(0, TIOCGWINSZ, &ws);
+	if (ws.ws_col >= 80) {
+		extra_width = ws.ws_col - 80;
+	}
+
 	while((c = getopt(argc, argv, "Dd:flhnsipcru:")) != EOF) switch(c) {
 		case 'D':
 			use_dns = 0;
@@ -486,14 +497,17 @@
 		while(fread(&ut, sizeof(ut), 1, fp) == 1) {
 #ifdef USER_PROCESS
 			if (ut.ut_user[0] && ut.ut_line[0] &&
-				ut.ut_type == USER_PROCESS) {
+				ut.ut_type == USER_PROCESS)
 #else
-			if (ut.ut_user[0] && ut.ut_line[0]) {
+			if (ut.ut_user[0] && ut.ut_line[0])
 #endif
-			   if (showname)
+							    {
+			    strncpy(inbuf, ut.ut_name, UT_NAMESIZE);
+			    inbuf[UT_NAMESIZE] = '\0';
+			    if (showname)
 				printf((rawoutput == 0? ufmt1: ufmt1r),
-					ut.ut_name,
-					fullname(ut.ut_name),
+					inbuf,
+					fullname(inbuf),
 					"shell",
 					ttyshort(ut.ut_line),
 #ifdef __svr4__
@@ -502,10 +516,11 @@
 					dotime(ut.ut_time),
 #endif
 					ut.ut_host,
+					FMT1_HOST_SIZE + extra_width,
 					myname, eol);
 			    else
 				printf((rawoutput==0? ufmt2:ufmt2r),
-					ut.ut_name,
+					inbuf,
 					ttyshort(ut.ut_line),
 					"shell",
 #ifdef __svr4__
@@ -514,6 +529,7 @@
 					dotime(ut.ut_time),
 #endif
 					ut.ut_host,
+					FMT2_HOST_SIZE + extra_width,
 					myname, eol);
 			}
 		}
@@ -560,6 +576,7 @@
 				portind, portno,
 				dotime(rt.time),
 				nasname(ntohl(rt.nas_address)),
+				FMT1_HOST_SIZE + extra_width,
 				hostname(rt.framed_address), eol);
 			else
 			    printf((rawoutput == 0? rfmt2: rfmt2r),
@@ -568,6 +585,7 @@
 				proto(rt.proto, rt.porttype),
 				dotime(rt.time),
 				nasname(ntohl(rt.nas_address)),
+				FMT2_HOST_SIZE + extra_width,
 				hostname(rt.framed_address), eol);
 		}
 	}