diff --git a/contrib/top/ADVERTISEMENT b/contrib/top/ADVERTISEMENT
index c371c9cfb987..b8fc68c1b979 100644
--- a/contrib/top/ADVERTISEMENT
+++ b/contrib/top/ADVERTISEMENT
@@ -11,7 +11,8 @@ through the company Group sys Consulting. William's specialties are:
Local area network design
Design of safe connections to the Internet
Domain Name Service
- Unix and Internet security
+ Threaded programming with pthreads
+ Netscape Server API plugins
INN news server configuration
SunOS to Solaris migration
Troubleshooting
@@ -23,4 +24,5 @@ other countries can be arranged as well.
If you are interested in having William work for your organization,
contact him at +1-770-813-3224 or via the address "wnl@groupsys.com".
+You may also wish to visit the Group sys web page at www.groupsys.com.
diff --git a/contrib/top/Changes b/contrib/top/Changes
index aa31baceee95..214dcbc61756 100644
--- a/contrib/top/Changes
+++ b/contrib/top/Changes
@@ -1,3 +1,132 @@
+Thu Mar 30 2000 - wnl (3.5beta12)
+ Updated modules: m_aix41.c, m_aix43.c, m_mtxinu.c, m_sco5.c,
+ and m_ultrix4.c.
+ Included m_irixsgi.c from some source that's been floating around
+ SGI. Don't yet know how it compares to m_irix62.
+
+Fri Mar 10 2000 - wnl (3.5beta11)
+ top.c: avoid potential loop if stdout gets closed, use macro
+ for p_active to avoid collision with system macros.
+ m_sunos5: widened some fields to accomodate 5.8.
+ m_decosf1: added ordering support
+ m_irix62_64: provides 64-bit module based on m_irix62.
+ m_irix62: skip bogus files in /proc directory
+ m_svr42MP and m_svr5: complete replacement with updated copies
+ m_mtxinu: complete replacement with updated copies
+ m_aix43: new module for 4.3
+ getans: replaced with a Bourne shell script
+
+Mon Mar 6 2000 - wnl (3.5beta10)
+ m_sunos5.c: workaround for curses bug: ensure that TERMINFO has
+ a value.
+
+Fri Jan 15 1999 - wnl (3.5beta10)
+ top.c: now check return code from read to avoid looping on eof.
+ top.c: delay of 0 now only valid for root.
+ decosf1.c: patches from Rainer Orth should fix most of the
+ problems with this module (including the display of certain
+ processes and runtime errors).
+ sunos5.c: Rainer insisted on putting the slash back in the
+ state field ("run/4") and widened the field to accomodate it.
+ aix.c: widened PID field for 6-digit pids (shortened NICE field)
+ module macosx added, thanks to Andrew Townley.
+
+Fri Dec 18 1998 - wnl (3.5beta9)
+ Configure checks status of "make" and complains if it fails.
+
+Thu Dec 17 1998 - wnl (3.5beta9)
+ Added module sco5 from Mike Hopkirk.
+ Added module netbsd132 from moto kawasaki.
+
+Sun Oct 25 1998 - wnl (3.5beta9)
+ Added Casper's patches for sunos5 for the following:
+ produce same results as swap -s (5.5 and higher),
+ don't use system_pages kstat when /dev/kmem can be opened,
+ skip . and .. when reading /proc, replace use of SOLARIS24
+ with OSREV.
+
+Fri Sep 11 1998 - wnl (3.5beta9)
+ Added workaround to getans for the absence of $< in SCO Unix.
+
+Wed Jul 1 1998 - wnl (3.5beta9)
+ Changed structure member "errno" to "errnum" in commands.c.
+ Replaced hpux10 module with one from John Haxby.
+
+Fri Apr 17 1998 - wnl (3.5beta8)
+ Moved definition of _KMEMUSER earlier in m_sunos5.c. This should
+ fix the compilation problem with gnu 2.7.2.3, obviating the need
+ for the fixinc.svr4 patch, but hopefully will not affect anything
+ else.
+ Added -DORDER to m_sunos4mp.c
+
+Tue Nov 18 1997 - wnl (3.5beta7)
+ Added gcc 2.7.2.3 patch for fixinc.svr4 and changed INSTALL and
+ FAQ to refer to it.
+ Added NetBSD HP9000 fix. Hopefully it doesn't break other
+ NetBSD platforms.
+
+Fri Oct 24 1997 - wnl (3.5beta7)
+ Modified m_dcosx.c to change uses of procdir to xprocdir, avoiding
+ a name clash with an include file (Bryn Parrott)
+
+Sat Oct 11 1997 - wnl (3.5beta6)
+ Incorporated Casper's patches for Solaris 2.6 and for the multi-
+ processor bug ("kstat finds too many cpus").
+
+Sun Jan 20 1996 - wnl (3.5beta5)
+ Fixed Casper's m_sunos5 module: there was a poor interaction with
+ his use of OSREV and SunOS 5.5.1.
+
+Fri Dec 20 1996 - wnl (3.5beta4)
+ Replaced m_sunos5 with a reworked version by Casper Dik. This one
+ should work under 2.6 and may not require that top be run setuid
+ to root under 2.5 or 2.6. This also fixed a bug in m_sunos5 that
+ was introduced in beta3.
+ Fixed calculation of OSREV in Configure.
+
+Wed Nov 20 1996 - wnl (3.5beta3)
+ Incorporated contributed fixes to: bsdos2, irix62, freebsd20,
+ ultrix4, sunos5. Changed calculation of swap area in sunos5 (now
+ uses swapctl). sunos5 now understands idled processors. Changed
+ Configure to determine os revision using uname (when available)
+ and adding it to machine.c compiliation in Makefile as -DOSREV.
+ Changed calls to "exit" in modules to use "quit" instead.
+
+Oct 20 1996 - wnl (3.5beta3)
+ Removed "time" from list of ordering choices: there's no easy way
+ to get cpu time for all processes (it's in the u area).
+
+Fri Oct 18 1996 - wnl (3.5beta3)
+ hpux10 and hpux9: using a better means for determining when a
+ process is idle.
+ decosf1 now includes utils.h.
+
+Fri Sep 13 1996 - wnl (3.5beta2)
+ Fixed Configure to build Make.desc in such a way that doesn't
+ require a long argument to sed.
+
+Thu Sep 12 1996 - wnl (3.5beta2)
+ Fixed bug in display.c that affected empty cpustate names.
+ Created hpux1010 module - a variant of hpux10 that does not use
+ struct proc or struct user (suitable for HP/UX 10.10).
+
+Wed Sep 11 1996 - wnl (3.5beta2)
+ Changes to sunos5 module: Removed WCPU column since it is meaningless
+ on a SVR4-based system. Added THR column to show number of threads
+ for each process. This was not straightforward: the information is
+ not stored in prpsinfo but rather in prstatus.
+
+Tue Sep 10 1996 - wnl (3.5beta1)
+ Added patches for sunos4mp to provide order support.
+ Added irix62 module.
+ Changed prime.c to include stdio.h for printf prototype.
+ Added conditional code to os.h and utils.c to handle systems
+ where sys_errlist is defined in stdio.h (such as NetBSD).
+
+Mon Sep 09 1996 - wnl (3.5beta1)
+ Removed tar and shar rules from Makefile.X -- don't need them anymore.
+ Added -v option to display version number. Updated man page.
+
Thu Aug 29 1996 - wnl (3.4)
Replaced modules (from Tim Pugh): next 32, next40.
Fixed bug in username.c: hashing negative uids.
diff --git a/contrib/top/Configure b/contrib/top/Configure
index b02806ce73f4..e760044043dd 100755
--- a/contrib/top/Configure
+++ b/contrib/top/Configure
@@ -25,7 +25,7 @@ if ($#argv > 0) then
set fastrack = 1
else
cat <<'EOF'
-Configuration for top, version 3.4
+Configuration for top, version 3.5
One moment....
'EOF'
@@ -37,11 +37,17 @@ ls machine/m_*.man >$$.m
sed -e 's@^machine/m_@@' -e 's/.c$//' $$.f >$$.n
# build Make.desc
-set descs = `sed -e 's@\.c$@.desc@' $$.f`
-sed -e "s@%descs%@$descs@" Make.desc.X >Make.desc
+sed -e 's@\.c@.desc\\@' $$.f | sed -e '$s/\\//' >$$.a
+sed -e "/^DESCS/r $$.a" Make.desc.X >Make.desc
# build desc files and SYNOPSIS as needed
make -f Make.desc >/dev/null
+if ($status != 0) then
+ echo "Unable to build the synopsis."
+ echo 'Make sure the command "make" is on your path and try'
+ echo 'running Configure again.'
+ exit 1
+endif
if (-e .defaults) then
echo ""
@@ -82,7 +88,7 @@ if ($fastrack == 1) then
if ($status != 0) then
echo "$module is not recognized. To see a list of available modules"
echo 'run "Configure" with no arguments.'
- rm -f $$.[fmn]
+ rm -f $$.[fmna]
exit 1
endif
set random1 = `expr $random + 1`
@@ -128,7 +134,7 @@ cat <<'EOF'
The following machine-dependent modules are available:
'EOF'
-awk -F: ' { printf "%-8s %s\n", $1, $2 }' SYNOPSIS
+awk -F: ' { printf "%-10s %s\n", $1, $2 }' SYNOPSIS
echo ''
./getans "What module is appropriate for this machine? " string "$module" .$$
set module = `cat .$$`
@@ -256,9 +262,16 @@ set delay = `cat .$$`
echo ""
set rand = 0
-ypwhich >&/dev/null
-if ($status == 0 || -e /etc/passwd.dir || -e /etc/pwd.db) then
- set rand = 1
+if (-e /etc/nsswitch.conf) then
+ set rand = `grep '^passwd:.*nis' /etc/nsswitch.conf | wc -l`
+ if ($rand > 1) then
+ set rand = 1
+ endif
+else
+ ypwhich >&/dev/null
+ if ($status == 0 || -e /etc/passwd.dir || -e /etc/pwd.db) then
+ set rand = 1
+ endif
endif
if ($rand == 1) then
@@ -293,8 +306,15 @@ if ($status == 0) then
set cnt = `wc -l &/tmp/$$.a
+ if ($status == 0) then
+ set cnt = `wc -l /tmp/$$.b
grep '^....r..r..' /tmp/$$.b >&/dev/null
@@ -404,13 +443,14 @@ echo "We are done with the questions."
# Some Unix environments are so poor that their csh doesn't even support
# the "eval" builtin. Check for this before relying on its use to save
# the current configuration.
-/bin/csh -c "eval echo foo" >&/dev/null
+/bin/csh -fc "eval echo foo" >&/dev/null
if ($status == 1) then
echo "Can't save configuration (nonfatal)"
else
echo "Saving configuration..."
# save settings to use as defaults the next time
rm -f .defaults
+ touch .defaults
foreach v ($vars)
set tmp = `eval echo \$$v`
echo set $v = "'$tmp'" >>.defaults
@@ -419,12 +459,8 @@ endif
fast:
-# set variables which contain module lists
-set modules = `cat $$.f`
-set manmodules = `cat $$.m`
-
# clean up
-rm -f $$.f $$.m $$.n
+rm -f $$.[fmna]
# set the link for machine.c
rm -f machine.c machine.o
@@ -434,10 +470,36 @@ ln -s machine/m_${module}.c machine.c
set libs = `grep LIBS: machine/m_${module}.desc | sed -e 's/^.[^:]*: *//'`
set cflgs = `grep CFLAGS: machine/m_${module}.desc | sed -e 's/^.[^:]*: *//'`
set tcap = `grep TERMCAP: machine/m_${module}.desc | sed -e 's/^.[^:]*: *//'`
+set math = `grep MATH: machine/m_${module}.desc | sed -e 's/^.[^:]*: *//'`
+
+# get osrev defition, if we can
+set uname=""
+if (-e /usr/bin/uname) then
+ set uname=/usr/bin/uname
+else if (-e /bin/uname) then
+ set uname=/bin/uname
+endif
+
+if ("$uname" != "") then
+# different versions of tr can't agree on the way to specify ranges, so
+# we will have to give the range explicitly.....sigh.
+ set osrev="-DOSREV=`$uname -r | tr -cd ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`"
+else
+ set osrev=""
+endif
# default for tcap (termcap)
if ("$tcap" == "") then
set tcap="-ltermcap"
+else if ("$tcap" == "none") then
+ set tcap=""
+endif
+
+# allow for the module to override or remove -lm
+if ("$math" == "") then
+ set math="-lm"
+else if ("$math" == "none") then
+ set math=""
endif
if ( { grep -s SIGKILL /usr/include/signal.h } ) then
@@ -461,14 +523,14 @@ sed -e "s|%topn%|$topn|" \
-e "s|%libs%|$libs|" \
-e "s|%cflgs%|$cflgs|" \
-e "s|%termcap%|$tcap|" \
+ -e "s|%math%|$math|" \
-e "s|%cdefs%|$cdefs|" \
- -e "s|%modules%|$modules|" \
- -e "s|%manmodules%|$manmodules|" \
-e "s|%signal%|$signal|" \
-e "s|%cc%|$Cmdcc|" \
-e "s|%awk%|$Cmdawk|" \
-e "s|%install%|$Cmdinstall|" \
-e "s|%shell%|$Cmdshell|" \
+ -e "s|%osrev%|$osrev|" \
Makefile.X >Makefile
echo "Building top.local.h..."
@@ -499,5 +561,5 @@ echo 'To install the executable, type "make install".'
exit 0
byebye:
-rm -f .$$ $$.[fmn] /tmp/$$.[ab]
+rm -f .$$ $$.[fmna] /tmp/$$.[ab]
exit 1
diff --git a/contrib/top/DISCLAIMER b/contrib/top/DISCLAIMER
index eabbe044847f..796d7a24c604 100644
--- a/contrib/top/DISCLAIMER
+++ b/contrib/top/DISCLAIMER
@@ -1,30 +1,31 @@
DISCLAIMER
"top" is distributed free of charge. It should not be considered an
-official product of Argonne National Laboratory. William LeFebvre
-supports "top" in his spare time and as time permits.
+official product of Group sys Consulting. William LeFebvre supports
+"top" in his spare time and as time permits.
NO WARRANTY:
BECAUSE "top" IS DISTRIBUTED FREE OF CHARGE, THERE IS ABSOLUTELY NO
WARRANTY PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING, ARGONNE NATIONAL LABORATORY,
-NORTHWESTERN UNIVERSITY, WILLIAM N. LeFEBVRE AND/OR OTHER PARTIES
-PROVIDE "top" "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK
-AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
-THE "top" PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
+EXCEPT WHEN OTHERWISE STATED IN WRITING, GROUP SYS CONSULTING, ARGONNE
+NATIONAL LABORATORY, NORTHWESTERN UNIVERSITY, WILLIAM N. LeFEBVRE
+AND/OR OTHER PARTIES PROVIDE "top" "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+PROGRAM IS WITH YOU. SHOULD THE "top" PROGRAM PROVE DEFECTIVE, YOU
+ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-IN NO EVENT WILL ARGONNE NATIONAL LABORATORY, NORTHWESTERN UNIVERSITY,
-WILLIAM N. LeFEBVRE, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND
-REDISTRIBUTE "top", BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST
-PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL
-DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT
-LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
-SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
-OTHER PROGRAMS) THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
+IN NO EVENT WILL GROUP SYS CONSULTING, ARGONNE NATIONAL LABORATORY,
+NORTHWESTERN UNIVERSITY, WILLIAM N. LeFEBVRE, AND/OR ANY OTHER PARTY
+WHO MAY MODIFY AND REDISTRIBUTE "top", BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH OTHER PROGRAMS) THE PROGRAM, EVEN IF YOU HAVE
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY
+ANY OTHER PARTY.
So there!
diff --git a/contrib/top/FAQ b/contrib/top/FAQ
index d4a458f32046..6cbd13f2d383 100644
--- a/contrib/top/FAQ
+++ b/contrib/top/FAQ
@@ -1,8 +1,9 @@
TOP
- Version 3.4
+ Version 3.5
+ Beta Release 11
William LeFebvre
- and a cast of dozens
+ with much help from others
FREQUENTLY ASKED QUESTIONS AND THEIR ANSWERS
@@ -14,40 +15,57 @@ GENERAL
1. "Where do I get the latest version of top?"
-The latest version of top is now available at the site "ftp.groupsys.com" in
-the directory "/pub/top". It is also available at "eecs.nwu.edu" in the
-directory "/pub/top".
-
+The official site for top is "ftp.groupsys.com" in the directory
+"/pub/top". It is also available from the following mirror sites:
+"pharos.dgim.doc.ca" in /packages/top, "uiarchive.uiuc.edu" in
+/pub/packages/top, "sunsite.auc.dk" in /pub/unix/top. European
+users should consider using the Denmark (dk) site.
+
2. "Is there a web page for top?"
-Not at this time, but I am planning one. When it is finally available, you
-will be able to find it at "www.groupsys.com."
+Yes. Point your browser at http://www.groupsys.com/top. It includes
+all documentation, a nice interactive display which describes the
+various components of the output of top, web-based retrieval of the
+package, year 2000 information, and pointers to the mailing list.
3. "Is there a mailing list for top?"
-Currently there is a top developers mailing list that is used by beta
-testers and other people who help me port the program to various machines.
-I am planning a general mailing list for announcements and such, but it is
-not yet available.
+The official list for announcements is "top-announce@groupsys.com".
+This list is managed by "majordomo@groupsys.com". Announcements of
+importance to all top users will be sent to this list, including new
+releases, availability of beta test versions, emergency revisions and
+patches, etc. Anyone is welcome to join top-announce. This is a
+read-only list. The list of subscribers will not (intentionally) be
+made available, and postings to the list are limited.
- 4. "How can I find out when all these things become available?"
+In addition, there is a top developers mailing list that is used by
+beta testers and other people who help me port the program to various
+machines. Membership to this list is solely at my discretion. If you
+feel qualified to act as a beta tester, or if you are doing development
+work on top (such as porting to a new platform), you may submit a
+request by sending a message to "top-spinners-request@groupsys.com"
+containing the word "subscribe". I will contact you within a few days,
+as my schedule permits.
+
+ 4. "What about Year 2000 compliance"?
+
+Top should not experience any problems with the transition to the year
+2000. A full statement concerning top and the year 2000 can be found
+in the file "Y2K" included with the distribution.
-Information about the web site and the mailing list will be made available
-in future distributions of top. New distributions will be announced on the
-appropriate Usenet newsgroups (including comp.sources.unix).
5. "Why does it take so long for a new version of top to go through the
beta test process?"
-This is completely my fault. I have just not had the time recently to give
-top the attention it deserves. I thank everyone for their patience, and I
-hope that with the recent changes in the direction of my career that I can
-spend more time on this.
+This is completely my fault. I have just not had the time to give top
+the attention it deserves. I thank everyone for their patience, and I
+hope that with the recent changes in the direction of my career that I
+can spend more time on this.
6. "Top is not written in ANSI C. Do you ever plan to change that?"
Top predates ANSI C by about 5 years. Yeah, it'll get "fixed" eventually.
-Probably in 3.5.
+Probably in 3.6.
CONFIGURING
@@ -70,7 +88,7 @@ the next release.
evil?"
They are. :-) I'll probably be rewriting the Configure script for the
-next release.
+next release, or switching to something like Gnu configure.
COMPILING
@@ -122,14 +140,15 @@ make your window bigger.
What's wrong?"
Gnu CC likes very much to use its own include files. Not being a gcc
-expert, I can't explain why it does this. But I can tell you that if you
-upgrade your operating system (say from Solaris 2.4 to Solaris 2.5) after
-installing gcc, then the include files that gcc uses will be incorrect,
-especially those found in the "sys" directory. Your choices are: (1)
-rebuild and reinstall the "standard" include files for gcc (look for a
-script in the distribution called "fixincludes"), (2) compile machine.c
-with "CFLAGS=-I/usr/include" then make the rest of the object files
-normally, or (3) use "cc".
+expert, I can't explain why it does this. But I can tell you that if
+you upgrade your operating system (say from Solaris 2.4 to Solaris
+2.5) after installing gcc, then the include files that gcc uses will
+be incorrect, especially those found in the "sys" directory. Your
+choices are: (1) rebuild and reinstall the "standard" include files
+for gcc (look for scripts in the distribution called "fixincludes" and
+"fixinc.svr4"), (2) compile machine.c with "CFLAGS=-I/usr/include"
+then make the rest of the object files normally, or (3) use "cc".
+Solaris 2.6 users should also consult FAQ #20.
14. "The cpu state percentages are all wrong, indicating that my machine is
using 95% system time when it is clearly idle. What's wrong?"
@@ -187,24 +206,36 @@ top again.
there when top runs. I figured this was just an oversight. Was I
right?"
-No, you were not right. As distributed, top requires NO alterations for
-successful compilation and operations under Solaris 2.0, 2.1, 2.2, 2.3, 2.4,
-and 2.5. You probably compiled top with /usr/ucb/cc instead of the real C
+No, you were not right. As distributed, top requires NO alterations
+for successful compilation and operations under any release of Solaris
+2. You probably compiled top with /usr/ucb/cc instead of the real C
compiler. See FAQ #10 for more details.
+20. "When I try to compile top under Solaris 2.6 using gcc I get compile
+ time errors. There appear to be problems with the include files,
+ such as 'u_rlimit has incomplete type' and/or 'u_saved_rlimit has
+ incomplete type'. I've already run fixinc.svr4 as per FAQ #13.
+ Why didn't that fix it?"
+
+Only top versions 3.5 and later are compatible with Solaris 2.6. Make
+sure you are using the most up-to-date version. Earlier beta release
+copies of version 3.5 had additional problems when compiled with gcc.
+Retrieve the official version 3.5 (non-beta) release from one of the
+sites listed in FAQ #1 or FAQ #2.
+
SCO PROBLEMS
-20. "When I try to run Configure, it complains about a syntax error."
+21. "When I try to run Configure, it complains about a syntax error."
-Some versions of SCO's csh do not understand the syntax "$<". This breaks
-Configure. You'll just have to hack around it for now: the Configure script
-is going to be completely redone in the near future anyway.
+Some versions of SCO's csh do not understand the syntax "$<". Earlier
+releases of top depended on this syntax to read input from the installer's
+terminal during the installation process. Version 3.5 fixes this.
SVR42 PROBLEMS
-21. "The load average and memory displays don't work right. Why?"
+22. "The memory display doesn't work right. Why?"
This is a known bug with the svr42 module. The problem has been traced down
to a potential bug in the "mem" driver. The author of the svr42 module is
@@ -213,7 +244,7 @@ working on a fix.
STILL STUCK
-22. I'm still stuck. To whom do I report problems with top?"
+23. I'm still stuck. To whom do I report problems with top?"
The most common problems are caused by top's sensitivity to internal kernel
data structures. So make sure that you are using the right include files,
diff --git a/contrib/top/INSTALL b/contrib/top/INSTALL
index f4cfe49d3a50..c435c06142c2 100644
--- a/contrib/top/INSTALL
+++ b/contrib/top/INSTALL
@@ -1,8 +1,8 @@
TOP
- Version 3.4
+ Version 3.5
William LeFebvre
- and a cast of dozens
+ and a cast of many
INSTALLATION
@@ -97,8 +97,9 @@ HINTS FOR CHOOSING THE CORRECT MODULE:
SOLARIS 2.x
-For Solaris versions 2.0 thru 2.3, use the module sunos5. For Solaris
-versions 2.4 and higher (including 2.5 and 2.5.1) use the module sunos54.
+All versions of Solaris will now work with the module sunos5. Version
+specific modules (such as sunos54) no longer exist.
+
SUNOS 4.x AND MULTIPROCESSOR ARCHITECTURES
diff --git a/contrib/top/Make.desc.X b/contrib/top/Make.desc.X
index cde4bcbaa7df..6fcb79e2778a 100644
--- a/contrib/top/Make.desc.X
+++ b/contrib/top/Make.desc.X
@@ -4,13 +4,14 @@
# top's Configure script to build .desc files and the SYNOPSIS file.
# Configure then uses these files to ask appropriate questions.
-# Written by William LeFebvre, Argonne National Laboratory
+# Written by William LeFebvre, Group sys Consulting
# (formerly of Northwestern University and Rice University)
# DO NOT EDIT "Make.desc"!!! Make changes to "Make.desc.X",
# then "make veryclean", then run "Configure".
-DESCS=%descs%
+# The list of .desc files will be inserted after this next line:
+DESCS=\
.SUFFIXES: .desc
diff --git a/contrib/top/Makefile.X b/contrib/top/Makefile.X
index 0b79d9fdde10..a9bfe65b820a 100644
--- a/contrib/top/Makefile.X
+++ b/contrib/top/Makefile.X
@@ -2,7 +2,7 @@
#
# This makefile is for top, version 3
#
-# Written by William LeFebvre, Argonne National Laboratory
+# Written by William LeFebvre, Group sys Consulting
# (formerly of Northwestern University and Rice University)
# DO NOT EDIT "Makefile"!!!! Make changes to "Makefile.X" and rerun
@@ -45,15 +45,6 @@ SIGNAL = %signal%
TOPN = %topn%
DELAY = %delay%
-TARFILES = README INSTALL DISCLAIMER FAQ ADVERTISEMENT \
- Changes Configure Porting \
- Makefile.X Make.desc.X getans install \
- top.c commands.c display.c screen.c username.c \
- utils.c version.c getopt.c prime.c \
- boolean.h display.h layout.h loadavg.h screen.h \
- machine.h patchlevel.h top.h top.local.H os.h utils.h \
- sigconv.awk top.X m-template metatop \
- machine
CFILES = top.c commands.c display.c screen.c username.c \
utils.c version.c getopt.c machine.c
OBJS = top.o commands.o display.o screen.o username.o \
@@ -62,6 +53,7 @@ OBJS = top.o commands.o display.o screen.o username.o \
CDEFS = %cdefs%
LIBS = %libs%
TERMCAP = %termcap%
+MATH = %math%
CFLAGS = %cflgs% $(CDEFS)
LINTFLAGS = -x $(CDEFS)
@@ -78,33 +70,28 @@ top.local.h: top.local.H
top: $(OBJS)
rm -f top
- $(CC) -o top $(OBJS) $(TERMCAP) -lm $(LIBS)
+ $(CC) $(CDEFS) -o top $(OBJS) $(TERMCAP) $(MATH) $(LIBS)
lint: sigdesc.h
$(LINT) $(LINTFLAGS) $(CFILES)
# include file dependencies
top.o: boolean.h display.h screen.h top.h top.local.h utils.h machine.h
-commands.o: boolean.h sigdesc.h utils.h
+commands.o: boolean.h sigdesc.h top.h utils.h
display.o: boolean.h display.h layout.h screen.h top.h top.local.h utils.h
-machine.o: top.h machine.h utils.h
screen.o: boolean.h screen.h
utils.o: top.h
version.o: top.h patchlevel.h
username.o: top.local.h utils.h
+# when compiling machine.c, include os revision definition
+machine.o: machine.c top.h machine.h utils.h
+ $(CC) "%osrev%" $(CFLAGS) -c machine.c
+
# automatically built include file
sigdesc.h: sigconv.awk $(SIGNAL)
$(AWK) -f sigconv.awk $(SIGNAL) >sigdesc.h
-tar:
- rm -f top.tar machine/*.desc machine/*~
- tar cvf top.tar $(TARFILES)
-
-shar:
- rm -f top.shar* machine/*.desc
- makekit -ntop.shar. -t"Now read README and INSTALL, then run Configure" machine $(TARFILES)/*
-
clean:
rm -f *.o top core core.* sigdesc.h
diff --git a/contrib/top/Porting b/contrib/top/Porting
index 7fd3ff469d46..b1ee25d05c46 100644
--- a/contrib/top/Porting
+++ b/contrib/top/Porting
@@ -3,7 +3,7 @@ Instructions for porting top to other architectures.
This is still a preliminary document. Suggestions for improvement are
most welcome.
-My address is now "lefebvre@dis.anl.gov".
+My address is now "wnl@groupsys.com".
Before you embark on a port, please send me a mail message telling me
what platform you are porting top to. There are three reasons for
diff --git a/contrib/top/README b/contrib/top/README
index 82631a724ab4..c8351a843313 100644
--- a/contrib/top/README
+++ b/contrib/top/README
@@ -1,5 +1,5 @@
TOP
- Version 3.4
+ Version 3.5
William LeFebvre
and a cast of dozens
@@ -69,6 +69,7 @@ Be sure to read the FAQ enclosed with the distrubution. It contains
answers to the most commonly asked questions about the configuration,
installation, and operation of top.
+
AVAILABILITY
The latest version of "top" is now being made available via anonymous
@@ -77,15 +78,26 @@ Additional modules will be made available in the directory
"/pub/top/m". The site "eecs.nwu.edu" will continue to house copies
of the distribution as well.
-Here are HTML links for the two best "top" archive sites:
+Here are HTML links for the four best "top" archive sites:
-Top archive (eecs.nwu.edu)
+Top archive (groupsys.com)
+Top archive (eecs.nwu.edu)
+ Top mirror (dgim.doc.ca)
+Top mirror (uiuc.edu)
New releases will be posted to comp.sources.unix as they become
available. Sites which arhive that newsgroup will also contain copies
of the distribution.
+Announcements about availability will be made to the mailing list
+"top-announce@groupsys.com". This is an open list maintained by
+majordomo. To join the list, send a message containing the word
+"subscribe" to "top-announce-request@groupsys.com". Addresses of
+subscribers to this list are kept confidential and will never be used
+for any purpose other than as recipients of announements concerning
+this software.
+
+
KNOWN PROBLEMS:
Gnu CC
@@ -150,7 +162,7 @@ is. Here is a partial list of contributors and other individuals.
Robert Boucher
Marc Cohen
David Cutter
- Casper Dik
+ Casper Dik
Charles Hedrick
Andrew Herbert
Jeff Janvrin
@@ -173,6 +185,8 @@ AUTHOR
U.S. Mail address:
William LeFebvre
- 170 Colton Crest Drive
- Alpharetta, GA 30202
+ Group sys Consulting
+ 11585 Jones Bridge Road
+ Suite 420-139
+ Alpharetta, GA 30022
(770) 813-3224
diff --git a/contrib/top/Y2K b/contrib/top/Y2K
new file mode 100644
index 000000000000..7cf17bff96cd
--- /dev/null
+++ b/contrib/top/Y2K
@@ -0,0 +1,26 @@
+Top and the Year 2000
+
+The software package top will not be affected by years numbering
+between 2000 and 2037. No portion of the top code stores dates on
+disk. All date processing in top is performed with functions from the
+Unix C library and Unix kernel. The specific functions are: time(2)
+and ctime(3S). These functions deal exclusively with conventional
+Unix time values (number of seconds since Midnight January 1, 1970
+GMT) and produce strings with a 4-digit year. At no point in the code
+for top are the last two digits used to represent a year.
+
+Top and the Year 2038
+
+In the year 2038 top will fail to represent the time of day correctly
+on 32-bit Unix operating systems. This is due to a limitation in the
+way Unix represents time. Top will only work on systems whose kernel
+call "time" and C library call "ctime" have been adjusted to represent
+time with a value greater than 32 bits. The exact date and time of
+this failure is 3:14:08 January 19, 2038 GMT. Note that this failure
+will only affect the display of the current time in the output from
+top.
+
+
+THERE IS ABSOLUTELY NO WARRANTY PROVIDED WITH THIS SOFTWARE.
+Please see the contents of the file "DISCLAIMER" for further
+information.
diff --git a/contrib/top/getans b/contrib/top/getans
index 7c94c37cab98..1b741f7cb7c2 100755
--- a/contrib/top/getans
+++ b/contrib/top/getans
@@ -1,86 +1,118 @@
-#!/bin/csh -f
-set ny = (no yes)
-if ($2 == "yesno") then
- @ i = $3 + 1
- set pmpt = "$1 [$ny[$i]]: "
+#!/bin/sh
+# getans prompt type default results_filename
+# type is one of
+# number
+# integer
+# neginteger
+# file default=default filename
+# path
+# yesno default=0,1 corres yes or no
+# string (default)
+
+RAWPMPT=$1
+TYP=$2
+DFLT=$3
+OFNM=$4
+
+ny0="no"; ny1="yes"
+if [ ${TYP} = "yesno" ]; then
+ eval ny=\$ny${DFLT}
+ pmpt="${RAWPMPT} [$ny]: "
else
- if ("$3" == "") then
- set pmpt = "${1}"
+ if [ -z "${DFLT}" ]; then
+ pmpt="${RAWPMPT}"
else
- set pmpt = "$1 [$3]: "
- endif
-endif
-rpt:
-echo -n "$pmpt"
-set input = $<
-switch ($2)
- case number:
- set tmp = `echo $input | tr -d 0123456789.`
- if ("x$tmp" != x) then
+ pmpt="${RAWPMPT} [${DFLT}]: "
+ fi
+fi
+if [ x"`echo -n`" = x-n ]
+then
+ c=\\c
+else
+ n=-n
+fi
+
+while :
+do
+ echo $n "$pmpt"$c
+ read input
+ case "$TYP" in
+ number)
+ tmp=`echo $input | tr -d 0123456789.`
+ if [ -n "$tmp" ]; then
echo "Invalid number. Please try again."
- goto rpt
- endif
- breaksw
+ continue
+ fi
+ ;;
- case integer:
- set tmp = `echo $input | tr -d 0123456789`
- if ("x$tmp" != x) then
+ integer)
+ tmp=`echo $input | tr -d 0123456789`
+ if [ -n "$tmp" ]; then
echo "Invalid integer. Please try again."
- goto rpt
- endif
- breaksw
+ continue
+ fi
+ ;;
- case neginteger:
- if ("x$input" != x-1) then
- set tmp = `echo $input | tr -d 0123456789`
- if ("x$tmp" != x) then
+ neginteger)
+ if [ "x$input" != "x-1" ]; then
+ tmp=`echo $input | tr -d 0123456789`
+ if [ -n "$tmp" ]; then
echo "Invalid integer. Please try again."
- goto rpt
- endif
- endif
- breaksw
+ continue
+ fi
+ fi
+ ;;
- case file:
- if ("x$input" == "x") then
- set input = $3
- endif
- if (! -e "$input") then
- echo The file $input "does not exist. Please try again."
- goto rpt
- endif
- breaksw
+ file)
+ if [ -z "$input" ]; then
+ input=${DFLT}
+ fi
+ if [ ! -f "$input" -a ! -d "$input" ]; then
+ echo "The file $input does not exist. Please try again."
+ continue
+ fi
+ ;;
- case path:
- if ("x$input" == "x") then
- set input = "$3"
- endif
- if (! -e "$input") then
- foreach elt ($path)
- if (-e "$elt/$input") breaksw
- end
- echo The command $input "was not found. Please try again."
- goto rpt
- endif
- breaksw
+ path)
+ if [ -z "$input" ]; then
+ input="${DFLT}"
+ fi
+ if [ ! -f "$input" ]; then
+ path=`echo $PATH | sed -e s'/::/ . /g' -e 's/:/ /g'`
+ x=
+ for elt in $path; do
+ if [ -f "$elt/$input" ]; then x=1; break; fi
+ done
+ if [ -z "$x" ] ;then
+ echo "The command $input was not found. Please try again."
+ continue
+ fi
+ fi
+ ;;
- case yesno:
- if ("x$input" == xy || "x$input" == xyes) then
- set input = 1
- else if ("x$input" == xn || "x$input" == xno) then
- set input = 0
- else if ("x$input" != x) then
- echo 'Please answer "yes" or "no".'
- goto rpt
- endif
- breaksw
+ yesno)
+ if [ -z "$input" ]; then
+ input="${DFLT}"
+ else
+ case $input in
+ y | yes)
+ input=1 ;;
+ n | no)
+ input=0 ;;
+ *)
+ echo 'Please answer "yes" or "no".'
+ continue ;;
+ esac
+ fi
+ ;;
- default:
- breaksw
+ *) ;;
+ esac
+ break
+done
-endsw
+if [ -z "$input" ]; then
+ input="${DFLT}"
+fi
-if ("x$input" == x) then
- set input = "$3"
-endif
-
-echo $input > $4
+echo $input > ${OFNM}
diff --git a/contrib/top/os.h b/contrib/top/os.h
index d25e93ea494d..8316a4c5bb1c 100644
--- a/contrib/top/os.h
+++ b/contrib/top/os.h
@@ -27,3 +27,12 @@ caddr_t malloc();
# define memzero(a, b) memset((a), 0, (b))
typedef void sigret_t;
#endif
+
+/* some systems declare sys_errlist in stdio.h! */
+#if defined(__NetBSD__) || defined(__FreeBSD__)
+#if !defined(__m68k__)
+# if !defined(__NetBSD132__)
+#define SYS_ERRLIST_DECLARED
+# endif /* __NetBSD132__ */
+#endif
+#endif
diff --git a/contrib/top/patchlevel.h b/contrib/top/patchlevel.h
index 82d4f629a7ea..28db88951c1b 100644
--- a/contrib/top/patchlevel.h
+++ b/contrib/top/patchlevel.h
@@ -1 +1,2 @@
-#define PATCHLEVEL 4
+#define PATCHLEVEL 5
+#define BETA "beta12"
diff --git a/contrib/top/prime.c b/contrib/top/prime.c
index 319d0b62d74b..b0d65424b5e0 100644
--- a/contrib/top/prime.c
+++ b/contrib/top/prime.c
@@ -3,6 +3,7 @@
* higher than the number specified as argv[1].
*/
+#include
#include
main(argc, argv)