
	    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


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, and		the IBM RISC/System 6000
	4.1.[1234]
    BSDI BSD/OS 2.0, 2.0.1,	Intel-based systems
	and 2.1-BETA
    EP/IX 2.1.1			the CDC 4680
    FreeBSD 1.1.5.1, 2.0,	Intel-based systems
	2.0.5, and 2.1
    HP-UX 8.x, 9.x, 10.01,	HP systems (some combinations)
	and 10.10
    IRIX 4.0.5H, 5.2, 5.3,	SGI systems
	6.0, 6.0.1, 6.1, and
	6.2-BETA
    Linux through 1.3.56	Intel-based systems
    Motorola V/88 R32V3,	M88K systems
	R40V4.[123]
    NetBSD 1.0 and 1.1		Intel and SPARC-based systems
    NEXTSTEP 2.1 and 3.[0123]	all NEXTSTEP architectures
    OSF/1 2.0, 3.0, 3.2, and	the DEC Alpha
	4.0-BETA
    RISC/os 4.52		MIPS R2000-based systems
    SCO OpenDesktop or		Intel-based systems
	OpenServer 1.1, 3.0,
	and 5.0
    Sequent PTX 2.1.[156], 	Sequent systems
	4.0.[23], and 4.1.[02]
    Solaris 2.[12345]		Sun 4 and i86pc systems
    SunOS 4.1.[1234]		Sun 3 and 4
    Ultrix 2.2, 4.2, 4.3,	DEC RISC and VAX
	4.4, 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, 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 process that has opened the file;

    * the process group identification number of the process (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, 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/     next/    riscos/  ultrix/
  common/  freebsd/  motorola/  osf/     sco/
  dcosx/   hpux/     netbsd/    ptx/     sgi/

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@cc.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 mor 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 chane 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.


Vic Abell <abe@cc.purdue.edu>
Purdue University Computing Center
May 20, 1996
