=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/top/display.c,v retrieving revision 1.3 retrieving revision 1.4 diff -c -r1.3 -r1.4 *** src/usr.bin/top/display.c 1999/03/06 20:19:21 1.3 --- src/usr.bin/top/display.c 1999/03/06 20:27:42 1.4 *************** *** 1,4 **** ! /* $OpenBSD: display.c,v 1.3 1999/03/06 20:19:21 millert Exp $ */ /* * Top users/processes display for Unix --- 1,4 ---- ! /* $OpenBSD: display.c,v 1.4 1999/03/06 20:27:42 millert Exp $ */ /* * Top users/processes display for Unix *************** *** 57,63 **** static char *cpustates_tag __P((void)); static int string_count __P((char **)); ! static void summary_format __P((char *, size_t, int *, char **)); static void line_update __P((char *, char *, int, int)); #define lineindex(l) ((l)*display_width) --- 57,63 ---- static char *cpustates_tag __P((void)); static int string_count __P((char **)); ! static void summary_format __P((char *, int *, char **)); static void line_update __P((char *, char *, int, int)); #define lineindex(l) ((l)*display_width) *************** *** 305,312 **** } /* format and print the process state summary */ ! summary_format(procstates_buffer, sizeof(procstates_buffer), brkdn, ! procstate_names); fputs(procstates_buffer, stdout); /* save the numbers for next time */ --- 305,311 ---- } /* format and print the process state summary */ ! summary_format(procstates_buffer, brkdn, procstate_names); fputs(procstates_buffer, stdout); /* save the numbers for next time */ *************** *** 355,361 **** if (memcmp(lprocstates, brkdn, num_procstates * sizeof(int)) != 0) { /* format and update the line */ ! summary_format(new, sizeof(new), brkdn, procstate_names); line_update(procstates_buffer, new, x_brkdn, y_brkdn); memcpy(lprocstates, brkdn, num_procstates * sizeof(int)); } --- 354,360 ---- if (memcmp(lprocstates, brkdn, num_procstates * sizeof(int)) != 0) { /* format and update the line */ ! summary_format(new, brkdn, procstate_names); line_update(procstates_buffer, new, x_brkdn, y_brkdn); memcpy(lprocstates, brkdn, num_procstates * sizeof(int)); } *************** *** 523,529 **** lastline++; /* format and print the memory summary */ ! summary_format(memory_buffer, sizeof(memory_buffer), stats, memory_names); fputs(memory_buffer, stdout); } --- 522,528 ---- lastline++; /* format and print the memory summary */ ! summary_format(memory_buffer, stats, memory_names); fputs(memory_buffer, stdout); } *************** *** 535,541 **** static char new[MAX_COLS]; /* format the new line */ ! summary_format(new, sizeof(new), stats, memory_names); line_update(memory_buffer, new, x_mem, y_mem); } --- 534,540 ---- static char new[MAX_COLS]; /* format the new line */ ! summary_format(new, stats, memory_names); line_update(memory_buffer, new, x_mem, y_mem); } *************** *** 936,957 **** return(cnt); } ! static void summary_format(str, siz, numbers, names) char *str; - size_t siz; int *numbers; register char **names; { register int num; register char *thisname; - if (siz == 0) - return; - /* format each number followed by its string */ ! *str = '\0'; while ((thisname = *names++) != NULL) { /* get the number to format */ --- 935,953 ---- return(cnt); } ! static void summary_format(str, numbers, names) char *str; int *numbers; register char **names; { + register char *p; register int num; register char *thisname; /* format each number followed by its string */ ! p = str; while ((thisname = *names++) != NULL) { /* get the number to format */ *************** *** 964,993 **** if (thisname[0] == 'K') { /* yes: format it as a memory value */ ! strlcat(str, format_k(num), siz); /* skip over the K, since it was included by format_k */ ! strlcat(str, thisname+1, siz); } else { ! strlcat(str, itoa(num), siz); ! strlcat(str, thisname, siz); } } /* ignore negative numbers, but display corresponding string */ else if (num < 0) { ! strlcat(str, thisname, siz); } } /* if the last two characters in the string are ", ", delete them */ ! thisname = str + strlen(str) - 2; ! if (thisname >= str && thisname[0] == ',' && thisname[1] == ' ') { ! *thisname = '\0'; } } --- 960,989 ---- if (thisname[0] == 'K') { /* yes: format it as a memory value */ ! p = strecpy(p, format_k(num)); /* skip over the K, since it was included by format_k */ ! p = strecpy(p, thisname+1); } else { ! p = strecpy(p, itoa(num)); ! p = strecpy(p, thisname); } } /* ignore negative numbers, but display corresponding string */ else if (num < 0) { ! p = strecpy(p, thisname); } } /* if the last two characters in the string are ", ", delete them */ ! p -= 2; ! if (p >= str && p[0] == ',' && p[1] == ' ') { ! *p = '\0'; } }