machine.c (172207) | machine.c (173004) |
---|---|
1/* 2 * top - a top users display for Unix 3 * 4 * SYNOPSIS: For FreeBSD-2.x and later 5 * 6 * DESCRIPTION: 7 * Originally written for BSD4.4 system by Christos Zoulas. 8 * Ported to FreeBSD 2.x by Steven Wallace && Wolfram Schneider --- 6 unchanged lines hidden (view full) --- 15 * 16 * LIBS: -lkvm 17 * 18 * AUTHOR: Christos Zoulas <christos@ee.cornell.edu> 19 * Steven Wallace <swallace@freebsd.org> 20 * Wolfram Schneider <wosch@FreeBSD.org> 21 * Thomas Moestl <tmoestl@gmx.net> 22 * | 1/* 2 * top - a top users display for Unix 3 * 4 * SYNOPSIS: For FreeBSD-2.x and later 5 * 6 * DESCRIPTION: 7 * Originally written for BSD4.4 system by Christos Zoulas. 8 * Ported to FreeBSD 2.x by Steven Wallace && Wolfram Schneider --- 6 unchanged lines hidden (view full) --- 15 * 16 * LIBS: -lkvm 17 * 18 * AUTHOR: Christos Zoulas <christos@ee.cornell.edu> 19 * Steven Wallace <swallace@freebsd.org> 20 * Wolfram Schneider <wosch@FreeBSD.org> 21 * Thomas Moestl <tmoestl@gmx.net> 22 * |
23 * $FreeBSD: head/usr.bin/top/machine.c 172207 2007-09-17 05:31:39Z jeff $ | 23 * $FreeBSD: head/usr.bin/top/machine.c 173004 2007-10-26 08:00:41Z julian $ |
24 */ 25 26#include <sys/param.h> 27#include <sys/errno.h> 28#include <sys/file.h> 29#include <sys/proc.h> 30#include <sys/resource.h> 31#include <sys/rtprio.h> --- 700 unchanged lines hidden (view full) --- 732 733 cmdbuf = (char *)malloc(cmdlengthdelta + 1); 734 if (cmdbuf == NULL) { 735 warn("malloc(%d)", cmdlengthdelta + 1); 736 return NULL; 737 } 738 739 if (!(flags & FMT_SHOWARGS)) { | 24 */ 25 26#include <sys/param.h> 27#include <sys/errno.h> 28#include <sys/file.h> 29#include <sys/proc.h> 30#include <sys/resource.h> 31#include <sys/rtprio.h> --- 700 unchanged lines hidden (view full) --- 732 733 cmdbuf = (char *)malloc(cmdlengthdelta + 1); 734 if (cmdbuf == NULL) { 735 warn("malloc(%d)", cmdlengthdelta + 1); 736 return NULL; 737 } 738 739 if (!(flags & FMT_SHOWARGS)) { |
740 snprintf(cmdbuf, cmdlengthdelta, "%s", pp->ki_comm); 741 } 742 else if (pp->ki_args == NULL || 743 (args = kvm_getargv(kd, pp, cmdlengthdelta)) == NULL || !(*args)) 744 snprintf(cmdbuf, cmdlengthdelta, "[%s]", pp->ki_comm); 745 else { 746 char *src, *dst, *argbuf; 747 char *cmd; 748 size_t argbuflen; 749 size_t len; 750 751 argbuflen = cmdlengthdelta * 4; 752 argbuf = (char *)malloc(argbuflen + 1); 753 if (argbuf == NULL) { 754 warn("malloc(%d)", argbuflen + 1); 755 free(cmdbuf); 756 return NULL; | 740 if (ps.thread && pp->ki_flag & P_HADTHREADS && 741 pp->ki_ocomm[0]) { 742 snprintf(cmdbuf, cmdlengthdelta, "{%s}", pp->ki_ocomm); 743 } else { 744 snprintf(cmdbuf, cmdlengthdelta, "%s", pp->ki_comm); |
757 } | 745 } |
746 } else { 747 if (pp->ki_flag & P_SYSTEM || 748 pp->ki_args == NULL || 749 (args = kvm_getargv(kd, pp, cmdlengthdelta)) == NULL || 750 !(*args)) { 751 if (ps.thread && pp->ki_flag & P_HADTHREADS && 752 pp->ki_ocomm[0]) { 753 snprintf(cmdbuf, cmdlengthdelta, 754 "{%s}", pp->ki_ocomm); 755 } else { 756 snprintf(cmdbuf, cmdlengthdelta, 757 "[%s]", pp->ki_comm); 758 } 759 } else { 760 char *src, *dst, *argbuf; 761 char *cmd; 762 size_t argbuflen; 763 size_t len; |
|
758 | 764 |
759 dst = argbuf; | 765 argbuflen = cmdlengthdelta * 4; 766 argbuf = (char *)malloc(argbuflen + 1); 767 if (argbuf == NULL) { 768 warn("malloc(%d)", argbuflen + 1); 769 free(cmdbuf); 770 return NULL; 771 } |
760 | 772 |
761 /* Extract cmd name from argv */ 762 cmd = strrchr(*args, '/'); 763 if (cmd == NULL) 764 cmd = *args; 765 else 766 cmd++; | 773 dst = argbuf; |
767 | 774 |
768 for (; (src = *args++) != NULL; ) { 769 if (*src == '\0') 770 continue; 771 len = (argbuflen - (dst - argbuf) - 1) / 4; 772 strvisx(dst, src, strlen(src) < len ? strlen(src) : len, 773 VIS_NL | VIS_CSTYLE); 774 while (*dst != '\0') 775 dst++; 776 if ((argbuflen - (dst - argbuf) - 1) / 4 > 0) 777 *dst++ = ' '; /* add delimiting space */ 778 } 779 if (dst != argbuf && dst[-1] == ' ') 780 dst--; 781 *dst = '\0'; | 775 /* Extract cmd name from argv */ 776 cmd = strrchr(*args, '/'); 777 if (cmd == NULL) 778 cmd = *args; 779 else 780 cmd++; |
782 | 781 |
783 if (strcmp(cmd, pp->ki_comm) != 0 ) 784 snprintf(cmdbuf, cmdlengthdelta, "%s (%s)",argbuf, \ 785 pp->ki_comm); 786 else 787 strlcpy(cmdbuf, argbuf, cmdlengthdelta); | 782 for (; (src = *args++) != NULL; ) { 783 if (*src == '\0') 784 continue; 785 len = (argbuflen - (dst - argbuf) - 1) / 4; 786 strvisx(dst, src, 787 strlen(src) < len ? strlen(src) : len, 788 VIS_NL | VIS_CSTYLE); 789 while (*dst != '\0') 790 dst++; 791 if ((argbuflen - (dst - argbuf) - 1) / 4 > 0) 792 *dst++ = ' '; /* add delimiting space */ 793 } 794 if (dst != argbuf && dst[-1] == ' ') 795 dst--; 796 *dst = '\0'; |
788 | 797 |
789 free(argbuf); | 798 if (strcmp(cmd, pp->ki_comm) != 0 ) 799 snprintf(cmdbuf, cmdlengthdelta, 800 "%s (%s)",argbuf, pp->ki_comm); 801 else 802 strlcpy(cmdbuf, argbuf, cmdlengthdelta); 803 804 free(argbuf); 805 } |
790 } 791 792 if (ps.jail == 0) 793 jid_buf[0] = '\0'; 794 else 795 snprintf(jid_buf, sizeof(jid_buf), " %*d", 796 sizeof(jid_buf) - 3, pp->ki_jid); 797 --- 522 unchanged lines hidden --- | 806 } 807 808 if (ps.jail == 0) 809 jid_buf[0] = '\0'; 810 else 811 snprintf(jid_buf, sizeof(jid_buf), " %*d", 812 sizeof(jid_buf) - 3, pp->ki_jid); 813 --- 522 unchanged lines hidden --- |