--- src/radwho.c.orig Fri Feb 25 05:47:53 2000 +++ src/radwho.c Wed May 3 18:43:24 2000 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -34,18 +35,21 @@ * 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%d,%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,%d,%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%d,%s,%s,%s,%s%s"; +#define FMT2_HOST_SIZE 19 + char *eol = "\n"; NAS *naslist; @@ -301,7 +305,8 @@ return tmp; } if (strncmp(tty, "cu", 2) == 0) { - return tmp + 2; + sprintf(tmp, "%.15s", tty + 2); + return tmp; } return "??"; } @@ -363,6 +368,8 @@ */ int main(int argc, char **argv) { + struct winsize ws; + int extra_width = 0; FILE *fp; struct radutmp rt; struct utmp ut; @@ -378,6 +385,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, "flhnsipcr")) != EOF) switch(c) { case 'f': fingerd++; @@ -465,14 +477,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__ @@ -481,10 +496,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__ @@ -493,6 +509,7 @@ dotime(ut.ut_time), #endif ut.ut_host, + FMT2_HOST_SIZE + extra_width, myname, eol); } } @@ -537,6 +554,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), @@ -545,6 +563,7 @@ proto(rt.proto, rt.porttype), dotime(rt.time), nasname(ntohl(rt.nas_address)), + FMT2_HOST_SIZE + extra_width, hostname(rt.framed_address), eol); } }