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--