--- procps-3.1.15.orig/proc/library.map
+++ procps-3.1.15/proc/library.map
@@ -4,7 +4,7 @@
 
   readproc; readtask; readproctab; readproctab2; look_up_our_self; escape_command;
   escape_str; escape_strlist;
-  openproc; closeproc;
+  openproc; closeproc; freeproc;
   tty_to_dev; dev_to_tty; open_psdb_message; open_psdb; wchan;
   display_version; procps_version; linux_version_code;
   Hertz; smp_num_cpus;
--- procps-3.1.15.orig/proc/readproc.c
+++ procps-3.1.15/proc/readproc.c
@@ -162,7 +162,7 @@
         // examine a field name (hash and compare)
     base:
         if(unlikely(!*S)) break;
-        entry = table[63 & (asso[S[3]] + asso[S[2]] + asso[S[0]])];
+        entry = table[63 & (asso[(int)S[3]] + asso[(int)S[2]] + asso[(int)S[0]])];
         colon = strchr(S, ':');
         if(unlikely(!colon)) break;
         if(unlikely(colon[1]!='\t')) break;
@@ -888,6 +888,8 @@
     else
 	PT = openproc(flags);
     va_end(ap);
+    if (!PT)
+      return 0;
     do {					/* read table: */
 	tab = xrealloc(tab, (n+1)*sizeof(proc_t*));/* realloc as we go, using */
 	tab[n] = readproc_direct(PT, NULL);     /* final null to terminate */
--- procps-3.1.15.orig/proc/module.mk
+++ procps-3.1.15/proc/module.mk
@@ -3,7 +3,7 @@
 # for lib$(NAME).so and /usr/include/($NAME) and such
 NAME      :=  proc
 
-SHARED := 1
+SHARED ?= 1
 
 SONAME    :=  lib$(NAME).so.$(LIBVERSION)
 
--- procps-3.1.15.orig/debian/README.Debian
+++ procps-3.1.15/debian/README.Debian
@@ -0,0 +1,22 @@
+README for Debian package of procps
+===================================
+
+XConsole gone
+-------------
+ XConsole and other X-based programs have been finally removed.  Look in
+ the x packages for their equivalents.
+
+pgrep
+-----
+pgrep is a new program, using the Unix standard name for something that
+greps for processes.  If you are looking for Perl compatible regular
+expression grep, it is called pcregrep.
+
+forks
+-----
+Procps upstream is forked.  This one comes from procps.sf.net  I'm really
+not interested when the others have new versions so please don't bug me about
+it.  However if you see something neat in the others and would like it in
+the Debian one, report a *wishlist* level bug about it.
+
+ Craig Small <csmall@debian.org>
--- procps-3.1.15.orig/debian/copyright
+++ procps-3.1.15/debian/copyright
@@ -0,0 +1,27 @@
+This is the Debian Linux prepackaged version of the /proc file
+system utilities.
+
+This package was downloaded from:
+  http://procps.sourceforge.net/
+
+
+Upstream Authors:
+Werner Almesberger <almesber@di.epfl.ch>, Roger Binns, Charles
+Blake <cblake@ucsd.edu>, Brian Edmonds, David Engel <david@ods.com>,
+Larry Greenfield <greenfie@gauss.rutgers.edu>, Michael K. Johnson
+<johnsonm@sunsite.unc.edu>, Branko Lankester <lankeste@fwi.uva.nl>,
+Robert Nation <nation@rocket.sanders.lockheed.com>, Michael Shields
+<mjshield@nyx.cs.du.edu>, Henry Ware <al172@yfn.ysu.edu>, Matt
+Welsh <mdw@sunsite.unc.edu>, Albert D. Cahalan and Jim C. Warner
+<warnerjc@worldnet.att.net>
+
+All programs except ps, skill and snice are copyright by their
+authors and redistributable under the terms of the GNU General
+Public License. On Debian Linux systems, the complete text of
+the GNU General Public License can be found in
+`/usr/share/common-licenses/GPL'.
+
+ps, skill and snice are copyright by their authors and redistributable under 
+the terms of the GNU Library General Public License. On Debian Linux 
+systems, the complete text of the GNU Library General Public License can 
+be found in `/usr/share/common/licenses/LGPL'.
--- procps-3.1.15.orig/debian/dirs
+++ procps-3.1.15/debian/dirs
@@ -0,0 +1,12 @@
+etc
+lib
+sbin
+bin
+usr/bin
+usr/sbin
+usr/lib
+usr/include/proc
+usr/share/man/man1
+usr/share/man/man5
+usr/share/man/man8
+
--- procps-3.1.15.orig/debian/docs
+++ procps-3.1.15/debian/docs
@@ -0,0 +1,4 @@
+BUGS
+TODO
+README.top
+
--- procps-3.1.15.orig/debian/examples
+++ procps-3.1.15/debian/examples
@@ -0,0 +1,2 @@
+debian/sysctl.conf
+
--- procps-3.1.15.orig/debian/libproc-dev.dirs
+++ procps-3.1.15/debian/libproc-dev.dirs
@@ -0,0 +1,2 @@
+usr/lib
+usr/include/proc
--- procps-3.1.15.orig/debian/menu
+++ procps-3.1.15/debian/menu
@@ -0,0 +1 @@
+?package(procps):needs=text section="Apps/System" title="Top" command="/usr/bin/top" hints="Monitoring"
--- procps-3.1.15.orig/debian/postinst
+++ procps-3.1.15/debian/postinst
@@ -0,0 +1,74 @@
+#!/bin/sh
+# postinst script for procps
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+# quoting from the policy:
+#     Any necessary prompting should almost always be confined to the
+#     post-installation script, and should be protected with a conditional
+#     so that unnecessary prompting doesn't happen if a package's
+#     installation fails and the `postinst' is called with `abort-upgrade',
+#     `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+    configure)
+		if [ -e /etc/psdevtab ] ; then
+			rm -f /etc/psdevtab
+		fi
+		if [ -e /etc/psdatabase ] 
+		then
+			rm -f /etc/psdatabase
+		fi
+		# Remove old /etc/init.d/procps file, Bug #53818
+		if [ -e /etc/init.d/procps ]
+		then
+			rm -f /etc/init.d/procps
+		fi
+		# Remove old procps init.d script, if it exists Closes: #55137
+		if [ -e /etc/rcS.d/S30procps ]
+		then
+			update-rc.d procps remove >/dev/null
+		fi
+		# and if that didn't work Closes: #92184
+		if [ -e /etc/rcS.d/S30procps ]
+		then
+			rm -f /etc/rcS.d/S30procps
+		fi
+		#
+		# Now to do the alternatives for w and ps
+		update-alternatives --install /usr/bin/w w /usr/bin/w.procps 50 \
+			--slave /usr/share/man/man1/w.1.gz w.1.gz /usr/share/man/man1/w.procps.1.gz
+		
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- procps-3.1.15.orig/debian/prerm
+++ procps-3.1.15/debian/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$1" != "upgrade" ]
+then
+	update-alternatives --remove w /usr/bin/w.procps
+fi
+
+#DEBHELPER#
+
+exit 0
+
--- procps-3.1.15.orig/debian/sysctl.conf
+++ procps-3.1.15/debian/sysctl.conf
@@ -0,0 +1,6 @@
+#
+# /etc/sysctl.conf - Configuration file for setting system variables
+# See sysctl.conf (5) for information.
+#
+#kernel.domainname = example.com
+#net/ipv4/icmp_echo_ignore_broadcasts=1
--- procps-3.1.15.orig/debian/watch
+++ procps-3.1.15/debian/watch
@@ -0,0 +1,6 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# Site		Directory		Pattern			Version	Script
+sunsite.unc.edu	/pub/Linux/Incoming	procps-*.tar.gz	debian	uupdate
+
--- procps-3.1.15.orig/debian/procps.sh
+++ procps-3.1.15/debian/procps.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+# /etc/init.d/procps: Set kernel variables from /etc/sysctl.conf
+#
+# written by Elrond <Elrond@Wunder-Nett.org>
+
+# Check for existance of the default file and exit if not there,
+# Closes #52839 for the boot-floppy people
+[ -r /etc/default/rcS ] || exit 0
+. /etc/default/rcS
+
+[ -x /sbin/sysctl ] || exit 0
+
+
+case "$1" in
+       start|reload|restart|force-reload)
+               if [ ! -r /etc/sysctl.conf ]
+               then
+                       exit 0
+               fi
+               if [ "$VERBOSE" = "no" ]
+               then
+                       n="-n"
+                       redir=">/dev/null"
+               else
+                       echo -n "Setting kernel variables."
+                       n=""
+                       redir=""
+               fi
+               eval "/sbin/sysctl $n -p $redir"
+			   echo "."
+               ;;
+       stop|show)
+               ;;
+       *)
+               echo "Usage: /etc/init.d/procps.sh {start|stop|reload|restart}" >&2
+               exit 1
+               ;;
+esac
+
+
--- procps-3.1.15.orig/debian/procps.manpages
+++ procps-3.1.15/debian/procps.manpages
@@ -0,0 +1 @@
+ps/ps.1
--- procps-3.1.15.orig/debian/compat
+++ procps-3.1.15/debian/compat
@@ -0,0 +1 @@
+4
--- procps-3.1.15.orig/debian/libproc-dev.files
+++ procps-3.1.15/debian/libproc-dev.files
@@ -0,0 +1,2 @@
+usr/include/proc/*.h
+lib/libproc.so
--- procps-3.1.15.orig/debian/libproc-dev.README
+++ procps-3.1.15/debian/libproc-dev.README
@@ -0,0 +1,12 @@
+README for libproc-dev
+======================
+
+This README is for people who want to use the libraries for their own
+programs.  If you just want to use procps tools you don't need to use this
+and you can probably remove libproc-dev too.
+
+It is generally a bad idea to dynamically link to libproc.  The API changes
+a fair bit and I cannot guarantee that it will stay the same between minor
+versions (though it will stay the same between Debian versions).  I've now
+re-included the libproc.a file so use that.
+
--- procps-3.1.15.orig/debian/patches/20_procps-fix+attr.dpatch
+++ procps-3.1.15/debian/patches/20_procps-fix+attr.dpatch
@@ -0,0 +1,55 @@
+#! /bin/sh -e
+## 20_procps-fix++attr by someone
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: SELINUX Attr value in /proc
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argum
+ent"
+                exit 1;;
+esac
+
+exit 0
+@DPATCH@
+diff -urN procps-3.1.15/ps/output.c procps-3.1.15.new/ps/output.c
+--- procps-3.1.15/ps/output.c	2003-12-23 19:46:32.000000000 -0600
++++ procps-3.1.15.new/ps/output.c	2003-12-24 13:31:16.000000000 -0600
+@@ -944,7 +944,7 @@
+ 
+ // wchan file is suitable for testing
+ //snprintf(filename, sizeof filename, "/proc/%d/task/%d/wchan", pp->tgid, pp->tid);
+-  snprintf(filename, sizeof filename, "/proc/%d/task/%d/attr/current", pp->tgid, pp->tid);
++  snprintf(filename, sizeof filename, "/proc/%d/attr/current", pp->tgid);
+ 
+   fd = open(filename, O_RDONLY, 0);
+   if(likely(fd==-1)) goto fail;
+diff -urN procps-3.1.15/ps/parser.c procps-3.1.15.new/ps/parser.c
+--- procps-3.1.15/ps/parser.c	2003-12-23 17:58:06.000000000 -0600
++++ procps-3.1.15.new/ps/parser.c	2003-12-24 13:45:08.000000000 -0600
+@@ -315,12 +315,10 @@
+       exclusive("-V");
+       display_version();
+       exit(0);
+-#if 0
+-    case 'Z':     /* full Mandatory Access Control level info */
+-      trace("-Z shows full MAC info\n");
+-      return "Don't understand MAC on Linux.";
++    case 'Z':
++      trace("-Z shows SELinux contexts\n");
++      format_flags |= FF_Fc;
+       break;
+-#endif
+     case 'a':
+       trace("-a select all with a tty, but omit session leaders.\n");
+       simple_select |= SS_U_a;
--- procps-3.1.15.orig/debian/patches/20_ps.1.dpatch
+++ procps-3.1.15/debian/patches/20_ps.1.dpatch
@@ -0,0 +1,376 @@
+#! /bin/sh -e
+## 20_ps.1.dpatch by Craig Small <csmall@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix ps manual page
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argum
+ent"
+                exit 1;;
+esac
+
+exit 0
+@DPATCH@
+--- procps-3.1.15/ps/ps.1	2003-12-24 12:59:47.000000000 +1100
++++ procps-3.1.15.newps/ps.1	2003-12-26 18:05:01.000000000 +1100
+@@ -1,3 +1,5 @@
++'\" t
++.\" (The preceding line is a note to broken versions of man to tell
+ .\" Man page for ps.
+ .\" Quick hack conversion by Albert Cahalan, 1998.
+ .\" Licensed under version 2 of the Gnu General Public License.
+@@ -10,8 +12,8 @@
+ .\" invented this crap in 1973. Oh yeah, they did. Sorry.
+ .\"
+ .TH PS 1 "July 5, 1998" "Linux" "Linux User's Manual"
+-.SH \fRNAME\fR
+-ps \- report process status
++.SH NAME
++ps \- report a snapshot of the current processes.
+ .ad r
+ .na
+ .ss 12 0
+@@ -19,17 +21,17 @@
+ .nh
+ .nf
+ 
+-SYNOPSIS
++.SH SYNOPSIS
+ ps [options]
+ 
+ 
+-DESCRIPTION
++.SH DESCRIPTION
+ ps gives a snapshot of the current processes. If you want
+ a repetitive update of this status, use top. This man
+ page documents the /proc-based version of ps, or tries to.
+ 
+ 
+-COMMAND-LINE OPTIONS
++.SH "COMMAND-LINE OPTIONS"
+ 
+ This version of ps accepts several kinds of options.
+ 
+@@ -43,7 +45,9 @@
+ when options are preceeded by a dash. The PS_PERSONALITY environment
+ variable (described below) provides more detailed control of ps behavior.
+ 
+-SIMPLE PROCESS SELECTION
++.SH "SIMPLE PROCESS SELECTION"
++.TS
++l l.
+ -A           select all processes
+ -N           negate selection
+ -a           select all with a tty except session leaders
+@@ -55,8 +59,11 @@
+ r            restrict output to running processes
+ x            select processes without controlling ttys
+ --deselect   negate selection
++.TE
+ 
+-PROCESS SELECTION BY LIST
++.SH "PROCESS SELECTION BY LIST"
++.TS
++l l.
+ -C           select by command name
+ -G           select by RGID (supports names)
+ -U           select by RUID (supports names)
+@@ -78,8 +85,10 @@
+ --user       select by effective user name or ID
+ -123         implied --sid
+ 123          implied --pid
+-
+-OUTPUT FORMAT CONTROL
++.TE
++.SH "OUTPUT FORMAT CONTROL"
++.TS
++l l.
+ -O           is preloaded "-o"
+ -F           extra full format
+ -c           different scheduler info for -l option
+@@ -98,8 +107,10 @@
+ v            display virtual memory format
+ --format     user-defined format
+ --context    display security context format (NSA SELinux, etc.)
+-
+-OUTPUT MODIFIERS
++.TE
++.SH "OUTPUT MODIFIERS"
++.TS
++l l.
+ -H           show process hierarchy (forest)
+ -n           set namelist file
+ -w           wide output
+@@ -123,31 +134,40 @@
+ --rows       set screen height
+ --sort       specify sorting order
+ --width      set screen width
+-
+-THREAD DISPLAY
++.TE
++.SH "THREAD DISPLAY"
++.TS
++l l.
+ -L           show threads, possibly with LWP and NLWP columns
+ -T           show threads, possibly with SPID column
+ -m           show threads after processes
+ H            show threads as if they were processes
+ m            show threads after processes
++.TE
+ 
+-INFORMATION
++.SH INFORMATION
++
++.TS
++l l.
+ -V          print version
+ L           list all format specifiers
+ V           show version info
+ --help      print help message
+ --info      print debugging info
+ --version   print version
++.TE
++
++.SH OBSOLETE
+ 
+-OBSOLETE
++.TS
++l l.
+ A           increases the argument space (DecUnix)
+ M           use alternate core (try -n or N instead)
+ W           get swap info from ... not /dev/drum (try -n or N instead)
+ k           use /vmcore as c-dumpfile (try -n or N instead)
+-
+-
+-
+-NOTES
++.TE
++  
++.SH NOTES
+ 
+ User-defined format options ("o", "-o", "O", and "-O") offer
+ a way to specify individual output columns. Headers may be
+@@ -249,14 +269,17 @@
+ will be destroyed by init(8) if the parent process exits.
+ 
+ 
+-PROCESS FLAGS
+-
++.SH "PROCESS FLAGS"
++.TS
++l l l.
+ FORKNOEXEC   1    forked but didn't exec
+ SUPERPRIV    4    used super-user privileges
++.TE
+ 
++.SH "PROCESS STATE CODES"
+ 
+-PROCESS STATE CODES
+-
++.TS
++l l.
+ D uninterruptible sleep (usually IO)
+ R runnable (on run queue)
+ S sleeping
+@@ -264,23 +287,30 @@
+ W paging
+ X dead
+ Z a defunct ("zombie") process
++.TE
+ 
+ For BSD formats and when the "stat" keyword is used, additional
+ letters may be displayed:
+ 
+-W has no resident pages
+-< high-priority process
+-N low-priority task
+-L has pages locked into memory (for real-time and custom IO)
++.IP W
++has no resident pages
++.IP <
++high-priority process
++.IP N
++low-priority task
++.IP L
++has pages locked into memory (for real-time and custom IO)
+ 
+ 
+-SORT KEYS
++.SH "SORT KEYS"
+ 
+ Note that the values used in sorting are the internal values ps uses and not
+ the `cooked' values used in some of the output format fields. Pipe ps
+ output into the sort(1) command if you want to sort the cooked values.
+ 
+-KEY LONG       DESCRIPTION
++.TS
++l l l.
++\fBKEY LONG       DESCRIPTION\fR
+ c   cmd        simple name of executable
+ C   cmdline    full command line
+ f   flags      flags as in long format F field
+@@ -307,14 +337,15 @@
+ u   user       user name
+ v   vsize      total VM size in kB
+ y   priority   kernel scheduling priority
++.TE
+ 
+-
+-AIX FORMAT DESCRIPTORS
++.SH "AIX FORMAT DESCRIPTORS"
+ 
+ This ps supports AIX format descriptors, which work somewhat like the
+ formatting codes of printf(1) and printf(3). For example, the normal
+ default output can be produced with this:   ps -eo "%p %y %x %c"
+-
++.TS
++l l l.
+ CODE  NORMAL    HEADER
+ %C    pcpu      %CPU
+ %G    group     GROUP
+@@ -331,14 +362,16 @@
+ %x    time      TIME
+ %y    tty       TTY
+ %z    vsz       VSZ
++.TE
+ 
+-
+-STANDARD FORMAT SPECIFIERS
++.SH "STANDARD FORMAT SPECIFIERS"
+ 
+ These may be used to control both output format and sorting.
+ For example:  ps -eo pid,user,args --sort user
+ 
+-CODE         HEADER
++.TS
++l l.
++\fBCODE         HEADER\fR
+ %cpu         %CPU    
+ %mem         %MEM    
+ alarm        ALARM   
+@@ -459,25 +492,51 @@
+ vsize        VSZ     
+ vsz          VSZ     
+ wchan        WCHAN   
++.TE
+ 
++.SH "ENVIRONMENT VARIABLES"
+ 
+-
+-
+-ENVIRONMENT VARIABLES
+ The following environment variables could affect ps:
+-    COLUMNS             Override default display width.
+-    LINES               Override default display height.
+-    PS_PERSONALITY      Set to one of posix,old,linux,bsd,sun,digital...
+-    CMD_ENV             Set to one of posix,old,linux,bsd,sun,digital...
+-    I_WANT_A_BROKEN_PS  Force obsolete command line interpretation.
+-    LC_TIME             Date format.
+-    PS_COLORS           Not currently supported.
+-    PS_FORMAT           Default output format override.
+-    PS_SYSMAP           Default namelist (System.map) location.
+-    PS_SYSTEM_MAP       Default namelist (System.map) location.
+-    POSIXLY_CORRECT     Don't find excuses to ignore bad "features".
+-    UNIX95              Don't find excuses to ignore bad "features".
+-    _XPG                Cancel CMD_ENV=irix non-standard behavior.
++
++.TP 
++.B COLUMNS
++Override default display width.
++.TP
++.B LINES
++Override default display height.
++.TP
++.B PS_PERSONALITY
++Set to one of posix,old,linux,bsd,sun,digital...
++.TP
++.B CMD_ENV
++Set to one of posix,old,linux,bsd,sun,digital...
++.TP
++.B I_WANT_A_BROKEN_PS
++Force obsolete command line interpretation.
++.TP
++.B LC_TIME
++Date format.
++.TP
++.B PS_COLORS
++Not currently supported.
++.TP
++.B PS_FORMAT
++Default output format override.
++.TP
++.B PS_SYSMAP
++Default namelist (System.map) location.
++.TP
++.B PS_SYSTEM_MAP
++Default namelist (System.map) location.
++.TP
++.B POSIXLY_CORRECT
++Don't find excuses to ignore bad "features".
++.TP
++.B UNIX95
++Don't find excuses to ignore bad "features".
++.TP
++.B _XPG
++Cancel CMD_ENV=irix non-standard behavior.
+ 
+ In general, it is a bad idea to set these variables. The one exception
+ is CMD_ENV or PS_PERSONALITY, which could be set to Linux for normal
+@@ -485,7 +544,9 @@
+ of the Unix98 standard.
+ 
+ 
+-PERSONALITY
++.SH "PERSONALITY"
++.TS
++l l.
+     390      like the S/390 OpenEdition ps
+     aix      like AIX ps
+     bsd      like FreeBSD ps (totally non-standard)
+@@ -507,9 +568,9 @@
+     unix     standard
+     unix95   standard
+     unix98   standard
++.TE
+ 
+-
+-EXAMPLES
++.SH "EXAMPLES"
+ To see every process on the system using standard syntax:
+     ps -e
+ To see every process on the system using BSD syntax:
+@@ -523,13 +584,13 @@
+ Print only the process IDs of syslogd:
+     ps -C syslogd -o pid=
+ 
+-SEE ALSO
+-top(1) pgrep(1) pstree(1) proc(5)
++.SH "SEE ALSO"
++.BR top (1), pgrep (1), pstree (1),  proc (5).
+ 
+-STANDARDS
++.SH STANDARDS
+ This ps conforms to version 2 of the Single Unix Specification.
+ 
+-AUTHOR
++.SH AUTHOR
+ ps was originally written by Branko Lankester <lankeste@fwi.uva.nl>. Michael
+ K. Johnson <johnsonm@redhat.com> re-wrote it significantly to use the proc
+ filesystem, changing a few things in the process. Michael Shields
+@@ -541,4 +602,4 @@
+ <acahalan@cs.uml.edu> rewrote ps for full Unix98 and BSD support, along with
+ some ugly hacks for obsolete and foreign syntax.
+ 
+-Please send bug reports to <acahalan@cs.uml.edu>
++Please send bug reports to <procps-feedback@lists.sf.net>.
--- procps-3.1.15.orig/debian/patches/20_top_manpage.dpatch
+++ procps-3.1.15/debian/patches/20_top_manpage.dpatch
@@ -0,0 +1,384 @@
+#! /bin/sh -e
+## 20_top_manpage by Randy Hron
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix bold in top manual page
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argum
+ent"
+                exit 1;;
+esac
+
+exit 0
+@DPATCH@
+--- procps/top.1.orig	2003-12-24 15:51:35.000000000 -0500
++++ procps/top.1	2003-12-24 18:57:14.564156176 -0500
+@@ -52,7 +52,7 @@
+ .ds CF configuration file
+ .ds CI interactive command
+ .ds CO command\-line option
+-.ds CW \'current' window
++.ds CW 'current' window
+ .ds FM full\-screen mode
+ .ds MP \fBphysical\fR memory
+ .ds MS \fBshared\fR memory
+@@ -370,7 +370,7 @@
+ The task's share of the elapsed \*(PU time since the last screen update, expressed
+ as a percentage of total \*(PU time.
+ In a true SMP environment, if 'Irix mode' is \*F, \*(Me will operate in
+-\'Solaris mode' where a task's \*(Pu usage will be divided by the total
++'Solaris mode' where a task's \*(Pu usage will be divided by the total
+ number of \*(PUs.
+ You toggle 'Irix/Solaris' modes with the 'I' \*(CI.
+ 
+@@ -498,7 +498,7 @@
+ .\" ......................................................................
+ .SS 2b. SELECTING and ORDERING Columns
+ .\" ----------------------------------------------------------------------
+-After pressing the \*(CIs 'f' (Fields select) or \'o' (Order fields) you will
++After pressing the \*(CIs 'f' (Fields select) or 'o' (Order fields) you will
+ be shown a screen containing the current \fBfields string\fR followed by names
+ and descriptions for all fields.
+ 
+@@ -574,7 +574,7 @@
+ see current status,
+ 
+ .TP 7
+-\ \ \'\fB?\fR\' or \'\fBh\fR\' :\fIHelp\fR
++\ \ \<\fB?\fR\> or \<\fBh\fR\> :\fIHelp\fR
+ There are two help levels available.
+ The first will provide a reminder of all the basic \*(CIs.
+ If \*(Me is\fI secured\fR, that screen will be abbreviated.
+@@ -583,7 +583,7 @@
+ applicable to \*(AM.
+ 
+ .TP 7
+-\ \ \'\fB=\fR\' :\fIExit_Task_Limits\fR
++\ \ \<\fB=\fR\> :\fIExit_Task_Limits\fR
+ Removes restrictions on which tasks are shown.
+ This command will reverse any 'i' (idle tasks) and 'n' (max tasks) commands
+ that might be active.
+@@ -593,13 +593,13 @@
+ When operating in \*(AM this command has a slightly broader meaning.
+ 
+ .TP 7
+-\ \ \'\fBA\fR\' :\fIAlternate_Display_Mode_toggle\fR
++\ \ \<\fBA\fR\> :\fIAlternate_Display_Mode_toggle\fR
+ This command will switch between \*(FM and \*(AM.
+-\*(XT 4. ALTERNATE\-DISPLAY Mode and the 'G' \*(CI for insight into
+-\*(CWs and field groups.
++\*(XT 4. ALTERNATE\-DISPLAY Mode and the 'G' \*(CI for insight
++into \*(CWs and field groups.
+ 
+ .TP 7
+-\ \ \'\fBB\fR\' :\fIBold_Disable/Enable_toggle\fR
++\ \ \<\fBB\fR\> :\fIBold_Disable/Enable_toggle\fR
+ This command will influence use of the 'bold' terminfo capability and
+ alters\fB both\fR the \*(SA and \*(TA for the \*(CW.
+ While it is intended primarily for use with dumb terminals, it can be
+@@ -611,7 +611,7 @@
+ there will be no visual confirmation that they are even on.
+ 
+ .TP 7
+-*\ \'\fBd\fR\' or \'\fBs\fR\' :\fIChange_Delay_Time_interval\fR
++*\ \<\fBd\fR\> or \<\fBs\fR\> :\fIChange_Delay_Time_interval\fR
+ You will be prompted to enter the delay time, in seconds, between
+ display updates.
+ 
+@@ -625,32 +625,32 @@
+ and view the system summary on the second line.
+ 
+ .TP 7
+-\ \ \'\fBG\fR\' :\fIChoose_Another_Window/Field_Group\fR
++\ \ \<\fBG\fR\> :\fIChoose_Another_Window/Field_Group\fR
+ You will be prompted to enter a number between 1 and 4 designating the
+ window/field group which should be made the \*(CW.
+ You will soon grow comfortable with these 4 windows, especially after
+ experimenting with \*(AM.
+ 
+ .TP 7
+-\ \ \'\fBI\fR\' :\fIIrix/Solaris_Mode_toggle\fR
++\ \ \<\fBI\fR\> :\fIIrix/Solaris_Mode_toggle\fR
+ When operating in 'Solaris mode' ('I' toggled \*F), a task's \*(Pu usage
+ will be divided by the total number of \*(PUs.
+ After issuing this command, you'll be informed of the new state of this toggle.
+ 
+ .TP 7
+-\ \ \'\fBu\fR\' :\fIselect a user\fR
++\ \ \<\fBu\fR\> :\fIselect a user\fR
+ You will be prompted for a UID or username. Only processes
+ belonging to the selected user will be displayed. This option
+ matches on the effective UID.
+ 
+ .TP 7
+-\ \ \'\fBU\fR\' :\fIselect a user\fR
++\ \ \<\fBU\fR\> :\fIselect a user\fR
+ You will be prompted for a UID or username. Only processes
+ belonging to the selected user will be displayed. This option
+ matches on the real, effective, saved, and filesystem UID.
+ 
+ .TP 7
+-*\ \'\fBk\fR\' :\fIKill_a_task\fR
++*\ \<\fBk\fR\> :\fIKill_a_task\fR
+ You will be prompted for a PID and then the signal to send.
+ The default signal, as reflected in the prompt, is SIGTERM.
+ However, you can send any signal, via number or name.
+@@ -661,24 +661,24 @@
+    2) at the signal prompt, type 0
+ 
+ .TP 7
+-\ \ \'\fBq\fR\' :\fIQuit\fR
++\ \ \<\fBq\fR\> :\fIQuit\fR
+ 
+ .TP 7
+-*\ \'\fBr\fR\' :\fIRenice_a_Task\fR
++*\ \<\fBr\fR\> :\fIRenice_a_Task\fR
+ You will be prompted for a PID and then the value to nice it to.
+ Entering a positive value will cause a process to lose priority.
+ Conversely, a negative value will cause a process to be viewed more
+ favorably by the kernel.
+ 
+ .TP 7
+-\ \ \'\fBW\fR\' :\fIWrite_the_Configuration_File\fR
++\ \ \<\fBW\fR\> :\fIWrite_the_Configuration_File\fR
+ This will save all of your options and toggles plus the current
+ display mode and delay time.
+ By issuing this command just before quitting \*(Me, you will be able restart
+ later in exactly that same state.
+ 
+ .TP 7
+-\ \ \'\fBZ\fR\' :\fIChange_Color_Mapping
++\ \ \<\fBZ\fR\> :\fIChange_Color_Mapping
+ This key will take you to a separate screen where you can change the
+ colors for the \*(CW, or for all windows.
+ For details regarding this \*(CI \*(Xt 3d. COLOR Mapping.
+@@ -694,25 +694,25 @@
+ of messages and prompts.
+ 
+ These commands always impact just the \*(CW/field group.
+-\*(XT 4. ALTERNATE\-DISPLAY Mode and the 'G' \*(CI for insight into
+-\*(CWs and field groups.
++\*(XT 4. ALTERNATE\-DISPLAY Mode and the 'G' \*(CI for insight
++into \*(CWs and field groups.
+ 
+ .TP 7
+-\ \ \'\fBl\fR\' :\fIToggle_Load_Average/Uptime\fR \*(EM On/Off
++\ \ \<\fBl\fR\> :\fIToggle_Load_Average/Uptime\fR \*(EM On/Off
+ This is also the line containing the program name (possibly an alias) when
+ operating in \*(FM or the \*(CW name when operating in \*(AM.
+ 
+ .TP 7
+-\ \ \'\fBm\fR\' :\fIToggle_Memory/Swap_Usage\fR \*(EM On/Off
++\ \ \<\fBm\fR\> :\fIToggle_Memory/Swap_Usage\fR \*(EM On/Off
+ This command affects two \*(SA lines.
+ 
+ .TP 7
+-\ \ \'\fBt\fR\' :\fIToggle_Task/Cpu_States\fR \*(EM On/Off
++\ \ \<\fBt\fR\> :\fIToggle_Task/Cpu_States\fR \*(EM On/Off
+ This command affects from 2 to many \*(SA lines, depending on the state
+ of the '1' toggle and whether or not \*(Me is running under true SMP.
+ 
+ .TP 7
+-\ \ \'\fB1\fR\' :\fIToggle_Single/Separate_Cpu_States\fR \*(EM On/Off
++\ \ \<\fB1\fR\> :\fIToggle_Single/Separate_Cpu_States\fR \*(EM On/Off
+ This command affects how the 't' command's Cpu States portion is shown.
+ Although this toggle exists primarily to serve massively-parallel SMP machines,
+ it is not restricted to solely SMP environments.
+@@ -744,12 +744,12 @@
+ .in
+ 
+ .TP 7
+-\ \ \'\fBb\fR\' :\fIBold/Reverse_toggle\fR
++\ \ \<\fBb\fR\> :\fIBold/Reverse_toggle\fR
+ This command will impact how the 'x' and 'y' toggles are displayed.
+ Further, it will only be available when at least one of those toggles is \*O.
+ 
+ .TP 7
+-\ \ \'\fBx\fR\' :\fIColumn_Highlight_toggle\fR
++\ \ \<\fBx\fR\> :\fIColumn_Highlight_toggle\fR
+ Changes highlighting for the current sort field.
+ You probably don't need a constant visual reminder of the sort field and
+ \*(Me hopes that you always run with 'column highlight' \*F, due to the cost
+@@ -759,7 +759,7 @@
+ visual reminder.
+ 
+ .TP 7
+-\ \ \'\fBy\fR\' :\fIRow_Highlight_toggle\fR
++\ \ \<\fBy\fR\> :\fIRow_Highlight_toggle\fR
+ Changes highlighting for "running" tasks.
+ For additional insight into this task state, \*(Xt 2a. DESCRIPTIONS of Fields,
+ Process Status.
+@@ -768,7 +768,7 @@
+ The only costs will be a few additional tty escape sequences.
+ 
+ .TP 7
+-\ \ \'\fBz\fR\' :\fIColor/Monochrome_toggle\fR
++\ \ \<\fBz\fR\> :\fIColor/Monochrome_toggle\fR
+ Switches the \*(CW between your last used color scheme and the older form
+ of black-on-white or white-on-black.
+ This command will alter\fB both\fR the \*(SA and \*(TA but does not affect the
+@@ -779,20 +779,20 @@
+ .B CONTENT\fR of \*(TW
+ .PD 0
+ .TP 7
+-\ \ \'\fBc\fR\' :\fICommand_Line/Program_Name_toggle\fR
++\ \ \<\fBc\fR\> :\fICommand_Line/Program_Name_toggle\fR
+ This command will be honored whether or not the 'Command' column
+ is currently visible.
+ Later, should that field come into view, the change you applied will be seen.
+ 
+ .TP 7
+-\ \ \'\fBf\fR\' and \'\fBo\fR\' :\fIFields_select\fR or \fIOrder_fields\fR
++\ \ \<\fBf\fR\> and \<\fBo\fR\> :\fIFields_select\fR or \fIOrder_fields\fR
+ These keys display separate screens where you can change which
+ fields are displayed and their order.
+ For additional information on these \*(CIs
+ \*(Xt 2b. SELECTING and ORDERING Columns.
+ 
+ .TP 7
+-\ \ \'\fBS\fR\' :\fICumulative_Time_Mode_toggle\fR
++\ \ \<\fBS\fR\> :\fICumulative_Time_Mode_toggle\fR
+ When 'Cumulative mode' is \*O, each process is listed with the \*(Pu
+ time that it and its dead children have used.
+ 
+@@ -808,7 +808,7 @@
+ effect, simply ask for help and view the window summary on the second line.
+ 
+ .TP 7
+-\ \ \'\fBu\fR\' :\fIShow_Specific_User_Only\fR
++\ \ \<\fBu\fR\> :\fIShow_Specific_User_Only\fR
+ You will be prompted to enter the name of the user to display.
+ Thereafter, in that \*(TW only matching User ID's will be shown, or possibly
+ no tasks will be shown.
+@@ -821,7 +821,7 @@
+ .B SIZE\fR of \*(TW
+ .PD 0
+ .TP 7
+-\ \ \'\fBi\fR\' :\fIIdle_Processes_toggle\fR
++\ \ \<\fBi\fR\> :\fIIdle_Processes_toggle\fR
+ Displays all tasks or just active tasks.
+ When this toggle is \*F, idled or zombied processes will not be displayed.
+ 
+@@ -829,7 +829,7 @@
+ affect the window's size, as all prior \*(TDs will have already been painted.
+ 
+ .TP 7
+-\ \ \'\fBn\fR\' or \'#\' :\fISet_Maximum_Tasks\fR
++\ \ \<\fBn\fR\> or \<\fB#\fR\> :\fISet_Maximum_Tasks\fR
+ You will be prompted to enter the number of tasks to display.
+ The lessor of your number and available screen rows will be used.
+ 
+@@ -868,12 +868,12 @@
+ .in
+ 
+ .TP 7
+-\ \ \'\fB<\fR\' :\fIMove_Sort_Field_Left\fR
++\ \ \<\fB<\fR\> :\fIMove_Sort_Field_Left\fR
+ Moves the sort column to the left unless the current sort field is
+ the first field being displayed.
+ 
+ .TP 7
+-\ \ \'\fB>\fR\' :\fIMove_Sort_Field_Right\fR
++\ \ \<\fB>\fR\> :\fIMove_Sort_Field_Right\fR
+ Moves the sort column to the right unless the current sort field is
+ the last field being displayed.
+ 
+@@ -884,7 +884,7 @@
+ .in
+ 
+ .TP 7
+-\ \ \'\fBF\fR\' or \'\fBO\fR\' :\fISelect_Sort_Field\fR
++\ \ \<\fBF\fR\> or \<\fBO\fR\> :\fISelect_Sort_Field\fR
+ These keys display a separate screen where you can change which field
+ is used as the sort column.
+ 
+@@ -897,7 +897,7 @@
+ when running \*(Me with column highlighting turned \*F.
+ 
+ .TP 7
+-\ \ \'\fBR\fR\' :\fIReverse/Normal_Sort_Field_toggle\fR
++\ \ \<\fBR\fR\> :\fIReverse/Normal_Sort_Field_toggle\fR
+ Using this \*(CI you can alternate between high-to-low and low-to-high sorts.
+ 
+ .PP
+@@ -974,7 +974,7 @@
+ .\" ......................................................................
+ .SS 4b. COMMANDS for Windows
+ .TP 7
+-\ \ \'\fB-\fR\' and \'\fB_\fR\' :\fIShow/Hide_Window(s)_toggles\fR
++\ \ \<\fB-\fR\> and \<\fB_\fR\> :\fIShow/Hide_Window(s)_toggles\fR
+ The '-' key turns the \*(CW's \*(TD \*O and \*F.
+ When \*O, that \*(TA will show a minimum of the columns header you've
+ established with the 'f' and 'o' commands.
+@@ -988,7 +988,7 @@
+ as the only display element.
+ 
+ .TP 7
+-*\ \'\fB=\fR\' and \'\fB+\fR\' :\fIEqualize_(re-balance)_Window(s)\fR
++*\ \<\fB=\fR\> and \<\fB+\fR\> :\fIEqualize_(re-balance)_Window(s)\fR
+ The '=' key forces the \*(CW's \*(TD to be visible.
+ It also reverses any 'i' (idle tasks) and 'n' (max tasks) commands that might
+ be active.
+@@ -999,7 +999,7 @@
+ except for the 'i' (idle tasks) and 'n' (max tasks) commands.
+ 
+ .TP 7
+-*\ \'\fBA\fR\' :\fIAlternate_Display_Mode_toggle\fR
++*\ \<\fBA\fR\> :\fIAlternate_Display_Mode_toggle\fR
+ This command will switch between \*(FM and \*(AM.
+ 
+ The first time you issue this command, all four \*(TDs will be shown.
+@@ -1007,7 +1007,7 @@
+ chosen to make visible.
+ 
+ .TP 7
+-*\ \'\fBa\fR\' and \'\fBw\fR\' :\fINext_Window_Forward/Backward\fR
++*\ \<\fBa\fR\> and \<\fBw\fR\> :\fINext_Window_Forward/Backward\fR
+ This will change the \*(CW, which in turn changes the window to which
+ commands are directed.
+ These keys act in a circular fashion so you can reach any desired \*(CW
+@@ -1018,7 +1018,7 @@
+ the \*(TD is \*F and many commands will be restricted.
+ 
+ .TP 7
+-*\ \'\fBG\fR\' :\fIChoose_Another_Window/Field_Group\fR
++*\ \<\fBG\fR\> :\fIChoose_Another_Window/Field_Group\fR
+ You will be prompted to enter a number between 1 and 4 designating the
+ window/field group which should be made the \*(CW.
+ 
+@@ -1027,15 +1027,15 @@
+ commands.
+ 
+ .TP 7
+-\ \ \'\fBg\fR\' :\fIChange_Window/Field_Group_Name\fR
++\ \ \<\fBg\fR\> :\fIChange_Window/Field_Group_Name\fR
+ You will be prompted for a new name to be applied to the \*(CW.
+ It does not require that the window name be visible
+ (the 'l' toggle to be \*O).
+ 
+ .IP "*" 3
+ The \*(CIs shown with an \*(AS have use beyond \*(AM.
+-    \'=', 'A', 'G'  are always available
+-    \'a', 'w'       act the same when color mapping
++    '=', 'A', 'G'  are always available
++    'a', 'w'       act the same when color mapping
+ 
+
+ .\" ----------------------------------------------------------------------
+
+
+
+
+
+
--- procps-3.1.15.orig/debian/patches/10_sysctl_quiet.dpatch
+++ procps-3.1.15/debian/patches/10_sysctl_quiet.dpatch
@@ -0,0 +1,119 @@
+#! /bin/sh -e
+## 10_sysctl_quiet by Simon Horman
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Adds quiet -q flag to sysctl
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argum
+ent"
+                exit 1;;
+esac
+
+exit 0
+@DPATCH@
+diff -ru procps-3.1.8/sysctl.8 procps-3.1.8.new/sysctl.8
+--- procps-3.1.8/sysctl.8	2002-12-12 07:51:32.000000000 +0900
++++ procps-3.1.8.new/sysctl.8	2003-04-15 20:30:46.000000000 +0900
+@@ -12,9 +12,9 @@
+ .SH SYNOPSIS
+ .B "sysctl [-n] [-e] variable ..."
+ .br
+-.B "sysctl [-n] [-e] -w variable=value ..."
++.B "sysctl [-n] [-e] [-q] -w variable=value ..."
+ .br
+-.B "sysctl [-n] [-e] -p <filename>"
++.B "sysctl [-n] [-e] [-q] -p <filename>"
+ .br
+ .B "sysctl [-n] [-e] -a"
+ .br
+@@ -45,6 +45,9 @@
+ .B "-e"
+ Use this option to ignore errors about unknown keys.
+ .TP
++.B "-q"
++Use this option to not display the values set to stdout.
++.TP
+ .B "-w"
+ Use this option when you want to change a sysctl setting.
+ .TP
+diff -ru procps-3.1.8/sysctl.c procps-3.1.8.new/sysctl.c
+--- procps-3.1.8/sysctl.c	2002-12-29 08:26:50.000000000 +0900
++++ procps-3.1.8.new/sysctl.c	2003-04-15 20:35:08.000000000 +0900
+@@ -15,6 +15,8 @@
+  * Changelog:
+  *            v1.01:
+  *                   - added -p <preload> to preload values from a file
++ *            Horms: 
++ *                   - added -q to be quiet when modifying values
+  *
+  * Changes by Albert Cahalan, 2002.
+  */
+@@ -46,6 +48,7 @@
+ static bool PrintName;
+ static bool PrintNewline;
+ static bool IgnoreError;
++static bool Quiet;
+ 
+ /* error messages */
+ static const char ERR_UNKNOWN_PARAMETER[] = "error: Unknown parameter '%s'\n";
+@@ -80,9 +83,9 @@
+  */
+ static int Usage(const char *restrict const name) {
+    printf("usage:  %s [-n] [-e] variable ... \n"
+-          "        %s [-n] [-e] -w variable=value ... \n" 
++          "        %s [-n] [-e] [-q] -w variable=value ... \n" 
+           "        %s [-n] [-e] -a \n" 
+-          "        %s [-n] [-e] -p <file>   (default /etc/sysctl.conf) \n"
++          "        %s [-n] [-e] [-q] -p <file>   (default /etc/sysctl.conf) \n"
+           "        %s [-n] [-e] -A\n", name, name, name, name, name);
+    return -1;
+ }
+@@ -290,13 +293,14 @@
+       fprintf(fp, "%s\n", value);
+       fclose(fp);
+ 
+-      if (PrintName) {
++      if(Quiet) {
++	 ;
++      } else if (PrintName) {
+          fprintf(stdout, "%s = %s\n", outname, value);
++      } else if (PrintNewline) {
++         fprintf(stdout, "%s\n", value);
+       } else {
+-         if (PrintNewline)
+-            fprintf(stdout, "%s\n", value);
+-         else
+-            fprintf(stdout, "%s", value);
++         fprintf(stdout, "%s", value);
+       }
+    }
+ 
+@@ -377,6 +381,7 @@
+    PrintName = true;
+    PrintNewline = true;
+    IgnoreError = false;
++   Quiet = false;
+ 
+    if (argc < 2) {
+        return Usage(me);
+@@ -419,6 +424,9 @@
+                  preloadfile = *argv;
+               }
+               return Preload(preloadfile);
++	 case 'q':
++	      Quiet = true;
++	   break;
+          case 'a': /* string and integer values (for Linux, all of them) */
+          case 'A': /* the above, including "opaques" (would be unprintable) */
+          case 'X': /* the above, with opaques completly printed in hex */
--- procps-3.1.15.orig/debian/patches/00list
+++ procps-3.1.15/debian/patches/00list
@@ -0,0 +1,5 @@
+10_sysctl_quiet
+20_procps-fix+attr
+20_ps.1
+20_top_manpage
+30_remove_test_dir
--- procps-3.1.15.orig/debian/patches/30_remove_test_dir.dpatch
+++ procps-3.1.15/debian/patches/30_remove_test_dir.dpatch
@@ -0,0 +1,2911 @@
+#! /bin/sh -e
+## 30_remove_test-dir by Craif Small
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Removing test directory
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argum
+ent"
+                exit 1;;
+esac
+
+exit 0
+@DPATCH@
+diff -ruN procps-3.1.15.old/test/clone-army.c procps-3.1.15/test/clone-army.c
+--- procps-3.1.15.old/test/clone-army.c	2003-10-05 04:46:34.000000000 +1000
++++ procps-3.1.15/test/clone-army.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,127 +0,0 @@
+-// ps fTo sess,pgid,pid,tty,ppid,tpgid,args -C a.out
+-
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-//#include <sys/stat.h>
+-//#include <fcntl.h>
+-//#include <stdlib.h>
+-#include <stdio.h>
+-#include <sched.h>
+-
+-#if 0
+-#define CLONE_VM             0x00000100 // set if VM shared between processes
+-#define CLONE_FS             0x00000200 // set if fs info shared between processes
+-#define CLONE_FILES          0x00000400 // set if open files shared between processes
+-#define CLONE_SIGHAND        0x00000800 // set if signal handlers and blocked signals shared
+-#define CLONE_IDLETASK       0x00001000 // set if new pid should be 0 (kernel only)*/
+-#define CLONE_PTRACE         0x00002000 // set if we want to let tracing continue on the child too
+-#define CLONE_VFORK          0x00004000 // set if the parent wants the child to wake it up on mm_release
+-#define CLONE_PARENT         0x00008000 // set if we want to have the same parent as the cloner
+-#define CLONE_THREAD         0x00010000 // Same thread group?
+-#define CLONE_NEWNS          0x00020000 // New namespace group?
+-#define CLONE_SYSVSEM        0x00040000 // share system V SEM_UNDO semantics
+-#define CLONE_SETTLS         0x00080000 // create a new TLS for the child
+-#define CLONE_PARENT_SETTID  0x00100000 // set the TID in the parent
+-#define CLONE_CHILD_CLEARTID 0x00200000 // clear the TID in the child
+-#define CLONE_DETACHED       0x00400000 // parent wants no child-exit signal
+-#define CLONE_UNTRACED       0x00800000 // set if the tracing process can't force CLONE_PTRACE on this clone
+-#define CLONE_CHILD_SETTID   0x01000000 // set the TID in the child
+-#define CLONE_STOPPED        0x02000000 // Start in stopped state
+-#endif
+-
+-#ifndef CLONE_THREAD
+-#define CLONE_THREAD         0x00010000
+-#endif
+-#ifndef CLONE_DETACHED
+-#define CLONE_DETACHED       0x00400000
+-#endif
+-
+-
+-// interesting: VM FS FILES SIGHAND PARENT THREAD SYSVSEM DETACHED
+-
+-//#define FLAGS (CLONE_PARENT|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_VM|CLONE_THREAD|CLONE_SYSVSEM)
+-#define FLAGS (CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_VM|CLONE_THREAD|CLONE_DETACHED)
+-
+-// Don't cause rejection: FS FILES SYSVSEM PARENT
+-// Do cause rejection:
+-
+-static void printflags(int pass, unsigned flags){
+-  printf(
+-    "%s %08x %s %s %s %s\n",
+-    pass?"pass":"FAIL",
+-    flags,
+-    (flags&CLONE_THREAD) ? "THREAD" : "______",
+-    (flags&CLONE_DETACHED) ? "DETACHED" : "________",
+-    (flags&CLONE_SIGHAND) ? "SIGHAND" : "_______",
+-    (flags&CLONE_SIGHAND) ? "VM" : "__"
+-  );
+-}
+-
+-static unsigned genflags(unsigned flags){
+-  return (
+-    (flags&0x08) ? 0 : CLONE_THREAD
+-    )|(
+-    (flags&0x04) ? 0 : CLONE_DETACHED
+-    )|(
+-    (flags&0x02) ? 0 : CLONE_SIGHAND
+-    )|(
+-    (flags&0x01) ? 0 : CLONE_VM
+-  );
+-}
+-
+-//static pid_t one;
+-
+-//static void die(int signo){
+-//  (void)signo;
+-//  _exit(0);
+-//}
+-
+-//static void sigchld_handler(int signo){
+-//  (void)signo;
+-//  kill(one,SIGHUP);          // kill parent
+-//}
+-
+-static int clone_fn(void *vp){
+-  for(;;) pause();
+-}
+-
+-static long clone_stack_data[2048];
+-#ifdef __hppa__
+-static long *clone_stack = &clone_stack_data[0];
+-#else
+-static long *clone_stack = &clone_stack_data[2048];
+-#endif
+-
+-int main(int argc, char *argv[]){
+-  unsigned u;
+-  pid_t minime;
+-  (void)argc;
+-  (void)argv;
+-
+-//  one = getpid();
+-//  signal(SIGHUP,die);
+-//  if(fork()) hang();    // parent later killed as readyness signal
+-
+-  u = 16;
+-
+-  while(u--){
+-    unsigned f = genflags(u);
+-    minime = clone(clone_fn, clone_stack, f, "arg");
+-
+-    printflags(minime!=-1, f);
+-//    if(minime==-1){
+-//      perror("no clone");
+-//      _exit(8);
+-//    }
+-
+-//    printf("%d begat %d\n",getpid(),minime);
+-  }
+-
+-
+-//  kill(one,SIGHUP); // let the shell know we're ready
+-
+-//  clone_fn();
+-
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/clone-once.c procps-3.1.15/test/clone-once.c
+--- procps-3.1.15.old/test/clone-once.c	2003-10-20 10:56:12.000000000 +1000
++++ procps-3.1.15/test/clone-once.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,97 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-//#include <sys/stat.h>
+-//#include <fcntl.h>
+-//#include <stdlib.h>
+-#include <stdio.h>
+-#include <sched.h>
+-
+-#if 0
+-#define CLONE_VM             0x00000100 // set if VM shared between processes
+-#define CLONE_FS             0x00000200 // set if fs info shared between processes
+-#define CLONE_FILES          0x00000400 // set if open files shared between processes
+-#define CLONE_SIGHAND        0x00000800 // set if signal handlers and blocked signals shared
+-#define CLONE_IDLETASK       0x00001000 // set if new pid should be 0 (kernel only)*/
+-#define CLONE_PTRACE         0x00002000 // set if we want to let tracing continue on the child too
+-#define CLONE_VFORK          0x00004000 // set if the parent wants the child to wake it up on mm_release
+-#define CLONE_PARENT         0x00008000 // set if we want to have the same parent as the cloner
+-#define CLONE_THREAD         0x00010000 // Same thread group?
+-#define CLONE_NEWNS          0x00020000 // New namespace group?
+-#define CLONE_SYSVSEM        0x00040000 // share system V SEM_UNDO semantics
+-#define CLONE_SETTLS         0x00080000 // create a new TLS for the child
+-#define CLONE_PARENT_SETTID  0x00100000 // set the TID in the parent
+-#define CLONE_CHILD_CLEARTID 0x00200000 // clear the TID in the child
+-#define CLONE_DETACHED       0x00400000 // parent wants no child-exit signal
+-#define CLONE_UNTRACED       0x00800000 // set if the tracing process can't force CLONE_PTRACE on this clone
+-#define CLONE_CHILD_SETTID   0x01000000 // set the TID in the child
+-#define CLONE_STOPPED        0x02000000 // Start in stopped state
+-#endif
+-
+-#ifndef CLONE_THREAD
+-#define CLONE_THREAD         0x00010000
+-#endif
+-#ifndef CLONE_DETACHED
+-#define CLONE_DETACHED       0x00400000
+-#endif
+-
+-//#define FLAGS (CLONE_PARENT|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_VM|CLONE_THREAD|CLONE_SYSVSEM)
+-#define FLAGS (CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_VM|CLONE_THREAD|CLONE_DETACHED)
+-
+-static pid_t one;
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-//static void sigchld_handler(int signo){
+-//  (void)signo;
+-//  kill(one,SIGHUP);          // kill parent
+-//}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-static int clone_fn(void *vp){
+-//  const char msg[] = "I think I'm a clone now!\n";
+-  (void)vp;
+-//  write(STDOUT_FILENO, msg, sizeof(msg)-1);
+-  hang();
+-  return 0; // keep gcc happy
+-}
+-
+-static long clone_stack_data[2048];
+-#ifdef __hppa__
+-static long *clone_stack = &clone_stack_data[0];
+-#else
+-static long *clone_stack = &clone_stack_data[2048];
+-#endif
+-
+-int main(int argc, char *argv[]){
+-  pid_t minime;
+-  (void)argc;
+-  (void)argv;
+-
+-  one = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-
+-  minime = clone(clone_fn, clone_stack, FLAGS, "arg");
+-
+-  if(minime==-1){
+-    perror("no clone");
+-    kill(one,SIGKILL);
+-    _exit(8);
+-  }
+-
+-//  printf("%d begat %d\n",getpid(),minime);
+-
+-  kill(one,SIGHUP); // let the shell know we're ready
+-
+-  hang();
+-
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/fork-you.c procps-3.1.15/test/fork-you.c
+--- procps-3.1.15.old/test/fork-you.c	2003-09-05 14:18:30.000000000 +1000
++++ procps-3.1.15/test/fork-you.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,27 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  pid_t pid;
+-
+-  (void)argv;
+-
+-  pid = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-  kill(1,9);            // "kill" unkillable init to touch lib pages
+-  while(argc--) if(!fork()) hang();
+-  kill(pid,SIGHUP);          // kill parent
+-  hang();
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/funny-thing.c procps-3.1.15/test/funny-thing.c
+--- procps-3.1.15.old/test/funny-thing.c	2003-09-08 13:55:57.000000000 +1000
++++ procps-3.1.15/test/funny-thing.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,38 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-
+-static pid_t one;
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  (void)argc;
+-  (void)argv;
+-
+-  one = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-  // second one exits, to enable setsid(), and the resulting
+-  // zombie will be reaped by init after 1st process killed
+-  if(!fork()) _exit(0);
+-
+-  if(setsid()==-1){
+-    kill(one,SIGKILL); // hopefully the shell will complain
+-    _exit(42); // kind of tough to report errors
+-  }
+-
+-  kill(one,SIGHUP); // let the shell know we're ready
+-
+-  hang();
+-
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/gigabyte.c procps-3.1.15/test/gigabyte.c
+--- procps-3.1.15.old/test/gigabyte.c	2003-09-11 10:23:56.000000000 +1000
++++ procps-3.1.15/test/gigabyte.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,74 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-//#include <sys/ioctl.h>
+-//#include <sys/stat.h>
+-//#include <fcntl.h>
+-#include <stdio.h>
+-#include <sys/mman.h>
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-#ifndef MAP_NORESERVE
+-#define MAP_NORESERVE 0
+-#endif
+-
+-int main(int argc, char *argv[]){
+-  void *vp;
+-  pid_t pid;
+-  size_t length = 1024*1024*1024;
+-  unsigned maps;   // how many mappings to do
+-
+-  (void)argc;
+-  (void)argv;
+-
+-  if(sizeof(void*)==8){
+-    maps = 10;
+-    puts("64bit");
+-  }else{
+-    maps = 1;
+-    puts("32bit");
+-  }
+-  fflush(stdout);
+-
+-  pid = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-
+-  while(maps){
+-    vp = mmap(
+-      0,   // start
+-      length,
+-      PROT_READ|PROT_WRITE,
+-      MAP_PRIVATE|MAP_NORESERVE|MAP_ANONYMOUS,
+-      0,   // fd
+-      0    // offset
+-    );
+-    if(vp==MAP_FAILED){
+-      // try a smaller size; maybe fragmentation stopped us
+-      length /= 2;
+-      maps *= 2;
+-    }else{
+-      maps--;
+-    }
+-    if(maps>200 || length<2*1024*1024){
+-      kill(pid,SIGKILL); // hopefully the shell will complain
+-      _exit(88);
+-    }
+-  }
+-
+-  close(0);
+-  close(1);
+-  close(2);
+-  kill(pid,SIGHUP);          // kill parent
+-  hang();
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/got-no-tty.c procps-3.1.15/test/got-no-tty.c
+--- procps-3.1.15.old/test/got-no-tty.c	2003-09-05 14:17:57.000000000 +1000
++++ procps-3.1.15/test/got-no-tty.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,46 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-#include <sys/ioctl.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <stdio.h>
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  int fd;
+-  pid_t pid;
+-
+-  (void)argc;
+-  (void)argv;
+-
+-  pid = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-
+-  // Use the TIOCNOTTY ioctl to detach from the tty
+-  // and, supposedly, set the process group ID to zero.
+-  // Reality: PGRP unchanged, TPGID becomes -1, TTY lost.
+-  fd = open("/dev/tty", O_RDONLY);
+-  if(!fd){
+-    perror("open /dev/tty");
+-    _exit(1);
+-  }
+-  if(ioctl(fd, TIOCNOTTY)==-1){
+-    perror("open /dev/tty");
+-    _exit(1);
+-  }
+-
+-  kill(pid,SIGHUP);          // kill parent
+-  hang();
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/mini-me.c procps-3.1.15/test/mini-me.c
+--- procps-3.1.15.old/test/mini-me.c	2003-09-22 05:50:38.000000000 +1000
++++ procps-3.1.15/test/mini-me.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,97 +0,0 @@
+-// ps fTo sess,pgid,pid,tty,ppid,tpgid,args -C a.out
+-
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-//#include <sys/stat.h>
+-//#include <fcntl.h>
+-//#include <stdlib.h>
+-#include <stdio.h>
+-#include <sched.h>
+-
+-#if 0
+-#define CLONE_VM             0x00000100 // set if VM shared between processes
+-#define CLONE_FS             0x00000200 // set if fs info shared between processes
+-#define CLONE_FILES          0x00000400 // set if open files shared between processes
+-#define CLONE_SIGHAND        0x00000800 // set if signal handlers and blocked signals shared
+-#define CLONE_IDLETASK       0x00001000 // set if new pid should be 0 (kernel only)*/
+-#define CLONE_PTRACE         0x00002000 // set if we want to let tracing continue on the child too
+-#define CLONE_VFORK          0x00004000 // set if the parent wants the child to wake it up on mm_release
+-#define CLONE_PARENT         0x00008000 // set if we want to have the same parent as the cloner
+-#define CLONE_THREAD         0x00010000 // Same thread group?
+-#define CLONE_NEWNS          0x00020000 // New namespace group?
+-#define CLONE_SYSVSEM        0x00040000 // share system V SEM_UNDO semantics
+-#define CLONE_SETTLS         0x00080000 // create a new TLS for the child
+-#define CLONE_PARENT_SETTID  0x00100000 // set the TID in the parent
+-#define CLONE_CHILD_CLEARTID 0x00200000 // clear the TID in the child
+-#define CLONE_DETACHED       0x00400000 // parent wants no child-exit signal
+-#define CLONE_UNTRACED       0x00800000 // set if the tracing process can't force CLONE_PTRACE on this clone
+-#define CLONE_CHILD_SETTID   0x01000000 // set the TID in the child
+-#define CLONE_STOPPED        0x02000000 // Start in stopped state
+-#endif
+-
+-#ifndef CLONE_THREAD
+-#define CLONE_THREAD         0x00010000
+-#endif
+-#ifndef CLONE_DETACHED
+-#define CLONE_DETACHED       0x00400000
+-#endif
+-
+-//#define FLAGS (CLONE_PARENT|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_VM|CLONE_THREAD|CLONE_SYSVSEM)
+-#define FLAGS (CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_VM|CLONE_THREAD|CLONE_DETACHED)
+-
+-//static pid_t one;
+-
+-//static void die(int signo){
+-//  (void)signo;
+-//  _exit(0);
+-//}
+-
+-//static void sigchld_handler(int signo){
+-//  (void)signo;
+-//  kill(one,SIGHUP);          // kill parent
+-//}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-static int clone_fn(void *vp){
+-  const char msg[] = "I think I'm a clone now!\n";
+-  write(STDOUT_FILENO, msg, sizeof(msg)-1);
+-  hang();
+-}
+-
+-static long clone_stack_data[2048];
+-#ifdef __hppa__
+-static long *clone_stack = &clone_stack_data[0];
+-#else
+-static long *clone_stack = &clone_stack_data[2048];
+-#endif
+-
+-int main(int argc, char *argv[]){
+-  pid_t minime;
+-  (void)argc;
+-  (void)argv;
+-
+-//  one = getpid();
+-//  signal(SIGHUP,die);
+-//  if(fork()) hang();    // parent later killed as readyness signal
+-
+-
+-  minime = clone(clone_fn, clone_stack, FLAGS, "arg");
+-
+-  if(minime==-1){
+-//    kill(one,SIGKILL);
+-    perror("no clone");
+-    _exit(8);
+-  }
+-
+-  printf("%d begat %d\n",getpid(),minime);
+-
+-//  kill(one,SIGHUP); // let the shell know we're ready
+-
+-  hang();
+-
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/module.mk procps-3.1.15/test/module.mk
+--- procps-3.1.15.old/test/module.mk	2003-12-25 02:02:52.000000000 +1100
++++ procps-3.1.15/test/module.mk	1970-01-01 10:00:00.000000000 +1000
+@@ -1,36 +0,0 @@
+-# This file gets included into the main Makefile, in the top directory.
+-
+-#INSTALL += $(bin)test $(man1)test.1 -- some data dump thing maybe?
+-
+-# directories for cleaning
+-DIRS += test/ $(wildcard test/*/*/)
+-
+-TEST_C    := fork-you the_living_dead got-no-tty sidious sid-breaks-ttys \
+-             gigabyte mini-me funny-thing clone-army clone-once
+-TESTNAMES := $(addprefix test/,$(TEST_C))
+-TESTOBJ   := $(addsuffix .o,$(TESTNAMES))
+-TESTSRC   := $(addsuffix .c,$(TESTNAMES)) test/th.c
+-
+-# files to create
+-ALL += $(TESTNAMES)
+-
+-# files to remove
+-TEST_JUNK := stderr stdout header stderr.test stderr.good
+-CLEAN += $(addprefix test/,$(TEST_JUNK)) $(TESTNAMES) test/th $(wildcard test/*.tmp)
+-
+-TEST_X := module.mk script-child onetest runtests
+-TARFILES += $(TESTSRC) $(addprefix test/,$(TEST_X)) $(wildcard test/*/*)
+-
+-$(TESTNAMES): %: %.o
+-	$(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -o $@ $^
+-
+-# add proc/$(SONAME) on the end later if needed
+-$(TESTOBJ): %.o: %.c
+-	$(CC) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $< -o $@
+-
+-test/th: test/th.o
+-	$(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -o $@ $^ -lpthread
+-
+-test/th.o: test/th.c
+-	$(CC) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $< -o $@
+-
+diff -ruN procps-3.1.15.old/test/onetest procps-3.1.15/test/onetest
+--- procps-3.1.15.old/test/onetest	2003-12-25 02:02:08.000000000 +1100
++++ procps-3.1.15/test/onetest	1970-01-01 10:00:00.000000000 +1000
+@@ -1,70 +0,0 @@
+-#!/bin/bash
+-
+-unset I_WANT_A_BROKEN_PS
+-unset PS_PERSONALITY
+-unset CMD_ENV
+-unset PS_FORMAT
+-
+-export LANG=C
+-export LC_ALL=C
+-export TZ=GMT
+-
+-TESTNAME=$1
+-
+-# enlarge as needed in setup to avoid COMMAND becoming COMMA, etc.
+-export COLUMNS=111
+-
+-: ${LD_LIBRARY_PATH:=../proc}
+-: ${TESTME:=../ps/ps}
+-export LD_LIBRARY_PATH
+-export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH  # if ever a darwin port
+-
+-
+-
+-. $TESTNAME/setup
+-$TESTME $ARGS > stdout 2> stderr
+-RESULT=$?
+-if [ x$KILLFN == x1 ] ; then
+-  killfn
+-fi
+-
+-
+-
+-if [ x$RESULT != x$GOOD ] ; then
+-  echo FAIL $TESTNAME err-$RESULT
+-  exit 1
+-fi
+-
+-rm -f stderr.test ; touch stderr.test
+-if [ -f stderr ] ; then
+-  head -3 < stderr > stderr.test
+-fi
+-rm -f stderr.good ; touch stderr.good
+-if [ -f $TESTNAME/stderr ] ; then
+-  head -3 < $TESTNAME/stderr > stderr.good
+-fi
+-diff -Naurd stderr.test stderr.good >> /dev/null
+-if [ x$? != x0 ] ; then
+-  echo FAIL $TESTNAME wrong-stderr
+-  exit 1
+-fi
+-
+-if [ -f $TESTNAME/header ] ; then
+-  (printf ' ' ; head -1 stdout) | tr -s ' ' > header
+-  diff -Naurd header $TESTNAME/header >> /dev/null
+-  if [ x$? != x0 ] ; then
+-    echo FAIL $TESTNAME wrong-header
+-    exit 1
+-  fi
+-fi
+-
+-if [ x$EVALFN == x1 ] ; then
+-  evalfn
+-  if [ x$? != x0 ] ; then
+-    echo FAIL $TESTNAME eval-fn
+-    exit 1
+-  fi
+-fi
+-
+-echo pass $TESTNAME a-ok
+-exit 0
+diff -ruN procps-3.1.15.old/test/ps/LT-mix/header procps-3.1.15/test/ps/LT-mix/header
+--- procps-3.1.15.old/test/ps/LT-mix/header	2003-10-02 12:38:29.000000000 +1000
++++ procps-3.1.15/test/ps/LT-mix/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/LT-mix/setup procps-3.1.15/test/ps/LT-mix/setup
+--- procps-3.1.15.old/test/ps/LT-mix/setup	2003-10-02 12:39:40.000000000 +1000
++++ procps-3.1.15/test/ps/LT-mix/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-L -T"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/LT-mix/stderr procps-3.1.15/test/ps/LT-mix/stderr
+--- procps-3.1.15.old/test/ps/LT-mix/stderr	2003-10-02 12:40:03.000000000 +1000
++++ procps-3.1.15/test/ps/LT-mix/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Thread flags conflict; can't use both -L and -T.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/O-O/header procps-3.1.15/test/ps/O-O/header
+--- procps-3.1.15.old/test/ps/O-O/header	2003-10-02 12:01:36.000000000 +1000
++++ procps-3.1.15/test/ps/O-O/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/O-O/setup procps-3.1.15/test/ps/O-O/setup
+--- procps-3.1.15.old/test/ps/O-O/setup	2003-10-02 12:02:01.000000000 +1000
++++ procps-3.1.15/test/ps/O-O/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-O wchan -O sess"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/O-O/stderr procps-3.1.15/test/ps/O-O/stderr
+--- procps-3.1.15.old/test/ps/O-O/stderr	2003-10-02 12:05:19.000000000 +1000
++++ procps-3.1.15/test/ps/O-O/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: option -O can not follow other format options.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/O-o/header procps-3.1.15/test/ps/O-o/header
+--- procps-3.1.15.old/test/ps/O-o/header	2003-10-02 12:06:18.000000000 +1000
++++ procps-3.1.15/test/ps/O-o/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID WCHAN S TTY TIME COMMAND SESS
+diff -ruN procps-3.1.15.old/test/ps/O-o/setup procps-3.1.15/test/ps/O-o/setup
+--- procps-3.1.15.old/test/ps/O-o/setup	2003-10-02 12:05:41.000000000 +1000
++++ procps-3.1.15/test/ps/O-o/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-O wchan -o sess"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/aix-pcpu-header/header procps-3.1.15/test/ps/aix-pcpu-header/header
+--- procps-3.1.15.old/test/ps/aix-pcpu-header/header	2003-09-03 07:26:05.000000000 +1000
++++ procps-3.1.15/test/ps/aix-pcpu-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- %CPU
+diff -ruN procps-3.1.15.old/test/ps/aix-pcpu-header/setup procps-3.1.15/test/ps/aix-pcpu-header/setup
+--- procps-3.1.15.old/test/ps/aix-pcpu-header/setup	2003-09-03 07:24:28.000000000 +1000
++++ procps-3.1.15/test/ps/aix-pcpu-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o %cpu"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/aix-pcpu-header2/header procps-3.1.15/test/ps/aix-pcpu-header2/header
+--- procps-3.1.15.old/test/ps/aix-pcpu-header2/header	2003-09-03 07:26:30.000000000 +1000
++++ procps-3.1.15/test/ps/aix-pcpu-header2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- COMMAND px
+diff -ruN procps-3.1.15.old/test/ps/aix-pcpu-header2/setup procps-3.1.15/test/ps/aix-pcpu-header2/setup
+--- procps-3.1.15.old/test/ps/aix-pcpu-header2/setup	2003-09-03 07:25:22.000000000 +1000
++++ procps-3.1.15/test/ps/aix-pcpu-header2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o %cpx"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bad-format-env/header procps-3.1.15/test/ps/bad-format-env/header
+--- procps-3.1.15.old/test/ps/bad-format-env/header	2003-10-02 12:16:37.000000000 +1000
++++ procps-3.1.15/test/ps/bad-format-env/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/bad-format-env/setup procps-3.1.15/test/ps/bad-format-env/setup
+--- procps-3.1.15.old/test/ps/bad-format-env/setup	2003-10-02 12:16:22.000000000 +1000
++++ procps-3.1.15/test/ps/bad-format-env/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-ARGS=
+-GOOD=0
+-export PS_FORMAT=booger
+diff -ruN procps-3.1.15.old/test/ps/bad-format-env/stderr procps-3.1.15/test/ps/bad-format-env/stderr
+--- procps-3.1.15.old/test/ps/bad-format-env/stderr	2003-10-02 12:16:13.000000000 +1000
++++ procps-3.1.15/test/ps/bad-format-env/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+-Warning: $PS_FORMAT ignored. (Unknown user-defined format specifier "booger".)
+diff -ruN procps-3.1.15.old/test/ps/bogus-n-header/header procps-3.1.15/test/ps/bogus-n-header/header
+--- procps-3.1.15.old/test/ps/bogus-n-header/header	2003-09-02 09:37:07.000000000 +1000
++++ procps-3.1.15/test/ps/bogus-n-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bogus-n-header/setup procps-3.1.15/test/ps/bogus-n-header/setup
+--- procps-3.1.15.old/test/ps/bogus-n-header/setup	2003-09-02 09:34:40.000000000 +1000
++++ procps-3.1.15/test/ps/bogus-n-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-n"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bogus-n-header/stderr procps-3.1.15/test/ps/bogus-n-header/stderr
+--- procps-3.1.15.old/test/ps/bogus-n-header/stderr	2003-09-02 09:35:37.000000000 +1000
++++ procps-3.1.15/test/ps/bogus-n-header/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+-Warning: bad syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
+diff -ruN procps-3.1.15.old/test/ps/bsd-T/header procps-3.1.15/test/ps/bsd-T/header
+--- procps-3.1.15.old/test/ps/bsd-T/header	2003-09-02 11:54:41.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-T/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-T/setup procps-3.1.15/test/ps/bsd-T/setup
+--- procps-3.1.15.old/test/ps/bsd-T/setup	2003-09-02 11:53:24.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-T/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,11 +0,0 @@
+-ARGS=T
+-GOOD=0
+-EVALFN=1
+-
+-# default output is restricted to this tty
+-MYTTY=`tty`
+-
+-evalfn () {
+-  PSTTY=`awk '!/TTY/{print $2}' < stdout | uniq`
+-  [ /dev/$PSTTY == $MYTTY ]
+-}
+diff -ruN procps-3.1.15.old/test/ps/bsd-j-header/header procps-3.1.15/test/ps/bsd-j-header/header
+--- procps-3.1.15.old/test/ps/bsd-j-header/header	2003-09-02 22:33:49.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-j-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-j-header/setup procps-3.1.15/test/ps/bsd-j-header/setup
+--- procps-3.1.15.old/test/ps/bsd-j-header/setup	2003-09-02 22:32:53.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-j-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="j"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-j-header2/header procps-3.1.15/test/ps/bsd-j-header2/header
+--- procps-3.1.15.old/test/ps/bsd-j-header2/header	2003-09-02 23:16:25.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-j-header2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- USER PID PPID PGID SESS JOBC STAT TT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-j-header2/setup procps-3.1.15/test/ps/bsd-j-header2/setup
+--- procps-3.1.15.old/test/ps/bsd-j-header2/setup	2003-09-02 23:15:16.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-j-header2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=bsd
+-ARGS="-j"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-l-header/header procps-3.1.15/test/ps/bsd-l-header/header
+--- procps-3.1.15.old/test/ps/bsd-l-header/header	2003-09-02 22:54:09.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-l-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-l-header/setup procps-3.1.15/test/ps/bsd-l-header/setup
+--- procps-3.1.15.old/test/ps/bsd-l-header/setup	2003-09-02 22:53:45.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-l-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="l"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-l-header2/header procps-3.1.15/test/ps/bsd-l-header2/header
+--- procps-3.1.15.old/test/ps/bsd-l-header2/header	2003-09-03 07:26:56.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-l-header2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-l-header2/setup procps-3.1.15/test/ps/bsd-l-header2/setup
+--- procps-3.1.15.old/test/ps/bsd-l-header2/setup	2003-09-03 07:21:19.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-l-header2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=bsd
+-ARGS="-l"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-s-header/header procps-3.1.15/test/ps/bsd-s-header/header
+--- procps-3.1.15.old/test/ps/bsd-s-header/header	2003-09-02 22:55:32.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-s-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-s-header/setup procps-3.1.15/test/ps/bsd-s-header/setup
+--- procps-3.1.15.old/test/ps/bsd-s-header/setup	2003-09-02 22:55:06.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-s-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="s"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-s-header2/header procps-3.1.15/test/ps/bsd-s-header2/header
+--- procps-3.1.15.old/test/ps/bsd-s-header2/header	2003-09-03 07:21:33.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-s-header2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-s-header2/setup procps-3.1.15/test/ps/bsd-s-header2/setup
+--- procps-3.1.15.old/test/ps/bsd-s-header2/setup	2003-09-03 07:21:40.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-s-header2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=bsd
+-ARGS="-s"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-selection/header procps-3.1.15/test/ps/bsd-selection/header
+--- procps-3.1.15.old/test/ps/bsd-selection/header	2003-09-04 16:04:27.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-selection/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-selection/setup procps-3.1.15/test/ps/bsd-selection/setup
+--- procps-3.1.15.old/test/ps/bsd-selection/setup	2003-09-13 13:47:22.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-selection/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,25 +0,0 @@
+-ARGS="m"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-rm -f misc.tmp ready.tmp typescript.tmp
+-
+-./got-no-tty
+-# this'll do but... WHERE ARE THE MAN PAGES FOR PTY STUFF???
+-(SHELL=`pwd`/script-child script typescript.tmp &>/dev/null) &
+-while [ ! -f ready.tmp ] ; do sleep 0.01 ; done
+-. ready.tmp
+-
+-evalfn () {
+-   THIS_TTY=`tty | colrm 1 5`
+-   lines2=`awk '{print $2}' < stdout | sort -u | egrep "^($SHELL_TTY|$THIS_TTY)$"   | wc -l`
+-   lines3=`awk '{print $2}' < stdout | sort -u | egrep "^($SHELL_TTY|$THIS_TTY|\?)$" | wc -l`
+-   [ $lines2 == 2 ] && [ $lines3 == 2 ]
+-}
+-
+-killfn () {
+-  killall -9 got-no-tty
+-  kill -9 $SHELL_PID  # the others should freely die
+-  rm -f misc.tmp ready.tmp typescript.tmp
+-}
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-1/header procps-3.1.15/test/ps/bsd-t-1/header
+--- procps-3.1.15.old/test/ps/bsd-t-1/header	2003-09-02 11:55:23.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-1/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-1/setup procps-3.1.15/test/ps/bsd-t-1/setup
+--- procps-3.1.15.old/test/ps/bsd-t-1/setup	2003-09-02 11:56:11.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-1/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,11 +0,0 @@
+-# default output is restricted to this tty
+-MYTTY=`tty`
+-
+-ARGS=t$MYTTY
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  PSTTY=`awk '!/TTY/{print $2}' < stdout | uniq`
+-  [ /dev/$PSTTY == $MYTTY ]
+-}
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-2/header procps-3.1.15/test/ps/bsd-t-2/header
+--- procps-3.1.15.old/test/ps/bsd-t-2/header	2003-09-02 11:55:26.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-2/setup procps-3.1.15/test/ps/bsd-t-2/setup
+--- procps-3.1.15.old/test/ps/bsd-t-2/setup	2003-09-02 11:56:54.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,12 +0,0 @@
+-# Ancient usage: t w/o arg is current tty
+-ARGS=t
+-GOOD=0
+-EVALFN=1
+-
+-# default output is restricted to this tty
+-MYTTY=`tty`
+-
+-evalfn () {
+-  PSTTY=`awk '!/TTY/{print $2}' < stdout | uniq`
+-  [ /dev/$PSTTY == $MYTTY ]
+-}
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-3/header procps-3.1.15/test/ps/bsd-t-3/header
+--- procps-3.1.15.old/test/ps/bsd-t-3/header	2003-09-02 11:55:27.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-3/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-3/setup procps-3.1.15/test/ps/bsd-t-3/setup
+--- procps-3.1.15.old/test/ps/bsd-t-3/setup	2003-09-02 12:25:44.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-3/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,19 +0,0 @@
+-MYTTY=`tty`
+-
+-# two ways to interpret "ps t 42"
+-#
+-# 1. as "ps t" with "ps 42"  (PID 42)
+-# 2. as "ps t42" (tty /dev/tty42)
+-#
+-# The command doesn't seem to be legal BSD syntax, but we try...
+-# We use interpretation #2, since BSD isn't known for ORing.
+-# We'll assume PID 1 is "init" and not on /dev/tty1, and that
+-# nothing on tty1 is named "init".
+-
+-ARGS="t 1"
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  ! egrep ' init' stdout >> /dev/null
+-}
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-4/header procps-3.1.15/test/ps/bsd-t-4/header
+--- procps-3.1.15.old/test/ps/bsd-t-4/header	2003-09-02 11:55:29.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-4/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-t-4/setup procps-3.1.15/test/ps/bsd-t-4/setup
+--- procps-3.1.15.old/test/ps/bsd-t-4/setup	2003-09-02 12:15:34.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-t-4/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,10 +0,0 @@
+-ARGS=t-
+-GOOD=0
+-EVALFN=1
+-
+-# Use 'Y' to avoid shell wildcard problems.
+-
+-evalfn () {
+-  PSTTY=`awk '!/TTY/{print $2}' < stdout | uniq | tr '?' 'Y'`
+-  [ $PSTTY == 'Y' ]
+-}
+diff -ruN procps-3.1.15.old/test/ps/bsd-u-header/header procps-3.1.15/test/ps/bsd-u-header/header
+--- procps-3.1.15.old/test/ps/bsd-u-header/header	2003-09-02 22:57:35.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-u-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-u-header/setup procps-3.1.15/test/ps/bsd-u-header/setup
+--- procps-3.1.15.old/test/ps/bsd-u-header/setup	2003-09-02 22:57:20.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-u-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="u"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-u-header2/header procps-3.1.15/test/ps/bsd-u-header2/header
+--- procps-3.1.15.old/test/ps/bsd-u-header2/header	2003-09-03 07:27:09.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-u-header2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-u-header2/setup procps-3.1.15/test/ps/bsd-u-header2/setup
+--- procps-3.1.15.old/test/ps/bsd-u-header2/setup	2003-09-03 07:22:00.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-u-header2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=bsd
+-ARGS="-u"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-v-header/header procps-3.1.15/test/ps/bsd-v-header/header
+--- procps-3.1.15.old/test/ps/bsd-v-header/header	2003-09-02 22:56:43.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-v-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-v-header/setup procps-3.1.15/test/ps/bsd-v-header/setup
+--- procps-3.1.15.old/test/ps/bsd-v-header/setup	2003-09-02 22:56:10.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-v-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="v"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/bsd-v-header2/header procps-3.1.15/test/ps/bsd-v-header2/header
+--- procps-3.1.15.old/test/ps/bsd-v-header2/header	2003-09-03 07:27:16.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-v-header2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID STAT TIME SL RE PAGEIN VSZ RSS LIM TSIZ %CPU %MEM COMMAND
+diff -ruN procps-3.1.15.old/test/ps/bsd-v-header2/setup procps-3.1.15/test/ps/bsd-v-header2/setup
+--- procps-3.1.15.old/test/ps/bsd-v-header2/setup	2003-09-03 07:22:17.000000000 +1000
++++ procps-3.1.15/test/ps/bsd-v-header2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=bsd
+-ARGS="-v"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/dynix-F-header/header procps-3.1.15/test/ps/dynix-F-header/header
+--- procps-3.1.15.old/test/ps/dynix-F-header/header	2003-09-02 22:31:23.000000000 +1000
++++ procps-3.1.15/test/ps/dynix-F-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/dynix-F-header/setup procps-3.1.15/test/ps/dynix-F-header/setup
+--- procps-3.1.15.old/test/ps/dynix-F-header/setup	2003-09-02 22:30:43.000000000 +1000
++++ procps-3.1.15/test/ps/dynix-F-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-F"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/fail-aix-Q/header procps-3.1.15/test/ps/fail-aix-Q/header
+--- procps-3.1.15.old/test/ps/fail-aix-Q/header	2003-10-02 11:31:34.000000000 +1000
++++ procps-3.1.15/test/ps/fail-aix-Q/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-aix-Q/setup procps-3.1.15/test/ps/fail-aix-Q/setup
+--- procps-3.1.15.old/test/ps/fail-aix-Q/setup	2003-10-02 11:32:11.000000000 +1000
++++ procps-3.1.15/test/ps/fail-aix-Q/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o %Q"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-aix-Q/stderr procps-3.1.15/test/ps/fail-aix-Q/stderr
+--- procps-3.1.15.old/test/ps/fail-aix-Q/stderr	2003-10-02 11:33:07.000000000 +1000
++++ procps-3.1.15/test/ps/fail-aix-Q/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Unknown AIX field descriptor.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-aix-improper/header procps-3.1.15/test/ps/fail-aix-improper/header
+--- procps-3.1.15.old/test/ps/fail-aix-improper/header	2003-10-02 11:34:09.000000000 +1000
++++ procps-3.1.15/test/ps/fail-aix-improper/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-aix-improper/setup procps-3.1.15/test/ps/fail-aix-improper/setup
+--- procps-3.1.15.old/test/ps/fail-aix-improper/setup	2003-10-02 11:34:22.000000000 +1000
++++ procps-3.1.15/test/ps/fail-aix-improper/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o %"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-aix-improper/stderr procps-3.1.15/test/ps/fail-aix-improper/stderr
+--- procps-3.1.15.old/test/ps/fail-aix-improper/stderr	2003-10-02 11:34:40.000000000 +1000
++++ procps-3.1.15/test/ps/fail-aix-improper/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Improper AIX field descriptor.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-improper-sort/header procps-3.1.15/test/ps/fail-improper-sort/header
+--- procps-3.1.15.old/test/ps/fail-improper-sort/header	2003-10-02 11:47:57.000000000 +1000
++++ procps-3.1.15/test/ps/fail-improper-sort/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-improper-sort/setup procps-3.1.15/test/ps/fail-improper-sort/setup
+--- procps-3.1.15.old/test/ps/fail-improper-sort/setup	2003-10-02 11:48:15.000000000 +1000
++++ procps-3.1.15/test/ps/fail-improper-sort/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="--sort ,,"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-improper-sort/stderr procps-3.1.15/test/ps/fail-improper-sort/stderr
+--- procps-3.1.15.old/test/ps/fail-improper-sort/stderr	2003-10-02 12:22:31.000000000 +1000
++++ procps-3.1.15/test/ps/fail-improper-sort/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Improper sort list
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-improper-spec/header procps-3.1.15/test/ps/fail-improper-spec/header
+--- procps-3.1.15.old/test/ps/fail-improper-spec/header	2003-10-02 11:37:17.000000000 +1000
++++ procps-3.1.15/test/ps/fail-improper-spec/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-improper-spec/setup procps-3.1.15/test/ps/fail-improper-spec/setup
+--- procps-3.1.15.old/test/ps/fail-improper-spec/setup	2003-10-02 11:37:34.000000000 +1000
++++ procps-3.1.15/test/ps/fail-improper-spec/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o ,"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-improper-spec/stderr procps-3.1.15/test/ps/fail-improper-spec/stderr
+--- procps-3.1.15.old/test/ps/fail-improper-spec/stderr	2003-10-02 11:37:52.000000000 +1000
++++ procps-3.1.15/test/ps/fail-improper-spec/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Improper format list.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-macro-width/header procps-3.1.15/test/ps/fail-macro-width/header
+--- procps-3.1.15.old/test/ps/fail-macro-width/header	2003-10-02 11:42:15.000000000 +1000
++++ procps-3.1.15/test/ps/fail-macro-width/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-macro-width/setup procps-3.1.15/test/ps/fail-macro-width/setup
+--- procps-3.1.15.old/test/ps/fail-macro-width/setup	2003-10-02 11:42:30.000000000 +1000
++++ procps-3.1.15/test/ps/fail-macro-width/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o DefBSD:6"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-macro-width/stderr procps-3.1.15/test/ps/fail-macro-width/stderr
+--- procps-3.1.15.old/test/ps/fail-macro-width/stderr	2003-10-02 11:42:46.000000000 +1000
++++ procps-3.1.15/test/ps/fail-macro-width/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Can't set width for a macro (multi-column) format specifier.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-no-sort-key/header procps-3.1.15/test/ps/fail-no-sort-key/header
+--- procps-3.1.15.old/test/ps/fail-no-sort-key/header	2003-10-02 11:50:26.000000000 +1000
++++ procps-3.1.15/test/ps/fail-no-sort-key/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-no-sort-key/setup procps-3.1.15/test/ps/fail-no-sort-key/setup
+--- procps-3.1.15.old/test/ps/fail-no-sort-key/setup	2003-10-02 11:50:39.000000000 +1000
++++ procps-3.1.15/test/ps/fail-no-sort-key/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="--sort"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-no-sort-key/stderr procps-3.1.15/test/ps/fail-no-sort-key/stderr
+--- procps-3.1.15.old/test/ps/fail-no-sort-key/stderr	2003-10-02 11:51:05.000000000 +1000
++++ procps-3.1.15/test/ps/fail-no-sort-key/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Long sort specification must follow --sort.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-no-width/header procps-3.1.15/test/ps/fail-no-width/header
+--- procps-3.1.15.old/test/ps/fail-no-width/header	2003-10-02 11:40:56.000000000 +1000
++++ procps-3.1.15/test/ps/fail-no-width/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-no-width/setup procps-3.1.15/test/ps/fail-no-width/setup
+--- procps-3.1.15.old/test/ps/fail-no-width/setup	2003-10-02 11:41:22.000000000 +1000
++++ procps-3.1.15/test/ps/fail-no-width/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o pid:,f,comm"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-no-width/stderr procps-3.1.15/test/ps/fail-no-width/stderr
+--- procps-3.1.15.old/test/ps/fail-no-width/stderr	2003-10-02 11:40:56.000000000 +1000
++++ procps-3.1.15/test/ps/fail-no-width/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Column widths must be unsigned decimal numbers.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-nondecimal/header procps-3.1.15/test/ps/fail-nondecimal/header
+--- procps-3.1.15.old/test/ps/fail-nondecimal/header	2003-10-02 11:39:38.000000000 +1000
++++ procps-3.1.15/test/ps/fail-nondecimal/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-nondecimal/setup procps-3.1.15/test/ps/fail-nondecimal/setup
+--- procps-3.1.15.old/test/ps/fail-nondecimal/setup	2003-10-02 11:40:07.000000000 +1000
++++ procps-3.1.15/test/ps/fail-nondecimal/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o pid:f,comm"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-nondecimal/stderr procps-3.1.15/test/ps/fail-nondecimal/stderr
+--- procps-3.1.15.old/test/ps/fail-nondecimal/stderr	2003-10-02 11:40:30.000000000 +1000
++++ procps-3.1.15/test/ps/fail-nondecimal/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Column widths must be unsigned decimal numbers.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-oj/header procps-3.1.15/test/ps/fail-oj/header
+--- procps-3.1.15.old/test/ps/fail-oj/header	2003-09-02 13:47:18.000000000 +1000
++++ procps-3.1.15/test/ps/fail-oj/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-oj/setup procps-3.1.15/test/ps/fail-oj/setup
+--- procps-3.1.15.old/test/ps/fail-oj/setup	2003-09-02 13:47:54.000000000 +1000
++++ procps-3.1.15/test/ps/fail-oj/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o pid -j"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-oj/stderr procps-3.1.15/test/ps/fail-oj/stderr
+--- procps-3.1.15.old/test/ps/fail-oj/stderr	2003-09-02 13:49:02.000000000 +1000
++++ procps-3.1.15/test/ps/fail-oj/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Can't use output modifiers with user-defined output
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-unknown-sort/header procps-3.1.15/test/ps/fail-unknown-sort/header
+--- procps-3.1.15.old/test/ps/fail-unknown-sort/header	2003-10-02 11:49:27.000000000 +1000
++++ procps-3.1.15/test/ps/fail-unknown-sort/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-unknown-sort/setup procps-3.1.15/test/ps/fail-unknown-sort/setup
+--- procps-3.1.15.old/test/ps/fail-unknown-sort/setup	2003-10-02 11:49:41.000000000 +1000
++++ procps-3.1.15/test/ps/fail-unknown-sort/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="--sort booger"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-unknown-sort/stderr procps-3.1.15/test/ps/fail-unknown-sort/stderr
+--- procps-3.1.15.old/test/ps/fail-unknown-sort/stderr	2003-10-02 11:50:09.000000000 +1000
++++ procps-3.1.15/test/ps/fail-unknown-sort/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Unknown sort specifier.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-unknown-spec/header procps-3.1.15/test/ps/fail-unknown-spec/header
+--- procps-3.1.15.old/test/ps/fail-unknown-spec/header	2003-10-02 11:35:33.000000000 +1000
++++ procps-3.1.15/test/ps/fail-unknown-spec/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-unknown-spec/setup procps-3.1.15/test/ps/fail-unknown-spec/setup
+--- procps-3.1.15.old/test/ps/fail-unknown-spec/setup	2003-10-02 11:35:52.000000000 +1000
++++ procps-3.1.15/test/ps/fail-unknown-spec/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o boogers"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-unknown-spec/stderr procps-3.1.15/test/ps/fail-unknown-spec/stderr
+--- procps-3.1.15.old/test/ps/fail-unknown-spec/stderr	2003-10-02 11:36:05.000000000 +1000
++++ procps-3.1.15/test/ps/fail-unknown-spec/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Unknown user-defined format specifier "boogers".
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/fail-xx/header procps-3.1.15/test/ps/fail-xx/header
+--- procps-3.1.15.old/test/ps/fail-xx/header	2003-09-02 09:43:13.000000000 +1000
++++ procps-3.1.15/test/ps/fail-xx/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/fail-xx/setup procps-3.1.15/test/ps/fail-xx/setup
+--- procps-3.1.15.old/test/ps/fail-xx/setup	2003-09-02 09:41:38.000000000 +1000
++++ procps-3.1.15/test/ps/fail-xx/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="x -x"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/fail-xx/stderr procps-3.1.15/test/ps/fail-xx/stderr
+--- procps-3.1.15.old/test/ps/fail-xx/stderr	2003-09-02 09:42:04.000000000 +1000
++++ procps-3.1.15/test/ps/fail-xx/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Unsupported SysV option.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/hpux-H-simple/setup procps-3.1.15/test/ps/hpux-H-simple/setup
+--- procps-3.1.15.old/test/ps/hpux-H-simple/setup	2003-09-03 10:15:28.000000000 +1000
++++ procps-3.1.15/test/ps/hpux-H-simple/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-HC fork-you -o comm="
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./fork-you 3 4 5 6 7 8 9
+-
+-evalfn () {
+-  diff -Naurd stdout $TESTNAME/stdout >> /dev/null
+-}
+-
+-killfn () {
+-  killall -9 fork-you
+-}
+diff -ruN procps-3.1.15.old/test/ps/hpux-H-simple/stdout procps-3.1.15/test/ps/hpux-H-simple/stdout
+--- procps-3.1.15.old/test/ps/hpux-H-simple/stdout	2003-09-03 09:51:00.000000000 +1000
++++ procps-3.1.15/test/ps/hpux-H-simple/stdout	1970-01-01 10:00:00.000000000 +1000
+@@ -1,9 +0,0 @@
+-fork-you
+-  fork-you
+-  fork-you
+-  fork-you
+-  fork-you
+-  fork-you
+-  fork-you
+-  fork-you
+-  fork-you
+diff -ruN procps-3.1.15.old/test/ps/jyclf-header/header procps-3.1.15/test/ps/jyclf-header/header
+--- procps-3.1.15.old/test/ps/jyclf-header/header	2003-09-02 13:57:34.000000000 +1000
++++ procps-3.1.15/test/ps/jyclf-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- S UID PID PPID PGID SID CLS PRI RSS SZ WCHAN STIME TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/jyclf-header/setup procps-3.1.15/test/ps/jyclf-header/setup
+--- procps-3.1.15.old/test/ps/jyclf-header/setup	2003-09-02 13:55:34.000000000 +1000
++++ procps-3.1.15/test/ps/jyclf-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-jyclf"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/linux-lf-header/header procps-3.1.15/test/ps/linux-lf-header/header
+--- procps-3.1.15.old/test/ps/linux-lf-header/header	2003-09-02 14:03:14.000000000 +1000
++++ procps-3.1.15/test/ps/linux-lf-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- F S USER PID PPID C PRI NI P SZ WCHAN STIME TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/linux-lf-header/setup procps-3.1.15/test/ps/linux-lf-header/setup
+--- procps-3.1.15.old/test/ps/linux-lf-header/setup	2003-09-02 14:04:14.000000000 +1000
++++ procps-3.1.15/test/ps/linux-lf-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=linux
+-ARGS="-lf"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/mH-mix/header procps-3.1.15/test/ps/mH-mix/header
+--- procps-3.1.15.old/test/ps/mH-mix/header	2003-10-02 12:38:52.000000000 +1000
++++ procps-3.1.15/test/ps/mH-mix/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/mH-mix/setup procps-3.1.15/test/ps/mH-mix/setup
+--- procps-3.1.15.old/test/ps/mH-mix/setup	2003-10-02 12:39:25.000000000 +1000
++++ procps-3.1.15/test/ps/mH-mix/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="mH"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/mH-mix/stderr procps-3.1.15/test/ps/mH-mix/stderr
+--- procps-3.1.15.old/test/ps/mH-mix/stderr	2003-10-02 12:40:18.000000000 +1000
++++ procps-3.1.15/test/ps/mH-mix/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Thread flags conflict; can't use H with m or -m.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/mH-mix2/header procps-3.1.15/test/ps/mH-mix2/header
+--- procps-3.1.15.old/test/ps/mH-mix2/header	2003-10-02 12:38:58.000000000 +1000
++++ procps-3.1.15/test/ps/mH-mix2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/mH-mix2/setup procps-3.1.15/test/ps/mH-mix2/setup
+--- procps-3.1.15.old/test/ps/mH-mix2/setup	2003-10-02 12:39:15.000000000 +1000
++++ procps-3.1.15/test/ps/mH-mix2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-m H"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/mH-mix2/stderr procps-3.1.15/test/ps/mH-mix2/stderr
+--- procps-3.1.15.old/test/ps/mH-mix2/stderr	2003-10-02 12:40:20.000000000 +1000
++++ procps-3.1.15/test/ps/mH-mix2/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Thread flags conflict; can't use H with m or -m.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/mm-mix/header procps-3.1.15/test/ps/mm-mix/header
+--- procps-3.1.15.old/test/ps/mm-mix/header	2003-10-02 12:37:41.000000000 +1000
++++ procps-3.1.15/test/ps/mm-mix/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/mm-mix/setup procps-3.1.15/test/ps/mm-mix/setup
+--- procps-3.1.15.old/test/ps/mm-mix/setup	2003-10-02 12:37:57.000000000 +1000
++++ procps-3.1.15/test/ps/mm-mix/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-m m"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/mm-mix/stderr procps-3.1.15/test/ps/mm-mix/stderr
+--- procps-3.1.15.old/test/ps/mm-mix/stderr	2003-10-02 12:38:11.000000000 +1000
++++ procps-3.1.15/test/ps/mm-mix/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Thread flags conflict; can't use both m and -m.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/multi-sort/header procps-3.1.15/test/ps/multi-sort/header
+--- procps-3.1.15.old/test/ps/multi-sort/header	2003-10-02 12:08:50.000000000 +1000
++++ procps-3.1.15/test/ps/multi-sort/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/multi-sort/setup procps-3.1.15/test/ps/multi-sort/setup
+--- procps-3.1.15.old/test/ps/multi-sort/setup	2003-10-02 12:09:10.000000000 +1000
++++ procps-3.1.15/test/ps/multi-sort/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="--sort wchan --sort sess"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/multi-sort/stderr procps-3.1.15/test/ps/multi-sort/stderr
+--- procps-3.1.15.old/test/ps/multi-sort/stderr	2003-10-02 12:09:23.000000000 +1000
++++ procps-3.1.15/test/ps/multi-sort/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Multiple sort options.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/o-O/header procps-3.1.15/test/ps/o-O/header
+--- procps-3.1.15.old/test/ps/o-O/header	2003-10-02 12:03:27.000000000 +1000
++++ procps-3.1.15/test/ps/o-O/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/o-O/setup procps-3.1.15/test/ps/o-O/setup
+--- procps-3.1.15.old/test/ps/o-O/setup	2003-10-02 12:04:40.000000000 +1000
++++ procps-3.1.15/test/ps/o-O/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o wchan -O sess"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/o-O/stderr procps-3.1.15/test/ps/o-O/stderr
+--- procps-3.1.15.old/test/ps/o-O/stderr	2003-10-02 12:06:35.000000000 +1000
++++ procps-3.1.15/test/ps/o-O/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: option -O can not follow other format options.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/o-o/header procps-3.1.15/test/ps/o-o/header
+--- procps-3.1.15.old/test/ps/o-o/header	2003-10-02 12:07:18.000000000 +1000
++++ procps-3.1.15/test/ps/o-o/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- WCHAN SESS
+diff -ruN procps-3.1.15.old/test/ps/o-o/setup procps-3.1.15/test/ps/o-o/setup
+--- procps-3.1.15.old/test/ps/o-o/setup	2003-10-02 12:07:08.000000000 +1000
++++ procps-3.1.15/test/ps/o-o/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o wchan -o sess"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/old-m-1/header procps-3.1.15/test/ps/old-m-1/header
+--- procps-3.1.15.old/test/ps/old-m-1/header	2003-09-02 09:46:21.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-1/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY MAJFLT MINFLT TRS DRS SIZE SWAP RSS SHRD LIB DT COMMAND
+diff -ruN procps-3.1.15.old/test/ps/old-m-1/setup procps-3.1.15/test/ps/old-m-1/setup
+--- procps-3.1.15.old/test/ps/old-m-1/setup	2003-09-02 09:46:06.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-1/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=old
+-ARGS="-m"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/old-m-2/header procps-3.1.15/test/ps/old-m-2/header
+--- procps-3.1.15.old/test/ps/old-m-2/header	2003-09-02 09:47:13.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-2/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY MAJFLT MINFLT TRS DRS SIZE SWAP RSS SHRD LIB DT COMMAND
+diff -ruN procps-3.1.15.old/test/ps/old-m-2/setup procps-3.1.15/test/ps/old-m-2/setup
+--- procps-3.1.15.old/test/ps/old-m-2/setup	2003-09-02 09:47:47.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-2/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,4 +0,0 @@
+-export CMD_ENV=unix
+-export PS_PERSONALITY=old
+-ARGS="-m"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/old-m-3/header procps-3.1.15/test/ps/old-m-3/header
+--- procps-3.1.15.old/test/ps/old-m-3/header	2003-09-02 09:47:15.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-3/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY MAJFLT MINFLT TRS DRS SIZE SWAP RSS SHRD LIB DT COMMAND
+diff -ruN procps-3.1.15.old/test/ps/old-m-3/setup procps-3.1.15/test/ps/old-m-3/setup
+--- procps-3.1.15.old/test/ps/old-m-3/setup	2003-09-02 09:47:58.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-3/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export CMD_ENV=old
+-ARGS="m"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/old-m-4/header procps-3.1.15/test/ps/old-m-4/header
+--- procps-3.1.15.old/test/ps/old-m-4/header	2003-09-02 09:47:16.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-4/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY MAJFLT MINFLT TRS DRS SIZE SWAP RSS SHRD LIB DT COMMAND
+diff -ruN procps-3.1.15.old/test/ps/old-m-4/setup procps-3.1.15/test/ps/old-m-4/setup
+--- procps-3.1.15.old/test/ps/old-m-4/setup	2003-09-02 09:50:11.000000000 +1000
++++ procps-3.1.15/test/ps/old-m-4/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-export I_WANT_A_BROKEN_PS=
+-ARGS="-m"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/pcpu-sort-threaded/setup procps-3.1.15/test/ps/pcpu-sort-threaded/setup
+--- procps-3.1.15.old/test/ps/pcpu-sort-threaded/setup	2003-10-19 13:48:43.000000000 +1000
++++ procps-3.1.15/test/ps/pcpu-sort-threaded/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,8 +0,0 @@
+-ARGS="-e --sort=pcpu -o cp="
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  sort -n < stdout > sorted.tmp
+-  diff -Naurd stdout sorted.tmp >> /dev/null
+-}
+diff -ruN procps-3.1.15.old/test/ps/suv-conflicts/header procps-3.1.15/test/ps/suv-conflicts/header
+--- procps-3.1.15.old/test/ps/suv-conflicts/header	2003-10-02 12:12:30.000000000 +1000
++++ procps-3.1.15/test/ps/suv-conflicts/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/suv-conflicts/setup procps-3.1.15/test/ps/suv-conflicts/setup
+--- procps-3.1.15.old/test/ps/suv-conflicts/setup	2003-10-02 12:13:26.000000000 +1000
++++ procps-3.1.15/test/ps/suv-conflicts/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="suv"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/suv-conflicts/stderr procps-3.1.15/test/ps/suv-conflicts/stderr
+--- procps-3.1.15.old/test/ps/suv-conflicts/stderr	2003-10-02 12:13:41.000000000 +1000
++++ procps-3.1.15/test/ps/suv-conflicts/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Conflicting format options.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/sysv-selection/header procps-3.1.15/test/ps/sysv-selection/header
+--- procps-3.1.15.old/test/ps/sysv-selection/header	2003-09-04 16:13:34.000000000 +1000
++++ procps-3.1.15/test/ps/sysv-selection/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/sysv-selection/setup procps-3.1.15/test/ps/sysv-selection/setup
+--- procps-3.1.15.old/test/ps/sysv-selection/setup	2003-09-13 13:59:04.000000000 +1000
++++ procps-3.1.15/test/ps/sysv-selection/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,25 +0,0 @@
+-ARGS="-m"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-rm -f misc.tmp ready.tmp typescript.tmp
+-
+-./got-no-tty
+-# this'll do but... WHERE ARE THE MAN PAGES FOR PTY STUFF???
+-(SHELL=`pwd`/script-child script typescript.tmp &>/dev/null) &
+-while [ ! -f ready.tmp ] ; do sleep 0.01 ; done
+-. ready.tmp
+-
+-evalfn () {
+-   THIS_TTY=`tty | colrm 1 5`
+-   lines1=`awk '{print $2}' < stdout | sort -u | egrep "^($THIS_TTY)$"               | wc -l`
+-   lines3=`awk '{print $2}' < stdout | sort -u | egrep "^($SHELL_TTY|$THIS_TTY|\?)$" | wc -l`
+-   [ $lines1 == 1 ] && [ $lines3 == 1 ]
+-}
+-
+-killfn () {
+-  killall -9 got-no-tty
+-  kill -9 $SHELL_PID  # the others should freely die
+-  rm -f misc.tmp ready.tmp typescript.tmp
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-H/header procps-3.1.15/test/ps/thread-nosort-H/header
+--- procps-3.1.15.old/test/ps/thread-nosort-H/header	2003-10-20 10:57:52.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-H/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-H/setup procps-3.1.15/test/ps/thread-nosort-H/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-H/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-H/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once H"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 3 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-HL/header procps-3.1.15/test/ps/thread-nosort-HL/header
+--- procps-3.1.15.old/test/ps/thread-nosort-HL/header	2003-10-20 10:57:52.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-HL/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID LWP TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-HL/setup procps-3.1.15/test/ps/thread-nosort-HL/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-HL/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-HL/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once H -L"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 3 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-Hm/setup procps-3.1.15/test/ps/thread-nosort-Hm/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-Hm/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-Hm/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-C clone-once Hm"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-Hm/stderr procps-3.1.15/test/ps/thread-nosort-Hm/stderr
+--- procps-3.1.15.old/test/ps/thread-nosort-Hm/stderr	2003-10-20 10:58:35.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-Hm/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Thread flags conflict; can't use H with m or -m.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-L/header procps-3.1.15/test/ps/thread-nosort-L/header
+--- procps-3.1.15.old/test/ps/thread-nosort-L/header	2003-10-20 10:57:52.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-L/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID LWP TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-L/setup procps-3.1.15/test/ps/thread-nosort-L/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-L/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-L/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once -L"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 3 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-default/header procps-3.1.15/test/ps/thread-nosort-default/header
+--- procps-3.1.15.old/test/ps/thread-nosort-default/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-default/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-default/setup procps-3.1.15/test/ps/thread-nosort-default/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-default/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-default/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 2 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-m/header procps-3.1.15/test/ps/thread-nosort-m/header
+--- procps-3.1.15.old/test/ps/thread-nosort-m/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-m/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-m/setup procps-3.1.15/test/ps/thread-nosort-m/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-m/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-m/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once m"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 4 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-mL/header procps-3.1.15/test/ps/thread-nosort-mL/header
+--- procps-3.1.15.old/test/ps/thread-nosort-mL/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-mL/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID LWP TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/thread-nosort-mL/setup procps-3.1.15/test/ps/thread-nosort-mL/setup
+--- procps-3.1.15.old/test/ps/thread-nosort-mL/setup	2003-10-20 10:50:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-nosort-mL/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once -mL"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 4 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-H/header procps-3.1.15/test/ps/thread-sorted-H/header
+--- procps-3.1.15.old/test/ps/thread-sorted-H/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-H/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-H/setup procps-3.1.15/test/ps/thread-sorted-H/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-H/setup	2003-10-20 10:45:59.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-H/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once --sort=pid H"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 3 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-HL/header procps-3.1.15/test/ps/thread-sorted-HL/header
+--- procps-3.1.15.old/test/ps/thread-sorted-HL/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-HL/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID LWP TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-HL/setup procps-3.1.15/test/ps/thread-sorted-HL/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-HL/setup	2003-10-20 10:45:16.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-HL/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once --sort=pid H -L"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 3 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-Hm/setup procps-3.1.15/test/ps/thread-sorted-Hm/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-Hm/setup	2003-10-20 10:47:00.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-Hm/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-C clone-once --sort=pid Hm"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-Hm/stderr procps-3.1.15/test/ps/thread-sorted-Hm/stderr
+--- procps-3.1.15.old/test/ps/thread-sorted-Hm/stderr	2003-10-20 10:58:47.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-Hm/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Thread flags conflict; can't use H with m or -m.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-L/header procps-3.1.15/test/ps/thread-sorted-L/header
+--- procps-3.1.15.old/test/ps/thread-sorted-L/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-L/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID LWP TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-L/setup procps-3.1.15/test/ps/thread-sorted-L/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-L/setup	2003-10-20 10:45:35.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-L/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once --sort=pid -L"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 3 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-default/header procps-3.1.15/test/ps/thread-sorted-default/header
+--- procps-3.1.15.old/test/ps/thread-sorted-default/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-default/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-default/setup procps-3.1.15/test/ps/thread-sorted-default/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-default/setup	2003-10-20 10:47:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-default/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once --sort=pid"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 2 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-m/header procps-3.1.15/test/ps/thread-sorted-m/header
+--- procps-3.1.15.old/test/ps/thread-sorted-m/header	2003-10-20 10:57:53.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-m/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY STAT TIME COMMAND
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-m/setup procps-3.1.15/test/ps/thread-sorted-m/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-m/setup	2003-10-20 10:42:59.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-m/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once --sort=pid m"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 4 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-mL/header procps-3.1.15/test/ps/thread-sorted-mL/header
+--- procps-3.1.15.old/test/ps/thread-sorted-mL/header	2003-10-20 10:57:54.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-mL/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID LWP TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/thread-sorted-mL/setup procps-3.1.15/test/ps/thread-sorted-mL/setup
+--- procps-3.1.15.old/test/ps/thread-sorted-mL/setup	2003-10-20 10:44:46.000000000 +1000
++++ procps-3.1.15/test/ps/thread-sorted-mL/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C clone-once --sort=pid -mL"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./clone-once
+-
+-evalfn () {
+-   [ `wc -l < stdout` == 4 ]
+-}
+-
+-killfn () {
+-  killall -9 clone-once
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-comm/setup procps-3.1.15/test/ps/unix-comm/setup
+--- procps-3.1.15.old/test/ps/unix-comm/setup	2003-09-02 10:33:46.000000000 +1000
++++ procps-3.1.15/test/ps/unix-comm/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,7 +0,0 @@
+-ARGS=
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  grep "ps$" stdout >> /dev/null
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-doc/setup procps-3.1.15/test/ps/unix-doc/setup
+--- procps-3.1.15.old/test/ps/unix-doc/setup	2003-09-03 13:38:37.000000000 +1000
++++ procps-3.1.15/test/ps/unix-doc/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,37 +0,0 @@
+-# The UNIX+POSIX standard requires that, except for "args" and "comm",
+-# the documentation must warn about any implementation-defined
+-# format specifiers that may contain blanks.
+-#
+-# Using "ps L" to grab the list isn't proper, but it's needed.
+-#
+-# This is our list for the man page:
+-#
+-#args         COMMAND 
+-#cmd          CMD     
+-#comm         COMMAND 
+-#command      COMMAND 
+-#fname        COMMAND 
+-#ucmd         CMD     
+-#ucomm        COMMAND 
+-#lstart       STARTED 
+-#bsdstart     START   
+-#start        STARTED 
+-
+-# It gets to 819 last I checked
+-export COLUMNS=1111
+-
+-biglist=`$TESTME L \
+-  | egrep -v '^(comm|args|cmd|comm|command|fname|ucmd|ucomm|lstart|bsdstart|start) ' \
+-  | awk '{printf("%s,",$1);}'`
+-numcols=`echo $biglist | tr -dc , | wc -c`
+-
+-ARGS=-eo$biglist
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  while read -a myarray; do
+-    [ ${#myarray[*]} == $numcols ] || return 1
+-  done < stdout
+-  return 0
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-f-args/setup procps-3.1.15/test/ps/unix-f-args/setup
+--- procps-3.1.15.old/test/ps/unix-f-args/setup	2003-09-02 10:33:18.000000000 +1000
++++ procps-3.1.15/test/ps/unix-f-args/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,7 +0,0 @@
+-ARGS="-f"
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  grep "ps -f$" stdout >> /dev/null
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-f-header/header procps-3.1.15/test/ps/unix-f-header/header
+--- procps-3.1.15.old/test/ps/unix-f-header/header	2003-09-02 08:40:35.000000000 +1000
++++ procps-3.1.15/test/ps/unix-f-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- UID PID PPID C STIME TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/unix-f-header/setup procps-3.1.15/test/ps/unix-f-header/setup
+--- procps-3.1.15.old/test/ps/unix-f-header/setup	2003-09-02 08:37:18.000000000 +1000
++++ procps-3.1.15/test/ps/unix-f-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-f"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-fl-header/header procps-3.1.15/test/ps/unix-fl-header/header
+--- procps-3.1.15.old/test/ps/unix-fl-header/header	2003-09-02 08:53:56.000000000 +1000
++++ procps-3.1.15/test/ps/unix-fl-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/unix-fl-header/setup procps-3.1.15/test/ps/unix-fl-header/setup
+--- procps-3.1.15.old/test/ps/unix-fl-header/setup	2003-09-02 08:55:32.000000000 +1000
++++ procps-3.1.15/test/ps/unix-fl-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-fl"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-header/header procps-3.1.15/test/ps/unix-header/header
+--- procps-3.1.15.old/test/ps/unix-header/header	2003-09-02 08:53:56.000000000 +1000
++++ procps-3.1.15/test/ps/unix-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/unix-header/setup procps-3.1.15/test/ps/unix-header/setup
+--- procps-3.1.15.old/test/ps/unix-header/setup	2003-09-02 08:55:09.000000000 +1000
++++ procps-3.1.15/test/ps/unix-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS=
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-l-header/header procps-3.1.15/test/ps/unix-l-header/header
+--- procps-3.1.15.old/test/ps/unix-l-header/header	2003-09-02 08:53:56.000000000 +1000
++++ procps-3.1.15/test/ps/unix-l-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/unix-l-header/setup procps-3.1.15/test/ps/unix-l-header/setup
+--- procps-3.1.15.old/test/ps/unix-l-header/setup	2003-09-02 08:55:49.000000000 +1000
++++ procps-3.1.15/test/ps/unix-l-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-l"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-lf-header/header procps-3.1.15/test/ps/unix-lf-header/header
+--- procps-3.1.15.old/test/ps/unix-lf-header/header	2003-09-02 08:53:56.000000000 +1000
++++ procps-3.1.15/test/ps/unix-lf-header/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/unix-lf-header/setup procps-3.1.15/test/ps/unix-lf-header/setup
+--- procps-3.1.15.old/test/ps/unix-lf-header/setup	2003-09-02 08:55:39.000000000 +1000
++++ procps-3.1.15/test/ps/unix-lf-header/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-lf"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-all/header procps-3.1.15/test/ps/unix-o-header-all/header
+--- procps-3.1.15.old/test/ps/unix-o-header-all/header	2003-09-02 09:23:24.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-all/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- COMMAND COMMAND ELAPSED GROUP NI %CPU PGID PID PPID RGROUP RUSER TIME TT USER VSZ
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-all/setup procps-3.1.15/test/ps/unix-o-header-all/setup
+--- procps-3.1.15.old/test/ps/unix-o-header-all/setup	2003-09-02 09:23:11.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-all/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o args,comm,etime,group,nice,pcpu,pgid,pid,ppid,rgroup,ruser,time,tty,user,vsz"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-dup/header procps-3.1.15/test/ps/unix-o-header-dup/header
+--- procps-3.1.15.old/test/ps/unix-o-header-dup/header	2003-09-02 09:16:50.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-dup/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TT PID PPID
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-dup/setup procps-3.1.15/test/ps/unix-o-header-dup/setup
+--- procps-3.1.15.old/test/ps/unix-o-header-dup/setup	2003-09-02 09:16:22.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-dup/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o pid,tty -o pid,ppid"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-evil/header procps-3.1.15/test/ps/unix-o-header-evil/header
+--- procps-3.1.15.old/test/ps/unix-o-header-evil/header	2003-09-02 12:39:36.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-evil/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PPID PID FOO,tty PPID
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-evil/setup procps-3.1.15/test/ps/unix-o-header-evil/setup
+--- procps-3.1.15.old/test/ps/unix-o-header-evil/setup	2003-09-02 12:39:19.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-evil/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-o ppid -o pid,ppid=FOO,tty -o ppid"
+-GOOD=0
+diff -ruN procps-3.1.15.old/test/ps/unix-o-header-nil/setup procps-3.1.15/test/ps/unix-o-header-nil/setup
+--- procps-3.1.15.old/test/ps/unix-o-header-nil/setup	2003-09-02 10:08:33.000000000 +1000
++++ procps-3.1.15/test/ps/unix-o-header-nil/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,7 +0,0 @@
+-ARGS="-o pid="
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  ! grep PID stdout >> /dev/null
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-selection/header procps-3.1.15/test/ps/unix-selection/header
+--- procps-3.1.15.old/test/ps/unix-selection/header	2003-09-04 16:13:48.000000000 +1000
++++ procps-3.1.15/test/ps/unix-selection/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- PID TTY TIME CMD
+diff -ruN procps-3.1.15.old/test/ps/unix-selection/setup procps-3.1.15/test/ps/unix-selection/setup
+--- procps-3.1.15.old/test/ps/unix-selection/setup	2003-09-13 14:00:48.000000000 +1000
++++ procps-3.1.15/test/ps/unix-selection/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,25 +0,0 @@
+-ARGS=
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-rm -f misc.tmp ready.tmp typescript.tmp
+-
+-./got-no-tty
+-# this'll do but... WHERE ARE THE MAN PAGES FOR PTY STUFF???
+-(SHELL=`pwd`/script-child script typescript.tmp &>/dev/null) &
+-while [ ! -f ready.tmp ] ; do sleep 0.01 ; done
+-. ready.tmp
+-
+-evalfn () {
+-   THIS_TTY=`tty | colrm 1 5`
+-   lines1=`awk '{print $2}' < stdout | sort -u | egrep "^($THIS_TTY)$"               | wc -l`
+-   lines3=`awk '{print $2}' < stdout | sort -u | egrep "^($SHELL_TTY|$THIS_TTY|\?)$" | wc -l`
+-   [ $lines1 == 1 ] && [ $lines3 == 1 ]
+-}
+-
+-killfn () {
+-  killall -9 got-no-tty
+-  kill -9 $SHELL_PID  # the others should freely die
+-  rm -f misc.tmp ready.tmp typescript.tmp
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-tty-default/setup procps-3.1.15/test/ps/unix-tty-default/setup
+--- procps-3.1.15.old/test/ps/unix-tty-default/setup	2003-09-02 11:36:37.000000000 +1000
++++ procps-3.1.15/test/ps/unix-tty-default/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS=
+-GOOD=0
+-EVALFN=1
+-
+-# default output is restricted to this tty
+-MYTTY=`tty`
+-
+-evalfn () {
+-  PSTTY=`awk '!/TTY/{print $2}' < stdout | uniq`
+-  if [ /dev/$PSTTY != $MYTTY ] ; then
+-    return 1
+-  fi
+-  return 0
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-tty-name/setup procps-3.1.15/test/ps/unix-tty-name/setup
+--- procps-3.1.15.old/test/ps/unix-tty-name/setup	2003-09-02 10:42:55.000000000 +1000
++++ procps-3.1.15/test/ps/unix-tty-name/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,9 +0,0 @@
+-ARGS="-otty= -p$$"
+-GOOD=0
+-EVALFN=1
+-
+-evalfn () {
+-  MYTTY=`tty`
+-  PSTTY=`printf /dev/ ; cat stdout`
+-  [ $MYTTY == $PSTTY ]
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-tty-names/setup procps-3.1.15/test/ps/unix-tty-names/setup
+--- procps-3.1.15.old/test/ps/unix-tty-names/setup	2003-09-02 11:17:09.000000000 +1000
++++ procps-3.1.15/test/ps/unix-tty-names/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,26 +0,0 @@
+-ARGS="-eotty="
+-GOOD=0
+-EVALFN=1
+-
+-# the UNIX spec allows:
+-#
+-# /dev/ttyS0   as ttyS0
+-# /dev/ttyS0   as S0          (OK to chop a leading "tty")
+-# /dev/console as console
+-# /foo/bar     as bar or /foo/bar  (poorly unspecified)
+-# -nothing-    as ? or -           (poorly unspecified, we use '?')
+-#
+-# Also, the format must agree with what "who" uses.
+-# Linux "who" doesn't strip "tty" off of /dev/ttyS0, etc.,
+-# so that's illegal in a Linux environment.
+-#
+-# junk the '?' to avoid shell wildcard expansion
+-
+-evalfn () {
+-  for i in `tr -d '?' < stdout | sort -u` ; do
+-    if [ ! -c /dev/$i -a ! -c /$i ] ; then
+-      return 1
+-    fi
+-  done
+-  return 0
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-vsz/setup procps-3.1.15/test/ps/unix-vsz/setup
+--- procps-3.1.15.old/test/ps/unix-vsz/setup	2003-09-11 10:24:38.000000000 +1000
++++ procps-3.1.15/test/ps/unix-vsz/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,27 +0,0 @@
+-# The standard describes the "vsz" format as:
+-#        The size of the process in (virtual) memory
+-#        in 1024 byte units as a decimal integer.
+-#
+-# It's hard to tell 1000-byte from 1024-byte units,
+-# but easy to tell 1024-byte from 512-byte or 2 kB.
+-# On a 64-bit system, watch for 4 GB troubles as well.
+-
+-# throw in the PID to ensure whitespace on the left
+-ARGS="-C gigabyte -o pid= -o vsz="
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-BITSIZE=`./gigabyte`
+-
+-evalfn () {
+-  if [ $BITSIZE == 32bit ] ; then
+-    egrep ' 1......$' stdout >> /dev/null
+-  else
+-    egrep ' 1.......$' stdout >> /dev/null
+-  fi
+-}
+-
+-killfn () {
+-  killall -9 gigabyte
+-}
+diff -ruN procps-3.1.15.old/test/ps/unix-wchan/setup procps-3.1.15/test/ps/unix-wchan/setup
+--- procps-3.1.15.old/test/ps/unix-wchan/setup	2003-09-02 12:25:15.000000000 +1000
++++ procps-3.1.15/test/ps/unix-wchan/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,11 +0,0 @@
+-ARGS="-eowchan="
+-GOOD=0
+-EVALFN=1
+-
+-# Make sure we're getting back real wchan data,
+-# not just "WCHAN", "-", "0", "*", and hex digits.
+-# Assumes usage of letters [g-z].
+-
+-evalfn () {
+-  egrep '[g-z]' stdout >> /dev/null
+-}
+diff -ruN procps-3.1.15.old/test/ps/y-needs-l/header procps-3.1.15/test/ps/y-needs-l/header
+--- procps-3.1.15.old/test/ps/y-needs-l/header	2003-10-02 12:10:34.000000000 +1000
++++ procps-3.1.15/test/ps/y-needs-l/header	1970-01-01 10:00:00.000000000 +1000
+@@ -1 +0,0 @@
+- 
+\ No newline at end of file
+diff -ruN procps-3.1.15.old/test/ps/y-needs-l/setup procps-3.1.15/test/ps/y-needs-l/setup
+--- procps-3.1.15.old/test/ps/y-needs-l/setup	2003-10-02 12:10:45.000000000 +1000
++++ procps-3.1.15/test/ps/y-needs-l/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,2 +0,0 @@
+-ARGS="-y"
+-GOOD=1
+diff -ruN procps-3.1.15.old/test/ps/y-needs-l/stderr procps-3.1.15/test/ps/y-needs-l/stderr
+--- procps-3.1.15.old/test/ps/y-needs-l/stderr	2003-10-02 12:10:56.000000000 +1000
++++ procps-3.1.15/test/ps/y-needs-l/stderr	1970-01-01 10:00:00.000000000 +1000
+@@ -1,23 +0,0 @@
+-ERROR: Modifier -y without format -l makes no sense.
+-********* simple selection *********  ********* selection by list *********
+--A all processes                      -C by command name
+--N negate selection                   -G by real group ID (supports names)
+--a all w/ tty except session leaders  -U by real user ID (supports names)
+--d all except session leaders         -g by session leader OR by group name
+--e all processes                      -p by process ID
+-T  all processes on this terminal     -s processes in the sessions given
+-a  all w/ tty, including other users  -t by tty
+-g  all, even group leaders!           -u by effective user ID (supports names)
+-r  only running processes             U  processes for specified users
+-x  processes w/o controlling ttys     t  by tty
+-*********** output format **********  *********** long options ***********
+--o,o user-defined  -f full            --Group --User --pid --cols --ppid
+--j,j job control   s  signal          --group --user --sid --rows
+--O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
+--l,l long          u  user-oriented   --sort --tty --forest --version
+--F   extra full    X  registers       --heading --no-heading
+-                    ********* misc options *********
+--V,V show version       L  list format codes  f  ASCII art forest
+--m,m show threads       S  children in sum    -y change -l format
+--n,N set namelist file  c  true command name  n  numeric WCHAN,UID
+--w,w wide output        e  show environment   -H process hierarchy
+diff -ruN procps-3.1.15.old/test/ps/zombie-args/setup procps-3.1.15/test/ps/zombie-args/setup
+--- procps-3.1.15.old/test/ps/zombie-args/setup	2003-09-04 13:43:31.000000000 +1000
++++ procps-3.1.15/test/ps/zombie-args/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,18 +0,0 @@
+-ARGS="-H -C the_living_dead -o args"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-# the -H is just to ensure predictable output ordering
+-
+-# assumes that the processes won't get swapped out before ps runs
+-
+-./the_living_dead
+-
+-evalfn () {
+-  diff -Naurd stdout $TESTNAME/stdout >> /dev/null
+-}
+-
+-killfn () {
+-  killall -9 the_living_dead
+-}
+diff -ruN procps-3.1.15.old/test/ps/zombie-args/stdout procps-3.1.15/test/ps/zombie-args/stdout
+--- procps-3.1.15.old/test/ps/zombie-args/stdout	2003-09-04 13:44:01.000000000 +1000
++++ procps-3.1.15/test/ps/zombie-args/stdout	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-COMMAND
+-./the_living_dead
+-  [the_living_dead] <defunct>
+diff -ruN procps-3.1.15.old/test/ps/zombie-comm/setup procps-3.1.15/test/ps/zombie-comm/setup
+--- procps-3.1.15.old/test/ps/zombie-comm/setup	2003-09-04 13:43:44.000000000 +1000
++++ procps-3.1.15/test/ps/zombie-comm/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,16 +0,0 @@
+-ARGS="-H -C the_living_dead -o comm"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-# the -H is just to ensure predictable output ordering
+-
+-./the_living_dead
+-
+-evalfn () {
+-  diff -Naurd stdout $TESTNAME/stdout >> /dev/null
+-}
+-
+-killfn () {
+-  killall -9 the_living_dead
+-}
+diff -ruN procps-3.1.15.old/test/ps/zombie-comm/stdout procps-3.1.15/test/ps/zombie-comm/stdout
+--- procps-3.1.15.old/test/ps/zombie-comm/stdout	2003-09-04 13:44:12.000000000 +1000
++++ procps-3.1.15/test/ps/zombie-comm/stdout	1970-01-01 10:00:00.000000000 +1000
+@@ -1,3 +0,0 @@
+-COMMAND
+-the_living_dead
+-  the_living_dead <defunct>
+diff -ruN procps-3.1.15.old/test/ps/zombie-wchan/setup procps-3.1.15/test/ps/zombie-wchan/setup
+--- procps-3.1.15.old/test/ps/zombie-wchan/setup	2003-09-04 13:52:41.000000000 +1000
++++ procps-3.1.15/test/ps/zombie-wchan/setup	1970-01-01 10:00:00.000000000 +1000
+@@ -1,14 +0,0 @@
+-ARGS="-C the_living_dead -o wchan,stat,comm"
+-GOOD=0
+-EVALFN=1
+-KILLFN=1
+-
+-./the_living_dead
+-
+-evalfn () {
+-  egrep 'exit.*Z.*defunct' stdout >> /dev/null
+-}
+-
+-killfn () {
+-  killall -9 the_living_dead
+-}
+diff -ruN procps-3.1.15.old/test/runtests procps-3.1.15/test/runtests
+--- procps-3.1.15.old/test/runtests	2003-09-03 12:09:08.000000000 +1000
++++ procps-3.1.15/test/runtests	1970-01-01 10:00:00.000000000 +1000
+@@ -1,4 +0,0 @@
+-#!/bin/bash
+-
+-export TESTME=${PSPROG:-../ps/ps}
+-for i in ps/*-* ; do ./onetest $i ; done
+diff -ruN procps-3.1.15.old/test/script-child procps-3.1.15/test/script-child
+--- procps-3.1.15.old/test/script-child	2003-09-04 14:43:28.000000000 +1000
++++ procps-3.1.15/test/script-child	1970-01-01 10:00:00.000000000 +1000
+@@ -1,10 +0,0 @@
+-#!/bin/bash
+-#
+-# usage:
+-# SHELL=/path/to/this/script script trashfile
+-
+-echo SCRIPT_PID=$PPID > misc.tmp
+-echo SHELL_PID=$$ >> misc.tmp
+-echo SHELL_TTY=`/usr/bin/tty | colrm 1 5` >> misc.tmp
+-mv misc.tmp ready.tmp   # atomic op
+-while /bin/true ; do sleep 42 ; done
+diff -ruN procps-3.1.15.old/test/sid-breaks-ttys.c procps-3.1.15/test/sid-breaks-ttys.c
+--- procps-3.1.15.old/test/sid-breaks-ttys.c	2003-09-08 13:28:24.000000000 +1000
++++ procps-3.1.15/test/sid-breaks-ttys.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,38 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-
+-static pid_t one;
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  (void)argc;
+-  (void)argv;
+-
+-  one = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-  // second one exits, to enable setsid(), and the resulting
+-  // zombie will be reaped by init after 1st process killed
+-  if(fork()) _exit(0);
+-
+-  if(setsid()==-1){
+-    kill(one,SIGKILL); // hopefully the shell will complain
+-    _exit(42); // kind of tough to report errors
+-  }
+-
+-  kill(one,SIGHUP); // let the shell know we're ready
+-
+-  hang();
+-
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/sidious.c procps-3.1.15/test/sidious.c
+--- procps-3.1.15.old/test/sidious.c	2003-09-08 13:58:20.000000000 +1000
++++ procps-3.1.15/test/sidious.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,77 +0,0 @@
+-// ps fTo sess,pgid,pid,tty,ppid,tpgid,args -C a.out
+-
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <stdlib.h> // undocumented grantpt,unlockpt,ptsname,openpt,posix_openpt
+-//#include <pty.h>    // undocumented openpty,forkpty
+-
+-static pid_t one;
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-//static void sigchld_handler(int signo){
+-//  (void)signo;
+-//  kill(one,SIGHUP);          // kill parent
+-//}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  int master;
+-  int slave;
+-
+-  (void)argc;
+-  (void)argv;
+-
+-  one = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-  // second one exits, to enable setsid(), and the resulting
+-  // zombie will be reaped by init after 1st process killed
+-  if(fork()) _exit(0);
+-
+-
+-  master = open("/dev/ptmx", O_RDWR|O_NOCTTY);
+-
+-  // could fork, but don't bother
+-  // (won't be doing anything with the master side)
+-
+-  // could change child's UID, but don't bother
+-  // (would make the tests require running as root)
+-
+-  // not in the man pages!!!
+-  grantpt(master);
+-  unlockpt(master);
+-
+-  if(setsid()==-1){
+-    kill(one,SIGKILL); // hopefully the shell will complain
+-    _exit(42); // kind of tough to report errors
+-  }
+-
+-  slave = open(ptsname(master), O_RDWR);
+-#ifdef I_PUSH
+-  // push STREAMS tty stuff, just to have an example of it
+-  ioctl(slave, I_PUSH, "ptem");
+-  ioctl(slave, I_PUSH, "ldterm");
+-#endif
+-#ifdef TIOCSCTTY
+-  // On SysV, slave open got us a TTY. On BSD, we must do this:
+-  ioctl(fd, TIOCSCTTY, NULL);
+-#endif
+-
+-
+-  kill(one,SIGHUP); // let the shell know we're ready
+-
+-  hang();
+-
+-  return 0;
+-}
+diff -ruN procps-3.1.15.old/test/th.c procps-3.1.15/test/th.c
+--- procps-3.1.15.old/test/th.c	2003-09-14 01:35:42.000000000 +1000
++++ procps-3.1.15/test/th.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,16 +0,0 @@
+-#include <unistd.h>
+-#include <pthread.h>
+-
+-void *hanger(void *vp){
+-  (void)vp;
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  pthread_t thread;
+-  (void)argc;
+-  (void)argv;
+-  pthread_create(&thread, NULL, hanger, NULL);
+-  hanger(NULL);
+-  return 0; // keep gcc happy
+-}
+diff -ruN procps-3.1.15.old/test/the_living_dead.c procps-3.1.15/test/the_living_dead.c
+--- procps-3.1.15.old/test/the_living_dead.c	2003-09-04 13:36:54.000000000 +1000
++++ procps-3.1.15/test/the_living_dead.c	1970-01-01 10:00:00.000000000 +1000
+@@ -1,39 +0,0 @@
+-#include <sys/types.h>
+-#include <unistd.h>
+-#include <signal.h>
+-
+-static pid_t one;
+-
+-static void die(int signo){
+-  (void)signo;
+-  _exit(0);
+-}
+-
+-static void sigchld_handler(int signo){
+-  (void)signo;
+-  kill(one,SIGHUP);          // kill parent
+-}
+-
+-static void hang(void){
+-  for(;;) pause();
+-}
+-
+-int main(int argc, char *argv[]){
+-  pid_t three;
+-
+-  (void)argc;
+-  (void)argv;
+-
+-  one = getpid();
+-  signal(SIGHUP,die);
+-  if(fork()) hang();    // parent later killed as readyness signal
+-
+-  three = fork();
+-  if(three){
+-    signal(SIGCHLD,sigchld_handler);
+-    kill(three,SIGHUP);   // create the zombie
+-  }
+-
+-  hang();
+-  return 0;
+-}
--- procps-3.1.15.orig/debian/control
+++ procps-3.1.15/debian/control
@@ -0,0 +1,31 @@
+Source: procps
+Section: base
+Priority: required
+Maintainer: Craig Small <csmall@debian.org>
+Build-Depends: debhelper (>> 4.1.1), libncurses5-dev, make (>= 3.78.1-8), dpatch
+Standards-Version: 3.6.0
+
+Package: procps
+Architecture: any
+Provides: watch
+Depends: ${shlibs:Depends}
+Conflicts: watch, libproc-dev (<< 1:1.2.6-2), w-bassman (<< 1.0-3), procps-nonfree, pgrep (<< 3.3-5)
+Replaces: watch, bsdutils (<< 2.9x-1)
+Recommends: psmisc
+Description: The /proc file system utilities
+ These are utilities to browse the /proc filesystem, which is not a real file
+ system but a way for the kernel to provide information about the status of
+ entries in its process table. (e.g. running, stopped or "zombie")
+ Both command line and full screen utilities are provided. Ncurses is needed
+ for the full screen utilities.  More information can be found at procps
+ website http://procps.sf.net/
+
+Package: libproc-dev
+Architecture: any
+Section: libdevel
+Priority: optional
+Depends: libc6-dev, procps (= ${Source-Version})
+Description: library for accessing process information from /proc
+ These are the header files for libproc. Some packages using libproc
+ to access process information from /proc need these to compile.
+
--- procps-3.1.15.orig/debian/rules
+++ procps-3.1.15/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# Include dpatch stuff
+include /usr/share/dpatch/dpatch.make
+
+PACKAGE="procps"
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+	INSTALL_PROGRAM += -s
+endif
+
+
+build: build-stamp
+
+build-stamp: patch-stamp
+	dh_testdir
+
+	# Add here commands to compile the package.
+	mkdir static
+	SHARED=0 $(MAKE) proc/libproc.a
+	mv proc/libproc.a static
+	$(MAKE) clean
+	$(MAKE) W_SHOWFROM=\-DW_SHOWFROM
+
+	touch build-stamp
+
+clean: clean1 unpatch
+clean1:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp 
+
+	# Add here commands to clean up after the build process.
+	-$(MAKE) clean
+	-rm -rf static
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	# Add here commands to install the package into debian/procps.
+	$(MAKE) ln_f="ln -sf" ldconfig=echo DESTDIR=$(CURDIR)/debian/procps install
+	install --mode 644 -o root -g root debian/sysctl.conf $(CURDIR)/debian/procps/etc
+	# Rename w as there are two of them
+	(cd $(CURDIR)/debian/procps/usr/bin && mv w w.procps )
+	(cd $(CURDIR)/debian/procps/usr/share/man/man1 && mv w.1 w.procps.1 )
+
+	# Work-around until proc includes fixed
+	(cp proc/*.h $(CURDIR)/debian/procps/usr/include/proc)
+	cp static/libproc.a $(CURDIR)/debian/libproc-dev/usr/lib
+
+	dh_movefiles --sourcedir=debian/procps
+	rmdir $(CURDIR)/debian/procps/usr/include/proc
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+#	dh_installdebconf	
+	dh_installdocs
+	dh_installexamples
+	dh_installmenu
+#	dh_installlogrotate
+#	dh_installemacsen
+#	dh_installpam
+#	dh_installmime
+	dh_installinit --update-rcd-params='start 30 S .' --init-script='procps.sh'
+#	dh_installcron
+	dh_installman
+	dh_installinfo
+#	dh_undocumented
+	dh_installchangelogs NEWS
+	dh_link
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_makeshlibs -V "procps (>= 3.1.14), procps (<< 3.1.15)"
+	dh_installdeb
+#	dh_perl
+	dh_shlibdeps -Lprocps -ldebian/procps/lib
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install patch unpatch clean1
--- procps-3.1.15.orig/debian/changelog
+++ procps-3.1.15/debian/changelog
@@ -0,0 +1,743 @@
+procps (1:3.1.15-2) unstable; urgency=low
+
+  * Removed offending test directory Closes: #227933
+
+ -- Craig Small <csmall@debian.org>  Tue, 20 Jan 2004 10:20:44 +1100
+
+procps (1:3.1.15-1) unstable; urgency=low
+
+  * Now uses dpatch to handle the various patches
+  * New upstream release
+    - Supports SELINUX flags for kernel v2.6 Closes: #193648
+    - Hide kernel PID bug Closes: #217278, #219730, #217525, #224470
+    - Fixed top auto-margins problem Closes: #217559
+  * Fix top manual page Closes: #225089
+  * Patch so SELINUX flags work in v2.4 kernels
+  * Extra +s in ps.1 removed Closes: #218220
+  * Added patch so sysctl has quiet -q flag Closes: #189100
+
+ -- Craig Small <csmall@debian.org>  Fri, 26 Dec 2003 18:02:59 +1100
+
+procps (1:3.1.14-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Craig Small <csmall@debian.org>  Wed, 22 Oct 2003 11:59:53 +1000
+
+procps (1:3.1.13-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Craig Small <csmall@debian.org>  Wed, 24 Sep 2003 16:10:42 +1000
+
+procps (1:3.1.12-1) unstable; urgency=low
+
+  * New upstream release
+    ps: $PS_FORMAT works properly Closes: #201575
+    man page: /var/run/utmp, not /etc/utmp Closes: #206583
+    required flags moved out of CFLAGS Closes: #205429
+    
+
+ -- Craig Small <csmall@debian.org>  Sat, 13 Sep 2003 21:11:09 +1000
+
+procps (1:3.1.11-2) unstable; urgency=low
+
+  * Made shlibs have a specific version Closes: #199118
+  * libproc.a is back in libproc-dev, use it
+  * Added README to libproc-dev for people who use the library
+
+ -- Craig Small <csmall@debian.org>  Wed, 20 Aug 2003 15:31:59 +1000
+
+procps (1:3.1.11-1) unstable; urgency=low
+
+  * 3.1.11 New upstream version
+    - handle GPLONLY_ symbols Closes: #143549, #188374
+  * freeproc now defined Closes: #189047
+  * warning in readproc.c fixed Closes: #197346
+  * Removed optarg and optind defines Closes: #197343
+  * Fixed saved_start_time warning Closes: #197342
+
+ -- Craig Small <csmall@debian.org>  Thu, 24 Jul 2003 17:02:36 +1000
+
+procps (1:3.1.9-1) unstable; urgency=low
+
+  * New upstream source
+  * memory sizes fixed for 64-bit w/ gcc 3.x Closes: #194376, #191933
+  * Doesn't segfault if /proc not mounted Closes: #172735
+  * No warning in top about memory key Closes: #188271
+  * More info in kill man page Closes: #182414
+  * Document the different oO options Closes: #169301
+  * Updated stabndards version to 3.5.9
+  * Changed disk to backing storage Closes: #175925
+
+ -- Craig Small <csmall@debian.org>  Mon,  2 Jun 2003 02:31:03 +1000
+
+procps (1:3.1.8-1) unstable; urgency=low
+
+  * New upstream release
+    watch man page fixed, Closes #182246
+  * Changed section for libproc-dev
+
+ -- Craig Small <csmall@debian.org>  Tue,  1 Apr 2003 10:19:05 +1000
+
+procps (1:3.1.6-1) unstable; urgency=low
+
+  * New upstream release
+    - watch has --no-title option Closes: #179862
+    - ps -C can compare very long names Closes: #178127
+  * Fixed descriptions in manual pages Closes: #179046
+  * w wont crash if /proc unreadable Closes: #169398
+
+ -- Craig Small <csmall@debian.org>  Sat, 22 Feb 2003 21:33:45 +1100
+
+procps (1:3.1.5-1) unstable; urgency=low
+
+  * New upstream version
+    - watch don't drop empty lines Closes: #171005 
+    - top has old sort keys Closes: #167249
+    - now count Inact_laundry as needed Closes: #172163
+
+ -- Craig Small <csmall@debian.org>  Mon,  6 Jan 2003 13:49:32 +1100
+
+procps (1:3.1.3-1) unstable; urgency=low
+
+  * New upstream source
+
+ -- Craig Small <csmall@debian.org>  Fri, 13 Dec 2002 16:16:36 +1100
+
+procps (1:3.1.1-1) unstable; urgency=low
+
+  * New upstream source
+    - vmstats reports memort counts Closes: #169774
+
+ -- Craig Small <csmall@debian.org>  Wed,  4 Dec 2002 15:57:13 +1100
+
+procps (1:3.1.0-1) unstable; urgency=low
+
+  * New upstream version
+    - vmstat displays IO-wait time instead of bogus "w"
+    - when IO-wait hidden, count as idle, not as sys
+    - pmap command added (like Sun has)
+  * Manual pages cleaned up Closes: #165970, #164481
+
+ -- Craig Small <csmall@debian.org>  Mon, 11 Nov 2002 12:03:46 +1100
+
+procps (1:3.0.5-1) unstable; urgency=low
+
+  * New upstream version
+    - top tolerates super-wide displays Closes: #165497
+    - ELF note warning gone for some kernels Closes: #165900
+    - Fix ps and top man pages a bit, dropped bugs severity.
+
+ -- Craig Small <csmall@debian.org>  Tue, 29 Oct 2002 22:04:36 +1100
+
+procps (1:3.0.4-1) unstable; urgency=low
+
+  * New upstream version
+    - ELF note warning removed Closes: #165093, #165343
+    - top works for most TERM= settings Closes: #164864, #164956
+  * w has FROM column again by default Closes: #165252
+  * debhelper dependency version fixed Closes: #165083
+  * ps.1 looks a bit better now Closes: #16448
+
+ -- Craig Small <csmall@debian.org>  Mon, 21 Oct 2002 08:30:04 +1000
+
+procps (1:3.0.3-1) unstable; urgency=low
+
+  * New upstream version
+    - w works with KOI8 locale Closes: #153043
+    - fix top for non-SMP 2.2.xx and 2.0.xx Closes: #164231
+    - negative idle time fixed Closes: #126260
+    - sysctl handles new vlan interface Closes: #140386
+    - vmstat documentation update Closes: #157935, #155684
+    - "skill -n blah blah blah" lets you test options Closes: #158630
+    - fixed ps --sort crash Closes: #164226
+    - vmstat compiles with latest gcc-3.x Closes: #164348
+    - bad (int*) cast in top removed Closes: #164468
+    - Support new/improved statistics interfaces in 2.5 /proc Closes: #164013
+    - top defaults to old layout and sort by pid Closes: #164277
+    - rant moved out of top.1 man page Closes: #164520
+    - top runs much faster Closes: #87779
+
+ -- Craig Small <csmall@debian.org>  Sat, 12 Oct 2002 21:44:23 +1000
+
+procps (1:3.0.0-2) unstable; urgency=low
+
+  * Fixed pkill and skill, auto* is so broken. Closes: #163940, #163944
+  * Moved libproc.so.3 into /lib as it's needed early Closes: #163981,#163899
+
+ -- Craig Small <csmall@debian.org>  Thu, 10 Oct 2002 07:19:45 +1000
+
+procps (1:3.0.0-1) unstable; urgency=low
+
+  * New upstream source Closes: #163698
+    - top has SMP Closes: #162316, #62282, #94896, #98277, #117040, #117735
+    - SELINUX support Closes: #142892
+    - top defaults to signal 15 to kill pids with Closes: #72158
+    - 64-bit time reduces the overflow problem  Closes: #82382, #155908
+    - "w" program better at determining what a user is doing 
+      Closes: #88758, 115529
+    - oldps is gone Closes: #101917
+    - Handles /proc/tty/drivers Closes: #108654, #154046
+    - Supports scanf where locale uses , for decimal point Closes: #126873
+    - uptime --help now calls itself uptime Closes: #128880
+    - ps faster Closes: #147731
+    - top calculates screen better Closes: #162296
+    - top allows sorts by pid or  swapped memory Closes: #79868, #159446
+    - support for s/390 Closes: #126295
+    - statm buffer size increased Closes: #145085
+    - new top has no typos Closes: #148918
+    - new top can handle lots of tasks Closes: #70900
+  * Fixed init.d file so it follows policy Closes: #121945
+
+ -- Craig Small <csmall@debian.org>  Tue,  8 Oct 2002 12:29:45 +1000
+
+procps (1:2.0.7-10) unstable; urgency=low
+
+  * Fixes ps crash when system.map is exact multiple of 1024
+    Thankyou Colin for the patch! Closes: #109237, #142292
+
+ -- Craig Small <csmall@eye-net.com.au>  Fri, 12 Apr 2002 21:02:04 +1000
+
+procps (1:2.0.7-9) unstable; urgency=low
+
+  * Sanity checking for Number of CPU Closes: #127561, #122617
+    This will keep the m68k and ARM boys happy.
+  * uptime usage fixed Closes: #138351
+  * kill man page NAME updated Closes: #119400
+  * Better explanation for load average in uptime(1) Closes: #140902
+  * utmp in correct location in w(1) Closes: #115725
+
+ -- Craig Small <csmall@eye-net.com.au>  Mon,  8 Apr 2002 14:18:20 +1000
+
+procps (1:2.0.7-8) unstable; urgency=low
+
+  * Removed -ggdb Closes: #117203
+
+ -- Craig Small <csmall@eye-net.com.au>  Sat, 27 Oct 2001 07:02:38 +1000
+
+procps (1:2.0.7-7) unstable; urgency=low
+
+  * Added os/390 patches Closes: #113494
+  * w manpage now gives correct location for utmp Closes: #110723
+  * watch wrap-around problem fixed Closes: #111759
+  * Programs are compilied -O2 Closes: #108652
+
+ -- Craig Small <csmall@eye-net.com.au>  Wed, 26 Sep 2001 08:08:43 +1000
+
+procps (1:2.0.7-6) unstable; urgency=low
+
+  * Re-fixed command line interpretation Closes: #103101
+
+ -- Craig Small <csmall@eye-net.com.au>  Tue, 10 Jul 2001 17:32:02 +1000
+
+procps (1:2.0.7-5) unstable; urgency=low
+
+  * watch now copys strings better. Closes: #95404, #97948, #99780
+  * skill.1 loads tbl Closes: #92242, #67899
+  * long usernames are shown Closes: #86205, #94957
+  * Remove /etc/rcS.d/S30procps with good ole rm Closes: #92184
+  * /etc/init.d/procps.sh calls itself that Closes: #93302
+  * Cannot write config in secure mode Closes: #93948
+
+ -- Craig Small <csmall@debian.org>  Sun, 29 Apr 2001 14:55:20 +1000
+
+procps (1:2.0.7-4) unstable; urgency=low
+
+  * watch doesnt crash with long command lines Closes: #88592, #87693
+  * bumped up a buffer in a proc read Closes: #85775
+  * Now we use 24 hour time Closes: #85640
+  * pgrep calls itself pgrep Closes: #86630
+  * Corrected symlink in libproc-dev Closes: #87865
+
+ -- Craig Small <csmall@debian.org>  Mon, 19 Mar 2001 10:13:27 +1100
+
+procps (1:2.0.7-3) unstable; urgency=low
+
+  * Conflicts with pgrep, so no more conflicts Closes: #82835
+  * Minor fixes to ps.1 manpage Closes: #81921
+  * watch highlighs correctly Closes: #77737
+  * top wont die with evil HOMEs, Closes: #81452
+  * removed reference to suidregister
+  * Remore -L reference in kill.1 Closes: #85913
+
+ -- Craig Small <csmall@debian.org>  Thu,  8 Feb 2001 12:44:58 +1100
+
+procps (1:2.0.7-2) unstable; urgency=medium
+
+  * Moved kill back again, dammit why is the makefile so broken
+    Closes: #82747
+  * Watch uses locale Closes: #82739
+  * top's scanf is protected from evil locale problems Closes: #82671, #69128
+    (Big thankyou to Guillaume for lending a test account)
+
+ -- Craig Small <csmall@debian.org>  Fri, 19 Jan 2001 09:15:36 +1100
+
+procps (1:2.0.7-1) unstable; urgency=medium
+
+  * New upstream version (010114)
+    - Merges 2.0.7 code from RedHat Closes: #80832
+    - Made note that Shared memory report will be junk due to kernel
+      Closes: #77818
+    - Remove html and null stuff from man page Closes: #81920
+    - vsize is kB in man page Closes: #82210
+    - man pages look better Closes: #70055, #70941
+    - vmstat increase Closes: #77886
+    - w tries harder to find things Closes: #24531
+    - 15 char user names Closes: #71211
+  * No HOME overflow in top Closes: 81452
+  * Added menu Hints Closes: #80051, #82324
+
+
+ -- Craig Small <csmall@debian.org>  Wed, 17 Jan 2001 08:57:24 +1100
+
+procps (1:2.0.6-9) unstable; urgency=medium
+
+  * added libncurses5-dev to build-depends, Closes: #67533
+  * Put kill back into /bin Closes #67580, #67582
+  * Put 2.0.6-7 ps.1 back in Closes: #67451
+
+ -- Craig Small <csmall@debian.org>  Tue, 25 Jul 2000 08:13:21 +1000
+
+procps (1:2.0.6-8) unstable; urgency=low
+
+  * New upstream source:
+  *  - sysctl EOF bug fixed Closes: #62877
+  *  - stop crashes with unmounted /proc Closes: #63512, #55177
+  *  - Versions checking tolerates RH /proc/ksyms Closes: #59798
+  *  - Top works better with SMP Closes: #34734, #56547, #59703
+
+ -- Craig Small <csmall@debian.org>  Fri, 14 Jul 2000 22:33:44 +1000
+
+procps (1:2.0.6-7) unstable; urgency=low
+
+  * Fixed missing version Closes: #62207, #62484, #59112
+  * Stop crashes with umounted /proc Closes: #63512, #55177
+  * Nicer man pages Closes: #63495, #59406
+  * Fixed sysctl eof bug Closes: #62877
+  * watch wraps properly Closes: #60913
+  * watch handles tabs Closes: #46213
+  * watch honors locale settings Closes: #63762
+  * now versioned replaces line for bsdutils
+
+ -- Craig Small <csmall@debian.org>  Mon, 29 May 2000 13:31:54 +1000
+
+procps (1:2.0.6-6) unstable; urgency=low
+
+  * New patchlevel (000221)
+  * ps 'f' ASCII art forest fixed. Closes: #57134, #58644
+  * let insane people run ps setuid. Closes: #56701
+  * note that kernel 2.3 is now faster. Closes: #49130
+  * top with WCHAN was leaking memory. Closes: #58172, #52257, #56889
+  * can show current CPU. Closes: #37023
+  * w looks better now. Closes: #55952
+  * init.d/procps removed if exists. Closes: #55137, #55852
+  * Fixed skill/snice man page (thanks man-db maint!) Closes: #53736, #46743
+  * Fixed ps man page Closes: #58365
+
+ -- Craig Small <csmall@debian.org>  Wed, 23 Feb 2000 10:31:37 +1100
+
+procps (1:2.0.6-5) unstable; urgency=low
+
+  * New upstream source
+  * kill "_R(smp_|smp2gig_|2gig_)?[0-9a-fA-F]{8,}"  Closes: #54394, #53208
+  * added type 'S' and scan past machine types  Closes: #54396
+  * Fixed w(1) manpage Closes: #54709
+  * top now agrees with ps for RSS Closes: #52679
+
+ -- Craig Small <csmall@debian.org>  Tue, 11 Jan 2000 08:23:56 +1100
+
+procps (1:2.0.6-4) unstable; urgency=low
+
+  * procps init.d script quietly dies if not /etc/default/rcS Closes:
+    #52839
+  * Put the NEWS changelog back in Closes: #52678
+  * Fixed that damn Rsmp annoying message bug Closes: #48686
+  * Remove /etc/init.d/procps Closes: #53818
+
+ -- Craig Small <csmall@debian.org>  Mon, 20 Dec 1999 11:14:53 +1100
+
+procps (1:2.0.6-3) unstable; urgency=low
+
+  * Patched ps so it complains if you chmod 711 /proc Closes: #52481
+  * Did the same for top.
+  * Ditto for oldps.
+  * Changed and int to a char* Closes: #52482
+  * sysctl.conf file references sysctl.conf (5) not 8 Closes: #52385
+  * props init.d script changed to procps.sh Closes: #52228
+
+ -- Craig Small <csmall@debian.org>  Mon, 13 Dec 1999 11:57:01 +1100
+
+procps (1:2.0.6-2) unstable; urgency=low
+
+  * Changed psmisc from reccomends to suggests
+  * %MEM now works, Closes: #50010 #50055 #50148 #50356
+  * top doesn't crash with > 204 processes Closes: #50055
+  * Another libproc fd leak fixed Closes: #45398
+  * ps silently ignores m and -m for future compatibility Closes: #48308
+  * Added a sysctl.conf and other files as suggested Closes: #51098
+  * Fix start field instability
+  * ps.1 fixed Closes: #35137
+
+ -- Craig Small <csmall@debian.org>  Tue,  7 Dec 1999 14:42:51 +1100
+
+procps (1:2.0.6-1) unstable; urgency=low
+
+  * New upstream
+  * sysctl crash fixed, Closes: #49015
+  * libproc file descriptor leak fixed, Closes: #45398
+  * False positive System.map mismatches killed, Closes: #49047
+  * Supports 64 Hz for StrongARM/Shark Closes: #47461
+  * pr_time fixed, Closes: #46223
+  * libc num cpu workaround back in, Closes: #49039
+  * Fixed kill manpage, Closes: #47018
+  * This version definitely, absolutely has kill, Closes: #46762
+
+
+ -- Craig Small <csmall@debian.org>  Fri,  5 Nov 1999 12:46:05 +1100
+
+procps (1:2.0.3-5) unstable; urgency=low
+
+  * Changed conflicts with replaces
+
+ -- Craig Small <csmall@debian.org>  Wed,  6 Oct 1999 14:36:48 +1000
+
+procps (1:2.0.3-4) unstable; urgency=low
+
+  * support SMP systems with versioned kernel modules Closes: #45621, #46465
+  * Added kill to this (it is removed from bsdutils).
+  * We now need kill manpage, Closes: #46004
+
+ -- Craig Small <csmall@debian.org>  Tue,  5 Oct 1999 10:28:01 +1000
+
+procps (1:2.0.3-3) unstable; urgency=low
+
+  * System.map support for non-i386 Closes: #45592, #45250
+  * Do not require /proc/ksyms Closes: #45128, #45132, #45619
+  * Alternative w.1 points to the right spot, Closes: #45331
+  * Copyright for skill and snice and ps fixed, Closes: #45119
+
+ -- Craig Small <csmall@debian.org>  Tue, 21 Sep 1999 16:31:59 +1000
+
+procps (1:2.0.3-2) unstable; urgency=medium
+
+  * Now with top! Closes: #45106
+
+ -- Craig Small <csmall@debian.org>  Wed, 15 Sep 1999 11:12:34 +1000
+
+procps (1:2.0.3-1) unstable; urgency=low
+
+  * New upstream source
+  * Debian personality does m flag Closes: #44832
+  * Corrected typo in top.1 Closes: #44836
+  * New improved watch Closes: #29970
+
+ -- Craig Small <csmall@debian.org>  Mon, 13 Sep 1999 16:59:16 +1000
+
+procps (1:2.0.2-4) unstable; urgency=high
+
+  * Fixed the nasty ps formatting problem (Bug #40859 #40856 #40839 )
+
+ -- Craig Small <csmall@debian.org>  Wed,  7 Jul 1999 08:41:54 +1000
+
+procps (1:2.0.2-3) unstable; urgency=low
+
+  * New upstream patches/source
+  * SMB Hz wierdness fixed (Bug #33023 #33284)
+  * non-tty output does not get chopped at 80 columns (bug #36688)
+  * BSD personalities set the default selection and output format (bug #36698)
+  * Fixed collumn spacing problem (Bug #35309)
+  * Work around for borken libs that return 0 processors (Bug #36902)
+  * skill now uses process name not command line (Bug #19208)
+
+ -- Craig Small <csmall@debian.org>  Mon,  5 Jul 1999 07:29:47 +1000
+
+procps (1:2.0.2-2) unstable; urgency=low
+
+  * Removed kill and manual page (Bug #36421 #36551 #36375)
+  * Put in patch for bogus sysconf return (Bug #36494 #36532 #36581)
+
+ -- Craig Small <csmall@debian.org>  Wed, 28 Apr 1999 09:04:59 +1000
+
+procps (1:2.0.2-1) unstable; urgency=low
+
+  * New upstream version (Bug #34394 #27291 #34250 #34956 #35240 #35247
+    #35520 #35756 #34580 )
+
+ -- Craig Small <csmall@debian.org>  Mon, 19 Apr 1999 13:26:48 +1000
+
+procps (1:2.0.0-1) unstable; urgency=low
+
+  * New upstream version (Bug #33083 23347 33462 10556 33266 33371 )
+   
+
+ -- Craig Small <csmall@debian.org>  Mon, 15 Mar 1999 14:21:57 +1100
+
+procps (1:1.9.0-2) unstable; urgency=low
+
+  * top now resumes (Bug #32106 )
+  * debhelper text problem fixed in postinst (Bug #32963 #33122 #33003 33117 )
+  * oldps and ps now use alternatives (Bug #33083 )
+  * ps s format now not ugly (Bug #28266 )
+  * watch command line help and man page correct (Bug #31702 )
+  * sessreg removed from package (Bug #32294 )
+  * ps doesn't display extra spaces (Bug #27799 )
+  * top has spaces in command lines again (Bug #33060 )
+  * ps now has personality (Bug #22923 #18429 )
+  * moved non-free skill and snice to non-free package.
+
+ -- Craig Small <csmall@debian.org>  Tue,  9 Feb 1999 15:10:58 +1100
+
+procps (1:1.9.0-1) unstable; urgency=low
+
+  * New Upstream source
+
+ -- Craig Small <csmall@debian.org>  Thu,  4 Feb 1999 14:48:37 +1100
+
+procps (1:1.2.9-3) unstable; urgency=low
+
+  * Linked to ncurses4
+
+ -- Craig Small <csmall@debian.org>  Fri, 30 Oct 1998 14:13:02 +1100
+
+procps (1:1.2.9-2) unstable; urgency=low
+
+  * top now has spaces in between command lines (Bug #28178 )
+  * --version or -V now shows proper version.
+
+ -- Craig Small <csmall@debian.org>  Mon, 26 Oct 1998 08:55:59 +1100
+
+procps (1:1.2.9-1) unstable; urgency=low
+
+  * New upstream version (Bug #27573 )
+  * Menu entry changed from System to Menu/System (Bug #27438 )
+  * Char variables changed to int for powerpc (Bug #26624 )
+  * libproc now nulls allocated structure (Bug #26225 )
+  * No longer uses psdevtab (yay!) (Bug #25388 )
+  * ps doesn't double space command line parameters (Bug #25306 #24293 )
+  * ps now silently ignores g flag for those BSD heads (Bug #24075 )  
+
+ -- Craig Small <csmall@debian.org>  Fri,  9 Oct 1998 09:15:11 +1000
+
+procps (1:1.2.7-2) unstable; urgency=low
+
+  * Top can suspend twice (or three times even) (Bug #22997 )
+  * Libraries properly built (Bug #20010 )
+
+ -- Craig Small <csmall@debian.org>  Mon,  1 Jun 1998 09:16:09 +1000
+
+procps (1:1.2.7-1) frozen unstable; urgency=high
+
+  * New upstream source, fixes security bug (Bug #21475)
+
+ -- Craig Small <csmall@debian.org>  Thu, 23 Apr 1998 08:04:54 +1000
+
+procps (1:1.2.6-2) unstable; urgency=low
+
+  * Fixed Shared library dependencies (bugs #18388 #18394 18392 )
+  * Conflicts with earlier versions of w-bassman (bug #18389 )
+
+ -- Craig Small <csmall@debian.org>  Mon, 23 Feb 1998 09:05:54 +1100
+
+procps (1:1.2.6-1) unstable; urgency=low
+
+  * New upstream source.
+  * xload is undiverted (Bug #17102 )
+  * ps_fields.7.gz removed (Bug #18090 )
+  * Colour patches removed, color-related bugs gone (Bug #18008 #17217 #18090 )
+  * POSIX patches removed, cmd line bugs gone (Bug #15537 )
+  * w is now an alternative w.procps (Bug #17960 )
+  * skill now works with process names (Bug #17087 )
+  * ps and top man pages have their field descriptions (Bug #17360 )
+  * ps u fixed (Bug #17313 )
+  * Source code is no longer FUBAR (Bug #17892 )
+  * top now redraws screen after config screen (Bug #11896 )
+  * Circular dependency removed (Bug #16966 )
+  * top does mess up screens with wrong cmd line (Bug #17230 )
+  * top suspends with ctrl-Z  (Bug #16703 )
+
+ -- Craig Small <csmall@debian.org>  Tue, 17 Feb 1998 08:31:21 +1100
+
+procps (1:1.2.5-2) unstable; urgency=low
+
+  * Moved /bin into /bin/ps (Bug #17001 )
+
+ -- Craig Small <csmall@debian.org>  Tue, 13 Jan 1998 07:50:43 +1100
+
+procps (1:1.2.5-1) unstable; urgency=low
+
+  * TTY selection works ( #16724 ) 
+  * top and ps now accept --colour and *_COLOURS
+  * xproc copyright file not compressed ( #14491 )
+  * All #include <proc/*.h> now #include "proc/*.h" ( #13482 ) 
+  * Copyright doesn't mention psmisc now ( #16704 ) 
+  * Moved ps back into /bin ( #16737  #16705 )
+  * New upstream source ( #16795 )
+
+ -- Craig Small <csmall@debian.org>  Mon, 12 Jan 1998 08:35:10 +1100
+
+procps (1:1.2.2-1) unstable; urgency=low
+
+  * New maintainer
+  * Updated upstream source to 1.2.2 (instead of 1.2)
+  * Merged Helmut's color/command line patches into upstream.
+  * Copyright file is not compressed ( #14493 #14415 )
+  * psdatabase refreshed when installing ( #10693 )
+  * Fixed +/- line in free ( #10785 #10870 #11566 #12027 #12245 #12374 )
+  * w collumns corrected ( #10898 #13117 )
+  * top saves sort type ( #11553 )
+  * Linked to libc6 ( #11725 )
+  * top doesn't coredump with S option ( #11855 )
+  * skill works with given patch ( #12023 )
+  * libproc-dev has proper sym link ( #12697 )
+  * top -h doesn't change terminal settings ( #13513 )
+  * ps -s has "CAUGHT" not "CATCHED" ( #14342 )
+  * ps_colors.7 and ps_fields.7 reformatted ( #14109 #14544 #14545 )
+  * ps checks for tty before using colors ( #14596 )
+  * top sets stop signal handler later, stopping race ( #14769 )
+  * When using POSIX personality, processes show up ( #14780 )
+  * top checks for valid term type ( #15807 )
+  * xproc now Depends on procps-1.2.*-* ( #10762 #13347 )
+  * xproc dependencies fixed ( #12698 )
+
+ -- Craig Small <csmall@debian.org>  Tue, 30 Dec 1997 11:33:54 +1100
+
+procps (1.12.2.1) unstable; urgency=low
+
+  * Non-maintainer release, built for libc6.
+  * Added in free.c from new procps version 1.2.3 (from sunsite), seems to
+    fix all the problems with free reporting bogus valus.
+
+ -- Joey Hess <joeyh@master.debian.org>  Fri, 24 Oct 1997 13:34:35 -0400
+
+procps (1.12.2) stable unstable; urgency=low
+
+  * fixed meminfo handling again, as the fix wouldn't work on pre-2.1.x
+    kernels. 
+  * fixed free to use the meminfo routines from libproc.
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Fri, 13 Jun 1997 22:42:14 +0200
+
+procps (1.12.1) stable unstable; urgency=low
+
+  * fixed several bugs
+  * replaced utmp handling to support wrappers.
+  * added /proc/meminfo support for 2.1.x kernels.
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Tue, 10 Jun 1997 23:59:41 +0200
+
+procps (1.11.6) frozen unstable; urgency=medium
+
+  * psmisc 1.14 : new upstream version (mainly bugfixes)
+  * added a lot of new serial device major numbers to the device lookup
+    code. Somehow it seems there are new serial devices every other week.
+  * fixed a bug in top: broken .toprc may cause a segmentation fault.
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Sun, 4 May 1997 09:50:30 +0200
+
+procps (1.11.5) frozen unstable; urgency=medium
+
+  * minor changes to make it compile with libc6
+  * fix top behaviour on machines having nonstandard NR_TASKS up to 4k
+    tasks 
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Fri, 18 Apr 1997 02:07:46 +0200
+
+procps (1.11.4) unstable; urgency=medium
+
+  * strip libproc.so from unneeded symbols (Bug# 8311)
+  * fixed watch.1 example (Bug# 8169)
+  * partly fixed fuser sigsegv core dump (Bug# 8004)
+  * menu entries for xproc and procps (Bug# 8325)
+  * divertions for xmem and xload. (Bug# 7565)
+  
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Sun, 13 Apr 1997 20:55:05 +0200
+
+procps (1.11.3) unstable; urgency=low
+
+  * fixed uptime again, minor Makefile changes
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Fri, 21 Feb 1997 16:22:04 +0100
+
+procps (1.11.2) unstable; urgency=medium
+
+  * fixed typo in ps_fields.7 (Bug#5457)
+  * fixed typo in debian/rules (Bug #5585)
+  * fixed bug in w introduced in 1.11.1 (Bugs #5489, #5694, #5695, #5705).
+  * added support for non-standard serial devices (long overdue - Bug
+    #5771). 
+  * fixed uptime option handling (Bug #6099).
+  * fixed top problems with missing/corrupted utmp (Bug #5819).
+  * fixed manpage problems (Bug #5936).
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Wed, 19 Feb 1997 18:49:26 +0100
+
+procps (1.11.1) unstable; urgency=low
+
+  * fixed bug in w <username>
+  * automatic resize if field length is exceeded. This changed the shared
+    library, so popping the major number.
+  * fixed numeric WCHAN output on Alphas and stupid bug in ps (again,
+    thanks to H. Koenig). 
+  * fixed top memory statistics for systems with more than 100M memory or 
+    swap. 
+  
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Tue, 12 Nov 1996 02:57:18 +0100
+
+procps (1.10.1) unstable; urgency=low
+
+  * merged in ALPHA & Sparc patches
+    (from ftp.azstarnet.com:/pub/linux/axp/glibc)
+  * fixed ps --deselect/-N for pid lists    
+  * use shared libs from now on, install shlibs again
+  * manpages for libproc
+  * static lib compiled without -fPIC
+  * added libproc package for development installing libproc headers,
+    manpages and static library. 
+  * fixed PROC_REAL bug when PROC_FILLSTATUS isn't set.
+  * fixed color bug in ps --forest
+  * added xproc package for xload, xmem, xidle, xcpustate
+    (XConsole left out as we use xconsole & klogd on debian)
+  * adapted xload manpage for xidle and xmem
+  * fixed xmem to cope with newer kernels (where shared pages are counted
+    once for each additional reference)
+  * fixed top change_fields bug (a field needs 24, not 21 spaces)
+  * fixed several Alpha bugs (thanks to Harald Koenig)
+  * due to popular demand, the old format for time intervals is back.
+    for all program using this, a toggle command line option has been
+    provided. The default behaviour depends on the compile time option
+    NEW_TIME_DEFAULT (see main Makefile)
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Wed, 23 Oct 1996 21:30:54 +0200
+
+procps (1.09.2) unstable; urgency=low
+
+  * fixed cpu nice % in summary
+  * fixed topsetup initialisation in top.h I messed up in last revision
+  * fixed pipe output bug
+  * fixed --deselect bug in SVR4/POSIX mode
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Sun, 20 Oct 1996 13:57:11 +0200
+
+procps (1.09.1) unstable; urgency=low
+
+  * fixed ps -w bug displaying too many empty lines
+  * fixed SIGSEGV bug in ps -www
+  * fixed bug in top not calculating length of the command/args/env fields
+    at the field selection screen in some circumstances.
+  * fixed SIGSEGV bug when using environ field
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Sat, 12 Oct 1996 07:59:29 +0200
+
+procps (1.09) experimental; urgency=low
+
+  * This is an experimental release of the procps suite. A lot of features have
+    been added since the 1.01(a) release:
+     - support for both BSD and POSIX (SVR4) style command line options.
+     - completely configurable display of information.
+     - colour markup of processes exceeding limits or belonging to a user.
+    Please take a look at /usr/doc/procps/NEWS and the manpages for a concise
+    list. This is how the next upstream release of procps may look
+    (i.e. it will  look like this if there is not too much resistance).  
+
+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>  Sat, 5 Oct 1996 14:26:57 +0200
--- procps-3.1.15.orig/kill.1
+++ procps-3.1.15/kill.1
@@ -10,16 +10,11 @@
 kill \- send a signal to a process
 
 .SH SYNOPSIS
-.TS
-l l.
-kill pid ...	Send SIGTERM to every process listed.
-kill -signal pid ...	Send a signal to every process listed.
-kill -s signal pid ...	Send a signal to every process listed.
-kill -l	List all signal names.
-kill -L	List all signal names in a nice table.
-kill -l signal	Convert a signal number into a name.
-kill -V,--version	Show version of program
-.TE
+\fBkill\fR [ -\fBsignal\fR | -s \fBsignal\fR ] \fBpid\fR ...
+.br
+\fBkill\fR [ -L | -V, --version ]
+.br
+\fBkill\fR -l  [ \fBsignal\fR ]
 
 .SH DESCRIPTION
 The default signal for kill is TERM. Use -l or -L to list available signals.
@@ -105,7 +100,7 @@
 .fi
 .PP
 .SH "SEE ALSO"
-pkill(1) skill(1) kill(2) renice(1) nice(1) signal(7) killall(1)
+.BR pkill (1), skill (1), kill (2), renice (1), nice (1), signal (7), killall (1).
 
 .SH STANDARDS
 This command meets appropriate standards. The -L flag is Linux-specific.
--- procps-3.1.15.orig/tload.c
+++ procps-3.1.15/tload.c
@@ -30,9 +30,6 @@
 static int dly=5;
 static jmp_buf jb;
 
-extern int optind;
-extern char *optarg;
-
 static void alrm(int signo)
 {
     (void)signo;
--- procps-3.1.15.orig/pgrep.c
+++ procps-3.1.15/pgrep.c
@@ -367,7 +367,8 @@
 	preg = do_regcomp ();
 
 	if (opt_newest) saved_start_time =  0ULL;
-	if (opt_oldest) saved_start_time = ~0ULL;
+    else
+	    saved_start_time = ~0ULL;
 	if (opt_newest) saved_pid = 0;
 	if (opt_oldest) saved_pid = INT_MAX;
 	
--- procps-3.1.15.orig/top.1
+++ procps-3.1.15/top.1
@@ -430,8 +430,8 @@
 The number of\fB major\fR page faults that have occurred for a task.
 A page fault occurs when a process attempts to read from or write to a virtual
 page that is not currently present in its address space.
-A major page fault is when disk access is involved in making that
-page available.
+A major page fault is when backing storage access (such as a disk) is involved
+in making that page available.
 
 .TP 3
 v:\fB nDRT\fR \*(EM Dirty Pages count