1This file last revised Sat Aug 4 17:15:01 CDT 1990 2 3Here is shar 3.52, an updated version of shar 3.49, derived from 'shar2'. 4This offering is the work of many people. Thanks to wht@n4hgf.Mt-Park.GA.US 5(Warren Tucker), rhg@CPS.COM (Richard H. Gumpertz), colas@avahi.inria.fr 6(Colas Nahaboo), bill@netagw.com (Bill Aten), marks@rex.cs.tulane.edu, and 7maaaany others. 8 9This version's shar: 101) generates shell code which attempts to create missing directories 112) generates shell code which will force overwriting of files when passed 12 the '-c' option. 133) allows entire directories to be archived 144) handle deviants sun, vax, pyramid, sequent, and SCO XENIX/UNIX 15 automatically; for system V systems I did not catch, add -DSYS5 16 to CFLAGS; for other BSD-like systems, add -DBSD42 175) if unsharing system's touch is Sys V compatible (allows touch -m), 18 the unshar process restores file dates (-m switch) 196) An archive name may be specified for inclusion in the header 20 of the shar files (-n switch) 217) allows automatic generation of "Submitted-by: who@where" & 22 "Archive-name: <name>/part##" headers 238) uses getopt; no good system library should be without a copy 24 but it is readily available (like look in unshar.c) 259) includes other chrome-plated bells, whistles, and junque 26 27This version's unshar: 281) can change directory before unsharing 292) can unshar from standard in, from a COLLECTION of shars, 30 from a file containing multiple concatenated shars, 31 or a mixture of shar files and concatenated-shar files. 323) can pass the '-c' option on to the script being extracted. 334) does not have a Social Security number. 34 35------------------------ shar usage ----------------------------------- 36shar 3.52 37usage: shar [ options ] file ... 38 shar -S [ options ] 39-V produce "vanilla" shars demanding little of the unshar environment 40-v verbose messages OFF while executing 41-m restore file modification dates & times with "touch" commands 42-w don't check with 'wc -c' after unpack 43-a generate Submitted-by: & Archive-name: headers 44-nXXX use XXX as the name of the archive (documentation) 45-s override automatically determined submitter name 46-x overwrite existing files without checking if they already exist 47-X interactively overwrite existing files (NOT FOR NET SHARS) 48-B treat all files as binary, use uuencode 49-T treat all files as text (default) 50-C compress and uuencode all files 51-bXX pass -bXX (default 12) to compress when compressing (implies -C) 52-p allow positional parameter options. The options "-B" and "-B" 53 and "-C" may be embedded, and files to the right of the 54 option will be processed in the specified mode 55-M mixed mode. Determine if the files are text or 56 binary and archive correctly. 57-P use temp files instead of pipes in the shar file 58-F force the prefix character on every line (even if not required) 59-c start the shar with a cut line 60-f restore by filename only, rather than path 61-dXXX use XXX to delimit the files in the shar 62-oXXX (or -o XXX) output to file XXX.01 thru XXX.nn 63-lXX limit output file size to XXk bytes (but don't split files) 64-LXX limit output file size to XXk bytes (may split files) 65-S read files to wrap from stdin, ignoring argument line 66 67The -S option reads filenames one per line from stdin; input 68format must be similar to 'find' output, except that if -p 69is specified, -B, -T or -C may be used (on lines by themselves) 70e.g., find . -type f -print | sort | shar -C -l50 -o /tmp/big 71 72The 'o' option is required if the 'l' or 'L' option is used 73The 'n' option is required if the 'a' option is used 74 75-a generates sharname/part## headers. If the -a argument contains 76a '/', then /part is not appended 77The automatic submitter name is trivial: essentially `whoami`@`uname` 78 79------------------------ unshar usage ----------------------------------- 80Unshar has no usage built in. It has default actions when invoked 81with no arguments (read from stdin). 82 83Usage: unshar [ -d directory ] [ -c ] [ -e | -E exit_line ] [ files ... ] 84 85 The -c flag is passed through to the shell as a parameter to the script 86 It can unshar shar files concatenated in one file, with the 87 the "-e" command, which separates files by recognizing the 88 "exit 0" string at the beginning of a line 89 90 (The -E string option allows you to specify this string, thus 91 -e is equivalent to -E "exit 0") 92 93 The -d flag tells unshar to change directory before unsharing 94 95--------------------- history ----------------------------------------- 96Changes since 3.11: kudos to rhg@CPS.COM (Richard H. Gumpertz) 97 981. The -l switch still specifies a maximum size for the generated 99 shar files, but now it prevents files from spanning shar parts. 100 Shars generated using this method may be unpacked in any order. 101 1022. The old -l switch functionality is precisely emulated by using the 103 the -L switch. That is, archived files may be split across parts. 104 Shars generated using this method must still be unpacked in order. 105 1063. The -C switch causes files to be compressed, then uuencoded. 107 Unpacking reverses the process. 108 1094. The -P causes the shar to use temp files instead of pipes in 110 the unshar process. 111 1125. The -f causes files to be resotred by name only (i.e., strip 113 directory portion of input filenames before placing the name 114 into the shar. 115 116 117Changes since 3.20: kudos to colas@avahi.inria.fr (Colas Nahaboo) 118 1191. The Archived-name: header no longer uses "/part" if there is 120 a "/" in the -n name. Thus 121 -n xyzzy procduces: 122 xyzzy/part01 123 xyzzy/part02 124 125 -n xyzzy/patch procduces: 126 xyzzy/patch01 127 xyzzy/patch02 128 129 -n xyzzy/patch01. procduces: 130 xyzzy/patch01.01 131 xyzzy/patch01.02 1322. The Archive-name part number other than part01 had no leading zero 133 in the number. 134 1353. The "Submitted-by:" header was missing the hyphen (minus for olde 136 UNIX hackres). 137 1384. The unshar program may now unshar a whole mailbox or concatenation 139 of shar files. 140 141 -C "string" looks for "string" at the beginning of the line to 142 break the file into individual shar files 143 -c is equivalent to -C "exit 0" 144 145 This of course will only work if there is something in the shar 146 file recognizable to terminate the shar. Some shars dont have 147 "exit 0" at the end. However, a clue: most/many .signatures have 148 "--" on a line right before them. 149 1505. Unshar -d (change directory) no longer makes argv files unreachable. 151 I had never used the feature until the other day. I guess the 152 author has used in only for unsharing from stdin. 153 154Changes since 3.21: thanks to Adri Verhoef, <a3@rivm.UUCP> 155 1561. Some vaxen do not run BSD. I guess I knew this, but -er- 157 here is Adri's note: 158> Hi Warren, 159> 160> I encountered a problem trying to get 'shar3.21' to compile on System V 161> on a vax. Yes, can you believe it? We run System V Release 3.0 on VAXen! 162> The shar3.21 code assumes that you are BSD if you're on a vax. This is not 163> always true! What I did to get the code compiled on System V, was: 164> (+) edit the Makefile and add -DSYS5 to CFLAGS. 165> (+) edit all the C-source files to circumcise compiler warnings 166> ("SYS5 redefined"). 167> 168 169He made a suggestion about having a localize.sh edit a distribution 170Makefile, but for now, I'll just suggest you add -DSYS5 to CFLAGS 171manually. 172 1732. jhd@irfu.se (Jan Dj{rv, sorry about the screwed up character 174 translation, Jan) wrote man pages. Thanks! 175 176Changes since 3.22: thanks to Dennis Boylan <dennis@nanovx> 177 1781. The new -S option allows the list of files to be packed 179 to be read from the standard input rather than from the 180 command line. 181 1822. A few purist checks were made to ensure fork() or malloc() 183 doesn't fail and excite the "if 20 hours of your time is 184 free then why isn't 200?" crowd (who probably will never see 185 this revision anyway :-)) 186 187Changes since 3.23: 188 1891. The -V mode was added. 190 1912. Altos doesn't like the '@' in filenames. The filename format 192 was changed. Thanks to rhg@cps.com. 193 194Changes since 3.24: 195 1961. Man pages were revised by gam@netcom (Gordon Moffet). Thanks. 197 1982. When -L was specified, the "Starting ..." message was not 199produced on standard error (with or without -v). 200 2013. When using -X, the 'not for net' warning was printed on standard 202output rather thsn standard error. 203 2044. marks@rex.cs.tulane.edu reccommends adding -F 5000 to the load 205 line of unshar when using on XENIX 286 to avoid stack overflow 206 core dumps. I added this information to an excellkent remake 207 of the Makefile by bill@netagw.com. 208 209Changes since 3.25: 210 2111. Fixed one minor bug with -a/-n. The period supplied when a 212 slash appears in the -n name was omitted. This is a hatefully 213 small bug to fix and reissue a whole release, but 214 a) several new names are on the sharlist now and they have 215 only 3.24 to work with, 216 b) this will surely sync us all up, and 217 c) I think it will put shar to bed for a while ("no known bugs 218 at this ti ... bus error core dumped"). 219 220Changes since 3.27: 221 2221. The unshar-time test for a touch -m facility now greps for 223 'mmdd', not '[-amc]', making it more universally successful. 224 2252. NOTE: there is still a problem with -n arguments using 226 a 'x/y' construct, but I don't know how to properly generalize 227 it so you'll have to edit shars made with some uses of -a 228 with -n x/y. 229 2303. This is surely my last work on this. It does everything 231 I needed and more. Thanks for all the help and suggestions. 232 It seems as though we didn't precipitate 'death of the shar' 233 after all :-) :-) :-). 234 235Changes since 3.32: 236 2371. Several bug fixes. 238 2392. Inverted the meaning of '-x'; the new default is to NOT overwrite. 240 2413. Added '-c' checking when unpacking so the recipient can force overwrites. 242 2434. Made '-L' work even with files not being overwritten. 244 2455. Added '-m' and changed the default behavior to not generate TOUCH commands. 246 2476. Added '-F'; the default is to suppress the extra 'X' at the beginning of 248 each line unless it is needed (i.e., the first character of the line is 249 already 'X' or is a non-graphic). 250 2517. Renamed '-b' and '-t' to '-B' and '-T', respectively. 252 2538. Added '-bn' for use with compression (calls compress with -bn). 254 2559. Renamed the temporary files used in unpacking from shar3_???_.tmp to 256 _shar_???_.tmp. 257 25810. Directories may now be passed to shar; a recursive directory walk is 259 performed. This feature may be disabled by compiling with -DNO_WALKTREE. 260 261Changes since 3.43: 262 2631. Several more minor bug fixes. 264 2652. Added support for BSD-style <sys/dir.h> and -ldir. 266 2673. Added more usage directions to the shar header. 268 269Changes since 3.49: 270 2711. Added more support for Unix variations. 272 2732. A few more very minor bug fixes. 274