Jim Rees and James Gosling are two different people

Jim Rees <[email protected]> Mon, 5 Sep 2022 17:37:21 -0500
Newsgroups gmane.comp.gnu.utils.bugs
Message-ID <[email protected]>
--7eiLpCxU/pQ8QYOD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I was just looking at the sharutils docs and discovered that you have me
confused with James Gosling. We are two different people. These are our web
sites:

me: https://jim.rees.org/
Gosling: http://nighthacks.com/jag/bio/index.html

Your sharutils doc Introduction says "Please help us getting the history
straight". So here's the story.

In 1981 Gosling released Gosling emacs, written in C. It was a predecessor
to gnu emacs. It was a source release. It was distributed from an ftp site
on the arpanet as a single text file. That text file was a self-extracting
shell script, similar to what shar produces. I do not know what tool he used
to build the file, who wrote it, or what he called the tool.

I was also writing and distributing software at the time, and I thought the
self-extracting shell script was a great idea and wanted to do the same. So
I wrote my own shell archiver and called it "shar". I posted it to usenet
some time in September or October 1982. I no longer have a copy of that
post, but you can see my original code in the attached usenet post by Gary
Perlman at Wang Institute from 1984:

	#Date: Mon Oct 18 11:08:34 1982
	#From: decvax!microsof!uw-beave!jim (James Gosling at CMU)
	AR=$1
	shift
	for i do
		echo a - $i
		echo "echo x - $i" >>$AR
		echo "cat >$i <<'!Funky!Stuff!'" >>$AR
		cat $i >>$AR
		echo "!Funky!Stuff!" >>$AR
	done

Unfortunately in this post Perlman has confused me with Gosling.
decvax!microsof!uw-beave!jim is me; Gosling is Gosling.

You can verify that I, not Gosling, am uw-beave!jim from the second attached
usenet post, from when I connected University of Washington to usenet in
1982.

--7eiLpCxU/pQ8QYOD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=2066

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/5/84; site wivax.UUCP
Path: utzoo!watmath!clyde!bonnie!akgua!whuxlm!harpo!decvax!wivax!perlman
From: [email protected] (Gary Perlman)
Newsgroups: net.sources
Subject: shell archiver written in C
Message-ID: <[email protected]>
Date: Wed, 5-Dec-84 09:05:46 EST
Article-I.D.: wivax.20315
Posted: Wed Dec  5 09:05:46 1984
Date-Received: Fri, 7-Dec-84 00:38:01 EST
Distribution: net
Organization: Wang Institute, Tyngsboro, MA 01879 USA
Lines: 133

Here is my shar.  It is somewhat faster than the shell script version:
       14.0 real         1.1 user         5.6 sys  (shell version)
        3.0 real         0.2 user         0.5 sys  (C version)
but another advantage is that it provides better diagnostics (I think).
I know there have been other versions posted, but I saw a recent request.
Gary Perlman/Wang Institute/Tyng Road/Tyngsboro, MA/01879/(617) 649-9731

#!/bin/sh-----cut here-----cut here-----cut here-----cut here-----
# shar:	Shell Archiver
#	Run the following text with /bin/sh to create:
#	shar.1 #	shar.c 
echo shar: extracting shar.1
cat - << \SHAR_EOF > shar.1
.TH SHAR 1net "December 5, 1984"
.SH NAME
shar \- create storage archive for extraction by /bin/sh
.SH SYNOPSIS
.B shar
[-v] files
.SH DESCRIPTION
.I shar
prints its input files with special lines around them
to be used by the shell (/bin/sh) to extract them later.
The output can be filtered through the shell to
recreate copies of the original files.
The -v (verbose) option prints feedback about
what shar is doing.
.SH AUTHOR
Gary Perlman
(based on a shell version by James Gosling)
SHAR_EOF
echo shar: extracting shar.c
cat - << \SHAR_EOF > shar.c
#include <stdio.h>

/*
Shar puts readable text files together in a package
from which they are easy to extract.  The original version
was a shell script posted to the net, shown below:
	#Date: Mon Oct 18 11:08:34 1982
	#From: decvax!microsof!uw-beave!jim (James Gosling at CMU)
	AR=$1
	shift
	for i do
		echo a - $i
		echo "echo x - $i" >>$AR
		echo "cat >$i <<'!Funky!Stuff!'" >>$AR
		cat $i >>$AR
		echo "!Funky!Stuff!" >>$AR
	done
I rewrote this version in C to provide better diagnostics
and to run faster.  The main difference is that my version
does not affect any files because it prints to the standard
output.  Mine also has a -v (verbose) option.
*/


#define	DELIM           "SHAR_EOF"  /* put after each file */
#define	SHAR            "shar"      /* the name of this program */
#define	READ_PERMISSION 4           /* access permission */

int 	Verbose = 0; /* option to provide append/extract feedback */

main (argc, argv) char **argv;	
	{
	int 	status = 0;
	if (!strcmp (argv[1], "-v"))
		{
		Verbose = 1;
		argc--;
		argv++;
		}
	if (argc == 1)
		{
		fprintf (stderr, "%s: No input files\n", SHAR);
		fprintf (stderr, "USAGE: %s [-v] files > archive\n", SHAR);
		exit (1);
		}
	if (header (argc, argv))
		exit (2);
	while (--argc)
		status += shar (*++argv);
	exit (status);
	}

header (argc, argv)
char	**argv;
	{
	int 	i;
	int 	problems = 0;
	for (i = 1; i < argc; i++)
		if (access (argv[i], READ_PERMISSION))
			{
			fprintf (stderr, "%s: Can't read %s\n", SHAR, argv[i]);
			problems++;
			}
	if (problems) return (problems);
	puts ("#!/bin/sh-----cut here-----cut here-----cut here-----cut here-----");
	printf ("# %s:	Shell Archiver\n", SHAR);
	puts ("#	Run the following text with /bin/sh to create:");
	for (i = 1; i < argc; i++)
		printf ("#	%s ", argv[i]);
	putchar ('\n');
	return (0);
	}

shar (file)
char	*file;
	{
	char	line[BUFSIZ];
	FILE	*ioptr;
	if (ioptr = fopen (file, "r"))
		{
		if (Verbose)
			{
			fprintf (stderr, "%s: appending %s\n", SHAR, file);
			printf ("echo %s: extracting %s\n", SHAR, file);
			}
		printf ("cat - << \\%s > %s\n", DELIM, file);
		while (fgets (line, BUFSIZ, ioptr))
			fputs (line, stdout);
		(void) fclose (ioptr);
		puts (DELIM);
		return (0);
		}
	else
		{
		fprintf (stderr, "%s: Can't open %s\n", SHAR, file);
		return (1);
		}
	}
SHAR_EOF
a - shar.c

--7eiLpCxU/pQ8QYOD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=47

From: utzoo!decvax!microsof!uw-beave!jim
Newsgroups: net.news.newsite
Title: New Usenet site "uw-beaver"
Article-I.D.: uw-beave.107
Posted: Tue Sep 14 08:42:15 1982
Received: Wed Sep 15 05:19:50 1982

Announcing new site "uw-beaver".

Beaver is the uucp gateway into the University of Washington Computer
Science Department.  We have four Unix machines, "uw-june", "uw-wally",
"uw-beaver", and "uw-lumpy".

The contact person is:

	James Rees

	...!ucbvax!lbl-unix!uw-beaver!jim
	Jim@Washington		(Arpanet)

	Department of Computer Science, FR-35
	University of Washington
	Seattle, Washington 98115

	(206) 545-0912

Our Usenet neighbors are Microsoft and UBC-Vision.  These are dialup uucp
links.

Our uucp neighbors are:

	fluke
	lbl-unix
	microsoft
	ssc-vax
	ubc-vision
	uw-june
	uw-lumpy
	uw70
	uwbio

There are more, but these are the ones with which we have reliable
connections and for which we will forward mail.  We connect with these sites
at least once a day if both machines are up and there is traffic.

We are willing to make new Usenet connections if the other party will pay
the phone bill.

--7eiLpCxU/pQ8QYOD--