Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site seismo.UUCP Posting-Version: version B 2.10.2 9/3/84; site genrad.UUCP Path: seismo!harvard!talcott!panda!genrad!sources-request From: sources-request@genrad.UUCP Newsgroups: mod.sources Subject: Update to C shar (shell archiver) Message-ID: <944@genrad.UUCP> Date: 15 Jul 85 14:20:09 GMT Sender: john@genrad.UUCP Lines: 188 Approved: john@genrad.UUCP Mod.sources: Volume 2, Issue 13 Submitted by: harvard!seismo!mcvax!datlog!mark (Mark Smith) [ moderators note: I have edited both the introduction, and deleted most of the files from the submitted shell archive - nearly all the files were the same as the original distribution. All that had changed was the Makefile and the man page. Contact me if you need a copy of the original C shar distribution. John P. Nelson (decvax!genrad!john) [moderator, mod.sources] ] My firm runs UNIX System V release 2 version 1 on a VAX 11/750. The shar that was acquired when we joined the net is ok but makes a real mess when source files have to be taken from more than one directory and no manual page was provided. I decided to use the version of shar that I found on mod.sources but unfortunately using the getopt.c supplied with the package caused an undefined symbol at load time which prevented shar being built. As SVr2 comes with getopt.o as part of /lib/libc.a and the parameter list is compatible I built my shar with the SVr2 getopt.o and it seems to work fine. Below is a shell archive of the files I used to build the new version of shar. [Actually, only the files that have been modified from the original are in the archive below - mod.] The Makefile is greatly improved and will now install the binaries and the manual pages and clean up the mess afterwards. I have also modified the manual pages because as they stood man(1) on my system was producing sentences with words missed out. All the best, Mark Smith UUCP: ...!mcvax!ukc!stc!datlog!mark --------------------------- cut here ----------------------------- #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # Makefile # shar.1 # This archive created: Mon Jul 15 09:55:53 1985 export PATH; PATH=/bin:$PATH if test -f 'Makefile' then echo shar: will not over-write existing file "'Makefile'" else sed 's/^X//' << \SHAR_EOF > 'Makefile' X X# make this getopt.o if on a BSD or other non system V XGETOPT= X XCFLAGS=-O X Xall: traverse shar X Xshar: shar.o traverse.o $(GETOPT) X $(CC) -o shar shar.o traverse.o $(GETOPT) X Xtraverse: X $(CC) $(CFLAGS) -o traverse -DSTANDALONE traverse.c X Xinstall: all X /etc/install -f /usr/bin shar X /etc/install -f /usr/bin traverse X strip /usr/bin/shar /usr/bin/traverse X cp shar.1 /usr/man/u_man/man1/shar.1 X cp traverse.3 /usr/man/p_man/man3/traverse.3 X Xclean: X rm -f shar traverse *.o X Xshar.shar: Makefile shar.c traverse.c shar.1 traverse.3 X shar -a -d EOF_SHAR Makefile shar.c traverse.c shar.1 traverse.3 > shar.shar SHAR_EOF fi # end of overwriting check if test -f 'shar.1' then echo shar: will not over-write existing file "'shar.1'" else sed 's/^X//' << \SHAR_EOF > 'shar.1' X X.TH SHAR 1net "June 3, 1985" "UNIX User's Manual" "Wang Institute" X.SH NAME Xshar \- create file storage archive for extraction by /bin/sh X.SH SYNOPSIS X.B shar X[-abcsv] [-d delim] [-p prefix] files X.SH DESCRIPTION X.I shar Xprints its input files with special command lines around them Xto be used by the shell, X.I /bin/sh , Xto extract them later. XThe output can be filtered through the shell to Xrecreate copies of the original files. X.PP X.I shar Xallows directories to be named, and X.I shar Xprints the necessary commands X.ul X(mkdir & cd) Xto create new directories and fill them. X.I shar Xwill emit commands to make executable plain files executable. X.I shar will not allow existing files to be X.I over-written; Xsuch files must be removed by the file extractor. X.SH OPTIONS X.de OP X.TP X.B -\\$1 X.. X.OP a XAll the options. XThe options: X.B "-v -c -b -p X" Xare implied. X.OP s XSilent running. XAll checking and extra output is inhibited. X.OP v XPrint verbose feedback messages about what X.I shar Xis doing to be printed during extraction. XSizes of plain files are echoed to allow a simple validity check. X.OP c XCheck file size on extraction by counting characters. XAn error message is reported to the person doing the Xextraction if the sizes don't match. XOne reason why the sizes may not match is that X.I shar Xwill append a newline to complete incomplete last lines; X.I shar Xprints a message that mentions added newlines. XAnother reason why the sizes may not match is that some Xnetwork mail programs remove non-whitespace control characters. X.I shar Xprints a message that mentions control characters to the extractor. X.OP b XExtract files into basenames so that files with absolute path names Xare put into the current directory. XThis option has strange effects when directories are archived. X.OP d delim XUse this as the ``end of file'' delimiter instead of the default. XThe only reason to change it is if you suspect a file Xcontains the default delimiter: X.B SHAR_EOF. X.OP p prefix XUse this as the prefix to each line of the archived files. XThis is to make sure that special characters at the start of lines are not Xeaten up by programs like mailers. XIf this option is used, Xthe files will be extracted with the stream editor X.B sed Xrather than X.B cat Xso it is more efficient and portable to avoid setting the prefix, Xthough perhaps less safe if you don't know what is in the files. X.SH "SEE ALSO Xtar(1), cpio(1), tp(1), sh(1) X.SH AUTHOR XGary Perlman X(based on a shell version by James Gosling, Xwith additions motivated by XDerek Zahn, XMichael Thompson, XH. Morrow Long, XFred Avolio, XGran Uddeborg, X& XChuck Wegrzyn) X.SH LIMITATIONS X.I shar Xdoes not know anything about Xlinks between files Xor binary files. SHAR_EOF fi # end of overwriting check # End of shell archive exit 0