? m_netbsd15.c.diff Index: m_netbsd15.c =================================================================== RCS file: /cvsroot/src/usr.bin/top/machine/m_netbsd15.c,v retrieving revision 1.29 diff -a -b -c -3 -r1.29 m_netbsd15.c *** m_netbsd15.c 24 May 2007 20:04:05 -0000 1.29 --- m_netbsd15.c 3 Jun 2007 15:51:18 -0000 *************** *** 99,105 **** /* 0123456 -- field to fill in starts at header+6 */ #define PROC_UNAME_START 6 #define Proc_format \ ! "%5d %-8.8s %3d %4d%7s %5s %-8.8s%7s %5.2f%% %5.2f%% %.12s" static char Thread_header[] = " PID LID X PRI STATE TIME WCPU CPU COMMAND NAME"; --- 99,105 ---- /* 0123456 -- field to fill in starts at header+6 */ #define PROC_UNAME_START 6 #define Proc_format \ ! "%5d %-8.8s %3d %4d%7s %5s %-8.8s%7s %5.2f%% %5.2f%% %s" static char Thread_header[] = " PID LID X PRI STATE TIME WCPU CPU COMMAND NAME"; *************** *** 737,747 **** --- 737,749 ---- char wmesg[KI_WMESGLEN + 1]; static char fmt[128]; /* static area where result is built */ char *pretty = ""; + char *commandline; /* find and remember the next proc structure */ hp = (struct handle *)handle; pp = *(hp->next_proc++); hp->remaining--; + commandline = pp->p_comm; /* get the process's user struct and set cputime */ if ((pp->p_flag & L_INMEM) == 0) *************** *** 763,768 **** --- 765,793 ---- comm[COMSIZ - 2] = '\0'; (void) strncat(comm, &pretty[1], COMSIZ - 1); comm[COMSIZ - 1] = '\0'; + } else { + static char buf[1024]; + char **argv; + + argv = kvm_getargv2(kd, pp, sizeof(buf)); + + if (argv != NULL) { + char *p,*pe,*arg; + + commandline = p = buf; + pe = buf+sizeof(buf)-1; + + for (; *argv != NULL; argv++) { + arg = *argv; + while (*arg && p=pe) + break; + *p++ = ' '; + } + *p++ = '\0'; + } } #if 0 *************** *** 797,803 **** } #endif /* format this entry */ ! sprintf(fmt, Proc_format, pp->p_pid, (*get_userid)(pp->p_ruid), --- 822,829 ---- } #endif /* format this entry */ ! snprintf(fmt, ! sizeof(fmt)-1, Proc_format, pp->p_pid, (*get_userid)(pp->p_ruid), *************** *** 809,815 **** format_time(cputime), 100.0 * weighted_cpu(p_, pct, pp), 100.0 * pct, ! printable(pp->p_comm)); /* return the result */ return(fmt); --- 835,841 ---- format_time(cputime), 100.0 * weighted_cpu(p_, pct, pp), 100.0 * pct, ! printable(commandline)); /* return the result */ return(fmt);