Notes for the distribution of lsof version 3
********************************************************************
| The latest release of lsof is always available via anonymous ftp |
| from vic.cc.purdue.edu. Look in pub/tools/unix/lsof. |
********************************************************************
Contents
Dialects Supported
How Lsof Works
Lsof Output
Getting Started Quickly
Limiting, Filtering, and Selecting Lsof Output
Parsing Lsof Output with Another Program
Repeat Mode
Distribution Restrictions
Cautions
Distribution Contents
Warranty
Bug Reports
What's new in Version 3
Version 3 Release Notes
3.0, May 24, 1994
3.01, May 27, 1994
3.02, June 2, 1994
3.03, July 8, 1994
3.04, July 15, 1994
3.05, July 26, 1994
3.06, September 2, 1994
3.07, September 8, 1994
3.08, September 23, 1994
3.09, October 18, 1994
3.10, October 21, 1994
3.11, October 28, 1994
3.12, October 29, 1994
3.13, November 11, 1994
3.14, November 16, 1994
3.15, November 25, 1994
3.16, December 2, 1994
3.17, January 25, 1994
3.18, January 31, 1995
3.19, February 10, 1995
3.20, February 23, 1995
3.21, March 3, 1995
3.22, March 9, 1995
3.23, March 24, 1995
3.24, March 31, 1995
3.25, April 5, 1995
3.26, April 20, 1995
3.27, May 2, 1995
3.28, May 26, 1995
3.29, June 2, 1995
3.30, June 8, 1995
3.31, June 16, 1995
3.32, June 23, 1995
3.33, June 28, 1995
3.34, June 30, 1995
3.35, July 9, 1995
3.36, July 20, 1995
3.37, July 27, 1995
3.38, August 3, 1995
3.39, August 10, 1995
3.40, August 25, 1995
3.41, September 5, 1995
3.42, September 7, 1995
3.43, September 12, 1995
3.44, September 19, 1995
3.45, September 20, 1995
3.46, October 5, 1995
3.47, October 16, 1995
3.48, October 20, 1995
3.49, October 25, 1995
3.50, October 31, 1995
3.51, November 8, 1995
3.52, November 27, 1995
3.53, December 8, 1995
3.54, December 15, 1995
3.55, December 21, 1995
3.56, January 2, 1996
3.57, January 12, 1996
3.58, February 7, 1996
3.59, February 21, 1996
3.60, February 27, 1996
3.61, March 9, 1996
3.62, March 26, 1996
3.63, April 11, 1996
3.64, April 26, 1996
3.65, May 20, 1996
3.66, June 19, 1996
3.67, July 1, 1996
3.68, July 17, 1996
3.69, July 30, 1996
3.70, August 9, 1996
3.71, August 15, 1996
3.72, August 28, 1996
3.73, September 5, 1996
3.74, September 6, 1996
3.75, September 9, 1996
3.76, September 21, 1996
3.77, October 2, 1996
3.78, October 14, 1996
3.79, October 29, 1996
3.80, November 8, 1996
3.81, November 14, 1996
3.82, December 11, 1996
3.83, December 30, 1996
3.84, January 13, 1997
3.85, January 17, 1997
3.86, January 30, 1997
3.87, February 11, 1997
3.88, February 17, 1997
Dialects Supported
==================
Lsof (for LiSt Open Files) lists files opened by processes on
selected Unix systems. It's a major revision of lsof version 2,
and has been tested on:
AIX 3.2.5, 4.1[.[1234]], the IBM RISC/System 6000
and 4.2
BSDI BSD/OS 2.0, 2.0.1, Intel-based systems
and 2.1
DC/OSx 1.1 Pyramid systems
EP/IX 2.1.1 the CDC 4680
FreeBSD 1.1.5.1, 2.0, Intel-based systems
2.0.5, 2.1, 2.1.5,
2.2, and 3.0
HP-UX 8.x, 9.x, 10.01, HP systems (some combinations)
10.10, and 10.20
IRIX 5.2, 5.3, 6.0, 6.0.1, SGI systems
and 6.[1234]
Linux through 2.0 Intel-based systems
NetBSD 1.0, 1.1, and 1.2 Intel and SPARC-based systems
NEXTSTEP 2.1 and 3.[0123] all NEXTSTEP architectures
OpenBSD 1.2 and 2.0 Intel-based systems
OSF/1 2.0, 3.0, 3.2, and the DEC Alpha
4.0-BETA
Reliant UNIX 5.43 Pyramid systems
RISC/os 4.52 MIPS R2000-based systems
SCO OpenServer 1.1, 3.0, Intel-based systems
and 5.[024]
SCO UnixWare 2.1 and 2.1.1 Intel-based systems
Sequent PTX 2.1.[1569], Sequent systems
4.0.[23], 4.1.[024],
4.2[.1], and 4.3
Solaris 2.[123456], 2.5.1, Sun 4 and i86pc systems
and 2.6-Beta
SunOS 4.1.[1234] Sun 3 and 4
Ultrix 4.2, 4.3, 4.4, DEC RISC and VAX
and 4.5
(The pub/tools/unix/lsof/contrib directory on vic.cc.purdue.edu
contains information on other ports.)
If your favorite Unix dialect is not in the list, or if your version
of it is more recent than the ones listed, please contact me at
<abe@vic.cc.purdue.edu>.
How Lsof Works
==============
Using available kernel data access methods -- getproc(), getuser(),
kvm_*(), nlist(), pstat(), read(), readx(), /proc -- lsof reads
process table entries, user areas and file pointers to reach the
underlying structures that describe files opened by processes.
Lsof interprets most file node structures -- advfsnodes, autonodes,
cnodes, cdrnodes, devnodes, fifonodes, gnodes, hsnodes, inodes,
mfsnodes, pcnodes, procnodes, rnodes, snodes, specnodes, s5inodes,
tmpnodes. It understands NFS connections. It recognizes FIFOs,
multiplexed files, Unix and Internet sockets. It knows about
streams. It understands /proc file systems for some dialects. On
many dialects it recognizes execution text and library references.
It knows about AFS on some Unix dialects.
Lsof Output
===========
The lsof output describes:
* the identification number of the process (PID) that has opened
the file;
* the process group identification number (PGRP) of the process
(optional);
* the process identification number of the parent process (PPID)
(optional);
* the command the process is executing;
* the owner of the process;
* for all files in use by the process, including the executing
text file and the shared libraries it is using:
* the file descriptor number of the file, if applicable;
* the file's access mode;
* the file's lock status;
* the file's device numbers;
* the file's inode number;
* the file's size or offset;
* the name of the file system containing the file;
* any available components of the file's path name;
* the names of the file's stream components;
* the file's local and remote network addresses;
* other file or dialect-specific values.
Getting Started Quickly
=======================
If you want to get started using lsof quickly, or see some examples
of how lsof can be used, consult the 00QUICKSTART file of the lsof
distribution.
The 00QUICKSTART file won't help you build or install lsof, but it
will cut through the density of the lsof man page, giving you more
readily an idea of what you can do with lsof.
For information on building and installing lsof, consult the 00README
file of the lsof distribution.
Limiting, Filtering, and Selecting Lsof Output
==============================================
Lsof accepts options to limit, filter, and select its output.
These are the possible criteria:
* Process ID (PID) number -- to list the open files for a given
process;
* Process Group ID (PGRP) -- to list the open files for all
the processes of a given process group;
* User ID number or login name -- to list the open files for
all the processes of a given user;
* Internet address -- to list the open files using a given
Internet address (host name), protocol, or port (number or
name); or to list all open Internet files;
* command name;
* file descriptor name or number;
* list all open NFS files;
* list all open Unix domain socket files;
* list all uses of a specific file;
* list all open files on a file system.
Selection options are normally ORed -- i.e., an open file meeting
any of the criteria is listed. The selection options may be ANDed
so that an open file will be listed only if it meets all the
criteria.
In the absence of any selection criteria, lsof lists files open to
all processes.
Parsing Lsof Output with Another Program
========================================
The lsof -F option directs it to produce "field" output that can
easily be parsed by another program. The lsof distribution contains
sample awk, perl 4, and perl 5 scripts in its scripts subdirectory
that show how to post-process field output.
Repeat Mode
===========
Lsof can be directed to produce output, delay for a specified time,
then repeat the output, cycling until stopped by an interrupt or
quit signal. This mode is useful for monitoring the status of some
file operation -- e.g., an ftp transfer or a tape backup operation.
Repeat mode is more efficient when combined with lsof's selection
options, since they limit lsof overhead.
It's possible to use lsof's field output options to supply repeat
mode output to another process for its manipulation. The scripts
subdirectory of the lsof distribution has sample Perl scripts
showing how to consume lsof repeat mode output from a pipe.
Distribution Restrictions
=========================
Lsof may be used and distributed freely, subject to these limitations:
1. Neither the author nor Purdue University is responsible for
any consequences of the use of this software.
2. The origin of this software must not be misrepresented, either
by explicit claim or by omission. Credit to the author and
Purdue University must appear in documentation and sources.
3. Altered versions must be plainly marked as such, and must not
be misrepresented as being the original software.
4. This notice may not be removed from or altered in the lsof source
files.
Cautions
========
Lsof is a tool that is closely tied to the Unix operating system
version. It uses header files that describe kernel structures and
reads kernel structures that typically change from OS version to
OS version.
DON'T TRY TO USE AN LSOF BINARY, COMPILED FOR ONE UNIX OS VERSION,
ON ANOTHER.
On some Unix dialects, notably SunOS and Solaris, lsof versions
may be even more restricted by architecture type. An lsof binary,
compiled for SunOS 4.1.3 on a sun4c machine, for example, won't
work on a sun4m machine. Although I have no evidence that they
exist, the potential for similar restrictions exists in Solaris
versions of lsof.
AN LSOF BINARY, COMPILED FOR ONE SOLARIS ARCHITECTURE, ISN'T
GUARANTEED TO WORK ON A DIFFERENT SOLARIS ARCHITECTURE.
Distribution Contents
=====================
The lsof distribution is checked for completeness when it is
constructed and by the Inventory script when you run the Configure
script. (See The Inventory Script section of the 00README file of
this distribution.)
If you're worried you don't have everything, run the Inventory
script. Here's aan approximate picture of what you should have:
lsof_<version>:
00CREDITS 00PORTING Customize lsof_fields.h proc.c
00DCACHE 00QUICKSTART Inventory main.c proto.h
00DIST 00README arg.c misc.c scripts/
00FAQ AFSConfig dialects/ node.c store.c
00MANIFEST Configure lsof.h print.c version
lsof_<version>/dialects:
aix/ epix/ linux/ osf/ riscos/ sun/
bsdi/ freebsd/ netbsd/ ptx/ sco/ ultrix/
common/ hpux/ next/ pyramid/ sgi/ unixware/
lsof_<version>/dialects/common:
00Manifest dvch.frag lkud.frag prtf.frag rnam.frag
ckfa.frag fchi.frag pcdn.frag rdev.frag rnch.frag
cvfs.frag isfn.frag prfp.frag rmnt.frag rvfs.frag
Specific dialects sub-directories may differ slightly, depending
on the needs of the dialect, but they should all contain:
lsof_<version>/dialects/next:
Makefile ddev.c dlsof.h dnode.c dproto.h dstore.c
Mksrc* dfile.c dmnt.c dproc.c dsock.c machine.h
lsof_<version>/scripts:
00MANIFEST count_pf.perl* list_fields.awk
00README count_pf.perl5* list_fields.perl*
big_brother.perl5 list_NULf.perl5* watch_a_file.perl*
Warranty
========
Lsof is provided as-is without any 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 lsof is with
you. Should lsof prove defective, you assume the cost of all
necessary servicing, repair, or correction.
Bug Reports
===========
Now that the obligatory disclaimer is out of the way, let me hasten
to add that I accept lsof bug reports and try hard to respond to
them. I will also consider and discuss requests for new features,
ports to new dialects, or ports to new OS versions.
PLEASE DON'T SEND A BUG REPORT ABOUT LSOF TO THE UNIX DIALECT
VENDOR.
At worst such a bug report will confuse the vendor; at best, the
vendor will forward the bug report to me.
Please send all bug reports, requests, etc. to me via email at
<abe@purdue.edu>.
What's new in Version 3
=======================
I had three goals in mind for version 3:
1. Make it faster.
Lsof 3 defers as many lookup operations -- /dev scan, mount
table scan, /etc/services scan -- until they're needed.
I used prof on lsof and used its information to reduce lsof's
overhead.
2. Make it easier to maintain and port to other systems, and
eliminate complicated nestings of #if/#else/#endif
pre-processor statements.
3. Add a few features:
o ANDing of options;
o Sorting of output by Process ID;
o Searching for Unix domain sockets by name -- to a limited
extent.
o Process group ID support. (This was a late addition.)
As a result of goal 2, the organization of lsof version 3 differs
greatly from version 2. The main directory contains totally common
functions, a dialect subdirectory contains subdirectories of code
specific to each Unix dialect that is supported. There is also a
dialects/common subdirectory that contains code fragments that are
used by more than one, but not all dialects.
A top-level Configure script constructs the complete set of sources
for a given dialect and the Makefile at the top-level. Configure
is self-documenting. When it is finished, Configure calls a second
script, Customize, that assists with the modification of a few
important compile-time options.
Version 3 Release Notes
=======================
3.0 May 24, 1994
This is the first official release of lsof 3.
3.01 May 27, 1994
Corrected the #ifdef condition for HASPWSTAYOPEN
under Sequent Dynix 3.0.12.
Fixed bug that prevented the display of current
working and root directory path names under SunOS
4.1.x, even when the user area contained pointers
to them.
Changed the strategy for allocating space to the
local proc table in EP/IX, NEXTSTEP, Solaris, and
SunOS.
Closed the distance between reading the Solaris
proc structure and its companion pid structure in
an effort to avoid using a stale pid structure
pointer. A stale pid structure pointer sometimes
causes a segmentation violation in kvm_read().
Added code to the SunOS kread() function to filter
out non-kernel addresses that might lead kvm_read()
to a segmentation violation. The Configure script
was updated to create a header file, kernelbase.h,
with the necessary kernel memory boundary value;
and to remove the header file when the -clean option
is specified. The Configure script now passes the
target name to the Mksrc shell script. It's used
by sun/Mksrc to determine the source for kernelbase.h.
3.02 June 2, 1994
Added #if's to of kernelbase.h for Solaris and
SunOS. This eliminates a redeclaration complaint
from old versions of SunOS.
Added code to process_file() in all dialects to
display "no more information" when f_count in the
file structure is zero.
3.03 July 8, 1994
Added support for displaying process group IDs.
This includes two new options: -j to select PGRP
display; and -g<list> to specify a list of PGRPs
whose files are to be displayed. (-j was chosen
to match a similar option in some ps(1)'s.)
Philippe-Andre Prindeville <philipp@res.enst.fr>
suggested this addition.
3.04 July 15, 1994
Corrected handling of port name component of -i
option on systems where htons() is required.
Corrected casting of UID arguments -- needed when
UID is a short and the compiler wants the minimum
argument size to be larger.
3.05 July 26, 1994
Added printing of DECnet socket information for
the Ultrix 4.2 and 4.3 dialects. John Beacom
<beacom@wisnud.physics.wisc.edu> kindly provided
the test system. A new Configure abbreviation,
ultrix42dn, must be used to activate the DECnet
support.
3.06 September 2, 1994
The major news in this revision are the V/88 R32V3
and R40V4.2 ports for Motorola M88K systems. Chance
Neale <cneale@panix.com> kindly provided test systems
and Mike Feldman <feldman@charm.urbana.mcd.mot.com>
provided technical assistance.
Version 3.06 contains other, minor modifications:
* The Configure script has been isolated from the
environment, thanks to a report of a CC=xlc
problem from Johnny Tolliver <jxt@ca04.cad.ornl.gov>.
Johnny also suggested a better form for the install
commands in the Makefile's install rule. This
change affected all the dialect Mksrc scripts.
A new HP-UX abbreviation (hpuxx25) was added
for systems that have the /etc/conf/x25 include
files. The old HP-UX abbreviation (hpux) no
longer references /etc/conf or defines HPUX_CCITT.
* The command "lsof `tty`" now works most places (maybe
not always for SGI IRIX, but I tried) thanks to a bug
report from Casper Dik <casper@fwi.uva.nl>.
* A mode has been added to disable forking when
debugging. The V/88 R40V4.2 debugger needed that.
* Printing of stream NAMEs was standardized (IRIX
was different) and an attempt was made to avoid
stream NAMEs like /dev/ttyx4->/dev/ttyx4.
* A new documentation file, 00FAQ, accompanies the
distribution. It contains frequently asked
questions about lsof, and the best answers I can
manage to give.
* I have a new HP-UX test system, courtesy of Dave
Curry <davy@ecn.purdue.edu> and George Goble
<ghg@ecn.purdue.edu> of Purdue's Engineering Computer
Network. I want to thank J. Nelson Howell
<nelson@zeus.mgmt.purdue.edu> of Purdue's School of
Management for his prior support of lsof development
under HP-UX.
3.07 September 8, 1994
This revision contains a small security enhancement.
Tim Ramsey <tar@ksu.ksu.edu> pointed out that lsof's
setgid or setuid power might allow it's user to
read an alternate kernel name list or memory file
via the -c and -k options that the real UID might
not have authority to read. In revision 3.07 lsof
uses access(2) to check the real UID's authority
to read files named with -c and -k.
3.08 September 23, 1994
This revision contains support for Novell's UnixWare,
versions 1.1, 1.1.1, and 1.1.2. Peter Lord
<plord@novell.co.uk> made this possible by providing
a copy of UnixWare and supplying technical advice.
Binaries and sources for this version will be
available from Novell sources. See the Novell
UnixWare section of the distribution's 00README
file for details.
This version adds /proc file system support to the
dialects derived from SYSV R4 (except EP/IX 2.1.1):
FreeBSD, IRIX 5.2, Solaris, UnixWare, and V/88
R40V4.2.
This version compiles under IRIX 4.0.5 again,
correcting a problem introduced at version 3.06 in
the "lsof `tty`" fix.
HP-UX now skips file systems whose mount type is
"ignore". The presence of the -c option is now
controlled by the HASCOPT definition in machine.h.
The HASSWAPPORT option is now documented and
implemented correctly. Hans Petter Christiansen
<hpchr@dxcern.cern.ch> suggested these changes.
3.09 October 18, 1994
This revision recognizes the DEC Alpha OSF/1 V3.0,
IBM AIX 4.1, and Solaris 2.4 dialects. It has
support for the SunOS 4.1.3 PC file system and two
bug fixes: an IRIX, V/88, and Solaris file argument
processing bug; and a V/88 include error.
Alex Kreis <akreis@us.oracle.com> made the initial
request for DEC OSF/1 V3.0 support and provided
help with testing. Ron Young <ron@screamer.nevada.edu>
graciously provided a test host. James Woodward
<woodward@zk3.dec.com> provided invaluable clues
to V3.0 kernel organization. Others who read the
alpha-osf-managers mailing list made generous offers
of test facilities, and I thank them, too. The
decosf3 abbreviation was added to the Configure
script, and the script was modified to request the
name of the system configuration subdirectory of
/sys where the configuration-specific header files
reside for the decosf1, decosf2, and decosf3
configuration abbreviations.
Mark Peek <mark_peek@taligent.com> provided and
tested the AIX 4.1 changes.
Casper Dik <casper@fwi.uva.nl> provided and tested
the Solaris 2.4 changes.
Friedel Loinger <friedel@wise.tau.ac.il> suggested
the addition of support for the SunOS 4.1.3 PC file
system ("pcfs").
Andreas Stolcke <stolcke@ICSI.Berkeley.EDU> supplied
a fix to a file argument processing bug that causes
lsof to crash when supplied the path of an NFS
mounted file. The bug affects lsof versions for
Motorola V/88 R40V4.2, SGI IRIX 5.2, and Solaris
2.[123].
Corrected an error in the path to include prdata.h
in dlsof.h for Motorola V/88 R40V4.2.
3.10 October 21, 1994
This revision adds support for the cache and PC file
systems to Solaris. It fixes these bugs: a problem
with the display of Motorola V/88 R40V4.2 device
numbers; and a failure of Readlink() to resolve
symbolic links completely in all cases.
Some major internal restructuring was necessary to
be able to display negative inode numbers for SunOS
PC file system nodes, while displaying them as
unsigned numbers for Solaris, hence all dialect
versions were affected.
3.11 October 28, 1994
This revision adds support for Linux version 1.0.9.
Tim Korb <jtk@arthur.cs.purdue.edu> kindly provided
a development system in the Computer Science
Department at Purdue. It is likely that the Linux
revision will have to be adjusted for each installation,
and it is probable that this revision will not run
under later versions of Linux. See the 00FAQ and
00REAME files for more information on Linux tuning.
3.12 October 29, 1994
This revision supports Linux version 1.1.47 -- the
Yggdrasil Plug-and-Play Linux Fall '94 release.
Both Linux versions now obtain kernel symbol
addresses from the /zSystem.map file.
November 4, 1994
Hendrik G. Seliger <hank@Blimp.automat.uni-essen.de>
reports that lsof compiles and seems to work under
Linux 1.1.61. He used the linux1147 Configure
abbreviation. Marty Leisner <leisner@sdsp.mc.xerox.com>
reports that the linux1147 Configure abbreviation
produces a working lsof for Linux 1.1.64, too.
3.13 November 11, 1994
This revision contains Pyramid DC/OSx support, provided
by Anthony Shortland <Anthony.Shortland@FMR.com>.
Marty Leisner <leisner@sdsp.mc.xerox.com> reported
a segmentation violation failure in Linux lsof.
In response I changed its task structure access to
use /dev/kmem instead of mmap'ing kernel memory.
This avoids a possible segmentation violation when
bad pointers are obtained from kernel memory. I
also enabled the setting of Linux INET and Unix
select flags so that the -n and -U options work --
I forgot to do that when I did the Linux port.
Marty Leisner reports that the lunix1147 Configure
abbreviation produces a working lsof for Linux
1.1.64, too.
Francois Pindard <pinard@iro.umontreal.ca> provided
a correction to the Linux install rule.
3.14 November 16, 1994
This revision adjusts the Configure script stanzas
for DEC OSF/1, Motorola V/88, Pyramid DC/OSx, and
Ultrix. It also contains additional support for
DC/OSx and Ultrix.
Bruce Beare <bjb@pyramid.com> and Robert Vernon
<bob@pyramid.com.au> helped me understand Pyramid
nomenclature. Robert Vernon provided DC/OSx support
for the RxFS file system and added machine series
auto-detection to the Configure script. Alex Podlecki
<a.podlecki@att.com> helped test the updated DC/OSx
distribution.
Chris Timmons <skynyrd@tahoma.cwu.edu> provided
information on RISC and VAX Ultrix 4.4 that led to
correct prefixing of nlist() names. I updated the
Configure script to detect Ultrix version, machine
hardware type, and the presence of DECnet support.
I also updated the OSF/1 and V/88 Configure scripts
to determine configuration parameters automatically.
3.15 November 25, 1994
Corrected DEC OSF/1 V2.0 support of the ADVFS file
system.
Bernt Christandl <beb@mpe-garching.mpg.de> and Alex
Kreis <akreis@us.oracle.com> helped test. No OSF/1
V1.x system with ADVFS was available for testing.
3.16 December 2, 1994
Fixed some device number handling bugs in DEC OSF/1
V2.0 and V3.0 support.
3.17 January 25, 1994
lsof now supports SGI IRIX 5.3, thanks to changes
supplied by Dave Olson <olson@anchor.engr.sgi.com>;
and SCO OpenDesktop or OpenServer releases 1.1 and
3.0, thanks to support from Dion Johnson <dionj@sco.com>,
Bela Lubkin <belal@sco.com>, and Nathan Peterson
<nathanp@sco.com>.
Dave Olson pointed out an IRIX stream handling bug
in sgi/dnode.c. When I investigated it, I found
that it had implications wider than SGI IRIX. The
eventual fix provided the display of inode numbers
for character devices when the inode number must
be obtained from /dev. IRIX, Solaris, and SunOS
benefit from the fix.
I added version detection to the Configure script,
so there is now just one Configure abbreviation
for IRIX versions 4.05, 5.2, and 5.3 -- ``irix''.
(The Configure abbreviation for the SCO dialect
``sco''.)
Ian Darrow <ian@sq.com> pointed out that lsof
wouldn't Configure or work properly under Solaris
on an i86pc. Sorting out the difficulties made
clear that the HASSWAPPORT definition should be
removed from every machine.h file and that ntohs()
should be used in every dsock.c on every port
supplied to printinaddr().
Andreas Stolcke <stolcke@ICSI.Berkeley.EDU> pointed
out a method that sometimes allows lsof to report
on files open to a crashed or unavailable remote
NFS server. This led to the addition of code,
where possible, to estimate the device number of
mount points that cannot be stat()'d. The alternate
device number can come from /etc/mtab or /etc/mnttab,
or from the dialect's version of them. On systems
that use /etc/mtab or /etc/mnttab, it is sometimes
possible to add the device number manually to the
mount options field in the form ``dev=xxxx''. Some
internal changes in the way lsof handles device
numbers were necessary to prevent ones whose dev_t
typedef is a signed short from causing sign extension
when promoted to integers as function arguments.
David Addison <addy@meiko.co.uk> and Robert Ehrlich
<Robert.Ehrlich@inria.fr> pointed out that lsof
errs when reporting device numbers and other node
information for some special Sun files. I rewrote
most of sun/dnode.c to correct the problem; Robert
rewrote it again; and I rewrote it once more.
David and Robert helped me test it under Solaris
2.[34] and SunOs 4.1.[23].
While using code from the Motorola V/88 port for
the SCO port, I found and fixed some NFS bugs in
the V/88 port.
3.18 January 31, 1995
I added the -b and -w options. The -b option causes
lsof to avoid the functions lstat(2), readlink(2),
and stat(2) that might block in the kernel -- e.g.,
when they reference an inaccessible NFS file system.
Instead it uses alternate device numbers obtained
from the mount table, where possible.
The -w option causes lsof to suppress warning
messages -- e.g., when the -b option has been
specified. The suppression of warning messages
was formerly bundled into the -t option. The -t
option now selects -w.
I figured out how to make alternate AIX 3.2.5 device
numbers from the kernel mount structure. The new
-b option therefore works under AIX 3.2.5.
With the help of Chance Neale <cneale@panix.com>
I fixed bugs in the Motorola V/88 R32V3 NFS support.
I added a solariscc Configure abbreviation for those
who want to use Sun's C compiler.
3.19 February 10, 1995
Robert Ehrlich <Robert.Ehrlich@inria.fr> pointed out
that lsof might be able to gather more complete path
name information from the kernel's name cache. Name
cache access may be inhibited with the new -C option.
Revision 3.19 implements name cache access for:
DEC OSF/1 [23].0
Dynix (Purdue 3.0.12)
EP/IX 2.1.1
FreeBSD 1.1.5.1
HP-UX 9.01
Motorola V/88 R40V4.2
NEXTSTEP 3.1
SGI IRIX 5.3
Solaris 2.[34]
SunOS 4.1.x
Ultrix 2.2 and 4.2
Revision 3.19 does NOT implement name cache access for:
===
AIX The knlist() function won't
return cache addresses --
some IBM wisdom to "protect"
their customers.
Linux My only access is to 1.0.9,
and it doesn't seem to have
a kernel name cache.
Motorola V/88 It doesn't have a unified
R32V3 name cache.
Novell UnixWare I don't have a test system.
Pyramid DC/OSx I don't have a test system.
SCO OpenDesktop It doesn't have a unified
OpenServer name cache.
SGI IRIX 4.0.5H I saw no unified name cache
in the header files before
my 4.05H system was converted
to 5.2.
SGI IRIX 5.2 I don't have a test system.
Another Robert Ehrlich suggestion led to the
establishment of a device cache file feature. The
new -D option gives control of it. This feature
speeds lsof dramatically on some dialects after
lsof has been called once and the cache has been
built. (Calling stat(2) on several hundred or
thousand /dev nodes can take a long time.) The
feature can be disabled or modified in the machine.h
header file and the dialects/*/ddev.c source file
when lsof is built.
3.20 February 23, 1995
Upgraded Linux socket handling for versions 1.1.75
or greater with help from Marty Leisner
<leisner@sdsp.mc.xerox.com> and Linus Torvalds
<Linus.Torvalds@cs.Helsinki.FI>. There is now a
single Configure script abbreviation for linux.
Updated for Motorola V/88 R40V4.3 with help from
Mike Feldman feldman@charm.urbana.mcd.mot.com>
and Chance Neale <cneale@panix.com>.
Updated for SGI IRIX 6.0 with help from Przemek
Klosowski <przemek@rrdjazz.nist.gov and Dave Olson
<olson@anchor.engr.sgi.com>.
Corrected access of device cache file that needs
to be updated so that someone other than the file
owner can rewrite it. Deleted the chmod() failure
warning.
Updated Configure and the Sun Makefile to specify
absolute paths to the Sun install program.
3.21 March 3, 1995
Removed BSDI BSD/386 support, because I no longer
have a test system, and I needed to have separate
sources for two of the three dialects (FreeBSD,
and NetBSD) once served by the BSDI BSD/386 sources.
FreeBSD sources are now in the freebsd subdirectory;
NetBSD, in netbsd.
With the help of Greg Earle <earle@isolar.Tujunga.CA.US>
and Paul Kranenburg <pk@cs.few.eur.nl> installed
new NetBSD support for versions 1.0 and 1.0A. The
NetBSD 0.9 support was removed. The 1.0A support has
been tested on Intel and SPARC-based systems.
3.22 March 9, 1995
Fixed a bug in name cache handling that occasionally
caused lsof to cause a segmentation violation on
FreeBSD. Although the bug didn't do that anywhere
else, recreated the binaries of all dialect versions
that use the affected code from rnam.frag and rnch.frag.
3.23 March 24, 1995
Removed forgotten HASSWAPPORT reference from HP-UX
machine.h and inserted ntohs() calls in the printinaddr()
calls of dsock.c for HP-UX and NEXTSTEP.
Added support for NEXTSTEP 3.3, courtesy of Allan
Nathanson <ajn@NeXT.com>
3.24 March 31, 1995
Changed Configure script to handle DEC OSF/1 V3.2.
Removed leading zero from DEC OSF/1 and ADVFS
version values. Added dialects/osf/dec_a/3.2 header
file directory, courtesy of Dave Morrison
<dmorriso@us.oracle.com>, who also tested the 3.24
DEC/OSF1 V3.2 lsof.
3.25 April 5, 1995
Ported to RISC/os on a R2030 (R2000-based) system,
provided by Zdenko Tomasic <zdenko@harvey.cam.rice.edu>.
Tightened security on the device cache file; lsof
always tries to change its ownerships to the effective
IDs after creating it. This was suggested by Stefan
Kelm <kelm@cert.dfn.de>.
Ported to FreeBSD 2.0, starting with work done by
Kurt Jaeger <pi@complx.stgt.sub.org> on lsof revision
3.16. Ade Barkah <mbarkah@hemi.com> and William
McVey <wam@cs.purdue.edu> provided test systems.
3.26 April 20, 1995
Ported to SCO OpenDesktop or OpenServer 5.0 (aka
Everest and 3.2v5.0.0). Hugh Dickins <hughd@sco.COM>,
Bela Lubkin <belal@sco.COM>, Craig B. Olofson
<craigo@sco.COM>, and Nathan Peterson <nathan@sco.com>,
provided me an early-release version of 3.2v5.0.0
and gave technical advice.
Added length checking of the Namech buffer to the
printinaddr() function.
3.27 May 2, 1995
Corrected typo in AIX install rule, courtesy of a
report from John Colgrave <colgrave@hursley.ibm.com>.
At the suggestion of Greg Earle
<earle@isolar.Tujunga.CA.US> added a function to
print the name of the unknown protocol (the AF_*
symbol), when there is no specific processing for
it in dsock.c. This change affected most dialects:
exceptions are DC/OSx, Linux, Motorola V/88, and
UnixWare.
3.28 May 26, 1995
Added support for Sequent PTX 2 and PTX 4. The
PTX 2.1.6 and PTX 4.0.2 test systems and technical
advice were provided by Gerrit Huizenga
<gerrit@sequent.com>, Peter Jordan <petej@sequent.com>,
Kevin Smallwood <kcs@sequent.com>, and Mike Spitzer
<mks@sequent.com>. (Thomas A. Endo) <tendo@netcom.com>
and (David Putz). <PutzDW@PO1.LMB.unisys.com> tested
under PTX 2.1.5. Bob Foertsch <foertsch@uiuc.edu>
tested under PTX 4. Kevin Smallwood tested under
2.1.1. Others who helped include Shane Kenney
<shane@sequent.com>, Stephan Rossi <rossi@mtu.edu>,
Douglas R. Smith <drsmith@us.oracle.com>, and Joel
White <jdwhite@netcom.com>.
Changed the local dev structure's name to l_dev to
avoid conflicts with the PTX dev structure. Added
a common/rdev1.frag -- a variant of rdev.frag. It's
used by EP/IX, PTX, RISC/os, and V/88.
Changed printname() to check Namech first and print
it if it contains something. This eliminates some
hacks in the handling of names for streams, but
generates some duplicate device name look-up code
in the dnode.c files of some dialects.
3.29 June 2, 1995
Added clone device support to Motorola V/88 R40V4.3.
Added a generic ``-X'' option for dialect-specific
use. Used it in AIX to allow use of readx(). Lsof
no longer uses readx() by default, because its use
can cause an AIX 3.2.x and 4.1.x kernel error to
appear. Kevin Ruderman <rudi@acs.bu.edu> reported
this bug to me and the possibility that lsof might
trigger it.
The error, known as the Stale Segment ID bug, hangs
the kernel in its dir_search() function, thus
hanging the application process that called it so
tightly that the application process can neither
be killed nor stopped. The bug does not directly
affect lsof, but may cause the hang when the kernel
is searching directories for other processes.
00FAQ and 00README describe the Stale Segment ID
bug in more detail. Consult dialects/aix/machine.h
for options on enabling or disabling readx() by
default, or permanently enabling or disabling it
with the HASXOPT and HASXOPT_VALUE definitions.
When not using readx(), AIX lsof may not report
fully on all text and loader references. Changes
to the kernel getuser() function in AIX 4.1.1 appear
to have eliminated the text file and loader file
reference information that once led lsof to use
readx(); of course, without that information, lsof
can no longer report on the executing text file or
shared libraries in 4.1.1.
Changed the Configure script to use a single
abbreviation, aix, for AIX. Configure now uses
/usr/bin/oslevel to determine the AIX version; in
the absence of /usr/bin/oslevel, Configure issues
a warning and assumes the version is 3.2.0. Source
code changes were made to dialects/aix/*.[ch] to
accommodate the new form of the _AIXV value.
3.30 June 8, 1995
Added -c to the installation of the man page in
the Ultrix Makefile's install rule. Thanks go to
Jules van Weerden <Jules.vanWeerden@let.ruu.nl>
for noticing this omission.
Made FreeBSD 2.0 changes: 1) added automatic sensing
of the FreeBSD 2.0 boot file path, using the
getbootfile(3) function (suggested by Ade Barkah);
2) changed kvm_getprocs(3) function call to use
KERN_PROC_ALL symbol from <sys/sysctl.h>, thus
eliminating incorrect use of the <sys/kinfo.h> and
<sys/kinfo_proc.h> header files; and 3) removed
<sys/kinfo.h> and <sys/kinfo_proc.h> header files
from the dialects/freebsd/include/2/sys subdirectory
of distribution.
Tested under AIX 4.1.2.
3.31 June 16, 1995
Added the NOUSAGEONERR definition to allow lsof to
be compiled with the displaying of usage information
after option error messages disabled. Lsof is
distributed without the NOUSAGEONERR definition --
i.e., usage output is displayed after option error
messages.
Worked on documentation in the 00* files and the
man page, adding tables of contents, making usage
more consistent, trying to insure proper dialect
titles, and inserting some notes about distribution
restrictions (few) and warranty (none).
Fixed Motorola V88 R32V3 bug in handling Internet
files. This bug was introduced some time ago, but
I have only recently been able to test under R32V3
again.
3.32 June 23, 1995
Added the ability to the Linux nlist() function to
automatically detect that the kernel binary is COFF
or ELF form. Also corrected the UID_ARG cast from
int to u_int. These changes were suggested by
Michael Shields <shields@tembel.org>. Joseph J.
Nuspl Jr. <nuspl@nvwls.cc.purdue.edu> provided a
test system.
Updated lsof for HP-UX 10. Richard Allen <ra@rhi.hi.is>
provided a test system. The hpux stanza in the
HP-UX configure script was updated to sense the
HP-UX version automatically, and to sense the
availability of CCITT header files in /etc/conf/x25.
3.33 June 28, 1994
Added options to select "field" output that can be
parsed by a subsequent program. (The -f, -F, and
-0 options form the selection set.) Provided
sample awk and Perl scripts for parsing and displaying
field output. This feature was suggested by Dan
Bernstein <djb@silverton.berkeley.edu>.
Tested under PTX 4.0.3.
3.34 June 30, 1995
Changed display of file offset to decimal in the
form "0t12345678" if it is less than 100,000,000.
The offset is displayed in hexadecimal in the form
"0x12abcdef" if it is larger than 99,999,999.
Changed inode field output from signed to unsigned
decimal. Updated the list_fields.{awk,perl} and
list_NULf.perl5 scripts.
Documented the truncated inode output form (leading
`*' and 5 digits) for inodes that are too large
for the output field; thanks go to Leonard Sitongia
<sitongia@zia.hao.ucar.edu> for pointing out that
this wasn't documented.
3.35 July 9, 1995
Added loopback file system support to Solaris with
advice from Casper Dik <casper@Holland.Sun.COM>.
Removed the NOUSAGEONERR compile option in favor of
producing a shortened usage message when option
errors are detected.
Marty Leisner <leisner@sdsp.mc.xerox.com> provided
code to validate the Linux system map file (/System.map
or /zSystem.map). If lsof detects that the system
map file doesn't match the booted kernel, it
complains and quits.
Updated host name cache to include dot forms -- e.g.,
when the host name can't be obtained via gethostbydddr().
This prevents subsequent lookup delays for the same address.
3.36 July 20, 1995
Updated kernel name cache handling to assume a default
size for pointer-linked caches (DEC OSF/1, FreeBSD,
NetBSD, and SGI IRIX 5.3) when the kernel's cache size
variable has a value of zero. A warning is issued,
but lsof proceeds to read and use the name cache.
Folded rdev1.frag into rdev.frag by supporting a
HASDNAMLEN #define for those dialects whose DIRTYPE
structure has a d_namlen definition.
Updated Linux distribution to avoid using d_namlen
from struct dirent if the Linux version is 1.2.10 or
greater. This avoidance might work on earlier
version of Linux, too, but I have no way of telling.
Added support for FreeBSD 2.0.5. Ade Barkah
<mbarkah@hemi.com> provided a test system.
Added WARNDEVACCESS definition to machine.h control
the default issuance of device directory and
subdirectory access errors.
Changed options:
-m (mount warning) option deleted
-c (core file) option changed to -m
-c option redesignated as command selector
-d (device warning) option deleted
-d option redesignated as file descriptor selector
-O (order) option changed to less-overhead option
-r option added to enable repeat mode
Added a repeat mode in which lsof will display
output, sleep for the number of seconds defined by
the repeat-mode option, -r <seconds>, and then
display output again, doing this repetitively until
it receives an interrupt or quit signal. This
option is much more efficient for monitoring a file
than calling lsof repeatedly from a shell script,
since it entails only one set of lsof startup
operations.
The CANDOCHILD compile-time option has been removed.
The -O run-time option will do the same thing.
3.37 July 27, 1995
Fixed incorrect setting of low-overhead flag from -O
option.
Marty Leisner reports that d_namlen is not needed
under Linux 1.2.8. Changed the #if test that sets
HASDNAMLEN accordingly.
Made more changes to option processing: combined
-f, -F, and -0 into -F (-0 becomes a field identifier
value for -F); now allow -F, -g, -r, and -S to have
an optional value; made -F? (help) and -F0 (all
fields plus NUL terminator) special forms of -F;
and added support for --. These option processing
changes are handled with a local getopt() function
(named GetOpt() to avoid confusion).
Made yet another attempt to create "standard"
install and deinstall SunOS/Solaris Makefile rules.
Corrected improper use of examine_lproc() when in
repeat mode.
3.38 August 3, 1995
Modified Linux and PTX to show TCP's "send next"
sequence number as the offset for TCP socket files.
Added some version tests for Linux 1.3.0, provided by
Roman Gollent <roman@portal.stwing.upenn.edu>.
Added some more PTX tests around code that shouldn't
be active when the NFS layered product is unavailable.
Mark Vasoll <vasoll@a.cs.okstate.edu> provided them.
3.39 August 10, 1995
Added generic support for dialect-specific elements
in the lfile structure. The HASLFILEADD and
SETLFILEADD macroes are used in lsof.h to define
the elements and in proc.c to preset them. Field
identifiers `1' through `9' are allocated to
dialect-specific files. The HASFIELDAP<x> strings
define the -F? help text for the FieldSel[] table
of store.c, and LISTLFILEAP<x> are macroes, used
in the print_proc() function of proc.c, to list
fields. (<x> is the field identifier.) Other
private element and field processing should be done
in dialect-specific modules.
Used {HAS,SET}LFILEADD, HASFIELDAP[12], and
LISTLFILEAP[12] to define and list link count and
inode address lfile elements under PTX. Used the
-X option to control when the values are displayed.
3.40 August 25, 1995
Added support for Solaris 2.5-BETA, including
rudimentary support for door files and extensive
support for fattach'ed files with the help of Henry
Katz <hkatz@panix.com>, Joseph Kowalski
<jek3@jurassic.Eng.Sun.COM>, and Mike Tracy
<mtrac@jurassic-45.Eng.Sun.COM>.
Changed most dialects to use slightly safer fchown()
on the device cache file. Changed dvch.frag to
avoid creating a device cache file that is owned
by root. Cleared caches when reading of device
cache file fails and removed extra NL from device
cache error messages.
After receiving yet another complaint about Makefile
install rules, I decided to remove all install and
deinstall rules from the distribution Makefiles.
The Makefiles now contain a set of comments (echo
commands) that describe what the install rule might
be. The lsof user is now free to construct install
and deinstall rules that meet local conventions
and preferences.
3.41 September 5, 1995
Changed Linux kernel symbol handling to avoid the
stripping of leading `_' characters that was
installed in revision 3.32. (Recent Linux kernels
have some symbols that are the same except for the
leading `_'.)
The Linux kernel loader format is now determined
by testing for "_system_utsname" (COFF) and
"system_utsname" (ELF) in the symbols returned by
the get_kernel_syms() syscall. If neither or both
symbols are present, a warning is issued and COFF
format is assumed. If the loader format is COFF,
then kernel symbols important to lsof are assumed
to have a leading `_'.
Because recent Linux releases add a parameter
hashing suffix to kernel symbols, lsof removes it
before comparing kernel symbol names and addresses
to those in /[z]System.map.
Marty Leisner, Keith Parks <emkxp01@mtcc.demon.co.uk>,
and Michael Shields helped me with the Linux changes.
After much discussion of the security of the device
cache file on the bugtraq mailing list, I adopted
a suggestion from Dave Sill <de5@sws5.CTD.ORNL.GOV>.
His suggestion removes the world-writable device
cache file from /tmp and creates instead a mode
0600 device cache file in the home directory of
the real user ID that is executing lsof. Lsof
issues a warning message when it does this. (The
warning can be suppressed with -w.) The HASDCACHE
definition becomes a relative path. When lsof is
run from root, it will create a device cache file
in root's home directory, e.g., / or /root, but
the file will be readable and writable only by
root. This should make the device cache file much
more secure.
Added support for SGI IRIX 6.1. Dave Olson provided
technical support and Przemek Klosowski supplied
a test system. Since Przemek's system formerly
supported my testing of lsof for IRIX 6.0, its
update to 6.1 means I have not tested lsof under
IRIX 6.0 since revision 3.39.
Changed name list structure element initialization
for V/88 to make gcc happy. Albert Chin-A-Young
<china@cig.mot.com> suggested this.
3.42 September 7, 1995
Changed device cache file naming process to add a
suffix formed of an underscore, followed by the
first component of the host name returned by
gethostname(2). This allows lsof to create separate
device cache files for each host from which it is
run for the same UID when the UID's home directory
is shared by the hosts via NFS.
3.43 September 12, 1995
Enabled SCO searching for stream files and Release
5.0 Unix domain socket files by name.
Defined HASDOPTPATH for dialects that can supply
a path with -Db, -Dr, and -Du. Defined it for all
but DC/OSx, UnixWare, and V/88. Used it in the
ctrl_dcache() function of arg.c to enable and
disable -Db, -Dr, and -Du.
Used is_readable() in dvch.frag when opening the
device cache file for reading.
3.44 September 19, 1995
Added test for setuid-root state so that some
security-sensitive code now disabled by #define's
can by dynamically disabled.
Enhanced, extended, improved, secured, and documented
formation and use of the device cache file path.
More options, more carefully controlled are now
available. A separate documentation file, 00DCACHE,
accompanies the distribution to explain the device
cache file path handling.
Where possible, lsof now drops setgid permission
as soon as possible. Two exceptions are the Solaris
and SunOS versions of lsof which need to close and
re-open kvm access. Setuid-root lsof implementations
must retain that permission to access files in /proc.
Improved the README.lsof_<revision> file that
appears in the lsof wrapper tar file with help from
Jon A. Tankersley <tank@amoco.com>.
Added Veritas file system support to the HP-UX
dialect port.
Albert Chin-A-Young tested lsof under Motorola V/88
R40V4.1 and provided #if/#else/#endif changes.
3.45 September 20, 1995
Enabled setgid permission surrender for Solaris
and SunOS dialects.
3.46 October 5, 1995
Added more conversions to HASPERSDC, based on
suggestions from John Gardiner Myers <jgm+@CMU.EDU>.
They make it possible to locate the personal device
cache file in /tmp, for example. A new -D function,
`?', reports device cache file name formation
information.
Gained access to AIX 4.1.3, compiled lsof there, and
found that it seems to work.
Tested lsof under FreeBSD 2.1.0-950726-SNAP. John
Clear <jac@dragonfly.vet.purdue.edu> kindly provided
a test system.
Added a Customize script that helps with the job
of modifying some important (e.g., security-related)
compile-time options. Configure calls Customize,
but can be told not to with the -n|-nocust options.
Fixed over-sensitivity to unexpected kernel file
structure pointer values in HP-UX version that led
to premature exit. Lionel Cons <cons@dxcern.cern.ch>
pointed out the problem.
With the help of Leif Hedstrom <leif@infoseek.com>
identified a pair of conflicting Solaris 2.4 patches
that prevent lsof from working. A work-around is
described in section 00FAQ.
3.47 October 16, 1995
Enabled suppression of an HP-UX pstat() warning
message. Added big_brother.perl5 to field output
scripts/ subdirectory. Both changes are courtesy
of Lionel Cons <Lionel.Cons@cern.ch>.
Added a test for automount detritus in the SCO mount
table.
Added kernel name cache support to SCO dialect.
Modified most name cache support to report full
path names without the intervening `` -- '' when
possible.
Added an Inventory script to check the contents of
the distribution, using a new file, 00MANIFEST.
The Configure script normally calls Inventory.
Changed the -n option to Configure to avoid calling
the Customize and Inventory scripts and dropped
the -nocust option. The presence of .neverCust
suppresses the calling of Customize; .neverInv,
Inventory. The Inventory script creates .ck00MAN
when it completes, so that subsequent calls to
Inventory won't check the inventory again -- although
the caller is given the opportunity to have the
inventory rechecked.
Added PTX 4.1.0 support, courtesy of a test system
supplied by Kevin Smallwood <kcs@sequent.com>.
Picked lint for gcc in the V/88 dproc.c from hints
provided by Albert Chin-A-Young <chinay@cig.mot.com>.
3.48 October 20, 1995
Improved root directory detection during name cache
lookup.
Remove the Novell UnixWare and Pyramid DC/OSx ports
from the distribution, because I have not been able
to test them for 40 or more revisions. Their pieces
may now be found on vic.cc.purdue.edu in
pub/tools/unix/lsof/OLD/{binaries,dialects}.
Corrected an error in Customize that caused it to
incorrectly redefine HASSYSDC to HASSYSDCPATH. This
was reported by Michael Beirne <beirne@dcdsv0.fnal.gov>.
Made sure that lsof will compile when HASDCACHE is
undefined. A problem with a reference to the DChelp
symbol was reported by Vasco Pedro <vp@fct.unl.pt>
and resolved by always defining DChelp.
Corrected handling of -c and -m options.
Corrected the reading of the SCO /etc/mnttab. Bela
Lubkin <belal@sco.com> helped me understand its
special multi-line format. The "nothing/nowhere"
lines are continuations of the file system directory
and device names when either are > 31 characters.
Corrected SCO version list in Configure help output.
Update special SCO name cache code to make it more
robust.
Add support for IRIX 6.0.1 with the help of Eberhard
Mater <system@grzap1.rz.go.dlr.de>.
3.49 October 25, 1995
Removed need for dialects/sgi/irix601hdr subdirectory,
replacing it with one created by dialects/sgi/Mksrc
and composed of symbolic links to dialects/sgi/irix6hdr.
Eberhard Mater did the testing.
Added file system inode number to the local file
structures of the DEC OSF/1, DYNIX, EP/IX, HP-UX,
NeXT, PTX, RISCos, SGI, Sun, and V/88 dialects.
Added code to name cache, node, and VFS functions
to set the file system inode number and use it for
faster recognition of files on the file system
mount point.
Added kernel name cache support to Linux. This
has been tested only under release 1.2.13.
3.50 October 31, 1995
Updated 00FAQ: reorganized and renumbered sections;
added some DEC OSF/1 sections; section about the
Solaris and SunOS Sun KERNELBASE.
Added an alternative readdir() function, called
ReadDir(), to dialects/osf/ddev.c This function
was supplied by Duncan McEwan <duncan@comp.vuw.ac.nz>,
who discovered that the getdirentries() function
in DEC OSF/1 versions 3.[02] returns an incorrect
length for the /dev/fd directory when it is a file
system mount point. Modified the Configure script
to define USELOCALREADDIR for 3.[02] to enable
using this local function.
Modified the Solaris/SunOS Mksrc to create a dummy
(empty) kernelbase.h for Solaris 2.5 (5.5).
3.51 November 8, 1995
Modified the Configure script to declare the kernel
state definitions appropriate to IRIX 6.1 on IP21
and IP26 platforms. News of the need for this came
from Kate Fissell <Kate.Fissell@IUS4.IUS.CS.CMU.EDU>
and Dave Olson <olson@anchor.engr.sgi.com>.
Modified the SGI IRIX dproc.c to provide more
information when the kernel's idea of the size of
a proc structure doesn't match sizeof(struct proc).
This mismatch can occur if the wrong kernel state
definitions are used to condition the header files
(e.g., <sys/proc.h>) included when compiling dproc.c.
Made the -i option with no arguments equivalent to
the -n option -- i.e., they both select the listing
of all open Internet files.
Supplied a missing "you" in the Customize script
introduction. John Jackson <jrj@cc.purdue.edu>
noticed the omission.
Modified the Customize script to put long messages
in here documents rather than echo statements, so
that changing and reformatting them is easier.
John Jackson offered this helpful suggestion.
Fixed a port number cast bug in Solaris 2.[45],
courtesy of information and code supplied by Allan
Black <allan@scotnet.co.uk>.
Automated the detection of Solaris 2.4 patches
101945-32 and 102303-02 that cause the installed
kernel's user structure to differ from the one
defined by <sys/user.h> because of a patch to
<sys/auxv.h> that wasn't applied when the kernel
was built. The Configure script invokes an alternate
auxv.h file and warns that it is doing so.
Fixed a problem with Inventory script that shows up
on systems where echo is not an sh built-in. The
bug was reported by Scott Ballew <smb@cc.purdue.edu>.
3.52 November 27, 1995
Added support for Linux versions 1.3.22 and above,
courtesy of changes supplied by Keith Parks
<emkxp01@mtcc.demon.co.uk>.
Changed -d option processing to allow specification
of a comma-separated list of file descriptors.
Modified SCO support to allow NFS code to be optional
at the request of Dave Gilbert
<agere!dgilbert%peapod.com@zool.interaccess.com>.
Enabled HP-UX 10.x version to display device and
inode numbers for FIFOs. The problem was reported
by Jeff Earickson <jaearick@colby.edu>.
3.53 December 8, 1995
Enhanced NeXTSTEP FIFO reporting.
Fixed a formatting problem in the man page, reported
by Angel Li <angel@flipper.rsmas.miami.edu>.
Added support for DEC OSF/1 4.0-BETA. Angel Li
provided the test system.
Added a -v option to display lsof version information.
Marty Leisner <leisner@sdsp.mc.xerox.com> suggested
this.
Replaced touch with echo in Inventory script to avoid
DEC OSF/1 4.0 complaint.
Tested under PTX 4.1.2.
3.54 December 15, 1995
Added support for IRIX 6.2-BETA. The support for
older IRIX versions changed considerably in the
process. Revision 3.54 has been tested under these
older IRIX versions: 5.3 and 6.1. Angel Li
<angel@flipper.rsmas.miami.edu> provided a test
system and Jim Brown <jim@guanabana.rsmas.miami.edu>
helped.
Tested under AIX 4.1.4.
Decommissioned the DYNIX port -- I no longer have
access to a test system.
Added the HASXOPT_ROOT define to allow the lsof
builder to restrict the use of the dialect-specific
X option (AIX and PTX currently) to processes whose
real user ID is root. Updated the Customize script
to provide an easy mechanism to change HASXOPT_ROOT.
AIX uses HASXOPT_ROOT; PTX does not. This change
was suggested by R. Lindsay Todd <toddr@rpi.edu>.
3.55 December 22, 1995
Eliminated need for modified DEC OSF/1 headers by
using #undef and #define statements. Chip Stettler
<STETTLERC@wlmpo1.wilm.ge.com> helped test.
Added quick start documentation file, 00QUICKSTART,
containing examples and explanations of lsof use.
Verified that lsof works under the released Solaris
2.5.
3.56 January 2, 1996
Corrected lock reporting for Solaris 2.[345].
Corrected Linux malloc() kernel symbol handling bug,
reported by Keith Parks <emkxp01@mtcc.demon.co.uk>.
Corrected AIX loader text file selection bug; it
caused all process IDs to be listed when the -t
option and one file system name was specified.
The bug was reported by Christopher C. Evert
<cevert@waii.com>.
Made sure Solaris Kb variable is zeroed before
first use.
3.57 January 12, 1996
Updated SunOS port to obtain lock information from
v_filocks and the lock_list struct to which it
points.
Changed -H to -n. The function formerly performed
by -n can be done by using -i with no address.
Updated Linux FIFO support so that the display for FIFOs
contains device number, inode number, and NAME. Johannes
Kroeger <jkroeger@squirrel.owl.de> reported the lack of
these items in the Linux FIFO display.
Added RCS identification to header files, Makefiles,
and common fragments.
Added BSDI BSD/OS support for 2.0, 2.0.1, and 2.1-BETA.
Terry Kennedy <terry@spcvxa.spc.edu> kindly provided a
2.1-BETA test system and did the 2.0.1 testing.
Modified the Inventory script to compensate for dialects
that have an expr that doesn't set its exit code when
string matches fail.
Converted internal representations of file offset and
size to unsigned long.
Corrected bug in NetBSD lock handling.
Corrected bug in FreeBSD file system type name handling.
Keith Parks <emkxp01@mtcc.demon.co.uk> reports lsof
3.57 compiles and runs under Linux 1.3.56.
3.58 February 7, 1996
Changed Solaris 2.3 configuration to pass the level
of patch 101318 to the source code. This allows
a Solaris 2.3 lock handling difference to be
accommodated.
Updated 00QUICKSTART to reflect -n and -H changes
made in revision 3.57. (Ooops!)
Changed Configure script to compile lsof for SCO
versions beyond 3.2v5.0.0 as it is compiled for
3.2v5.0.0. Bill Campbell <bill@celestial.com>
reported he has done this successfully.
Added information to 00FAQ about a Linux kernel
symbol problem (section 3.7.6) and included a
<linux/random.h> patch to work around it. The patch
was supplied by Keith Parks <emkxp01@mtcc.demon.co.uk>.
3.59 February 21, 1996
In response to a query from Louis Rayman
<lou@asahi.ps.quotron.com>, added special support
for Solaris "sockmod" streams, used for Unix domain
sockets, that allows their file system device type
and inode number to be displayed. It also allows
lsof to search for them by name or type (-U).
Added range handling to -d argument.
Added the display of CDFS file size to DEC OSF/1 output.
Added an include of <rpc/xdr.h> to keep gcc on HP-UX
10 happy. Blair Zajac <blair@olympia.gps.caltech.edu>
suggested it.
Added Ultrix 4.5 to support list, courtesy of a
notification from Gregory Neil Shapiro <gshapiro@WPI.EDU>.
Added AFS support for Solaris 2.4 at the request
of Michael L. Lewis <mlewis@morgan.com> and Phillip
Moore <wpm@morgan.com>. Phillip helped me locate
a test host, generously provided by Heidi Hornstein
<heidi@cmf.nrl.navy.mil> with support from Chaskiel
Moses Grundman <cg2v+@andrew.cmu.edu> and Sushila
R. Subramanian <sushi@cmf.nrl.navy.mil>. Lsof is
configured for AFS with a new script, AFSConfig.
Used a SunOS 4.1.4 test system, provided by Chaskiel,
to extend Solaris AFS support to cover SunOS. Used
another test system, provided by Chaskiel, to extend
AFS support to NEXTSTEP 3.2.
Tested lsof under AFS on yet another Chaskiel-provided
system, running Linux 1.2.13 and AFS 3.3, and found
that lsof needed no changes to recognize its AFS files.
Used a test system, provided by Curt Freeland
<curt@grumpy.cse.nd.edu> and Terry McCoy
<terry@anubis.cc.nd.edu> to extend Solaris AFS
support to Solaris 2.5 with AFS 3.4-Alpha.
Added the [-A A] option for specifying the name list
file that contains dynamic kernel module addresses.
This is defined for the NEXTSTEP, SunOS, and Solaris
implementations.
Added stty isig handling (where appropriate) to
the Customize and Inventory scripts.
Added support to Solaris for the nfs3 file system
type. Its absence was reported by Patrick D.
Sullivan <pds@snt.bellsouth.com>.
In response to a report from Tigran Aivazian
<bs_s641@ceres.king.ac.uk)> corrected bug in Linux
local nlist() function and based the default kernel
loader format on a Configure test for CONFIG_KERNEL_ELF
in /usr/src/linux/include/linux/autoconf.h.
Fixed a bug in name cache exploration for BSD-derived
dialects -- e.g., FreeBSD.
Updated for NetBSD 1.1.
3.60 February 27, 1996
Improved Unix domain socket reporting for Solaris.
Louis Rayman <lou@asahi.ps.quotron.com> helped test.
Added warning messages about absence of Linux
CONFIG_MODULES definition in autoconf.h, leading
to lack of get_kernel_syms() support. Tigran
Aivazian <bs_s641@ceres.king.ac.uk)> supplied the
information.
3.61 March 8, 1996
Added AFS support for AIX and HP-UX and verified
that the lsof Ultrix version needs no additions
for AFS. Chaskiel Moses Grundman <cg2v+@andrew.cmu.edu>
provided the HP-UX and Ultrix test systems. Jan
Tax <jan_tax@unc.edu> provided an AIX 4.1.4 test
system. Bob Cook <bobcook@SLAC.Stanford.EDU> provided
3.2.5 and 4.1.4 test systems.
Fixed minor problems and made improvements to
NEXTSTEP, Solaris, and SunOS AFS support. Changed
the AFSConfig script to ask for AFS version.
During the Hp-UX AFS work, added the hpuxgcc
abbreviation to the Configure script for configuring
lsof to be compiled with gcc under lsof.
Fixed a NetBSD mount structure array referencing
bug, reported by Peter Svensson <petersv@df.lth.se>.
Dropped support for Motorola V/88, because I no
longer have access to test systems.
Added rudimentary support for the IRIX XFS file
system type, pending more information.
3.61 March 12, 1996
Corrected misuse of the LSOF_DINC shell variable
in the Configure script for HP-UX and Solaris.
Larry Rogers <lrr@cert.org> pointed out this problem.
Also removed an obsolete irix52 abbreviation from
Configure.
I didn't consider this change sufficient to warrant
a new version number, but just rebuilt the 3.61
distribution.
3.62 March 26, 1996
Updated AFS comments in 00README.
Supplied missing break statement in a N_VXFS case
clause in the HP-UX dnode.c.
Added Veritas file support to PTX, courtesy of code
supplied by Laurent Montaron <lpm@sequent.com> and
help from Kevin Smallwood <kcs@sequent.com>.
Created two new source modules (dnode[12].c) to
separate PTX header file node definitions and thus
eliminate symbol conflicts. Laurent did most of
the testing.
Added tests to BSDI, FreeBSD, HP-UX, IRIX, NetBSD,
NEXTSTEP, PTX, Solaris and SunOS lsof versions that
allow them to report on unknown file system types.
Added IRIX 6.0.1 #if/#else/#endif support in response
to a report and suggested modifications from Scott
Presnell <srp@zgi.com>.
With the help of Dave Olson <olson@anchor.engr.sgi.com>
improved the IRIX 6.2-BETA XFS support.
3.62 March 27, 1996
Corrected SunOS incompatibility with last-minute
addition of Solaris MVFS support. The problem was
reported by Larry W. Virden <lvirden@cas.org>.
I didn't consider this change sufficient to warrant
a new version number, but just rebuilt the 3.62
distribution.
3.63 April 11, 1996
Upgraded Solaris MVFS support. In the process,
enlarged Solaris and SunOS DEVICE output column.
Changed SunOS 4.1.x Configure to make -DNOCONST
Makefile definition dependent on SC version.
At the suggestion of John DiMarco <jdd@cdf.toronto.edu>
suppressed two warning messages: the device cache
file creation warning when -Db has been specified;
and the one issued when -D? is used with a non-writable
system-wide device cache file and there is no other
writable path. Also at John's suggestion redid
the manner in which child processes are used to
avoid kernel calls that might block; the net effect
of the change is that normally one child process
is required, rather than one per kernel call.
Refined the NetBSD test for <nfs/nfsproto.h> with
a Configure script change.
Modified Configure script to compute AIX version
with ``uname -rv'' when /usr/bin/oslevel can't be
executed. Stephen C. Woods <scw@seas.ucla.edu>
suggested this.
Disabled conflicting prototype definitions in the
local netdb.h used when the SCO 3.0 netdb.h is
missing. Disabled #include of <strings.h> unless
the SCO version is 5.0 or above. Don Kirouac
<dkirouac@minicom.com> pointed out these problems.
3.63 April 15, 1996
Improved Configure's SunOS 4.1.x CC test for compiler
support of the const keyword and avoided Configure's
``test -f {Customize,Inventory}'' (because the
Ultrix test doesn't grok -x) in response to a report
from Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
I didn't consider this change sufficient to warrant
a new version number, but just rebuilt the 3.63
distribution.
3.64 April 26, 1996
Added a negate option for entries of the -u list.
Kurt Hillig <khillig@Chem.LSA.umich.edu> suggested
it.
Added a check for legal protocols in the -i option.
Adjusted the Configure and SGI MkKernOpts scripts
to handle more IRIX situations per instructions
from Dave Olson <olson@anchor.engr.sgi.com>.
Added support for HP-UX 10.10, courtesy of a test
system provided by Mark Bixby <markb@cccd.edu>.
3.65 May 20, 1995
Corrected errors, reported by Arne H. Juul
<arnej@pvv.unit.no>, in use of IRIX stat structure.
Added support for the IRIX 6.2 cachefs, following
a report from Peter Van Epp <vanepp@sfu.ca>.
Added clone support for AIX 4.1.4 and above.
Adjusted the IRIX configuration to work properly
for 64 bit IRIX 6.2 systems. Richard Chycoski
<richard@sfu.ca> and Peter Van Epp <vanepp@sfu.ca>
provided a test system.
3.66 June 19, 1996
Improved the HP-UX VXFS test in the Configure
script, based on a report from Robert Hall
<rjh6810@misty.ca.boeing.com>.
Added SCO information to 00FAQ. Added information
about lsof slowness and nameserver.
Added an untested Configure abbreviation for Solaris
2.5.1.
Ambrose Li <ambrose@www.mingpaoxpress.com> supplied
a Linux change that avoids a conflict with the
d_namlen definition in versions 1.99.8 and above.
Added compiler version identification to the
Configure script for AIX and Solaris cc.
Added support for FreeBSD 2.2-960612-SNAP. Ade
Barkah <mbarkah@hemi.com> provided a test system.
3.67 Jult 1, 1996
Made miscellanous documentation corrections.
Added support for gcc under AIX 4.1 and above,
including an aixgcc Configure abbreviation, and a
work-around for an long long alignment problem.
Stuart D. Gathman <stuart@bmsi.com> and Waldemar
Zurowski <bilbo@pwr.wroc.pl> helped me to understand
the gcc problem and devise the work-around.
3.68 July 17, 1996
Malgorzata Roos <groos@rzusun.unizh.ch>: pointed
out the AIX lsof didn't report the inode number
for named pipes (FIFOs) and wouldn't locate them
by name; _and_ supplied a fix. (Now _that's_ the
kind of bug report I like. :-)
Update Configure script to clean out aix41*
subdirectories created by the AIX gcc work-around.
Taught IRIX lsof how to report the correct device
number, inode number, and size for named NFS pipes.
Taught HP-UX 9.x lsof how to report size/offset
and inode number for named NFS pipes. (HP-UX 10.x
already knows.)
Taught DEC OSF/1 (errr, Digital Unix) lsof to report
device and inode numbers correctly for named pipes.
Because stat(2) under DEC OSF/1 V3.2 doesn't report
the device number correctly for named pipes, lsof
can't locate them by name, but it can do that under
DEC OSF/1 V2.0.
Taught EP/IX 2.1.1 lsof to report device and inode
numbers correctly for named pipes.
Taught versions of lsof for PTX 2.1.6 and 4.1.2 to
report device and inode numbers correctly for named
pipes.
Taught RISC/os 4.52 lsof to report device and inode
numbers correctly for named pipes.
Taught versions of lsof for Ultrix 4.2 and above
to report inode numbers and file systems names
correctly for named pipes (FIFOs).
Added safety check when trying to get a sockaddr_un
structure from a BSDI, FreeBSD, or NetBSD mbuf.
Improved documentation on install permissions in
00README at the suggestion of Paul Wickman
<Paul.Wickman@amd.com>.
Installed support for the DTYPE_PIPE file structure
in FreeBSD 2.2. Changed the FreeBSD version symbol
from _FREEBSDV to FREEBSDV.
Added support for NetBSD 1.2.
3.69 July 30, 1996
Added block device name caching and reporting for
all dialects.
Improved (I think) IRIX 6.2 64 bit configuration.
Eliminated C name space pollution by removing the
leading `_' from all dialect version symbols that
had it: _AIXV, _BSDIV, _OSF1V, _ADVFSV, _EPIXV,
_HPUXV, _IRIXV, _PTXV, _RISCOSV, and _SCOV.
Changed decosf stanza in Configure script to
automatically detect the subdirectory of /sys (or
/usr/sys) that contain's the configuration header
files for the machine. Added a 00FAQ entry about
this.
3.70 August 9, 1996
Set the execute bits on scripts/big_brother.perl5.
Changed -H in scripts/watch_a_file.perl to -n.
Retained all the command name characters that are
available in the proc or user struct for field
output. Improved sample install rules for BSDI
and HP-UX. Strengthened HP-UX CCITT test in the
Configure script. Gildas Perrot <perrot@francenet.fr>
suggested these changes.
Improved Solaris local TCP address reporting, based
on a bug report from John Caruso <jcaruso@csg.com>.
Improved HP-UX VFS handling, and corrected a bug
in VFS handling, based on bug reports from David
Capshaw <David.Capshaw@SEMATECH.Org>.
Added support to -i argument handling to allow port
lists and ranges, and service name lists to be
specified. John DuBois <spcecdt@armory.com>
suggested this.
Dropped support for IRIX 4.0.5H. Revived support
for IRIX 5.2, courtesy of a test system from Dan
Trinkle <trinkle@cs.purdue.edu>.
3.71 August 15, 1996
Improved handling of port ranges specified with
the -i option. Improved performance when the only
option is -i.
3.72 August 28, 1996
Fixed bugs and typos in SCO mount table handling.
Added support for OpenBSD (only the i386 architecture
type has been tested), using the NetBSD dialect
sources. David Mazieres <dm@amsterdam.lcs.mit.edu>
provided a test system.
Added fdesc file system support to FreeBSD, NetBSD
and OpenBSD. Changed the way proc file system
support is activated with additions to the Configure
script and changes to the dialect machine.h files.
Dropped the distribution of the Freebsd <procfs/procfs.h>
header file.
Added support for PTX 4.1.4.
3.73 September 5, 1996
Added information to 00FAQ for missing CCITT HP-UX
header file x25L3.h. Pasi Kaara <ppk@atk.tpo.fi>
provided the information.
Changed AIX header file #include pattern to prevent
gcc's loader from complaining about multiply defined
etherbroadcastaddr[], fddi_broadcastaddr[], and
ie5_broadcastaddr[] CONST u_char arrays from
<net/net_globals.h>. (The AIX loader doesn't
complain.) David Capshaw <David.Capshaw@SEMATECH.Org>
reported this problem.
Removed the HASPWSTAYOPEN definition; it was only
used for two dialects that are no longer supported.
Corrected a bug in UID cacheing that appeared during
long repeat-mode (-r) operations. The bug was
reported by Peter Van Epp <vanepp@sfu.ca>. When
in repeat mode the UID cache will be cleared when
/etc/passwd changes.
Fixed a bug in FreeBSD support that causes a
segmentation fault on VBAD vnodes.
Deleted ultrix22 from Configure and RHF from Ultrix
source files. Dropped 2.2 from support list.
3.74 September 6, 1996
Corrected a bug in FreeBSD's proc table handling,
reported by David O'Brien <obrien@Nuxi.cs.ucdavis.edu>.
3.75 September 9, 1996
Added FreeBSD proc table handling fix from revision
3.74 to BSDI, NetBSD, and OpenBSD dialects.
Improved Solaris VFS handling.
Added pipe handling to OpenBSD. Changed Configure
script to define OPENBSDV for OpenBSD and used that
definition to include the pipe support in the NetBSD
sources. The Configure script defines NETBSDV for
NetBSD. So far neither dialect has any #if/#else/#endif
blocks that depend on version number.
Added support for AIX 4.2.
3.76 September 21, 1996
Plugged a memory leak in command handling, introduced
in revision 3.70. The bug was reported by Peter
Van Epp <vanepp@sfu.ca>.
Fixed a bug in the reporting of size for IRIX 5.3
EFS files, introduced in revision 3.69 by the name
space pollution abatement. The _IRIXV definition
was used in the IRIX 5.x private efs_inode.h header
file to configure the inode stricture for IRIX 5.3,
so I changed the tests to use IRIXV.
Changed information on the AIX Stale Segment ID bug
to reflect the fact that IBM now says they won't
fix it. They have closed the APAR.
Disabled the AIX gcc long long alignment hack under
AIX 4.2, because it doesn't work there. Installed
a fatal error message in Configure that gcc can't
be used to compile lsof under AIX 4.2 until a work-
around can be developed.
Upgraded BSDI, FreeBSD (2.0 and above), NetBSD
(1.1B and above), and OpenBSD lock reporting.
David Mazieres <dm@amsterdam.lcs.mit.edu> reported
the need for the upgrade.
Made similar lock reporting upgrades to (versions
tested are in parentheses): AIX (4.1.4 and 4.2);
DEC OSF/1 (2.0 and 3.2d); EP/IX (2.1.1); HP-UX (9.x
and 10.10); IRIX (5.2, 5.3, and 6.2); Linux; NEXTSTEP
(3.1); PTX (2.1.6 and 4.2); RISCos; SCO (releases
3.0 and 5.0); Solaris (2.5); SunOS (4.1.3); and
Ultrix (4.2).
Updated man page and 00FAQ with more information on
lock reporting.
Updated PTX lsof for 4.2. Upgraded HP-UX lsof for
10.20. Used a test system, provided by Richard
Allen <ra@rhi.hi.is>, and received testing assistance
from Marc Winkler <marc@healthchex.com>.
Changed handling of Internet addresses to avoid DNS
lookup operations when the address has clearly not
been selected. John DuBois <johnd@sco.COM> suggested
this.
3.77 October 2, 1996
Changed SCO Configure stanza to call nm by its full
path, thus avoiding possible confusion. The change
was suggested by Jean-Pierre Radley <jpr@jpr.com>.
Added changes to allow lsof to be compiled by gcc
under AIX 4.2 -- enabled some gcc-specific typedef's
in the AIX machine.h and disabled the Configure
script's rejection of aixgcc for AIX 4.2. The
typdef's were supplied by Henry Grebler
<henryg@optimation.com.au>.
Based on information supplied by Henry and David
J. Wilson <davidw@optimation.com.au>, invented a
description and processing for an unknown file
struct that is established by AIX 4.2 (at least)
for X processes when DISPLAY=:0.0. For convenience
I gave its type the DTYPE_PIPE definition, but that
may be incorrect.
Fixed some Solaris 2.[34] errors in locking code,
added at 3.76, that I couldn't test. Rainer Orth
<ro@TechFak.Uni-Bielefeld.DE> reported the problem
and supplied the fixes.
Made Configure script supply NeXTSTEP 3.x version
in Makefile so that the shadow vnode locking code,
introduced in 3.76, would be disabled for NeXTSTEP
3.0. Rainer Orth discovered this problem, too.
Added reporting of UNIX domain socket inode numbers
for Linux version 2.0 and above. The addition was
supplied by Matthew Burt <BurtM@poole.siemens.co.uk>.
Enhanced file searching to report all instances of
references to automounted file systems, even when
they're direct mounts not yet realized. Enhanced
Solaris 2.5 lsof to grok autofs nodes. Victoria
H. Lau <vlau@msmail2.hac.com> pointed out the need
for these enhancements and helped test them.
Changed AIX lock length test so it will work with
gcc under AIX 4.2.
Changed PTX HAS_VXFS symbol, indicating presence
of VxFS, to HASVXFS for consistency with the HP-UX
form of the symbol.
3.78 October 14, 1996
Changed strtol() call in private Linux nlist()
function to strtoul(). Linux kernel addresses at
2.1.0 have their top bit set and appear to be
negative to strtol(). This information was provided
by Marty Leisner <leisner@sdsp.mc.xerox.com>.
Marty also notes that other, unknown-as-of-yet
problems prevent lsof from working under 2.1. He
is investigating, since I don't have access to a
2.1 system.
Added definitions to machine.h for a private file
struct type (HASPRIVFILETYPE and PRIVFILETYPE) that
can be accommodated without changing prfp.frag,
much as HASPIPEFN works for PIPE file struct types.
Used the new private file struct type support to
support the AIX f_type=0xf that DISPLAY=:0.0 causes.
Changed its output TYPE from PIPE to SMT; displayed
file size as buffer size less free bytes in buffer;
enabled recognizion under AIX 4.1.4. Mike Feldman
<feldman@charm.urbana.mcd.mot.com> and others helped
me identify this file as a Shared Memory Transport
(SMT) socket.
Corrected a function prototype in the HP-UX dnode.c
for HP-UX 10 and greater; gcc objected; HP's cc did
not. Christian Krackowizer <kra1@technodat.co.at>
reported the problem.
Made AFSConfig script more capable of locating the
cell's root directory. Updated AFS documentation
in 00FAQ and 00README. Both were suggested by
Timothy Miller <tsm@cs.brown.edu>.
Installed update to big_brother.perl5 script from
Lionel Cons <Lionel.Cons@cern.ch>.
3.79 October 29, 1996
Added support for IRIX 6.4, courtesy of a test
system provided by Angel Li <angel@rrsl.rsmas.miami.edu>.
Fixed FIFO and NFS3 bugs in IRIX 6.2 lsof in the
process. Lsof has not been tested under IRIX 6.3,
but the Configure script has a stanza for it.
Changed device functions to use stat() instead of
lstat(). Used WARNDEVACCESS to suppress stat(2)
failure messages.
Tested under OpenBSD 2.0.
3.80 November 8, 1996
Corrected comments in 00README about using the
sunos413 and sunos413cc Configure abbreviations.
Made some Configure and Customize script changes,
suggested by Bruce Jerrick <bruce@cse.ogi.edu>.
Added missing elements to definition of local
Solaris 2.3 lock_descriptor structure so that
dnode.c will compile and work properly under it.
Corrected a bug in Solaris 2.[34] lock descriptor
handling.
3.81 November 14, 1996
Corrected error in the "invented" HP-UX 10.20 proc
struct. The erroneous struct definition named the
set-UID member as the UID member, resulting in
occasional incorrect UID attributions in lsof
output.
At the suggestion of Larry Schwimmer
<schwim@cyclone.stanford.edu>, changed AFSConfig
to use awk to get the cell name from
/usr/etc/vice/ThisCell, thus avoiding a problem
when the cell name line has more than one word.
Added -DSWASH to IRIX 6.2 options propagated from
the kernel build CCOPTS to lsof's Makefile. Randolph
J. Herber <herber@dcdrjh.fnal.gov> did the detective
work that revealed the need for this. IRIX 6.2 patch
1488 added -DSWASH and its effects.
3.82 December 11, 1996
Updated Configure script for FreeBSD 3.0 and SCO
OpenServer 5.0.[24]. FreeBSD Configure script
change was supplied by David E. O'Brien
<obrien@NUXI.com> and SCO Configure script change
was supplied by Bela Lubkin <belal@sco.COM>.
Tested lsof under FreeBSD 3.0, courtesy of a test
system provided by Ade Barkah <mbarkah@hemi.com>.
Added changes to support SCO OpenServer 5.0.4
(Comet), supplied by Bela Lubkin <belal@sco.COM>.
Added support for UnixWare 2.1. D. Chris Daniels
<chrisd@dlpco.com> provided a test system and Bela
Lubkin provided technical assistance.
Added support for Pyramid DC/OSx 1.1 and Reliant
UNIX 5.43. Bruce Beare <bjb@pyramid.com> and Kevin
Smith <kevin@pyramid.com> provided test systems
and technical assistance. This dialect version
must run setuid-root, since it accesses proc and
user structures vic the /proc file system.
Tested under PTX 2.1.9 and added support for PTX
4.2.1.
At Bela Lubkin's suggestion added a commercial to
the lsof man page, -h option, and -v option output,
telling where to get the latest revision. This
entailed large scale rearrangement of the -h output
to keep it as short as possible. It also involved
shortening the -X explanation for PTX.
Made sure that address segment access errors didn't
incorrectly force the listing of a process. This
fix was needed by the Sun, Pyramid, and UnixWare
ports.
Corrected bug in the way the local device table is
sorted.
3.83 December 30, 1996
Added support for Solaris 2.6 (Beta) with help from
Casper Dik <casper@holland.Sun.COM>, May Jackson
<methalya.jackson@eng.sun.com>, Joseph Kowalski
<jek3@Eng.Sun.COM>, and the Solaris 2.6 Beta test
program.
Fixed an inode file system type processing bug in
SCO OpenServ 5.0 and greater, reported by Robert
Lipe <robertl@arnet.com>.
Fixed bugs in SCO kernel name cache probing, courtesy
of code and suggestions from Bela Lubkin <belal@sco.COM>.
Revised kernel name list handling to remove the need
for changing two files (dlsof.h and dstore.c) when
altering, removing, or adding name list symbols.
All dialects were affected.
Added support for SCO OpenServer event "clones."
Robert Lipe need for their support and Bela Lubkin
provided technical assistance in identifying them.
Added display of bound name to Solaris UNIX domain
socket file handling.
Correct bug in SunOS address space ("txt" file)
handling.
Tested under UnixWare 2.1.1.
Changed SGI IRIX lsof to use the kernel's proc
struct size when striding through its proc table
(IRIX versions below 6.4). The proc struct size
difference warning is still issued, and lsof still
uses the proc struct size and proc struct from
<sys/proc.h> to read and process proc table
information. Added a note to 00FAQ about this.
Deferred Internet host and port name lookups to
print time, thus avoiding lookups for files that
are not listed.
3.84 January 13, 1997
Updated the Pyramid private configuration script,
MkKernOpts, to propagate the R4000 definition for
DC/OSx systems so equipped. Anthony Shortland
<anthony.shortland@FMR.COM> pointed out the need
for this and Kevin Smith <kevin@pyramid.com> provided
access to a test system.
Added information to 00FAQ about UDP ports for
which lsof can't find users, because the ports are
reserved to the kernel and aren't associated with
open files.
3.85 January 17, 1987
The DEC OSF/1 kernel name cache can be processed
as a simple table, rather than a linked list, so
changed the interface to rnam.frag accordingly.
Added a new optional output field, parent process
ID (PPID). The -R option (for paRent) selects it,
and the `R' field identifier labels it. Updated
some scripts to handle it and developed two new
scripts, idrlogin.perl and idrlogin.perl5, to
use it in locating nework (rlogind and telnetd)
source addresses for shell processes. Added some
information about the new scripts to 00QUICKSTART.
3.86 January 30, 1997
Add explanation of why device warning messages
disappear when the device cache file is used.
Changed Linux Configure stanza to check more
places for the [z]System.map file and warn if
the one located differs in date from /vmlinuz.
Bjorn S. Nilsson <NILSSON@nbivms.nbi.dk> suggested
this for easier configuration at Linux 2.0.28.
Changed Linux Confifgure stanza to check for the
presence of fl_fd, fl_file, and fl_whence in the
file_lock structure of <linux.fs.h> and define
symbols appropriately.
Changed Linux lock testing to test task structure
pointer (fl_owner) from file_lock struct as well
as (possibly) the file struct pointer (fl_file) or
file decriptor number (fl_fd) to identify the lock
owner, depending on what HAS_FL_* symbols were
defined by Configure's file_lock structure examination.
Added section to Linux Problems in 00FAQ about this.
Corrected 00FAQ reference in Configure's Solaris
2.4 stanza.
3.87 February 11, 1997
Corrected setting of VxFS device number for HP-UX
and PTX.
Added VM map flag test #if/#else/#endif for recent
versions of FreeBSD 3.0, supplied by Chris Timmons
<skynyrd@opus.cts.cwu.edu>.
Added a #define that removes a conflict between a
signal() prototype in the IRIX 6.4 <sys/systm.h>
and one in its <sys/signal.h>, exposed when cachefs
support is enabled. Wolfgang Hecht
<hecht@zedat.fu-berlin.de> identified the need for
this addition and helped test it. Refined IRIX
proc struct size test, warning, and use.
Revised Linux system map file handling (yet again)
to search for the file at execution time, rather
than in the Configure script. Marty Leisner
<leisner@sdsp.mc.xerox.com> suggested this.
Added VxFS support to Solaris lsof with help from
Peter Radig <radig@DresdnerBank.de>. Philip Kizer
<pckizer@tamu.edu> helped test.
Added support for PTX 4.3, thanks to access provided
by Peter Jordan <petej@sequent.com>.
3.87 February 11, 1997
supplement Updated FreeBSD kernel name list handling.
3.88 February 17, 1997
Added documentation files -- 00.README.FIRST[_<version>]
and 00RELEASE.SUMMARY_<version> -- to the distribution.
Vic Abell <abe@purdue.edu>
Purdue University Computing Center
February 17, 1997