diff -u --recursive --new-file v1.3.87/linux/Documentation/Changes linux/Documentation/Changes
--- v1.3.87/linux/Documentation/Changes	Fri Apr 12 15:51:42 1996
+++ linux/Documentation/Changes	Sat Apr 13 14:19:00 1996
@@ -1,300 +1,158 @@
+This document contains a list of the latest releases of the most
+important packages for Linux.
 
-LINUX_UPTODATE - "Keep your Linux system up to date".
+The installation information were removed because redundant.
 
-For comments, fixed, etc write to
-Alessandro Sigala <ssigala@globalnet.it>
+Last updated: 12 Apr 1996.
+Author: Alessandro Sigala `ssigala@globalnet.it'.
 
-Last updated: 11 Apr 1996.
+Current Releases
+****************
 
-This short document describe what you need and where to get
-most of the new stuff for your Linux box (intended for systems that have
-already upgraded to ELF binaries).
+- Kernel modules 1.3.69
+- PPP daemon 2.2.0e
+- Dynamic linker (ld.so) 1.7.14
+- GNU CC 2.7.2
+- Binutils 2.6.0.12
+- Linux C Library 5.3.9
+- Linux C++ Library 2.7.1.4
+- Termcap 2.0.7
+- Procps 0.99a
+- Gpm 1.06
+- SysVinit 2.60
 
-The ftp site mainly used in this document is sunsite.unc.edu.
+What you really need to upgrade
+*******************************
 
-The current releases of the linux software are:
-Linux Kernel 1.3.xx :-)
-Kernel modules 1.3.57
-PPP daemon 2.2.0e
-Binutils 2.6.0.12
-Dynamic linker (ld.so) 1.7.14
-Linux C Library 5.3.9
-Linux C++ Library 2.7.1.4
-Termcap 2.0.7
-GNU CC 2.7.2
-Procps 0.99a
+Dynamic linker
+==============
 
-What do you really need to upgrade for using the latest 1.3.x kernel:
-- Modules 1.3.57 for using the kernel modules
-- Procps 0.99a 	 for using free, ps, pstree, top and friends
-- PPP 2.2.0e     for using pppd, pppstats, pppon, etc
+   You may upgrade the dynamic linker to the latest release only to
+solve some bugs.
 
-This document may also be useful to answer the questions like:
+SysVinit
+========
 
-* Q: 'free' displays some strange lines
-  A: upgrade the procps package
+   The FIFO behavior is changed in latest 1.3.x kernel releases. You may
+upgrade to this version if the older version break.
 
-* Q: 'pppd' displays "the PPP protocol is not available"
-  A: upgrade the PPP package
+PPP daemon and utilities
+========================
 
-... and so :)
+   To use the PPP protocol with the 1.3.x linux kernel, you need to
+upgrade the PPP package to version 2.2.0e.
 
-----------------------------------------------------------------------------
+Procps utilities
+================
 
-** NOTES
+   In the latest 1.3.x kernel releases the /proc filesystem structure
+was changed, so you need to upgrade the Procps package to version 0.99a.
 
-- Take a look at the documentation that come with every package
-  before doing anything!
+Installation notes
+******************
 
-- All the installation operation must be done as root.
+Kernel Modules
+==============
 
-- If you want to use the latest GCC release (2.7.2) you must upgrade
-  your C Library, the C++ Library, the dynamic linker and the binutils.
+   The current kernel modules release is 1.3.57, but you need the
+experimental release 1.3.69 to use newer binutils 2.6.0.x, because
+modules compiled with new binutils can't be loaded by modules 1.3.57.
 
-- After installed any new library, run the program `ldconfig' to update
-  the dynamic linker cache (you may also need to modify the file
-  /etc/ld.so.conf).
+The Linux C Library
+===================
 
-----------------------------------------------------------------------------
+   The current Linux C Library release is 5.3.9. In this release there
+are some important changes that may break other programs, then read the
+`release.libc-5.3.9' file carefully!  You need to patch and recompile
+the `make' utility, or get it precompiled from the address written in
+the next section of this file.  If you don't want to patch and
+recompile the binaries you may try the release 5.2.18.
 
-* The dynamic linker.
+The Termcap Library
+===================
 
-Get the file ld.so-1.7.14.tar.gz and unpack into a directory. You should
-have no problem installing this package, simply cd into the package
-directory and type `make install'.
+   The current Termcap release is 2.0.7. If you upgrade to this release
+read the `README' file contained into the package to get some important
+information about the `tgetent' function changes!
 
-----------------------------------------------------------------------------
+Where to get the files
+**********************
 
-* The Linux C Library.
+Binutils
+========
 
-*** NOTE: read the release.libc-5.3.9 file before installing the
-          libraries!
+ftp://sunsite.unc.edu/pub/Linux/GCC/binutils-2.6.0.12.bin.tar.gz
+Installation notes:
+ftp://sunsite.unc.edu/pub/Linux/GCC/release.binutils-2.6.0.12
 
-Get the libc-5.3.9.bin.tar.gz file and unpack into the root directory
+GNU CC
+======
 
-i.e. into the root directory type:
+ftp://sunsite.unc.edu/pub/Linux/GCC/gcc-2.7.2.bin.tar.gz
+Installation notes:
+ftp://sunsite.unc.edu/pub/Linux/GCC/release.gcc-2.7.2
 
-  tar xvfz libc-5.3.9.bin.tar.gz
+Linux C Library
+===============
 
-you also need to make the symbolic links to the new library into the /lib
-directory
+The latest 5.3.9 release:
+ftp://sunsite.unc.edu/pub/Linux/GCC/libc-5.3.9.bin.tar.gz
+Installation notes:
+ftp://sunsite.unc.edu/pub/Linux/GCC/release.libc-5.3.9
 
-i.e. into the /lib directory type:
+Patched make binary:
+ftp://sunsite.unc.edu/pub/Linux/devel/make/make-3.74-direntfix-elf.tgz
 
-  rm -f libc.so.5
-  sln libc.so.5.3.9 libc.so.5
-  rm -f libm.so.5
-  sln libm.so.5.0.5 libm.so.5
+The 5.2.18 release:
+ftp://sunsite.unc.edu/pub/Linux/GCC/libc-5.2.18.bin.tar.gz
+Installation notes:
+ftp://sunsite.unc.edu/pub/Linux/GCC/release.libc-5.2.18
 
-*** Note 1:
+Linux C++ Library
+=================
 
-<cutted from release.libc-5.3.9>
+ftp://sunsite.unc.edu/pub/Linux/GCC/libg++-2.7.1.4.bin.tar.gz
+Installation notes:
+ftp://sunsite.unc.edu/pub/Linux/GCC/release.libg++-2.7.1.4
 
-The structure DIR, defined in sysdeps/linux/dirstream.h, was changed in
-release 5.2.0.  If you upgrade from release 5.1.4 or earlier to release
-5.2.0 or later, you must reboot after installing the new libraries.
+Dynamic Linker
+==============
 
-*** Note 2:
+ftp://sunsite.unc.edu/pub/Linux/GCC/ld.so-1.7.14.tar.gz
 
-You must patch and recompile your GNU 'make' utility!
+Termcap Library
+===============
 
-<cutted from release.libc-5.3.9>
+ftp://sunsite.unc.edu/pub/Linux/GCC/termcap-2.0.7.tar.gz
 
-A dirent bug, which erroneously defined d->reclen to d->namlen if USE_GNU
-was defined, has been fixed.  Unfortunately, some GNU packages depend on
-this bug.  GNU make 3.xx is one of them.  A patch is included here.
+Modules utilities
+=================
 
-here the patch:
-RCS file: /home/cvs/gnu/make/dir.c,v
-retrieving revision 1.1.1.1
-diff -c -r1.1.1.1 dir.c
-*** 1.1.1.1	1995/06/25 03:27:16
---- dir.c	1995/06/25 03:55:22
-***************
-*** 20,26 ****
-  
-  #if	defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__)
-  #include <dirent.h>
-! #ifndef	__GNU_LIBRARY__
-  #define D_NAMLEN(d) strlen((d)->d_name)
-  #else	/* GNU C library.  */
-  #define D_NAMLEN(d) ((d)->d_namlen)
---- 20,26 ----
-  
-  #if	defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__)
-  #include <dirent.h>
-! #ifndef	__BAD_GNU_LIBRARY__
-  #define D_NAMLEN(d) strlen((d)->d_name)
-  #else	/* GNU C library.  */
-  #define D_NAMLEN(d) ((d)->d_namlen)
-===================================================================
-RCS file: /home/cvs/gnu/make/glob/glob.c,v
-retrieving revision 1.1.1.1
-diff -c -r1.1.1.1 glob.c
-*** 1.1.1.1	1995/06/25 03:27:18
---- glob/glob.c	1995/06/25 03:56:01
-***************
-*** 64,70 ****
-  
-  #if	defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__)
-  #include <dirent.h>
-! #ifndef	__GNU_LIBRARY__
-  #define D_NAMLEN(d) strlen((d)->d_name)
-  #else	/* GNU C library.  */
-  #define D_NAMLEN(d) ((d)->d_namlen)
---- 64,70 ----
-  
-  #if	defined (POSIX) || defined (HAVE_DIRENT_H) || defined (__GNU_LIBRARY__)
-  #include <dirent.h>
-! #ifndef	__BAD_GNU_LIBRARY__
-  #define D_NAMLEN(d) strlen((d)->d_name)
-  #else	/* GNU C library.  */
-  #define D_NAMLEN(d) ((d)->d_namlen)
+The latest public release
+ftp://sunsite.unc.edu/pub/Linux/kernel/modules-1.3.57.tar.gz
+The latest experimental release
+http://www.pi.se/blox/
 
-----------------------------------------------------------------------------
+PPP Daemon and utilities
+========================
 
-* The Linux C++ Library.
+ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/ppp-2.2.0e.tar.gz
 
-*** NOTE: read the release.libg++-2.7.1.4 file before installing the
-          libraries!
+Procps utilities
+================
 
-Get the libg++-2.7.1.4.bin.tar.gz file and unpack into the root directory
+ftp://sunsite.unc.edu/pub/Linux/system/Status/ps/procps-0.99a.tgz
 
-i.e. into the root directory type:
+Gpm mouse utilities
+===================
 
-  tar xvfz libg++-2.7.1.4.bin.tar.gz
+ftp://iride.unipv.it/pub/gpm/gpm-1.06.tar.gz
+ftp://sunsite.unc.edu/pub/Linux/system/Daemons/gpm-1.06.tar.gz
 
-*** NOTE:
+SysVinit utilities
+==================
 
-You may have troubles with the binaries linked with the old 2.6 libraries
-(for example: umssync), dumping core or doing strange stuff.
-To resolve the problems you need to recompile the sources of the binaries.
-
-----------------------------------------------------------------------------
-
-* The binutils.
-
-*** NOTE: read the release.binutils-2.6.0.12 file before installing the
-          libraries!
-
-Get the binutils-2.6.0.12.bin.tar.gz file and unpack it into the root
-directory
-
-i.e. into the root directory type:
-
-  tar xvfz binutils-2.6.0.12.bin.tar.gz
-
-*** NOTE:
-
-<cutted from release.binutils-2.6.0.12>
-
-If you don't need the cross assemblers/linkers for m68k-linux,
-m68k-linuxaout, sparc-sun-solaris2, sparc-sun-sunos4.1 nor alpha-linux,
-please do
-
-1. su root
-2. cd /usr
-3. rm -rf m68k-linux m68k-linuxaout sparc-sun-solaris2 sparc-sun-sunos4.1 alpha-linux
-
-----------------------------------------------------------------------------
-
-* The GNU CC compiler.
-
-** NOTE: read the release.gcc-2.7.2 file before installing the package!
-
-Get the gcc-2.7.2.bin.tar.gz file and unpack it into the root
-directory
-
-i.e. into the root directory type:
-
-  tar xvfz gcc-2.7.2.bin.tar.gz
-
-You may want to remove the old compiler. Simply cd into the
-/usr/lib/gcc-lib/i486-linux and remove the old compiler directory tree.
-
-----------------------------------------------------------------------------
-
-* The termcap library.
-
-*** NOTE: read first the documentation that come with the package!
-
-Get the file termcap-2.0.7.tar.gz and unpack into a directory. You should
-have no problem installing this package, simply cd into the package
-directory and type `make' then `make install'.
-
-*** NOTE:
-
-<cutted from the README of the package>
-
-The linux entry in the new termcap is larger than 1024 chars.
-But your application may only have a 1024 byte buffer. You may see
-
-tgetent: warning: termcap entry too long
-
-message when you run it in the Linux console. You can pass NULL to
-tgetent () to let termcap malloc the buffer. elm and zsh are two
-applications I know which use termcap and have this problem.
-
-----------------------------------------------------------------------------
-
-* The kernel modudes utilities.
-
-*** NOTE: read first the documentation that come with the package!
-
-Get the file modules-1.3.57.tar.gz and unpack into a directory. You should
-have no problem installing this package, simply cd into the package
-directory and type `make' then `make install'.
-
-----------------------------------------------------------------------------
-
-* The PPP daemon utilities.
-
-*** NOTE: read first the documentation that come with the package!
-
-Get the file ppp-2.2.0e.tar.gz and unpack into a directory. You should
-have no problem installing this package, simply cd into the package
-directory and type `make' then `make install'.
-
-----------------------------------------------------------------------------
-
-* The procps utilities.
-
-*** NOTE: read first the documentation that come with the package!
-
-Get the file procps-0.99a.tar.gz and unpack into a directory. You should
-have no problem installing this package, simply cd into the package
-directory and type `make' then `make install'.
-
-----------------------------------------------------------------------------
-
-This is where you can find all that is described in this document.
-
-### sunsite.unc.edu:/pub/Linux/GCC
-
-binutils-2.6.0.12.bin.tar.gz		Binutils 2.6.0.12 (as,ld etc)
-gcc-2.7.2.bin.tar.gz			GNU CC 2.7.2 (ELF and a.out)
-ld.so-1.7.14.tar.gz			The dynamic linker
-libc-5.3.9.bin.tar.gz			The C library
-libg++-2.7.1.4.bin.tar.gz		The C++ library
-termcap-2.0.7.tar.gz			Termcap 2.0.7
-release.binutils-2.6.0.12
-release.gcc-2.7.2
-release.libc-5.3.9			info (contains the patch for 'make')
-release.libg++-2.7.1.4
-
-### sunsite.unc.edu:/pub/Linux/kernel
-
-modules-1.3.57.tar.gz			Utils the kernel modules
-
-### sunsite.unc.edu:/pub/Linux/system/Network/serial
-
-ppp-2.2.0e.tar.gz			The pppd daemon and utils for PPP
-
-### sunsite.unc.edu:/pub/Linux/system/Status/ps
-
-procps-0.99a.tgz			ps, pstree, free, etc
-
-----------------------------------------------------------------------------
-
-For comments, fixed, etc write to
-Alessandro Sigala <ssigala@globalnet.it>
+At the time of writing:
+ftp://sunsite.unc.edu/pub/Linux/Incoming/sysvinit-2.60.tar.gz
+Next location:
+ftp://sunsite.unc.edu/pub/Linux/system/Daemons/init/sysvinit-2.60.tar.gz
diff -u --recursive --new-file v1.3.87/linux/Makefile linux/Makefile
--- v1.3.87/linux/Makefile	Fri Apr 12 15:51:45 1996
+++ linux/Makefile	Fri Apr 12 15:53:10 1996
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 3
-SUBLEVEL = 87
+SUBLEVEL = 88
 
 ARCH = i386
 
diff -u --recursive --new-file v1.3.87/linux/drivers/char/ftape/ftape-io.c linux/drivers/char/ftape/ftape-io.c
--- v1.3.87/linux/drivers/char/ftape/ftape-io.c	Fri Apr 12 15:51:52 1996
+++ linux/drivers/char/ftape/ftape-io.c	Sat Apr 13 11:23:24 1996
@@ -951,7 +951,7 @@
 	default:
 		result = -ENODEV;	/* unknown wakeup method */
 	}
-	/*  If wakeup succeeded we shouldn't get and error here..
+	/*  If wakeup succeeded we shouldn't get an error here..
 	 */
 	if (result == 0) {
 		result = ftape_report_raw_drive_status(&status);
diff -u --recursive --new-file v1.3.87/linux/drivers/char/stallion.c linux/drivers/char/stallion.c
--- v1.3.87/linux/drivers/char/stallion.c	Fri Apr 12 15:51:53 1996
+++ linux/drivers/char/stallion.c	Sat Apr 13 11:21:38 1996
@@ -527,7 +527,7 @@
 
 /*
  *	Define the driver info for a user level control device. Used mainly
- *	to get at port stats - only ont using the port device itself.
+ *	to get at port stats - only not using the port device itself.
  */
 static struct file_operations	stl_fsiomem = {
 	NULL,
diff -u --recursive --new-file v1.3.87/linux/drivers/isdn/icn/icn.c linux/drivers/isdn/icn/icn.c
--- v1.3.87/linux/drivers/isdn/icn/icn.c	Fri Apr 12 15:51:53 1996
+++ linux/drivers/isdn/icn/icn.c	Sat Apr 13 11:21:38 1996
@@ -51,7 +51,7 @@
  *
  * Revision 1.8  1995/03/15  12:49:44  fritz
  * Added support for SPV's
- * Split pollbchan_work ifor calling send-routine directly
+ * Split pollbchan_work for calling send-routine directly
  *
  * Revision 1.7  1995/02/20  03:48:03  fritz
  * Added support of new request_region-function.
diff -u --recursive --new-file v1.3.87/linux/drivers/scsi/pas16.c linux/drivers/scsi/pas16.c
--- v1.3.87/linux/drivers/scsi/pas16.c	Wed Apr 10 17:02:25 1996
+++ linux/drivers/scsi/pas16.c	Sat Apr 13 12:41:34 1996
@@ -419,7 +419,6 @@
 	else 
 	    instance->irq = NCR5380_probe_irq(instance, PAS16_IRQS);
 
-                instance->irq = IRQ_NONE;  /*****temp****/
 	if (instance->irq != IRQ_NONE) 
 	    if (request_irq(instance->irq, pas16_intr, SA_INTERRUPT, "pas16", NULL)) {
 		printk("scsi%d : IRQ%d not free, interrupts disabled\n", 
diff -u --recursive --new-file v1.3.87/linux/drivers/scsi/scsi.c linux/drivers/scsi/scsi.c
--- v1.3.87/linux/drivers/scsi/scsi.c	Fri Apr 12 15:52:01 1996
+++ linux/drivers/scsi/scsi.c	Sat Apr 13 11:21:49 1996
@@ -277,6 +277,7 @@
 {"TEXEL","CD-ROM","1.06", BLIST_BORKEN},
 {"INSITE","Floptical   F*8I","*", BLIST_KEY},
 {"INSITE","I325VM","*", BLIST_KEY},
+{"NRC","MBR-7","*", BLIST_FORCELUN | BLIST_SINGLELUN},
 {"PIONEER","CD-ROM DRM-602X","*", BLIST_FORCELUN | BLIST_SINGLELUN},
 {"PIONEER","CD-ROM DRM-604X","*", BLIST_FORCELUN | BLIST_SINGLELUN},
 {"EMULEX","MD21/S2     ESDI","*",BLIST_FORCELUN | BLIST_SINGLELUN},
diff -u --recursive --new-file v1.3.87/linux/drivers/sound/gus_wave.c linux/drivers/sound/gus_wave.c
--- v1.3.87/linux/drivers/sound/gus_wave.c	Fri Apr 12 15:52:03 1996
+++ linux/drivers/sound/gus_wave.c	Sat Apr 13 11:21:38 1996
@@ -2653,7 +2653,7 @@
 				 */
 
 	offs += sample_ptrs[sample];	/*
-					 * Begin offsess + offset to DRAM
+					 * Begin offset + offset to DRAM
 					 */
 
 	for (n = 0; n < l; n++)
@@ -2698,7 +2698,7 @@
 				 */
 
 	offs += sample_ptrs[sample];	/*
-					 * Begin offsess + offset to DRAM
+					 * Begin offset + offset to DRAM
 					 */
 
 	for (n = 0; n < l; n++)
diff -u --recursive --new-file v1.3.87/linux/drivers/sound/sscape.c linux/drivers/sound/sscape.c
--- v1.3.87/linux/drivers/sound/sscape.c	Sun Mar 31 00:13:18 1996
+++ linux/drivers/sound/sscape.c	Sat Apr 13 11:21:38 1996
@@ -1145,7 +1145,7 @@
   sscape_write (devc, GA_DMACFG_REG, 0x50);
 
   /*
-     * Take the gate-arry off of the DMA channel.
+     * Take the gate-array off of the DMA channel.
    */
   sscape_write (devc, GA_DMAB_REG, 0x20);
 
diff -u --recursive --new-file v1.3.87/linux/fs/isofs/inode.c linux/fs/isofs/inode.c
--- v1.3.87/linux/fs/isofs/inode.c	Sun Mar 24 14:07:42 1996
+++ linux/fs/isofs/inode.c	Sat Apr 13 11:21:38 1996
@@ -430,7 +430,7 @@
 	struct statfs tmp;
 
 	tmp.f_type = ISOFS_SUPER_MAGIC;
-	tmp.f_bsize = 1 << ISOFS_BLOCK_BITS;
+	tmp.f_bsize = sb->s_blocksize;
 	tmp.f_blocks = sb->u.isofs_sb.s_nzones;
 	tmp.f_bfree = 0;
 	tmp.f_bavail = 0;
@@ -681,7 +681,7 @@
 	struct iso_directory_record * de;
 	
 	offset = 0;
-	block = extent << (ISOFS_BLOCK_BITS - bufbits);
+	block = extent << (ISOFS_ZONE_BITS(parent) - bufbits);
 	if (!(bh = bread(parent->i_dev, block, bufsize)))  return -1;
 	
 	while (1 == 1) {
@@ -689,6 +689,7 @@
 		if (*((unsigned char *) de) == 0) 
 		{
 			brelse(bh);
+			printk("Directory .. not found\n");
 			return -1;
 		}
 		
@@ -718,9 +719,11 @@
 	result = -1;
 
 	offset = 0;
-	block = parent_dir << (ISOFS_BLOCK_BITS - bufbits);
+	block = parent_dir << (ISOFS_ZONE_BITS(parent) - bufbits);
 	if (!block || !(bh = bread(parent->i_dev,block, bufsize)))
+	{
 		return -1;
+	}
 	
 	for(;;)
 	{
@@ -738,11 +741,19 @@
 			block++;
 			directory_size -= bufsize;
 			if(directory_size < 0) return -1;
-			if((block & 1) && (ISOFS_BLOCK_BITS - bufbits))
-			  return -1;
+			if((block & 1) && (ISOFS_ZONE_BITS(parent) - bufbits) == 1)
+			{
+				return -1;
+			}
+			if((block & 3) && (ISOFS_ZONE_BITS(parent) - bufbits) == 2)
+			{
+				return -1;
+			}
 			if (!block
 			    || !(bh = bread(parent->i_dev,block, bufsize)))
+			{
 				return -1;
+			}
 			continue;
 		}
 		
@@ -764,7 +775,11 @@
 			brelse(bh);
 			offset -= bufsize;
  			directory_size -= bufsize;
-			if(directory_size < 0) return -1;
+			if(directory_size < 0) 
+			{
+				printk("Directory size < 0\n");
+				return -1;
+			}
 			block++;
 			if(!(bh = bread(parent->i_dev,block,bufsize))) {
  			        kfree(cpnt);
diff -u --recursive --new-file v1.3.87/linux/fs/isofs/namei.c linux/fs/isofs/namei.c
--- v1.3.87/linux/fs/isofs/namei.c	Fri Dec 22 08:51:08 1995
+++ linux/fs/isofs/namei.c	Sat Apr 13 12:14:45 1996
@@ -199,7 +199,9 @@
 					   find_rock_ridge_relocation(de,dir));
 				if(inode_number == -1){
 					/* Should never happen */
-					printk("Backlink not properly set.\n");
+					printk("Backlink not properly set %x %lx.\n",
+					       isonum_733(de->extent),
+					       dir->i_ino);
 					goto out;
 				}
 			}
diff -u --recursive --new-file v1.3.87/linux/fs/isofs/rock.c linux/fs/isofs/rock.c
--- v1.3.87/linux/fs/isofs/rock.c	Wed Nov  8 12:25:38 1995
+++ linux/fs/isofs/rock.c	Sat Apr 13 11:21:39 1996
@@ -507,6 +507,8 @@
 	 if(slen < 2) break;
 	 if(!rootflag) strcat(rpnt,"/");
        };
+     case SIG('C','E'):
+       CHECK_CE; /* This tells is if there is a continuation record */
        break;
      default:
        break;
diff -u --recursive --new-file v1.3.87/linux/fs/nfs/dir.c linux/fs/nfs/dir.c
--- v1.3.87/linux/fs/nfs/dir.c	Fri Apr 12 15:52:04 1996
+++ linux/fs/nfs/dir.c	Sat Apr 13 10:37:02 1996
@@ -486,7 +486,7 @@
 static int nfs_sillyrename(struct inode *dir, const char *name, int len)
 {
 	struct inode	*inode;
-	char		silly[14];
+	char		silly[16];
 	int		slen, ret;
 
 	dir->i_count++;
diff -u --recursive --new-file v1.3.87/linux/include/linux/iso_fs.h linux/include/linux/iso_fs.h
--- v1.3.87/linux/include/linux/iso_fs.h	Mon Mar 25 10:25:51 1996
+++ linux/include/linux/iso_fs.h	Sat Apr 13 11:21:39 1996
@@ -122,6 +122,7 @@
 
 #define ISOFS_BUFFER_SIZE(INODE) ((INODE)->i_sb->s_blocksize)
 #define ISOFS_BUFFER_BITS(INODE) ((INODE)->i_sb->s_blocksize_bits)
+#define ISOFS_ZONE_BITS(INODE)   ((INODE)->i_sb->u.isofs_sb.s_log_zone_size)
 
 #if 0
 #ifdef ISOFS_FIXED_BLOCKSIZE
diff -u --recursive --new-file v1.3.87/linux/include/net/tcp.h linux/include/net/tcp.h
--- v1.3.87/linux/include/net/tcp.h	Fri Apr 12 15:52:09 1996
+++ linux/include/net/tcp.h	Sat Apr 13 14:33:07 1996
@@ -201,7 +201,7 @@
 	/*
 	 * RFC 1122 says:
 	 *
-	 * "the suggested [SWS] avoidance algoritm for the receiver is to keep
+	 * "the suggested [SWS] avoidance algorithm for the receiver is to keep
 	 *  RECV.NEXT + RCV.WIN fixed until:
 	 *  RCV.BUFF - RCV.USER - RCV.WINDOW >= min(1/2 RCV.BUFF, MSS)"
 	 *
@@ -213,7 +213,7 @@
 	 * the size of the current free space, truncated to a multiple
 	 * of 1024 bytes. If the window is smaller than
 	 * 	min(sk->mss, MAX_WINDOW/2)
-	 * then we adversize the window as having size 0, unless this
+	 * then we advertise the window as having size 0, unless this
 	 * would shrink the window we offered last time.
 	 * This results in as much as double the throughput as the original
 	 * implementation.
diff -u --recursive --new-file v1.3.87/linux/mm/filemap.c linux/mm/filemap.c
--- v1.3.87/linux/mm/filemap.c	Fri Apr 12 15:52:10 1996
+++ linux/mm/filemap.c	Sat Apr 13 11:21:38 1996
@@ -329,7 +329,7 @@
 	if (PageLocked(page)) {
 		max_ahead = filp->f_ramax;
 		rapos = ppos;
-/*		try_async = 1  */ /* Seems questionnable */
+/*		try_async = 1  */ /* Seems questionable */
 	}
 /*
  * The current page is not locked
@@ -435,10 +435,10 @@
 
 	pos = filp->f_pos;
 /*
- * Dont beleive f_reada
+ * Dont believe f_reada
  * --------------------
  * f_reada is set to 0 by seek operations.
- * If we beleive f_reada, small seek ops break asynchronous read-ahead.
+ * If we believe f_reada, small seek ops break asynchronous read-ahead.
  * That may be quite bad for small seeks or rewrites operations.
  * I prefer to check if the current position is inside the previous read-ahead
  * window.
@@ -461,10 +461,10 @@
 
 /*
  * Now f_reada = 1 means that asynchronous read-ahead is the good tactics.
- * Will try asynchrous read-ahead as soon as possible.
+ * Will try asynchronous read-ahead as soon as possible.
  * Double the max read ahead size each time.
- *   That euristic avoid to do some large IO for files that are not really
- *   accessed sequentialy.
+ *   That heuristic avoid to do some large IO for files that are not really
+ *   accessed sequentially.
  */
 	if (filp->f_reada) {
 		try_async = 1;
diff -u --recursive --new-file v1.3.87/linux/net/ipv4/tcp_input.c linux/net/ipv4/tcp_input.c
--- v1.3.87/linux/net/ipv4/tcp_input.c	Fri Apr 12 15:52:12 1996
+++ linux/net/ipv4/tcp_input.c	Sat Apr 13 12:52:55 1996
@@ -172,26 +172,15 @@
 		tcp_send_reset(sk->saddr,sk->daddr,th,sk->prot,NULL,dev, sk->ip_tos,sk->ip_ttl);
 		return;
 	}
-	
-	/* 
-	 * We got out of sequence data.
-	 * This turns out to be tricky. If the packet ends at the
-	 * edge of the window, then we MUST ack the packet,
-	 * otherwise a lost ACK packet can stall the TCP.
-	 * We deal with this case in tcp_queue().
-	 * On the other hand, if the packet is further to the
-	 * left of the window, then we are looking a retransmitted
-	 * packet. If we ACK it we can get into a situation that
-	 * will later induce a fast retransmit of another packet.
-	 * This can end up eating up half our bandwidth.
-	 */
-
-	/* This case is NOT supposed to be able
-	 * to happen. Test for it?
-	 */
-	if (sk->acked_seq == end_seq)
-		printk("Impossible out of sequence data case.\n");
-	return;
+
+	/*
+	 *	4.3reno machines look for these kind of acks so they can do fast
+	 *	recovery. Three identical 'old' acks lets it know that one frame has
+	 *	been lost and should be resent. Because this is before the whole window
+	 *	of data has timed out it can take one lost frame per window without
+	 *	stalling. [See Jacobson RFC1323, Stevens TCP/IP illus vol2]
+	 */
+	tcp_send_ack(sk);
 }
 
 /*
@@ -915,9 +904,17 @@
 			break;
 		default:
 			/*
-			 * Reset the xmit timer - state has changed.
+			 * 	Must check send_head and write_queue
+			 * 	to determine which timeout to use.
 			 */
-			tcp_reset_xmit_timer(sk, 0, 0);
+			if (sk->send_head || !skb_queue_empty(&sk->write_queue)) {
+				tcp_reset_xmit_timer(sk, TIME_WRITE, sk->rto);
+			} else if (sk->keepopen) {
+				tcp_reset_xmit_timer(sk, TIME_KEEPOPEN, TCP_TIMEOUT_LEN);
+			} else {
+				del_timer(&sk->retransmit_timer);
+				sk->ip_xmit_timeout = 0;
+			}
 			break;
 		}
 	}
@@ -1237,7 +1234,7 @@
 
 	if (!after(skb->seq, ack_seq)) {
 		if (after(skb->end_seq, ack_seq)) {
-			/* the packet stradles our window end */
+			/* the packet straddles our window end */
 			struct sk_buff_head * list = &sk->receive_queue;
 			struct sk_buff * next;
 			ack_seq = tcp_queue_ack(skb, sk);
@@ -1285,7 +1282,7 @@
 			 */
 			int delay = HZ/2;
 			if (th->psh)
-				delay = HZ/10;
+				delay = HZ/50;
 			tcp_send_delayed_ack(sk, delay);
 		}
 
@@ -1335,7 +1332,7 @@
  */
 
 static int tcp_data(struct sk_buff *skb, struct sock *sk, 
-	 unsigned long saddr, unsigned short len)
+	 unsigned long saddr, unsigned int len)
 {
 	struct tcphdr *th;
 	u32 new_seq, shut_seq;
@@ -1738,9 +1735,9 @@
 				{
 					/* A valid ack from a different connection
 					   start. Shouldn't happen but cover it */
-                 			tcp_statistics.TcpAttemptFails++;
-                                        tcp_send_reset(daddr, saddr, th,
-                                                sk->prot, opt,dev,sk->ip_tos,sk->ip_ttl);
+	         			tcp_statistics.TcpAttemptFails++;
+	                                tcp_send_reset(daddr, saddr, th,
+	                                        sk->prot, opt,dev,sk->ip_tos,sk->ip_ttl);
 					kfree_skb(skb, FREE_READ);
 					return 0;
 				}
diff -u --recursive --new-file v1.3.87/linux/net/ipv4/tcp_timer.c linux/net/ipv4/tcp_timer.c
--- v1.3.87/linux/net/ipv4/tcp_timer.c	Fri Apr 12 15:52:12 1996
+++ linux/net/ipv4/tcp_timer.c	Sat Apr 13 12:49:02 1996
@@ -29,66 +29,19 @@
 
 /*
  *	Reset the retransmission timer
- *
- *	We currently ignore the why/when parameters, and decide on
- *	our own how long we should wait on our own..
  */
  
 void tcp_reset_xmit_timer(struct sock *sk, int why, unsigned long when)
 {
-	unsigned long now = jiffies;
-
-	when = ~0UL;
-	why = -1;
-
-	/*
-	 * Was an old timer event active?
-	 */
-	if (del_timer(&sk->retransmit_timer)) {
-		why = sk->ip_xmit_timeout;
-		when = sk->retransmit_timer.expires;
-	}
-
-	/* 
-	 * Keepopen processing?
-	 */
-	if (sk->keepopen) {
-		unsigned long new_when = now + TCP_TIMEOUT_LEN;
-		if (new_when < when) {
-			when = new_when;
-			why = TIME_KEEPOPEN;
-		}
-	}
-
-	/*
-	 * Retransmission?
-	 */
-	if (sk->send_head) {
-		struct sk_buff * skb = sk->send_head;
-		unsigned long new_when = skb->when + sk->rto;
-		if (new_when < when) {
-			when = new_when;
-			why = TIME_WRITE;
-		}
-	} else if (!skb_queue_empty(&sk->write_queue)) {
-		/*
-		 * Zero window probe?
-		 */
-		struct sk_buff * skb = sk->write_queue.next;
-		if (before(sk->window_seq, skb->end_seq)) {
-			unsigned long new_when = now + TIME_PROBE0;
-			if (new_when < when) {
-				when = new_when;
-				why = TIME_PROBE0;
-			}
-		}
-	}
-
-	if (why >= 0) {
-		sk->ip_xmit_timeout = why;
-		sk->retransmit_timer.expires = when;
-		add_timer(&sk->retransmit_timer);
+	del_timer(&sk->retransmit_timer);
+	sk->ip_xmit_timeout = why;
+	if((long)when < 0)
+	{
+		when=3;
+		printk("Error: Negative timer in xmit_timer\n");
 	}
+	sk->retransmit_timer.expires=jiffies+when;
+	add_timer(&sk->retransmit_timer);
 }
 
 /*
@@ -222,6 +175,19 @@
 	return 1;
 }
 
+/*
+ *	It could be we got here because we needed to send an ack,
+ *	so we need to check for that and not just normal retransmit.
+ */
+static void tcp_time_write_timeout(struct sock * sk)
+{
+	/*
+	 *	Retransmission
+	 */
+	sk->prot->retransmit (sk, 0);
+	tcp_write_timeout(sk);
+}
+
 
 /*
  *	The TCP retransmit timer. This lacks a few small details.
@@ -267,25 +233,27 @@
 	/* Window probing */
 	case TIME_PROBE0:
 		tcp_send_probe0(sk);
-		tcp_reset_xmit_timer(sk, 0, 0);		/* get us going again */
+		tcp_write_timeout(sk);
 		break;
 
 	/* Retransmitting */
 	case TIME_WRITE:
-		sk->prot->retransmit (sk, 0);
-		tcp_write_timeout(sk);
-		tcp_reset_xmit_timer(sk, 0, 0);		/* get us going again */		
+		tcp_time_write_timeout(sk);
 		break;
 
 	/* Sending Keepalives */
 	case TIME_KEEPOPEN:
+		/* 
+		 * this reset_timer() call is a hack, this is not
+		 * how KEEPOPEN is supposed to work.
+		 */
+		tcp_reset_xmit_timer (sk, TIME_KEEPOPEN, TCP_TIMEOUT_LEN);
 		/* Send something to keep the connection open. */
 		if (sk->prot->write_wakeup)
 			  sk->prot->write_wakeup (sk);
 		sk->retransmits++;
 		sk->prot->retransmits++;
 		tcp_write_timeout(sk);
-		tcp_reset_xmit_timer (sk, 0, 0);
 		break;
 
 	default:
diff -u --recursive --new-file v1.3.87/linux/scripts/header.tk linux/scripts/header.tk
--- v1.3.87/linux/scripts/header.tk	Mon Apr  8 19:01:48 1996
+++ linux/scripts/header.tk	Sat Apr 13 14:20:03 1996
@@ -1,14 +1,9 @@
 #
-# Create a "reference" object to steal colors from.
-#
-button .ref
-
-#
 # This is a handy replacement for ".widget cget" that requires neither tk4
 # nor additional source code uglification.
 #
 proc cget { w option } {
-	return [lindex [$w configure $option] 4]
+	return "[lindex [$w configure $option] 4]"
 }
 
 #
@@ -18,11 +13,24 @@
 #
 proc vfix { var } {
 	global $var
-	if [catch {set $var [subst $$var]}] {
+	if [ catch {eval concat $$var} ] {
 		puts stdout "WARNING - broken Config.in!  $var was not declared!"
 		set $var 0
 	}
 }
+
+#
+# Create a "reference" object to steal colors from.
+#
+button .ref
+#
+# On monochrome displays, -disabledforeground is blank by default; that's
+# bad.  Fill it with -foreground instead.
+#
+if { [cget .ref -disabledforeground] == "" } {
+	.ref configure -disabledforeground [cget .ref -foreground]
+}
+
 
 #
 # Define some macros we will need to parse the config.in file.
