brighton@pixar.UUCP (Bill Carson) (04/21/87)
Index: ucb/systat/{cmds.c,netcmds.c,vmstat.c} 4.3BSD Description: 1) In cmds.c:command(), lookup() returns the wrong status value 2) In netcmds.c:changeitems(), selectport() is being passed a character string, not a numeric port number. 3) In vmstat.c:showkre(), when a disk is deleted/added to the display, the disk names do not change. Repeat-By: 1) try to use any of the sub-commands in each display. 2) try to "ignore" a port in the netstat display. 3) "add" or "delete" a disk name in the vmstat display, the statistics will move, but the disk names won't. Fix: Apply the following patch in the systat source directory. *** orig/cmds.c Thu Apr 9 14:06:30 1987 --- cmds.c Tue Mar 24 23:23:45 1987 *************** *** 123,129 **** longest = 0; nmatches = 0; ! found = (struct cmdtab *)-1; for (c = cmdtab; p = c->c_name; c++) { for (q = name; *q == *p++; q++) if (*q == 0) /* exact match? */ --- 123,129 ---- longest = 0; nmatches = 0; ! found = (struct cmdtab *)0; for (c = cmdtab; p = c->c_name; c++) { for (q = name; *q == *p++; q++) if (*q == 0) /* exact match? */ *** orig/netcmds.c Thu Apr 9 14:06:40 1987 --- netcmds.c Tue Mar 24 23:24:15 1987 *************** *** 91,97 **** sp = getservbyname(args, protos == TCP ? "tcp" : protos == UDP ? "udp" : 0); if (sp) { ! selectport(sp->s_name, onoff); continue; } hp = gethostbyname(args); --- 91,97 ---- sp = getservbyname(args, protos == TCP ? "tcp" : protos == UDP ? "udp" : 0); if (sp) { ! selectport(sp->s_port, onoff); continue; } hp = gethostbyname(args); *** orig/vmstat.c Thu Apr 9 14:06:44 1987 --- vmstat.c Thu Apr 9 19:28:35 1987 *************** *** 481,491 **** , 2 , 1 ); ! c = 0; ! for (i = 0; i < dk_ndrive && c < MAXDRIVES; i++) ! if (dk_select[i]) dinfo(i, ++c); ! putint(s.nchcount, NAMEIROW + 2, NAMEICOL, 9); putint(nchtotal.ncs_goodhits, NAMEIROW + 2, NAMEICOL + 9, 9); #define nz(x) ((x) ? (x) : 1) --- 481,493 ---- , 2 , 1 ); ! mvprintw(DISKROW,DISKCOL+5," "); ! for (i = 0, c = 0; i < dk_ndrive && c < MAXDRIVES; i++) ! if (dk_select[i]) { ! mvprintw(DISKROW, DISKCOL + 5 + 5 * c, ! " %3.3s", dr_name[i]); dinfo(i, ++c); ! } putint(s.nchcount, NAMEIROW + 2, NAMEICOL, 9); putint(nchtotal.ncs_goodhits, NAMEIROW + 2, NAMEICOL + 9, 9); #define nz(x) ((x) ? (x) : 1)