svn commit: r225870 - in user/attilio/vmcontention: bin/ls bin/ps cddl/contrib/opensolaris/lib/libzfs/common contrib/top crypto/openssh etc lib/libc/gen lib/libusbhid sbin/fsdb sbin/hastd share/man...

Attilio Rao attilio at FreeBSD.org
Thu Sep 29 09:22:55 UTC 2011


Author: attilio
Date: Thu Sep 29 09:22:54 2011
New Revision: 225870
URL: http://svn.freebsd.org/changeset/base/225870

Log:
  MFC

Modified:
  user/attilio/vmcontention/bin/ls/ls.1
  user/attilio/vmcontention/bin/ls/ls.c
  user/attilio/vmcontention/bin/ls/ls.h
  user/attilio/vmcontention/bin/ls/print.c
  user/attilio/vmcontention/bin/ps/extern.h
  user/attilio/vmcontention/bin/ps/keyword.c
  user/attilio/vmcontention/bin/ps/print.c
  user/attilio/vmcontention/bin/ps/ps.c
  user/attilio/vmcontention/bin/ps/ps.h
  user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c
  user/attilio/vmcontention/crypto/openssh/ssh_namespace.h
  user/attilio/vmcontention/etc/devd.conf
  user/attilio/vmcontention/etc/network.subr
  user/attilio/vmcontention/lib/libc/gen/devname.c
  user/attilio/vmcontention/lib/libusbhid/data.c
  user/attilio/vmcontention/lib/libusbhid/parse.c
  user/attilio/vmcontention/lib/libusbhid/usbhid.3
  user/attilio/vmcontention/lib/libusbhid/usbhid.h
  user/attilio/vmcontention/sbin/fsdb/fsdbutil.c
  user/attilio/vmcontention/sbin/hastd/hast.conf.5
  user/attilio/vmcontention/sbin/hastd/hast.h
  user/attilio/vmcontention/sbin/hastd/hastd.c
  user/attilio/vmcontention/sbin/hastd/parse.y
  user/attilio/vmcontention/sbin/hastd/primary.c
  user/attilio/vmcontention/sbin/hastd/secondary.c
  user/attilio/vmcontention/sbin/hastd/token.l
  user/attilio/vmcontention/share/man/man7/build.7
  user/attilio/vmcontention/share/misc/committers-ports.dot
  user/attilio/vmcontention/sys/dev/mfi/mfi.c
  user/attilio/vmcontention/sys/dev/mfi/mfivar.h
  user/attilio/vmcontention/sys/dev/usb/input/uhid.c
  user/attilio/vmcontention/sys/net/raw_cb.h
  user/attilio/vmcontention/sys/net/raw_usrreq.c
  user/attilio/vmcontention/sys/net/route.c
  user/attilio/vmcontention/sys/net/route.h
  user/attilio/vmcontention/sys/net/rtsock.c
  user/attilio/vmcontention/sys/vm/vm_page.c
  user/attilio/vmcontention/sys/vm/vm_page.h
  user/attilio/vmcontention/usr.bin/calendar/calendars/calendar.freebsd
  user/attilio/vmcontention/usr.bin/csup/diff.c
  user/attilio/vmcontention/usr.bin/find/find.1
  user/attilio/vmcontention/usr.bin/find/ls.c
  user/attilio/vmcontention/usr.bin/fstat/fstat.1
  user/attilio/vmcontention/usr.bin/fstat/fstat.c
  user/attilio/vmcontention/usr.bin/gzip/zuncompress.c
  user/attilio/vmcontention/usr.bin/script/script.1
  user/attilio/vmcontention/usr.bin/usbhidaction/usbhidaction.1
  user/attilio/vmcontention/usr.bin/usbhidaction/usbhidaction.c
  user/attilio/vmcontention/usr.bin/usbhidctl/usbhid.c
  user/attilio/vmcontention/usr.bin/usbhidctl/usbhidctl.1
  user/attilio/vmcontention/usr.sbin/pstat/pstat.c
Directory Properties:
  user/attilio/vmcontention/   (props changed)
  user/attilio/vmcontention/cddl/contrib/opensolaris/   (props changed)
  user/attilio/vmcontention/contrib/bind9/   (props changed)
  user/attilio/vmcontention/contrib/binutils/   (props changed)
  user/attilio/vmcontention/contrib/bzip2/   (props changed)
  user/attilio/vmcontention/contrib/compiler-rt/   (props changed)
  user/attilio/vmcontention/contrib/dialog/   (props changed)
  user/attilio/vmcontention/contrib/ee/   (props changed)
  user/attilio/vmcontention/contrib/expat/   (props changed)
  user/attilio/vmcontention/contrib/file/   (props changed)
  user/attilio/vmcontention/contrib/gcc/   (props changed)
  user/attilio/vmcontention/contrib/gdb/   (props changed)
  user/attilio/vmcontention/contrib/gdtoa/   (props changed)
  user/attilio/vmcontention/contrib/gnu-sort/   (props changed)
  user/attilio/vmcontention/contrib/groff/   (props changed)
  user/attilio/vmcontention/contrib/less/   (props changed)
  user/attilio/vmcontention/contrib/libpcap/   (props changed)
  user/attilio/vmcontention/contrib/libstdc++/   (props changed)
  user/attilio/vmcontention/contrib/llvm/   (props changed)
  user/attilio/vmcontention/contrib/llvm/tools/clang/   (props changed)
  user/attilio/vmcontention/contrib/ncurses/   (props changed)
  user/attilio/vmcontention/contrib/netcat/   (props changed)
  user/attilio/vmcontention/contrib/ntp/   (props changed)
  user/attilio/vmcontention/contrib/one-true-awk/   (props changed)
  user/attilio/vmcontention/contrib/openbsm/   (props changed)
  user/attilio/vmcontention/contrib/openpam/   (props changed)
  user/attilio/vmcontention/contrib/openresolv/   (props changed)
  user/attilio/vmcontention/contrib/pf/   (props changed)
  user/attilio/vmcontention/contrib/sendmail/   (props changed)
  user/attilio/vmcontention/contrib/tcpdump/   (props changed)
  user/attilio/vmcontention/contrib/tcsh/   (props changed)
  user/attilio/vmcontention/contrib/tnftp/   (props changed)
  user/attilio/vmcontention/contrib/top/   (props changed)
  user/attilio/vmcontention/contrib/top/install-sh   (props changed)
  user/attilio/vmcontention/contrib/tzcode/stdtime/   (props changed)
  user/attilio/vmcontention/contrib/tzcode/zic/   (props changed)
  user/attilio/vmcontention/contrib/tzdata/   (props changed)
  user/attilio/vmcontention/contrib/wpa/   (props changed)
  user/attilio/vmcontention/contrib/xz/   (props changed)
  user/attilio/vmcontention/crypto/heimdal/   (props changed)
  user/attilio/vmcontention/crypto/openssh/   (props changed)
  user/attilio/vmcontention/crypto/openssl/   (props changed)
  user/attilio/vmcontention/gnu/lib/   (props changed)
  user/attilio/vmcontention/gnu/usr.bin/binutils/   (props changed)
  user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/   (props changed)
  user/attilio/vmcontention/gnu/usr.bin/gdb/   (props changed)
  user/attilio/vmcontention/lib/libc/   (props changed)
  user/attilio/vmcontention/lib/libc/stdtime/   (props changed)
  user/attilio/vmcontention/lib/libutil/   (props changed)
  user/attilio/vmcontention/lib/libz/   (props changed)
  user/attilio/vmcontention/sbin/   (props changed)
  user/attilio/vmcontention/sbin/ipfw/   (props changed)
  user/attilio/vmcontention/share/mk/bsd.arch.inc.mk   (props changed)
  user/attilio/vmcontention/share/zoneinfo/   (props changed)
  user/attilio/vmcontention/sys/   (props changed)
  user/attilio/vmcontention/sys/amd64/include/xen/   (props changed)
  user/attilio/vmcontention/sys/boot/   (props changed)
  user/attilio/vmcontention/sys/boot/i386/efi/   (props changed)
  user/attilio/vmcontention/sys/boot/ia64/efi/   (props changed)
  user/attilio/vmcontention/sys/boot/ia64/ski/   (props changed)
  user/attilio/vmcontention/sys/boot/powerpc/boot1.chrp/   (props changed)
  user/attilio/vmcontention/sys/boot/powerpc/ofw/   (props changed)
  user/attilio/vmcontention/sys/cddl/contrib/opensolaris/   (props changed)
  user/attilio/vmcontention/sys/conf/   (props changed)
  user/attilio/vmcontention/sys/contrib/dev/acpica/   (props changed)
  user/attilio/vmcontention/sys/contrib/octeon-sdk/   (props changed)
  user/attilio/vmcontention/sys/contrib/pf/   (props changed)
  user/attilio/vmcontention/sys/contrib/x86emu/   (props changed)
  user/attilio/vmcontention/usr.bin/calendar/   (props changed)
  user/attilio/vmcontention/usr.bin/csup/   (props changed)
  user/attilio/vmcontention/usr.bin/procstat/   (props changed)
  user/attilio/vmcontention/usr.sbin/ndiscvt/   (props changed)
  user/attilio/vmcontention/usr.sbin/rtadvctl/   (props changed)
  user/attilio/vmcontention/usr.sbin/rtadvd/   (props changed)
  user/attilio/vmcontention/usr.sbin/rtsold/   (props changed)
  user/attilio/vmcontention/usr.sbin/zic/   (props changed)

Modified: user/attilio/vmcontention/bin/ls/ls.1
==============================================================================
--- user/attilio/vmcontention/bin/ls/ls.1	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ls/ls.1	Thu Sep 29 09:22:54 2011	(r225870)
@@ -32,7 +32,7 @@
 .\"     @(#)ls.1	8.7 (Berkeley) 7/29/94
 .\" $FreeBSD$
 .\"
-.Dd April 4, 2008
+.Dd September 28, 2011
 .Dt LS 1
 .Os
 .Sh NAME
@@ -357,8 +357,7 @@ option is given,
 the numeric ID's are displayed.
 .Pp
 If the file is a character special or block special file,
-the major and minor device numbers for the file are displayed
-in the size field.
+the device number for the file is displayed in the size field.
 If the file is a symbolic link the pathname of the
 linked-to file is preceded by
 .Dq Li -> .

Modified: user/attilio/vmcontention/bin/ls/ls.c
==============================================================================
--- user/attilio/vmcontention/bin/ls/ls.c	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ls/ls.c	Thu Sep 29 09:22:54 2011	(r225870)
@@ -563,7 +563,7 @@ display(const FTSENT *p, FTSENT *list, i
 	long maxblock;
 	u_long btotal, labelstrlen, maxinode, maxlen, maxnlink;
 	u_long maxlabelstr;
-	u_int devstrlen;
+	u_int sizelen;
 	int maxflags;
 	gid_t maxgroup;
 	uid_t maxuser;
@@ -572,7 +572,6 @@ display(const FTSENT *p, FTSENT *list, i
 	int entries, needstats;
 	const char *user, *group;
 	char *flags, *labelstr = NULL;
-	char buf[STRBUF_SIZEOF(u_quad_t) + 1];
 	char ngroup[STRBUF_SIZEOF(uid_t) + 1];
 	char nuser[STRBUF_SIZEOF(gid_t) + 1];
 
@@ -656,7 +655,8 @@ display(const FTSENT *p, FTSENT *list, i
 		MAKENINES(maxsize);
 		free(jinitmax);
 	}
-	devstrlen = 0;
+	d.s_size = 0;
+	sizelen = 0;
 	flags = NULL;
 	for (cur = list, entries = 0; cur; cur = cur->fts_link) {
 		if (cur->fts_info == FTS_ERR || cur->fts_info == FTS_NS) {
@@ -796,14 +796,12 @@ label_out:
 				np->group = &np->data[ulen + 1];
 				(void)strcpy(np->group, group);
 
-				if ((S_ISCHR(sp->st_mode) ||
-				    S_ISBLK(sp->st_mode)) &&
-				    devstrlen < DEVSTR_HEX_LEN) {
-					if (minor(sp->st_rdev) > 255 ||
-					    minor(sp->st_rdev) < 0)
-						devstrlen = DEVSTR_HEX_LEN;
-					else
-						devstrlen = DEVSTR_LEN;
+				if (S_ISCHR(sp->st_mode) ||
+				    S_ISBLK(sp->st_mode)) {
+					sizelen = snprintf(NULL, 0,
+					    "%#jx", (uintmax_t)sp->st_rdev);
+					if (d.s_size < sizelen)
+						d.s_size = sizelen;
 				}
 
 				if (f_flags) {
@@ -837,23 +835,16 @@ label_out:
 	d.maxlen = maxlen;
 	if (needstats) {
 		d.btotal = btotal;
-		(void)snprintf(buf, sizeof(buf), "%lu", maxblock);
-		d.s_block = strlen(buf);
+		d.s_block = snprintf(NULL, 0, "%lu", maxblock);
 		d.s_flags = maxflags;
 		d.s_label = maxlabelstr;
 		d.s_group = maxgroup;
-		(void)snprintf(buf, sizeof(buf), "%lu", maxinode);
-		d.s_inode = strlen(buf);
-		(void)snprintf(buf, sizeof(buf), "%lu", maxnlink);
-		d.s_nlink = strlen(buf);
-		if (f_humanval)
-			d.s_size = HUMANVALSTR_LEN;
-		else {
-			(void)snprintf(buf, sizeof(buf), "%ju", maxsize);
-			d.s_size = strlen(buf);
-		}
-		if (d.s_size < devstrlen)
-			d.s_size = devstrlen;
+		d.s_inode = snprintf(NULL, 0, "%lu", maxinode);
+		d.s_nlink = snprintf(NULL, 0, "%lu", maxnlink);
+		sizelen = f_humanval ? HUMANVALSTR_LEN :
+		    snprintf(NULL, 0, "%ju", maxsize);
+		if (d.s_size < sizelen)
+			d.s_size = sizelen;
 		d.s_user = maxuser;
 	}
 	printfcn(&d);

Modified: user/attilio/vmcontention/bin/ls/ls.h
==============================================================================
--- user/attilio/vmcontention/bin/ls/ls.h	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ls/ls.h	Thu Sep 29 09:22:54 2011	(r225870)
@@ -36,8 +36,6 @@
 #define NO_PRINT	1
 
 #define HUMANVALSTR_LEN	5
-#define DEVSTR_LEN	8
-#define DEVSTR_HEX_LEN	15
 
 extern long blocksize;		/* block size units */
 

Modified: user/attilio/vmcontention/bin/ls/print.c
==============================================================================
--- user/attilio/vmcontention/bin/ls/print.c	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ls/print.c	Thu Sep 29 09:22:54 2011	(r225870)
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
 #include <langinfo.h>
 #include <libutil.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
@@ -351,16 +352,8 @@ printaname(const FTSENT *p, u_long inode
 static void
 printdev(size_t width, dev_t dev)
 {
-	char buf[DEVSTR_HEX_LEN + 1];
 
-	if (minor(dev) > 255 || minor(dev) < 0)
-		(void)snprintf(buf, sizeof(buf), "%3d, 0x%08x",
-		    major(dev), (u_int)minor(dev));
-	else
-		(void)snprintf(buf, sizeof(buf), "%3d, %3d",
-		    major(dev), minor(dev));
-
-	(void)printf("%*s ", (u_int)width, buf);
+	(void)printf("%#*jx ", (u_int)width, (uintmax_t)dev);
 }
 
 static void

Modified: user/attilio/vmcontention/bin/ps/extern.h
==============================================================================
--- user/attilio/vmcontention/bin/ps/extern.h	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ps/extern.h	Thu Sep 29 09:22:54 2011	(r225870)
@@ -39,63 +39,52 @@ extern fixpt_t ccpu;
 extern int cflag, eval, fscale, nlistread, rawcpu;
 extern unsigned long mempages;
 extern time_t now;
-extern int showthreads, sumrusage, termwidth, totwidth;
+extern int showthreads, sumrusage, termwidth;
 extern STAILQ_HEAD(velisthead, varent) varlist;
 
 __BEGIN_DECLS
-void	 arguments(KINFO *, VARENT *);
-void	 command(KINFO *, VARENT *);
-void	 cputime(KINFO *, VARENT *);
+char	 *arguments(KINFO *, VARENT *);
+char	 *command(KINFO *, VARENT *);
+char	 *cputime(KINFO *, VARENT *);
 int	 donlist(void);
-void	 elapsed(KINFO *, VARENT *);
-void	 elapseds(KINFO *, VARENT *);
-void	 emulname(KINFO *, VARENT *);
+char	 *elapsed(KINFO *, VARENT *);
+char	 *elapseds(KINFO *, VARENT *);
+char	 *emulname(KINFO *, VARENT *);
 VARENT	*find_varentry(VAR *);
 const	 char *fmt_argv(char **, char *, size_t);
 double	 getpcpu(const KINFO *);
-void	 kvar(KINFO *, VARENT *);
-void	 label(KINFO *, VARENT *);
-void	 loginclass(KINFO *, VARENT *);
-void	 logname(KINFO *, VARENT *);
-void	 longtname(KINFO *, VARENT *);
-void	 lstarted(KINFO *, VARENT *);
-void	 maxrss(KINFO *, VARENT *);
-void	 lockname(KINFO *, VARENT *);
-void	 mwchan(KINFO *, VARENT *);
-void	 nwchan(KINFO *, VARENT *);
-void	 pagein(KINFO *, VARENT *);
+char	 *kvar(KINFO *, VARENT *);
+char	 *label(KINFO *, VARENT *);
+char	 *loginclass(KINFO *, VARENT *);
+char	 *logname(KINFO *, VARENT *);
+char	 *longtname(KINFO *, VARENT *);
+char	 *lstarted(KINFO *, VARENT *);
+char	 *maxrss(KINFO *, VARENT *);
+char	 *lockname(KINFO *, VARENT *);
+char	 *mwchan(KINFO *, VARENT *);
+char	 *nwchan(KINFO *, VARENT *);
+char	 *pagein(KINFO *, VARENT *);
 void	 parsefmt(const char *, int);
-void	 pcpu(KINFO *, VARENT *);
-void	 pmem(KINFO *, VARENT *);
-void	 pri(KINFO *, VARENT *);
+char	 *pcpu(KINFO *, VARENT *);
+char	 *pmem(KINFO *, VARENT *);
+char	 *pri(KINFO *, VARENT *);
 void	 printheader(void);
-void	 priorityr(KINFO *, VARENT *);
-void	 egroupname(KINFO *, VARENT *);
-void	 rgroupname(KINFO *, VARENT *);
-void	 runame(KINFO *, VARENT *);
-void	 rvar(KINFO *, VARENT *);
-int	 s_comm(KINFO *);
-int	 s_cputime(KINFO *);
-int	 s_label(KINFO *);
-int	 s_loginclass(KINFO *);
-int	 s_logname(KINFO *);
-int	 s_egroupname(KINFO *);
-int	 s_rgroupname(KINFO *);
-int	 s_runame(KINFO *);
-int	 s_systime(KINFO *);
-int	 s_uname(KINFO *);
-int	 s_usertime(KINFO *);
+char	 *priorityr(KINFO *, VARENT *);
+char	 *egroupname(KINFO *, VARENT *);
+char	 *rgroupname(KINFO *, VARENT *);
+char	 *runame(KINFO *, VARENT *);
+char	 *rvar(KINFO *, VARENT *);
 void	 showkey(void);
-void	 started(KINFO *, VARENT *);
-void	 state(KINFO *, VARENT *);
-void	 systime(KINFO *, VARENT *);
-void	 tdev(KINFO *, VARENT *);
-void	 tdnam(KINFO *, VARENT *);
-void	 tname(KINFO *, VARENT *);
-void	 ucomm(KINFO *, VARENT *);
-void	 uname(KINFO *, VARENT *);
-void	 upr(KINFO *, VARENT *);
-void	 usertime(KINFO *, VARENT *);
-void	 vsize(KINFO *, VARENT *);
-void	 wchan(KINFO *, VARENT *);
+char	 *started(KINFO *, VARENT *);
+char	 *state(KINFO *, VARENT *);
+char	 *systime(KINFO *, VARENT *);
+char	 *tdev(KINFO *, VARENT *);
+char	 *tdnam(KINFO *, VARENT *);
+char	 *tname(KINFO *, VARENT *);
+char	 *ucomm(KINFO *, VARENT *);
+char	 *uname(KINFO *, VARENT *);
+char	 *upr(KINFO *, VARENT *);
+char	 *usertime(KINFO *, VARENT *);
+char	 *vsize(KINFO *, VARENT *);
+char	 *wchan(KINFO *, VARENT *);
 __END_DECLS

Modified: user/attilio/vmcontention/bin/ps/keyword.c
==============================================================================
--- user/attilio/vmcontention/bin/ps/keyword.c	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ps/keyword.c	Thu Sep 29 09:22:54 2011	(r225870)
@@ -57,178 +57,116 @@ static int  vcmp(const void *, const voi
 #define	KOFF(x)	offsetof(struct kinfo_proc, x)
 #define	ROFF(x)	offsetof(struct rusage, x)
 
-#define	EMULLEN	13		/* enough for "FreeBSD ELF32" */
 #define	LWPFMT	"d"
-#define	LWPLEN	6
 #define	NLWPFMT	"d"
-#define	NLWPLEN	4
 #define	UIDFMT	"u"
-#define	UIDLEN	5
 #define	PIDFMT	"d"
-#define	PIDLEN	5
-#define USERLEN (MAXLOGNAME - 1)
 
 /* PLEASE KEEP THE TABLE BELOW SORTED ALPHABETICALLY!!! */
 static VAR var[] = {
-	{"%cpu", "%CPU", NULL, 0, pcpu, NULL, 5, 0, CHAR, NULL, 0},
-	{"%mem", "%MEM", NULL, 0, pmem, NULL, 4, 0, CHAR, NULL, 0},
-	{"acflag", "ACFLG", NULL, 0, kvar, NULL, 3, KOFF(ki_acflag), USHORT,
-		"x", 0},
-	{"acflg", "", "acflag", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"args", "COMMAND", NULL, COMM|LJUST|USER, arguments, NULL, 16, 0,
+	{"%cpu", "%CPU", NULL, 0, pcpu, 0, CHAR, NULL, 0},
+	{"%mem", "%MEM", NULL, 0, pmem, 0, CHAR, NULL, 0},
+	{"acflag", "ACFLG", NULL, 0, kvar, KOFF(ki_acflag), USHORT, "x", 0},
+	{"acflg", "", "acflag", 0, NULL, 0, CHAR, NULL, 0},
+	{"args", "COMMAND", NULL, COMM|LJUST|USER, arguments, 0,
 		CHAR, NULL, 0},
-	{"blocked", "", "sigmask", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"caught", "", "sigcatch", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"class", "CLASS", NULL, LJUST, loginclass, s_loginclass,
-		MAXLOGNAME-1, 0, CHAR, NULL, 0},
-	{"comm", "COMMAND", NULL, LJUST, ucomm, s_comm,
-		COMMLEN + TDNAMLEN + 1, 0, CHAR, NULL, 0},
-	{"command", "COMMAND", NULL, COMM|LJUST|USER, command, NULL, 16, 0,
+	{"blocked", "", "sigmask", 0, NULL, 0, CHAR, NULL, 0},
+	{"caught", "", "sigcatch", 0, NULL, 0, CHAR, NULL, 0},
+	{"class", "CLASS", NULL, LJUST, loginclass, 0, CHAR, NULL, 0},
+	{"comm", "COMMAND", NULL, LJUST, ucomm, 0, CHAR, NULL, 0},
+	{"command", "COMMAND", NULL, COMM|LJUST|USER, command, 0,
 		CHAR, NULL, 0},
-	{"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d",
-		0},
-	{"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"egid", "", "gid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"egroup", "", "group", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"emul", "EMUL", NULL, LJUST, emulname, NULL, EMULLEN, 0, CHAR,
-		NULL, 0},
-	{"etime", "ELAPSED", NULL, USER, elapsed, NULL, 12, 0, CHAR, NULL, 0},
-	{"etimes", "ELAPSED", NULL, USER, elapseds, NULL, 12, 0, CHAR, NULL, 0},
-	{"euid", "", "uid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"f", "F", NULL, 0, kvar, NULL, 8, KOFF(ki_flag), INT, "x", 0},
-	{"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"gid", "GID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_groups),
-		UINT, UIDFMT, 0},
-	{"group", "GROUP", NULL, LJUST, egroupname, s_egroupname,
-	    USERLEN, 0, CHAR, NULL, 0},
-	{"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"inblk", "INBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG,
-		"ld", 0},
-	{"inblock", "", "inblk", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"jid", "JID", NULL, 0, kvar, NULL, 6, KOFF(ki_jid), INT, "d", 0},
-	{"jobc", "JOBC", NULL, 0, kvar, NULL, 4, KOFF(ki_jobc), SHORT, "d",
-		0},
-	{"ktrace", "KTRACE", NULL, 0, kvar, NULL, 8, KOFF(ki_traceflag), INT,
-		"x", 0},
-	{"label", "LABEL", NULL, LJUST, label, s_label, SHRT_MAX, 0, CHAR,
-	    NULL, 0},
-	{"lim", "LIM", NULL, 0, maxrss, NULL, 5, 0, CHAR, NULL, 0},
-	{"lockname", "LOCK", NULL, LJUST, lockname, NULL, 6, 0, CHAR, NULL,
-		0},
-	{"login", "LOGIN", NULL, LJUST, logname, s_logname, MAXLOGNAME-1,
-		0, CHAR, NULL, 0},
-	{"logname", "", "login", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"lstart", "STARTED", NULL, LJUST|USER, lstarted, NULL, 28, 0, CHAR,
-		NULL, 0},
-	{"lwp", "LWP", NULL, 0, kvar, NULL, LWPLEN, KOFF(ki_tid), UINT,
-		LWPFMT, 0},
-	{"majflt", "MAJFLT", NULL, USER, rvar, NULL, 4, ROFF(ru_majflt),
-		LONG, "ld", 0},
-	{"minflt", "MINFLT", NULL, USER, rvar, NULL, 4, ROFF(ru_minflt),
-		LONG, "ld", 0},
-	{"msgrcv", "MSGRCV", NULL, USER, rvar, NULL, 4, ROFF(ru_msgrcv),
-		LONG, "ld", 0},
-	{"msgsnd", "MSGSND", NULL, USER, rvar, NULL, 4, ROFF(ru_msgsnd),
-		LONG, "ld", 0},
-	{"mwchan", "MWCHAN", NULL, LJUST, mwchan, NULL, 6, 0, CHAR, NULL, 0},
-	{"ni", "", "nice", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"nice", "NI", NULL, 0, kvar, NULL, 2, KOFF(ki_nice), CHAR, "d",
-		0},
-	{"nivcsw", "NIVCSW", NULL, USER, rvar, NULL, 5, ROFF(ru_nivcsw),
-		LONG, "ld", 0},
-	{"nlwp", "NLWP", NULL, 0, kvar, NULL, NLWPLEN, KOFF(ki_numthreads),
-		UINT, NLWPFMT, 0},
-	{"nsignals", "", "nsigs", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"nsigs", "NSIGS", NULL, USER, rvar, NULL, 4, ROFF(ru_nsignals),
-		LONG, "ld", 0},
-	{"nswap", "NSWAP", NULL, USER, rvar, NULL, 4, ROFF(ru_nswap),
-		LONG, "ld", 0},
-	{"nvcsw", "NVCSW", NULL, USER, rvar, NULL, 5, ROFF(ru_nvcsw),
-		LONG, "ld", 0},
-	{"nwchan", "NWCHAN", NULL, LJUST, nwchan, NULL, sizeof(void *) * 2, 0,
-		CHAR, NULL, 0},
-	{"oublk", "OUBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_oublock),
-		LONG, "ld", 0},
-	{"oublock", "", "oublk", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"paddr", "PADDR", NULL, 0, kvar, NULL, sizeof(void *) * 2,
-		KOFF(ki_paddr), KPTR, "lx", 0},
-	{"pagein", "PAGEIN", NULL, USER, pagein, NULL, 6, 0, CHAR, NULL, 0},
-	{"pcpu", "", "%cpu", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"pending", "", "sig", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"pgid", "PGID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_pgid), UINT,
-		PIDFMT, 0},
-	{"pid", "PID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_pid), UINT,
-		PIDFMT, 0},
-	{"pmem", "", "%mem", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"ppid", "PPID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_ppid), UINT,
-		PIDFMT, 0},
-	{"pri", "PRI", NULL, 0, pri, NULL, 3, 0, CHAR, NULL, 0},
-	{"re", "RE", NULL, INF127, kvar, NULL, 3, KOFF(ki_swtime), UINT, "d",
-		0},
-	{"rgid", "RGID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_rgid),
-		UINT, UIDFMT, 0},
-	{"rgroup", "RGROUP", NULL, LJUST, rgroupname, s_rgroupname,
-		USERLEN, 0, CHAR, NULL, 0},
-	{"rss", "RSS", NULL, 0, kvar, NULL, 6, KOFF(ki_rssize), PGTOK, "ld", 0},
-	{"rtprio", "RTPRIO", NULL, 0, priorityr, NULL, 7, KOFF(ki_pri), CHAR,
-		NULL, 0},
-	{"ruid", "RUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_ruid),
-		UINT, UIDFMT, 0},
-	{"ruser", "RUSER", NULL, LJUST, runame, s_runame, USERLEN,
-		0, CHAR, NULL, 0},
-	{"sid", "SID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_sid), UINT,
-		PIDFMT, 0},
-	{"sig", "PENDING", NULL, 0, kvar, NULL, 8, KOFF(ki_siglist), INT,
-		"x", 0},
-	{"sigcatch", "CAUGHT", NULL, 0, kvar, NULL, 8, KOFF(ki_sigcatch),
-		UINT, "x", 0},
-	{"sigignore", "IGNORED", NULL, 0, kvar, NULL, 8, KOFF(ki_sigignore),
+	{"cpu", "CPU", NULL, 0, kvar, KOFF(ki_estcpu), UINT, "d", 0},
+	{"cputime", "", "time", 0, NULL, 0, CHAR, NULL, 0},
+	{"egid", "", "gid", 0, NULL, 0, CHAR, NULL, 0},
+	{"egroup", "", "group", 0, NULL, 0, CHAR, NULL, 0},
+	{"emul", "EMUL", NULL, LJUST, emulname, 0, CHAR, NULL, 0},
+	{"etime", "ELAPSED", NULL, USER, elapsed, 0, CHAR, NULL, 0},
+	{"etimes", "ELAPSED", NULL, USER, elapseds, 0, CHAR, NULL, 0},
+	{"euid", "", "uid", 0, NULL, 0, CHAR, NULL, 0},
+	{"f", "F", NULL, 0, kvar, KOFF(ki_flag), INT, "x", 0},
+	{"flags", "", "f", 0, NULL, 0, CHAR, NULL, 0},
+	{"gid", "GID", NULL, 0, kvar, KOFF(ki_groups), UINT, UIDFMT, 0},
+	{"group", "GROUP", NULL, LJUST, egroupname, 0, CHAR, NULL, 0},
+	{"ignored", "", "sigignore", 0, NULL, 0, CHAR, NULL, 0},
+	{"inblk", "INBLK", NULL, USER, rvar, ROFF(ru_inblock), LONG, "ld", 0},
+	{"inblock", "", "inblk", 0, NULL, 0, CHAR, NULL, 0},
+	{"jid", "JID", NULL, 0, kvar, KOFF(ki_jid), INT, "d", 0},
+	{"jobc", "JOBC", NULL, 0, kvar, KOFF(ki_jobc), SHORT, "d", 0},
+	{"ktrace", "KTRACE", NULL, 0, kvar, KOFF(ki_traceflag), INT, "x", 0},
+	{"label", "LABEL", NULL, LJUST, label, 0, CHAR, NULL, 0},
+	{"lim", "LIM", NULL, 0, maxrss, 0, CHAR, NULL, 0},
+	{"lockname", "LOCK", NULL, LJUST, lockname, 0, CHAR, NULL, 0},
+	{"login", "LOGIN", NULL, LJUST, logname, 0, CHAR, NULL, 0},
+	{"logname", "", "login", 0, NULL, 0, CHAR, NULL, 0},
+	{"lstart", "STARTED", NULL, LJUST|USER, lstarted, 0, CHAR, NULL, 0},
+	{"lwp", "LWP", NULL, 0, kvar, KOFF(ki_tid), UINT, LWPFMT, 0},
+	{"majflt", "MAJFLT", NULL, USER, rvar, ROFF(ru_majflt), LONG, "ld", 0},
+	{"minflt", "MINFLT", NULL, USER, rvar, ROFF(ru_minflt), LONG, "ld", 0},
+	{"msgrcv", "MSGRCV", NULL, USER, rvar, ROFF(ru_msgrcv), LONG, "ld", 0},
+	{"msgsnd", "MSGSND", NULL, USER, rvar, ROFF(ru_msgsnd), LONG, "ld", 0},
+	{"mwchan", "MWCHAN", NULL, LJUST, mwchan, 0, CHAR, NULL, 0},
+	{"ni", "", "nice", 0, NULL, 0, CHAR, NULL, 0},
+	{"nice", "NI", NULL, 0, kvar, KOFF(ki_nice), CHAR, "d", 0},
+	{"nivcsw", "NIVCSW", NULL, USER, rvar, ROFF(ru_nivcsw), LONG, "ld", 0},
+	{"nlwp", "NLWP", NULL, 0, kvar, KOFF(ki_numthreads), UINT, NLWPFMT, 0},
+	{"nsignals", "", "nsigs", 0, NULL, 0, CHAR, NULL, 0},
+	{"nsigs", "NSIGS", NULL, USER, rvar, ROFF(ru_nsignals), LONG, "ld", 0},
+	{"nswap", "NSWAP", NULL, USER, rvar, ROFF(ru_nswap), LONG, "ld", 0},
+	{"nvcsw", "NVCSW", NULL, USER, rvar, ROFF(ru_nvcsw), LONG, "ld", 0},
+	{"nwchan", "NWCHAN", NULL, LJUST, nwchan, 0, CHAR, NULL, 0},
+	{"oublk", "OUBLK", NULL, USER, rvar, ROFF(ru_oublock), LONG, "ld", 0},
+	{"oublock", "", "oublk", 0, NULL, 0, CHAR, NULL, 0},
+	{"paddr", "PADDR", NULL, 0, kvar, KOFF(ki_paddr), KPTR, "lx", 0},
+	{"pagein", "PAGEIN", NULL, USER, pagein, 0, CHAR, NULL, 0},
+	{"pcpu", "", "%cpu", 0, NULL, 0, CHAR, NULL, 0},
+	{"pending", "", "sig", 0, NULL, 0, CHAR, NULL, 0},
+	{"pgid", "PGID", NULL, 0, kvar, KOFF(ki_pgid), UINT, PIDFMT, 0},
+	{"pid", "PID", NULL, 0, kvar, KOFF(ki_pid), UINT, PIDFMT, 0},
+	{"pmem", "", "%mem", 0, NULL, 0, CHAR, NULL, 0},
+	{"ppid", "PPID", NULL, 0, kvar, KOFF(ki_ppid), UINT, PIDFMT, 0},
+	{"pri", "PRI", NULL, 0, pri, 0, CHAR, NULL, 0},
+	{"re", "RE", NULL, INF127, kvar, KOFF(ki_swtime), UINT, "d", 0},
+	{"rgid", "RGID", NULL, 0, kvar, KOFF(ki_rgid), UINT, UIDFMT, 0},
+	{"rgroup", "RGROUP", NULL, LJUST, rgroupname, 0, CHAR, NULL, 0},
+	{"rss", "RSS", NULL, 0, kvar, KOFF(ki_rssize), PGTOK, "ld", 0},
+	{"rtprio", "RTPRIO", NULL, 0, priorityr, KOFF(ki_pri), CHAR, NULL, 0},
+	{"ruid", "RUID", NULL, 0, kvar, KOFF(ki_ruid), UINT, UIDFMT, 0},
+	{"ruser", "RUSER", NULL, LJUST, runame, 0, CHAR, NULL, 0},
+	{"sid", "SID", NULL, 0, kvar, KOFF(ki_sid), UINT, PIDFMT, 0},
+	{"sig", "PENDING", NULL, 0, kvar, KOFF(ki_siglist), INT, "x", 0},
+	{"sigcatch", "CAUGHT", NULL, 0, kvar, KOFF(ki_sigcatch), UINT, "x", 0},
+	{"sigignore", "IGNORED", NULL, 0, kvar, KOFF(ki_sigignore),
 		UINT, "x", 0},
-	{"sigmask", "BLOCKED", NULL, 0, kvar, NULL, 8, KOFF(ki_sigmask),
-		UINT, "x", 0},
-	{"sl", "SL", NULL, INF127, kvar, NULL, 3, KOFF(ki_slptime), UINT, "d",
-		0},
-	{"start", "STARTED", NULL, LJUST|USER, started, NULL, 7, 0, CHAR, NULL,
-		0},
-	{"stat", "", "state", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"state", "STAT", NULL, 0, state, NULL, 4, 0, CHAR, NULL, 0},
-	{"svgid", "SVGID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svgid),
-		UINT, UIDFMT, 0},
-	{"svuid", "SVUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svuid),
-		UINT, UIDFMT, 0},
-	{"systime", "SYSTIME", NULL, USER, systime, s_systime, 15, 0, CHAR,
-		NULL, 0},
-	{"tdaddr", "TDADDR", NULL, 0, kvar, NULL, sizeof(void *) * 2,
-		KOFF(ki_tdaddr), KPTR, "lx", 0},
-	{"tdev", "TDEV", NULL, 0, tdev, NULL, 5, 0, CHAR, NULL, 0},
-	{"tdnam", "TDNAM", NULL, LJUST, tdnam, NULL, COMMLEN, 0, CHAR, NULL, 0},
-	{"time", "TIME", NULL, USER, cputime, s_cputime, 15, 0, CHAR,
-		NULL, 0},
-	{"tpgid", "TPGID", NULL, 0, kvar, NULL, 4, KOFF(ki_tpgid), UINT,
-		PIDFMT, 0},
-	{"tsid", "TSID", NULL, 0, kvar, NULL, PIDLEN, KOFF(ki_tsid), UINT,
-		PIDFMT, 0},
-	{"tsiz", "TSIZ", NULL, 0, kvar, NULL, 4, KOFF(ki_tsize), PGTOK, "ld", 0},
-	{"tt", "TT ", NULL, 0, tname, NULL, 4, 0, CHAR, NULL, 0},
-	{"tty", "TTY", NULL, LJUST, longtname, NULL, 8, 0, CHAR, NULL, 0},
-	{"ucomm", "UCOMM", NULL, LJUST, ucomm, s_comm,
-		COMMLEN + TDNAMLEN + 1, 0, CHAR, NULL, 0},
-	{"uid", "UID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_uid), UINT,
-		UIDFMT, 0},
-	{"upr", "UPR", NULL, 0, upr, NULL, 3, 0, CHAR, NULL, 0},
-	{"uprocp", "UPROCP", NULL, 0, kvar, NULL, sizeof(void *) * 2,
-		KOFF(ki_paddr), KPTR, "lx", 0},
-	{"user", "USER", NULL, LJUST, uname, s_uname, USERLEN, 0, CHAR,
-		NULL, 0},
-	{"usertime", "USERTIME", NULL, USER, usertime, s_usertime, 15, 0,
-		CHAR, NULL, 0},
-	{"usrpri", "", "upr", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"vsize", "", "vsz", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
-	{"vsz", "VSZ", NULL, 0, vsize, NULL, 6, 0, CHAR, NULL, 0},
-	{"wchan", "WCHAN", NULL, LJUST, wchan, NULL, 6, 0, CHAR, NULL, 0},
-	{"xstat", "XSTAT", NULL, 0, kvar, NULL, 4, KOFF(ki_xstat), USHORT,
-		"x", 0},
-	{"", NULL, NULL, 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
+	{"sigmask", "BLOCKED", NULL, 0, kvar, KOFF(ki_sigmask), UINT, "x", 0},
+	{"sl", "SL", NULL, INF127, kvar, KOFF(ki_slptime), UINT, "d", 0},
+	{"start", "STARTED", NULL, LJUST|USER, started, 0, CHAR, NULL, 0},
+	{"stat", "", "state", 0, NULL, 0, CHAR, NULL, 0},
+	{"state", "STAT", NULL, LJUST, state, 0, CHAR, NULL, 0},
+	{"svgid", "SVGID", NULL, 0, kvar, KOFF(ki_svgid), UINT, UIDFMT, 0},
+	{"svuid", "SVUID", NULL, 0, kvar, KOFF(ki_svuid), UINT, UIDFMT, 0},
+	{"systime", "SYSTIME", NULL, USER, systime, 0, CHAR, NULL, 0},
+	{"tdaddr", "TDADDR", NULL, 0, kvar, KOFF(ki_tdaddr), KPTR, "lx", 0},
+	{"tdev", "TDEV", NULL, 0, tdev, 0, CHAR, NULL, 0},
+	{"tdnam", "TDNAM", NULL, LJUST, tdnam, 0, CHAR, NULL, 0},
+	{"time", "TIME", NULL, USER, cputime, 0, CHAR, NULL, 0},
+	{"tpgid", "TPGID", NULL, 0, kvar, KOFF(ki_tpgid), UINT, PIDFMT, 0},
+	{"tsid", "TSID", NULL, 0, kvar, KOFF(ki_tsid), UINT, PIDFMT, 0},
+	{"tsiz", "TSIZ", NULL, 0, kvar, KOFF(ki_tsize), PGTOK, "ld", 0},
+	{"tt", "TT ", NULL, 0, tname, 0, CHAR, NULL, 0},
+	{"tty", "TTY", NULL, LJUST, longtname, 0, CHAR, NULL, 0},
+	{"ucomm", "UCOMM", NULL, LJUST, ucomm, 0, CHAR, NULL, 0},
+	{"uid", "UID", NULL, 0, kvar, KOFF(ki_uid), UINT, UIDFMT, 0},
+	{"upr", "UPR", NULL, 0, upr, 0, CHAR, NULL, 0},
+	{"uprocp", "UPROCP", NULL, 0, kvar, KOFF(ki_paddr), KPTR, "lx", 0},
+	{"user", "USER", NULL, LJUST, uname, 0, CHAR, NULL, 0},
+	{"usertime", "USERTIME", NULL, USER, usertime, 0, CHAR, NULL, 0},
+	{"usrpri", "", "upr", 0, NULL, 0, CHAR, NULL, 0},
+	{"vsize", "", "vsz", 0, NULL, 0, CHAR, NULL, 0},
+	{"vsz", "VSZ", NULL, 0, vsize, 0, CHAR, NULL, 0},
+	{"wchan", "WCHAN", NULL, LJUST, wchan, 0, CHAR, NULL, 0},
+	{"xstat", "XSTAT", NULL, 0, kvar, KOFF(ki_xstat), USHORT, "x", 0},
+	{"", NULL, NULL, 0, NULL, 0, CHAR, NULL, 0},
 };
 
 void

Modified: user/attilio/vmcontention/bin/ps/print.c
==============================================================================
--- user/attilio/vmcontention/bin/ps/print.c	Thu Sep 29 08:37:53 2011	(r225869)
+++ user/attilio/vmcontention/bin/ps/print.c	Thu Sep 29 09:22:54 2011	(r225870)
@@ -64,6 +64,9 @@ __FBSDID("$FreeBSD$");
 
 #include "ps.h"
 
+#define	COMMAND_WIDTH	16
+#define	ARGUMENTS_WIDTH	16
+
 #define	ps_pgtok(a)	(((a) * getpagesize()) / 1024)
 
 void
@@ -93,53 +96,42 @@ printheader(void)
 	(void)putchar('\n');
 }
 
-void
+char *
 arguments(KINFO *k, VARENT *ve)
 {
 	VAR *v;
-	int left;
-	char *cp, *vis_args;
+	char *vis_args;
 
 	v = ve->var;
 	if ((vis_args = malloc(strlen(k->ki_args) * 4 + 1)) == NULL)
 		errx(1, "malloc failed");
 	strvis(vis_args, k->ki_args, VIS_TAB | VIS_NL | VIS_NOSLASH);
-	if (STAILQ_NEXT(ve, next_ve) == NULL) {
-		/* last field */
-		if (termwidth == UNLIMITED) {
-			(void)printf("%s", vis_args);
-		} else {
-			left = termwidth - (totwidth - v->width);
-			if (left < 1) /* already wrapped, just use std width */
-				left = v->width;
-			for (cp = vis_args; --left >= 0 && *cp != '\0';)
-				(void)putchar(*cp++);
-		}
-	} else {
-		(void)printf("%-*.*s", v->width, v->width, vis_args);
-	}
-	free(vis_args);
+
+	if (STAILQ_NEXT(ve, next_ve) != NULL && strlen(vis_args) > ARGUMENTS_WIDTH)
+		vis_args[ARGUMENTS_WIDTH] = '\0';
+
+	return (vis_args);
 }
 
-void
+char *
 command(KINFO *k, VARENT *ve)
 {
 	VAR *v;
-	int left;
-	char *cp, *vis_env, *vis_args;
+	char *vis_args, *vis_env, *str;
 
 	v = ve->var;
 	if (cflag) {
 		/* If it is the last field, then don't pad */
 		if (STAILQ_NEXT(ve, next_ve) == NULL) {
-			if (k->ki_d.prefix)
-				(void)printf("%s", k->ki_d.prefix);
-			(void)printf("%s", k->ki_p->ki_comm);
-			if (showthreads && k->ki_p->ki_numthreads > 1)
-				(void)printf("/%s", k->ki_p->ki_tdname);
+			asprintf(&str, "%s%s%s%s",
+			    k->ki_d.prefix ? k->ki_d.prefix : "",
+			    k->ki_p->ki_comm,
+			    (showthreads && k->ki_p->ki_numthreads > 1) ? "/" : "",
+			    (showthreads && k->ki_p->ki_numthreads > 1) ? k->ki_p->ki_tdname : "");
 		} else
-			(void)printf("%-*s", v->width, k->ki_p->ki_comm);
-		return;
+			str = strdup(k->ki_p->ki_comm);
+
+		return (str);
 	}
 	if ((vis_args = malloc(strlen(k->ki_args) * 4 + 1)) == NULL)
 		errx(1, "malloc failed");
@@ -157,89 +149,84 @@ command(KINFO *k, VARENT *ve)
 		} else
 			vis_env = NULL;
 
-		if (termwidth == UNLIMITED) {
-			if (k->ki_d.prefix)
-				(void)printf("%s", k->ki_d.prefix);
-			if (vis_env)
-				(void)printf("%s ", vis_env);
-			(void)printf("%s", vis_args);
-		} else {
-			left = termwidth - (totwidth - v->width);
-			if (left < 1) /* already wrapped, just use std width */
-				left = v->width;
-			if ((cp = k->ki_d.prefix) != NULL)
-				while (--left >= 0 && *cp)
-					(void)putchar(*cp++);
-			if ((cp = vis_env) != NULL) {
-				while (--left >= 0 && *cp)
-					(void)putchar(*cp++);
-				if (--left >= 0)
-					putchar(' ');
-			}
-			for (cp = vis_args; --left >= 0 && *cp != '\0';)
-				(void)putchar(*cp++);
-		}
+		asprintf(&str, "%s%s%s%s",
+		    k->ki_d.prefix ? k->ki_d.prefix : "",
+		    vis_env ? vis_env : "",
+		    vis_env ? " " : "",
+		    vis_args);
+
 		if (vis_env != NULL)
 			free(vis_env);
-	} else
+		free(vis_args);
+	} else {
 		/* ki_d.prefix & ki_env aren't shown for interim fields */
-		(void)printf("%-*.*s", v->width, v->width, vis_args);
-	free(vis_args);
+		str = vis_args;
+
+		if (strlen(str) > COMMAND_WIDTH)
+			str[COMMAND_WIDTH] = '\0';
+	}
+
+	return (str);
 }
 
-void
+char *
 ucomm(KINFO *k, VARENT *ve)
 {
-	char tmpbuff[COMMLEN + TDNAMLEN + 2];
 	VAR *v;
+	char *str;
 
 	v = ve->var;
 	if (STAILQ_NEXT(ve, next_ve) == NULL) {	/* last field, don't pad */
-		if (k->ki_d.prefix)
-			(void)printf("%s", k->ki_d.prefix);
-		(void)printf("%s", k->ki_p->ki_comm);
-		if (showthreads && k->ki_p->ki_numthreads > 1)
-			printf("/%s", k->ki_p->ki_tdname);
+		asprintf(&str, "%s%s%s%s",
+		    k->ki_d.prefix ? k->ki_d.prefix : "",
+		    k->ki_p->ki_comm,
+		    (showthreads && k->ki_p->ki_numthreads > 1) ? "/" : "",
+		    (showthreads && k->ki_p->ki_numthreads > 1) ? k->ki_p->ki_tdname : "");
 	} else {
-		bzero(tmpbuff, sizeof(tmpbuff));
 		if (showthreads && k->ki_p->ki_numthreads > 1)
-			sprintf(tmpbuff, "%s/%s", k->ki_p->ki_comm,
-			    k->ki_p->ki_tdname);
+			asprintf(&str, "%s/%s", k->ki_p->ki_comm, k->ki_p->ki_tdname);
 		else
-			sprintf(tmpbuff, "%s", k->ki_p->ki_comm);
-		(void)printf("%-*s", v->width, tmpbuff);
+			str = strdup(k->ki_p->ki_comm);
 	}
+	return (str);
 }
 
-void
+char *
 tdnam(KINFO *k, VARENT *ve)
 {
 	VAR *v;
+	char *str;
 
 	v = ve->var;
 	if (showthreads && k->ki_p->ki_numthreads > 1)
-		(void)printf("%-*s", v->width, k->ki_p->ki_tdname);
+		str = strdup(k->ki_p->ki_tdname);
 	else
-		(void)printf("%-*s", v->width, "      ");
+		str = strdup("      ");
+
+	return (str);
 }
 
-void
+char *
 logname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
-	char *s;
 
 	v = ve->var;
-	(void)printf("%-*s", v->width, (s = k->ki_p->ki_login, *s) ? s : "-");
+	if (*k->ki_p->ki_login == '\0')
+		return (NULL);
+	return (strdup(k->ki_p->ki_login));
 }
 
-void
+char *
 state(KINFO *k, VARENT *ve)
 {
 	int flag, tdflags;
-	char *cp;
+	char *cp, *buf;
 	VAR *v;
-	char buf[16];
+
+	buf = malloc(16);
+	if (buf == NULL)
+		errx(1, "malloc failed");
 
 	v = ve->var;
 	flag = k->ki_p->ki_flag;
@@ -301,278 +288,270 @@ state(KINFO *k, VARENT *ve)
 	if (flag & P_JAILED)
 		*cp++ = 'J';
 	*cp = '\0';
-	(void)printf("%-*s", v->width, buf);
+	return (buf);
 }
 
 #define	scalepri(x)	((x) - PZERO)
 
-void
+char *
 pri(KINFO *k, VARENT *ve)
 {
 	VAR *v;
+	char *str;
 
 	v = ve->var;
-	(void)printf("%*d", v->width, scalepri(k->ki_p->ki_pri.pri_level));
+	asprintf(&str, "%d", scalepri(k->ki_p->ki_pri.pri_level));
+	return (str);
 }
 
-void
+char *
 upr(KINFO *k, VARENT *ve)
 {
 	VAR *v;
+	char *str;
 
 	v = ve->var;
-	(void)printf("%*d", v->width, scalepri(k->ki_p->ki_pri.pri_user));
+	asprintf(&str, "%d", scalepri(k->ki_p->ki_pri.pri_user));
+	return (str);
 }
 #undef scalepri
 
-void
+char *
 uname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 
 	v = ve->var;
-	(void)printf("%-*s", v->width, user_from_uid(k->ki_p->ki_uid, 0));
-}
-
-int
-s_uname(KINFO *k)
-{
-	return (strlen(user_from_uid(k->ki_p->ki_uid, 0)));
+	return (strdup(user_from_uid(k->ki_p->ki_uid, 0)));
 }
 
-void
+char *
 egroupname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 
 	v = ve->var;
-	(void)printf("%-*s", v->width,
-	    group_from_gid(k->ki_p->ki_groups[0], 0));
-}
-
-int
-s_egroupname(KINFO *k)
-{
-	return (strlen(group_from_gid(k->ki_p->ki_groups[0], 0)));
+	return (strdup(group_from_gid(k->ki_p->ki_groups[0], 0)));
 }
 
-void
+char *
 rgroupname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 
 	v = ve->var;
-	(void)printf("%-*s", v->width, group_from_gid(k->ki_p->ki_rgid, 0));
-}
-
-int
-s_rgroupname(KINFO *k)
-{
-	return (strlen(group_from_gid(k->ki_p->ki_rgid, 0)));
+	return (strdup(group_from_gid(k->ki_p->ki_rgid, 0)));
 }
 
-void
+char *
 runame(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 
 	v = ve->var;
-	(void)printf("%-*s", v->width, user_from_uid(k->ki_p->ki_ruid, 0));
+	return (strdup(user_from_uid(k->ki_p->ki_ruid, 0)));
 }
 
-int
-s_runame(KINFO *k)
-{
-	return (strlen(user_from_uid(k->ki_p->ki_ruid, 0)));
-}
-
-
-void
+char *
 tdev(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 	dev_t dev;
-	char buff[16];
+	char *str;
 
 	v = ve->var;
 	dev = k->ki_p->ki_tdev;
 	if (dev == NODEV)
-		(void)printf("%*s", v->width, "??");
-	else {
-		(void)snprintf(buff, sizeof(buff),
-		    "%d/%d", major(dev), minor(dev));
-		(void)printf("%*s", v->width, buff);
-	}
+		str = strdup("??");
+	else
+		asprintf(&str, "%#jx", (uintmax_t)dev);
+
+	return (str);
 }
 
-void
+char *
 tname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 	dev_t dev;
-	char *ttname;
+	char *ttname, *str;
 
 	v = ve->var;
 	dev = k->ki_p->ki_tdev;
 	if (dev == NODEV || (ttname = devname(dev, S_IFCHR)) == NULL)
-		(void)printf("%*s ", v->width - 1, "??");
+		str = strdup("?? ");
 	else {
 		if (strncmp(ttname, "tty", 3) == 0 ||
 		    strncmp(ttname, "cua", 3) == 0)
 			ttname += 3;
 		if (strncmp(ttname, "pts/", 4) == 0)
 			ttname += 4;
-		(void)printf("%*.*s%c", v->width - 1, v->width - 1, ttname,
+		asprintf(&str, "%s%c", ttname,
 		    k->ki_p->ki_kiflag & KI_CTTY ? ' ' : '-');
 	}
+
+	return (str);
 }
 
-void
+char *
 longtname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 	dev_t dev;
-	char *ttname;
+	const char *ttname;
 
 	v = ve->var;
 	dev = k->ki_p->ki_tdev;
 	if (dev == NODEV || (ttname = devname(dev, S_IFCHR)) == NULL)
-		(void)printf("%-*s", v->width, "??");
-	else
-		(void)printf("%-*s", v->width, ttname);
+		ttname = "??";
+
+	return (strdup(ttname));
 }
 
-void
+char *
 started(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 	time_t then;
 	struct tm *tp;
 	static int use_ampm = -1;
-	char buf[100];
+	size_t buflen = 100;
+	char *buf;
+
+	buf = malloc(buflen);
+	if (buf == NULL)
+		errx(1, "malloc failed");
 
 	v = ve->var;
-	if (!k->ki_valid) {
-		(void)printf("%-*s", v->width, "-");
-		return;
-	}
+	if (!k->ki_valid)
+		return (NULL);
 	if (use_ampm < 0)
 		use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0');
 	then = k->ki_p->ki_start.tv_sec;
 	tp = localtime(&then);
 	if (now - k->ki_p->ki_start.tv_sec < 24 * 3600) {
-		(void)strftime(buf, sizeof(buf),
+		(void)strftime(buf, buflen,
 		    use_ampm ? "%l:%M%p" : "%k:%M  ", tp);
 	} else if (now - k->ki_p->ki_start.tv_sec < 7 * 86400) {
-		(void)strftime(buf, sizeof(buf),
+		(void)strftime(buf, buflen,
 		    use_ampm ? "%a%I%p" : "%a%H  ", tp);
 	} else
-		(void)strftime(buf, sizeof(buf), "%e%b%y", tp);
-	(void)printf("%-*s", v->width, buf);
+		(void)strftime(buf, buflen, "%e%b%y", tp);
+	return (buf);
 }
 
-void
+char *
 lstarted(KINFO *k, VARENT *ve)
 {
 	VAR *v;
 	time_t then;
-	char buf[100];
+	char *buf;
+	size_t buflen = 100;
+
+	buf = malloc(buflen);
+	if (buf == NULL)
+		errx(1, "malloc failed");
 
 	v = ve->var;
-	if (!k->ki_valid) {
-		(void)printf("%-*s", v->width, "-");
-		return;
-	}
+	if (!k->ki_valid)
+		return (NULL);
 	then = k->ki_p->ki_start.tv_sec;
-	(void)strftime(buf, sizeof(buf), "%c", localtime(&then));
-	(void)printf("%-*s", v->width, buf);
+	(void)strftime(buf, buflen, "%c", localtime(&then));
+	return (buf);
 }
 
-void
+char *
 lockname(KINFO *k, VARENT *ve)
 {
 	VAR *v;
+	char *str;
 
 	v = ve->var;
 	if (k->ki_p->ki_kiflag & KI_LOCKBLOCK) {
 		if (k->ki_p->ki_lockname[0] != 0)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list