--- src/radwho.c.orig Wed Jun 11 15:32:33 2003 +++ src/radwho.c Wed Jun 25 17:41:32 2003 @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -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"; -char *ufmt1r = "%s,%s,%s,%s,%s,%s,%s%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,%u%s"; -char *rfmt1 = "%-10.10s %-17.17s %-5.5s %s%-3d %-9.9s %-9.9s %-.19s%s"; -char *rfmt1r = "%s,%s,%s,%s%u,%s,%s,%s%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,%u%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"; -char *ufmt2r = "%s,%u,%s,%s,%s,%s%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,%u%s"; -char *rfmt2 = "%-10.10s %s%-5d %-6.6s %-13.13s %-10.10s %-.28s%s"; -char *rfmt2r = "%s,%s%u,%s,%s,%s,%s%s"; +char *rfmt2 = "%-16.16s %s%-5d %-6.6s %-13.13s %-10.10s %-.*s%s"; +char *rfmt2r = "%s,%s%u,%s,%s,%s,%u%s"; +#define FMT2_HOST_SIZE 19 char *eol = "\n"; NAS *naslist; @@ -307,7 +312,8 @@ return tmp; } if (strncmp(tty, "cu", 2) == 0) { - return tmp + 2; + sprintf(tmp, "%.15s", tty + 2); + return tmp; } return "??"; } @@ -371,6 +377,8 @@ */ int main(int argc, char **argv) { + struct winsize ws; + int extra_width = 0; FILE *fp; struct radutmp rt; struct utmp ut; @@ -389,6 +397,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 +499,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 +518,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 +531,7 @@ dotime(ut.ut_time), #endif ut.ut_host, + FMT2_HOST_SIZE + extra_width, myname, eol); } } @@ -560,6 +578,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 +587,7 @@ proto(rt.proto, rt.porttype), dotime(rt.time), nasname(ntohl(rt.nas_address)), + FMT2_HOST_SIZE + extra_width, hostname(rt.framed_address), eol); } }