[TUHS] 2bsd tarball -> pdtar, with a side of uuslave

John Gilmore gnu at toad.com
Wed Jul 29 23:42:45 AEST 2020


Clem Cole <clemc at ccc.com> wrote:
> 'nuf said ... I hope.

Not quite, Clem!

There was another chapter to the "tar wars" after UNIX and after POSIX.

After I left Sun in about 1985, I worked on a project with GNU and the
BSD folks, to find or write freely available implementations of many
popular UNIX commands.  Since we didn't find a free "tar" program, I
wrote one from scratch, based on the SunOS man page and on running the
tar binary from SunOS 3.3.

This was eventually posted to Usenet's mod.sources as "pdtar" on
1986-12-10, as Volume 7 Issue 88.  A July 1987 version went on the Sun
User Group tape.  A later version was posted to comp.sources.unix on
1987-11-29 as Volume 12, issue 68 in 3 parts.  By then, it built and ran
on SunOS, Xenix, Unisoft, Vax 4.2BSD, V7 and USG systems, MSDOS, and
Minix.  And "Utzoonix", Henry Spencer's customized system.

In the process I discovered various quirks in the Unix tar program.  It
null-terminated some of the fixed-length octal fields in the tar headers
and space-terminated others.  I made my code produce bit-for-bit
identical tar files, except for the leftover buffer garbage at the ends
of files and in the last block after the second end-of-file all-zero
header, which I zeroed.

The UNIX tar program was also reading and writing the files in the file
system in 512-byte reads and writes.  Eg when extracting a file from a
tape with the default blocking factor of 20, it would do 20 writes to
the file rather than a single 10k write.  pdtar did better.

Oh, and by the way, the tar format DID use numerical uid and gid fields,
encoded in ascii numerals in octal.  Thus they were both numeric and
ascii!  What it didn't do was put in the NAMES of the user and their
group; that idea came in with POSIX drafts, and went into separate
fields that had been undefined & ignored in UNIX tar.

I put the pdtar code into the public domain, so it could be widely used.
This produced a variety of support headaches.  In particular, people who
used it on MSDOS kept contacting me over the years about bugs or
documentation or not working with certain hardware.  Those ports were
largely distributed as binaries by other people who never bothered to
include nor publish the matching source code.  So I couldn't support the
users who were having trouble, which was frustrating for both them and
me.  This eventually led me to understand more of the value in using the
GNU General Public License.

When the GNU Project later wanted someone else to enhance tar to satisfy
some of the user requirements from the absence of dump(8), like
incremental backups, they asked if I would mind if they put their
improved version under the GPL.  I had no problem with that, and the
pdtar code became the base code for GNU Tar, which (along with the
simple BusyBox tar) seems to have become the main implementation in the
wild today.

	John
	
PS: In that period, I also wrote the first reliable free implementation
of uucp, called gnuucp.  This code was based on "uuslave.c 1.7 08/12/85
12:04:20" which had been posted to the ACGNJ BBS system at +1 201 753
9758.  Original author unknown.  BSD and I went through a legal
interaction with AT&T to verify that the uuslave code had NOT come from
any proprietary UNIX code.  The uuslave code barely limped (and had CP/M
ifdef's), but it did point out the basics of the 'g' protocol.  Once I
got it working on UNIX, I ran it for a few weeks with my friends at
lll-crg in Livermore, CA, then posted it to net.sources on 1987-03-25,
article-id hoptoad.1925.  By this time it had been ported to MSDOS by
Tim Pozar.  Soon it became the backbone of Tim's FIDOnet <-> Usenet
gateway (UFGATE) software, which enabled thousands of (largely teenage)
FIDOnet nodes to join the Usenet and swap email with UNIX machines and
thus with the early Internet.  Many years later, Ian Taylor wrote a
complete free replacement for uucp, called Taylor UUCP, which seems to
be what people were using last time I saw anyone using uucp.  By
coincidence, Ian also later worked with me at Cygnus, the first company
doing commercial support for free software.

A modern web search turns up this about uuslave's BBS:

  http://bbslist.textfiles.com/201/oldschool.html

  "201-753-9758   ACGNJ BBS #2 	(1983-1990)	Kevin Tillbrook 	RBBS

  "I used to run an RBBS system for the Amateur Computer Group of NJ
  (ACGNJ) for a number of years. It was run on a Zenith PC w/20 meg HD
  and later using DesqView for multi-tasking (which was way too slow on
  that hardware). I had a BBS running before that, but this is what I am
  noted for." - Kevin Tillbrook

Does anybody here (from New Jersey perhaps) know where uuslave came
from?  It's always been a mystery to me.


More information about the TUHS mailing list