home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / shrink_names < prev    next >
SHell self-extracting ARchive  |  1987-02-18  |  10.7 KB

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: shrink_names

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail text default
99% file C source text default
98% file C source, ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/rfc822 default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 30 38 69 30 37 |Subject:| v08i07|
|00000010| 34 3a 20 20 53 68 72 69 | 6e 6b 20 56 65 72 79 4c |4: Shri|nk VeryL|
|00000020| 6f 6e 67 2b 46 69 6c 65 | 2e 6e 61 6d 65 73 20 74 |ong+File|.names t|
|00000030| 6f 20 73 68 6f 72 74 65 | 72 20 6e 61 6d 65 73 0a |o shorte|r names.|
|00000040| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 6d 6f 64 2e |Newsgrou|ps: mod.|
|00000050| 73 6f 75 72 63 65 73 0a | 41 70 70 72 6f 76 65 64 |sources.|Approved|
|00000060| 3a 20 6d 69 72 72 6f 72 | 21 72 73 0a 0a 53 75 62 |: mirror|!rs..Sub|
|00000070| 6d 69 74 74 65 64 20 62 | 79 3a 20 73 69 6d 6f 6e |mitted b|y: simon|
|00000080| 32 20 3c 73 69 6d 6f 6e | 32 40 69 74 73 36 33 62 |2 <simon|2@its63b|
|00000090| 2e 65 64 2e 61 63 2e 75 | 6b 3e 0a 4d 6f 64 2e 73 |.ed.ac.u|k>.Mod.s|
|000000a0| 6f 75 72 63 65 73 3a 20 | 56 6f 6c 75 6d 65 20 38 |ources: |Volume 8|
|000000b0| 2c 20 49 73 73 75 65 20 | 37 34 0a 41 72 63 68 69 |, Issue |74.Archi|
|000000c0| 76 65 2d 6e 61 6d 65 3a | 20 73 68 72 69 6e 6b 5f |ve-name:| shrink_|
|000000d0| 6e 61 6d 65 73 0a 0a 5b | 20 20 42 6c 61 6d 65 20 |names..[| Blame |
|000000e0| 6d 65 20 66 6f 72 20 74 | 68 65 20 4d 61 6b 65 66 |me for t|he Makef|
|000000f0| 69 6c 65 2e 20 20 2d 2d | 72 24 20 20 5d 0a 0a 48 |ile. --|r$ ]..H|
|00000100| 65 72 65 20 69 73 20 61 | 20 76 65 72 79 20 75 73 |ere is a| very us|
|00000110| 65 66 75 6c 20 70 72 6f | 67 72 61 6d 20 66 6f 72 |eful pro|gram for|
|00000120| 20 63 68 61 6e 67 69 6e | 67 20 66 69 6c 65 6e 61 | changin|g filena|
|00000130| 6d 65 73 20 66 72 6f 6d | 20 42 53 44 20 66 69 6c |mes from| BSD fil|
|00000140| 65 6e 61 6d 65 0a 66 6f | 72 6d 20 74 6f 20 61 20 |ename.fo|rm to a |
|00000150| 6d 6f 72 65 20 70 6f 72 | 74 61 62 6c 65 20 66 6f |more por|table fo|
|00000160| 72 6d 20 28 31 34 20 63 | 68 61 72 20 6c 69 6d 69 |rm (14 c|har limi|
|00000170| 74 29 2e 20 20 49 74 20 | 69 73 20 72 65 61 73 6f |t). It |is reaso|
|00000180| 6e 61 62 6c 79 0a 69 6e | 74 65 6c 6c 69 67 65 6e |nably.in|telligen|
|00000190| 74 20 61 73 20 74 6f 20 | 77 68 61 74 20 74 68 65 |t as to |what the|
|000001a0| 20 73 74 72 75 63 74 75 | 72 65 20 6f 66 20 74 68 | structu|re of th|
|000001b0| 65 20 6f 72 69 67 69 6e | 61 6c 20 66 69 6c 65 6e |e origin|al filen|
|000001c0| 61 6d 65 20 77 61 73 2c | 20 61 6e 64 0a 74 72 69 |ame was,| and.tri|
|000001d0| 65 73 20 71 75 69 74 65 | 20 68 61 72 64 20 74 6f |es quite| hard to|
|000001e0| 20 6d 61 69 6e 74 61 69 | 6e 20 74 68 69 73 20 75 | maintai|n this u|
|000001f0| 6e 64 65 72 6c 79 69 6e | 67 20 73 74 72 75 63 74 |nderlyin|g struct|
|00000200| 75 72 65 20 62 79 20 6a | 75 73 74 0a 73 68 6f 72 |ure by j|ust.shor|
|00000210| 74 65 6e 69 6e 67 20 74 | 68 65 20 73 75 62 66 69 |tening t|he subfi|
|00000220| 65 6c 64 73 2e 0a 20 20 | 20 20 53 69 6d 6f 6e 20 |elds.. | Simon |
|00000230| 42 72 6f 77 6e 0a 20 20 | 20 20 44 65 70 61 72 74 |Brown. | Depart|
|00000240| 6d 65 6e 74 20 6f 66 20 | 43 6f 6d 70 75 74 65 72 |ment of |Computer|
|00000250| 20 53 63 69 65 6e 63 65 | 2c 20 55 6e 69 76 65 72 | Science|, Univer|
|00000260| 73 69 74 79 20 6f 66 20 | 45 64 69 6e 62 75 72 67 |sity of |Edinburg|
|00000270| 68 2c 20 53 63 6f 74 6c | 61 6e 64 2e 0a 20 20 20 |h, Scotl|and.. |
|00000280| 20 2e 2e 2e 21 7b 69 68 | 6e 70 34 2c 73 65 69 73 | ...!{ih|np4,seis|
|00000290| 6d 6f 2c 64 65 63 76 61 | 78 7d 21 6d 63 76 61 78 |mo,decva|x}!mcvax|
|000002a0| 21 75 6b 63 21 63 73 74 | 76 61 78 28 21 69 74 73 |!ukc!cst|vax(!its|
|000002b0| 36 33 62 3f 29 21 73 69 | 6d 6f 6e 0a 0a 2d 2d 2d |63b?)!si|mon..---|
|000002c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002d0| 2d 2d 2d 2d 2d 2d 20 43 | 55 54 20 48 45 52 45 20 |------ C|UT HERE |
|000002e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0a |--------|-------.|
|00000300| 23 21 20 2f 62 69 6e 2f | 73 68 0a 23 20 54 68 69 |#! /bin/|sh.# Thi|
|00000310| 73 20 69 73 20 61 20 73 | 68 65 6c 6c 20 61 72 63 |s is a s|hell arc|
|00000320| 68 69 76 65 2c 20 6d 65 | 61 6e 69 6e 67 3a 0a 23 |hive, me|aning:.#|
|00000330| 20 31 2e 20 52 65 6d 6f | 76 65 20 65 76 65 72 79 | 1. Remo|ve every|
|00000340| 74 68 69 6e 67 20 61 62 | 6f 76 65 20 74 68 65 20 |thing ab|ove the |
|00000350| 23 21 20 2f 62 69 6e 2f | 73 68 20 6c 69 6e 65 2e |#! /bin/|sh line.|
|00000360| 0a 23 20 32 2e 20 53 61 | 76 65 20 74 68 65 20 72 |.# 2. Sa|ve the r|
|00000370| 65 73 75 6c 74 69 6e 67 | 20 74 65 78 74 20 69 6e |esulting| text in|
|00000380| 20 61 20 66 69 6c 65 2e | 0a 23 20 33 2e 20 45 78 | a file.|.# 3. Ex|
|00000390| 65 63 75 74 65 20 74 68 | 65 20 66 69 6c 65 20 77 |ecute th|e file w|
|000003a0| 69 74 68 20 2f 62 69 6e | 2f 73 68 20 28 6e 6f 74 |ith /bin|/sh (not|
|000003b0| 20 63 73 68 29 20 74 6f | 20 63 72 65 61 74 65 3a | csh) to| create:|
|000003c0| 0a 23 09 73 68 72 69 6e | 6b 2e 31 0a 23 09 73 68 |.#.shrin|k.1.#.sh|
|000003d0| 72 69 6e 6b 2e 63 0a 23 | 09 4d 61 6b 65 66 69 6c |rink.c.#|.Makefil|
|000003e0| 65 0a 65 78 70 6f 72 74 | 20 50 41 54 48 3b 20 50 |e.export| PATH; P|
|000003f0| 41 54 48 3d 2f 62 69 6e | 3a 2f 75 73 72 2f 62 69 |ATH=/bin|:/usr/bi|
|00000400| 6e 3a 24 50 41 54 48 0a | 65 63 68 6f 20 73 68 61 |n:$PATH.|echo sha|
|00000410| 72 3a 20 22 65 78 74 72 | 61 63 74 69 6e 67 20 27 |r: "extr|acting '|
|00000420| 73 68 72 69 6e 6b 2e 31 | 27 22 20 27 28 32 38 31 |shrink.1|'" '(281|
|00000430| 34 20 63 68 61 72 61 63 | 74 65 72 73 29 27 0a 69 |4 charac|ters)'.i|
|00000440| 66 20 74 65 73 74 20 2d | 66 20 27 73 68 72 69 6e |f test -|f 'shrin|
|00000450| 6b 2e 31 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |k.1'.the|n..echo |
|00000460| 73 68 61 72 3a 20 22 77 | 69 6c 6c 20 6e 6f 74 20 |shar: "w|ill not |
|00000470| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|00000480| 69 6e 67 20 66 69 6c 65 | 20 27 73 68 72 69 6e 6b |ing file| 'shrink|
|00000490| 2e 31 27 22 0a 65 6c 73 | 65 0a 63 61 74 20 3c 3c |.1'".els|e.cat <<|
|000004a0| 20 5c 53 48 41 52 5f 45 | 4f 46 20 3e 20 27 73 68 | \SHAR_E|OF > 'sh|
|000004b0| 72 69 6e 6b 2e 31 27 0a | 2e 54 48 20 53 48 52 49 |rink.1'.|.TH SHRI|
|000004c0| 4e 4b 20 31 20 22 45 64 | 69 6e 62 75 72 67 68 20 |NK 1 "Ed|inburgh |
|000004d0| 55 6e 69 76 65 72 73 69 | 74 79 22 20 22 44 65 63 |Universi|ty" "Dec|
|000004e0| 65 6d 62 65 72 20 31 39 | 38 36 22 0a 2e 53 48 20 |ember 19|86"..SH |
|000004f0| 4e 41 4d 45 0a 73 68 72 | 69 6e 6b 20 5c 2d 20 67 |NAME.shr|ink \- g|
|00000500| 65 6e 65 72 61 74 65 20 | 73 68 6f 72 74 20 66 69 |enerate |short fi|
|00000510| 6c 65 6e 61 6d 65 73 20 | 66 72 6f 6d 20 65 78 74 |lenames |from ext|
|00000520| 65 6e 64 65 64 20 6f 6e | 65 73 0a 2e 53 48 20 53 |ended on|es..SH S|
|00000530| 59 4e 4f 50 53 49 53 0a | 2e 42 20 73 68 72 69 6e |YNOPSIS.|.B shrin|
|00000540| 6b 0a 5b 20 2d 76 6e 53 | 6d 20 5d 20 5b 20 2d 73 |k.[ -vnS|m ] [ -s|
|00000550| 5c 66 49 73 65 70 61 72 | 61 74 6f 72 73 5c 66 52 |\fIsepar|ators\fR|
|00000560| 20 5d 20 5b 20 2d 5c 66 | 49 6e 5c 66 52 20 5d 20 | ] [ -\f|In\fR ] |
|00000570| 5c 66 49 66 69 6c 65 6e | 61 6d 65 5c 66 52 20 2e |\fIfilen|ame\fR .|
|00000580| 2e 2e 0a 2e 53 48 20 44 | 45 53 43 52 49 50 54 49 |....SH D|ESCRIPTI|
|00000590| 4f 4e 0a 2e 49 20 53 68 | 72 69 6e 6b 0a 63 6f 6e |ON..I Sh|rink.con|
|000005a0| 76 65 72 74 73 20 61 20 | 66 69 6c 65 6e 61 6d 65 |verts a |filename|
|000005b0| 20 74 6f 20 61 20 73 68 | 72 75 6e 6b 65 6e 20 66 | to a sh|runken f|
|000005c0| 6f 72 6d 2c 20 73 75 69 | 74 61 62 6c 65 20 66 6f |orm, sui|table fo|
|000005d0| 72 20 74 72 61 6e 73 70 | 6f 72 74 61 74 69 6f 6e |r transp|ortation|
|000005e0| 0a 74 6f 20 61 6e 6f 74 | 68 65 72 20 73 79 73 74 |.to anot|her syst|
|000005f0| 65 6d 20 77 69 74 68 20 | 6c 65 73 73 20 67 65 6e |em with |less gen|
|00000600| 65 72 6f 75 73 20 66 69 | 6c 65 6e 61 6d 65 20 6c |erous fi|lename l|
|00000610| 65 6e 67 74 68 20 6c 69 | 6d 69 74 73 2e 0a 49 74 |ength li|mits..It|
|00000620| 20 74 61 6b 65 73 20 65 | 61 63 68 0a 2e 49 20 66 | takes e|ach..I f|
|00000630| 69 6c 65 6e 61 6d 65 0a | 67 69 76 65 6e 2c 20 61 |ilename.|given, a|
|00000640| 6e 64 20 61 70 70 6c 69 | 65 73 20 63 65 72 74 61 |nd appli|es certa|
|00000650| 69 6e 20 72 75 6c 65 73 | 20 74 6f 20 73 68 6f 72 |in rules| to shor|
|00000660| 74 65 6e 20 69 74 2c 20 | 69 66 20 6e 65 63 65 73 |ten it, |if neces|
|00000670| 73 61 72 79 2e 0a 49 6e | 20 70 61 72 74 69 63 75 |sary..In| particu|
|00000680| 6c 61 72 2c 20 69 74 20 | 74 72 69 65 73 20 74 6f |lar, it |tries to|
|00000690| 20 6c 65 61 76 65 20 73 | 75 66 66 69 78 65 73 20 | leave s|uffixes |
|000006a0| 75 6e 63 68 61 6e 67 65 | 64 2c 20 61 6e 64 2c 0a |unchange|d, and,.|
|000006b0| 74 6f 20 61 20 6c 65 73 | 73 20 65 78 74 65 6e 74 |to a les|s extent|
|000006c0| 2c 20 74 6f 20 6b 65 65 | 70 20 74 68 65 20 69 6e |, to kee|p the in|
|000006d0| 69 74 69 61 6c 20 63 6f | 6d 70 6f 6e 65 6e 74 20 |itial co|mponent |
|000006e0| 61 73 20 63 6c 6f 73 65 | 20 74 6f 20 74 68 65 0a |as close| to the.|
|000006f0| 6f 72 69 67 69 6e 61 6c | 20 61 73 20 70 6f 73 73 |original| as poss|
|00000700| 69 62 6c 65 2e 20 4f 66 | 20 63 6f 75 72 73 65 2c |ible. Of| course,|
|00000710| 20 76 65 72 79 20 6c 6f | 6e 67 20 73 75 66 66 69 | very lo|ng suffi|
|00000720| 78 65 73 20 64 6f 20 68 | 61 76 65 20 74 6f 20 62 |xes do h|ave to b|
|00000730| 65 0a 74 72 75 6e 63 61 | 74 65 64 2e 0a 2e 50 50 |e.trunca|ted...PP|
|00000740| 0a 54 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6f |.The fol|lowing o|
|00000750| 70 74 69 6f 6e 73 20 61 | 72 65 20 72 65 63 6f 67 |ptions a|re recog|
|00000760| 6e 69 7a 65 64 3a 0a 2e | 54 50 0a 2e 42 20 2d 76 |nized:..|TP..B -v|
|00000770| 0a 56 65 72 62 6f 73 65 | 20 6d 6f 64 65 2e 20 4e |.Verbose| mode. N|
|00000780| 6f 72 6d 61 6c 6c 79 0a | 2e 49 20 73 68 72 69 6e |ormally.|.I shrin|
|00000790| 6b 0a 64 6f 65 73 20 69 | 74 73 20 77 6f 72 6b 20 |k.does i|ts work |
|000007a0| 73 69 6c 65 6e 74 6c 79 | 2c 20 62 75 74 20 75 6e |silently|, but un|
|000007b0| 64 65 72 20 74 68 65 20 | 76 65 72 62 6f 73 65 20 |der the |verbose |
|000007c0| 6f 70 74 69 6f 6e 20 69 | 74 20 63 68 61 74 73 20 |option i|t chats |
|000007d0| 61 62 6f 75 74 0a 77 68 | 61 74 20 64 65 63 69 73 |about.wh|at decis|
|000007e0| 69 6f 6e 73 20 69 74 73 | 20 6d 61 6b 69 6e 67 2e |ions its| making.|
|000007f0| 0a 2e 54 50 0a 2e 42 20 | 2d 6e 0a 4e 6f 72 6d 61 |..TP..B |-n.Norma|
|00000800| 6c 6c 79 20 74 68 65 20 | 6e 65 77 20 66 69 6c 65 |lly the |new file|
|00000810| 6e 61 6d 65 20 69 73 20 | 67 65 6e 65 72 61 74 65 |name is |generate|
|00000820| 64 20 73 6f 20 61 73 20 | 74 6f 20 6e 6f 74 20 63 |d so as |to not c|
|00000830| 6c 61 73 68 20 77 69 74 | 68 20 61 6e 0a 65 78 69 |lash wit|h an.exi|
|00000840| 73 74 69 6e 67 20 66 69 | 6c 65 2c 20 74 6f 20 70 |sting fi|le, to p|
|00000850| 72 65 76 65 6e 74 20 73 | 65 76 65 72 61 6c 20 6c |revent s|everal l|
|00000860| 6f 6e 67 2d 6e 61 6d 65 | 64 20 66 69 6c 65 73 20 |ong-name|d files |
|00000870| 66 6f 6c 64 69 6e 67 20 | 69 6e 74 6f 20 74 68 65 |folding |into the|
|00000880| 0a 73 61 6d 65 20 73 68 | 6f 72 74 65 6e 65 64 20 |.same sh|ortened |
|00000890| 66 6f 72 6d 2e 20 54 68 | 69 73 20 62 65 68 61 76 |form. Th|is behav|
|000008a0| 69 6f 75 72 20 63 61 6e | 20 62 65 20 72 65 76 6f |iour can| be revo|
|000008b0| 6b 65 64 20 62 79 20 75 | 73 65 20 6f 66 20 74 68 |ked by u|se of th|
|000008c0| 65 0a 2e 42 20 2d 6e 0a | 6f 70 74 69 6f 6e 2e 0a |e..B -n.|option..|
|000008d0| 2e 54 50 0a 2e 42 20 2d | 73 0a 4e 6f 72 6d 61 6c |.TP..B -|s.Normal|
|000008e0| 6c 79 20 74 68 65 20 6e | 65 77 20 66 69 6c 65 6e |ly the n|ew filen|
|000008f0| 61 6d 65 20 69 73 20 70 | 72 69 6e 74 65 64 20 6f |ame is p|rinted o|
|00000900| 6e 20 74 68 65 20 73 74 | 61 6e 64 61 72 64 20 6f |n the st|andard o|
|00000910| 75 74 70 75 74 2e 0a 54 | 68 65 0a 2e 42 20 2d 73 |utput..T|he..B -s|
|00000920| 0a 6f 70 74 69 6f 6e 20 | 63 61 75 73 65 73 20 0a |.option |causes .|
|00000930| 2e 49 20 73 68 72 69 6e | 6b 0a 74 6f 20 62 65 20 |.I shrin|k.to be |
|00000940| 73 69 6c 65 6e 74 2e 0a | 54 68 69 73 20 69 73 20 |silent..|This is |
|00000950| 75 73 65 66 75 6c 20 6f | 6e 6c 79 20 69 6e 20 63 |useful o|nly in c|
|00000960| 6f 6e 6a 75 6e 63 74 69 | 6f 6e 20 77 69 74 68 20 |onjuncti|on with |
|00000970| 74 68 65 0a 2e 42 20 2d | 6d 0a 6f 70 74 69 6f 6e |the..B -|m.option|
|00000980| 2e 0a 2e 54 50 0a 2e 42 | 20 2d 6d 0a 54 68 69 73 |...TP..B| -m.This|
|00000990| 20 63 61 75 73 65 73 20 | 74 68 65 20 66 69 6c 65 | causes |the file|
|000009a0| 73 20 74 6f 20 62 65 20 | 70 68 79 73 69 63 61 6c |s to be |physical|
|000009b0| 6c 79 20 72 65 6e 61 6d | 65 64 3b 0a 6e 6f 72 6d |ly renam|ed;.norm|
|000009c0| 61 6c 6c 79 2c 20 6a 75 | 73 74 20 74 68 65 20 60 |ally, ju|st the `|
|000009d0| 60 73 75 67 67 65 73 74 | 65 64 27 27 20 63 68 61 |`suggest|ed'' cha|
|000009e0| 6e 67 65 20 69 73 20 70 | 72 69 6e 74 65 64 20 62 |nge is p|rinted b|
|000009f0| 75 74 20 6e 6f 74 68 69 | 6e 67 0a 61 63 74 75 61 |ut nothi|ng.actua|
|00000a00| 6c 6c 79 20 64 6f 6e 65 | 2e 0a 2e 54 50 0a 2e 42 |lly done|...TP..B|
|00000a10| 20 22 2d 73 20 5c 66 49 | 73 65 70 61 72 61 74 6f | "-s \fI|separato|
|00000a20| 72 73 5c 66 42 22 0a 54 | 68 69 73 20 63 61 6e 20 |rs\fB".T|his can |
|00000a30| 62 65 20 75 73 65 64 20 | 74 6f 20 63 68 61 6e 67 |be used |to chang|
|00000a40| 65 20 74 68 65 20 73 65 | 74 20 6f 66 0a 2e 49 20 |e the se|t of..I |
|00000a50| 73 65 70 61 72 61 74 6f | 72 73 0a 74 68 61 74 20 |separato|rs.that |
|00000a60| 0a 2e 49 20 73 68 72 69 | 6e 6b 0a 72 65 63 6f 67 |..I shri|nk.recog|
|00000a70| 6e 69 7a 65 73 2e 0a 54 | 68 65 73 65 20 61 72 65 |nizes..T|hese are|
|00000a80| 20 74 68 65 20 63 68 61 | 72 61 63 74 65 72 73 20 | the cha|racters |
|00000a90| 74 68 61 74 20 61 72 65 | 20 75 73 65 64 20 74 6f |that are| used to|
|00000aa0| 20 64 65 6c 69 6d 69 74 | 20 66 69 6c 65 6e 61 6d | delimit| filenam|
|00000ab0| 65 20 63 6f 6d 70 6f 6e | 65 6e 74 73 2e 0a 2e 49 |e compon|ents...I|
|00000ac0| 20 53 68 72 69 6e 6b 0a | 6f 70 65 72 61 74 65 73 | Shrink.|operates|
|00000ad0| 20 62 79 20 73 68 72 69 | 6e 6b 69 6e 67 20 63 68 | by shri|nking ch|
|00000ae0| 61 72 61 63 74 65 72 73 | 20 6f 75 74 20 6f 66 20 |aracters| out of |
|00000af0| 65 61 63 68 20 63 6f 6d | 70 6f 6e 65 6e 74 0a 28 |each com|ponent.(|
|00000b00| 74 68 6f 75 67 68 20 69 | 74 20 69 73 20 6c 6f 61 |though i|t is loa|
|00000b10| 74 68 20 74 6f 20 6d 6f | 64 69 66 79 20 74 68 65 |th to mo|dify the|
|00000b20| 20 66 69 72 73 74 20 6f | 72 20 6c 61 73 74 20 63 | first o|r last c|
|00000b30| 6f 6d 70 6f 6e 65 6e 74 | 73 20 75 6e 6c 65 73 73 |omponent|s unless|
|00000b40| 0a 69 74 20 68 61 73 20 | 6e 6f 20 63 68 6f 69 63 |.it has |no choic|
|00000b50| 65 29 2c 20 77 68 69 6c | 65 20 6c 65 61 76 69 6e |e), whil|e leavin|
|00000b60| 67 20 74 68 65 20 64 65 | 6c 69 6d 69 74 65 72 73 |g the de|limiters|
|00000b70| 20 75 6e 63 68 61 6e 67 | 65 64 2e 0a 48 6f 77 65 | unchang|ed..Howe|
|00000b80| 76 65 72 2c 20 69 66 20 | 61 20 66 69 6c 65 6e 61 |ver, if |a filena|
|00000b90| 6d 65 20 63 6f 6e 74 61 | 69 6e 73 20 61 20 76 61 |me conta|ins a va|
|00000ba0| 73 74 20 6e 75 6d 62 65 | 72 20 6f 66 20 64 65 6c |st numbe|r of del|
|00000bb0| 69 6d 69 74 65 72 20 63 | 68 61 72 61 63 74 65 72 |imiter c|haracter|
|00000bc0| 73 0a 28 73 75 63 68 20 | 61 73 0a 2e 49 20 74 68 |s.(such |as..I th|
|00000bd0| 69 73 5f 66 69 6c 65 5f | 63 6f 6e 74 61 69 6e 73 |is_file_|contains|
|00000be0| 5f 71 75 69 74 65 5f 61 | 5f 6c 6f 74 5f 6f 66 5f |_quite_a|_lot_of_|
|00000bf0| 73 74 75 66 66 5f 61 6e | 64 5f 75 73 65 66 75 6c |stuff_an|d_useful|
|00000c00| 5f 73 74 75 66 66 5f 61 | 74 5f 74 68 61 74 0a 29 |_stuff_a|t_that.)|
|00000c10| 2c 20 74 68 65 6e 20 73 | 6f 6d 65 20 63 6f 6d 70 |, then s|ome comp|
|00000c20| 6f 6e 65 6e 74 73 20 28 | 61 6e 64 20 74 68 65 69 |onents (|and thei|
|00000c30| 72 20 61 73 73 6f 63 69 | 61 74 65 64 20 64 65 6c |r associ|ated del|
|00000c40| 69 6d 69 74 65 72 73 29 | 0a 77 69 6c 6c 20 68 61 |imiters)|.will ha|
|00000c50| 76 65 20 74 6f 20 62 65 | 20 64 65 6c 65 74 65 64 |ve to be| deleted|
|00000c60| 20 74 6f 74 61 6c 6c 79 | 2e 0a 54 68 65 20 64 65 | totally|..The de|
|00000c70| 66 61 75 6c 74 20 64 65 | 6c 69 6d 69 74 65 72 20 |fault de|limiter |
|00000c80| 73 65 74 20 69 73 0a 2e | 42 52 20 2b 20 2c 0a 2e |set is..|BR + ,..|
|00000c90| 42 52 20 2d 20 2c 0a 2e | 42 52 20 2e 20 2c 0a 2e |BR - ,..|BR . ,..|
|00000ca0| 42 52 20 5f 20 2c 0a 2e | 42 52 20 7e 20 0a 61 6e |BR _ ,..|BR ~ .an|
|00000cb0| 64 0a 2e 42 52 20 2c 20 | 2e 0a 2e 54 50 0a 2e 42 |d..BR , |...TP..B|
|00000cc0| 20 22 2d 5c 66 49 6e 5c | 66 42 22 0a 41 20 6e 75 | "-\fIn\|fB".A nu|
|00000cd0| 6d 65 72 69 63 61 6c 20 | 66 6c 61 67 20 5c 66 49 |merical |flag \fI|
|00000ce0| 6e 5c 66 52 20 6d 61 79 | 20 62 65 20 67 69 76 65 |n\fR may| be give|
|00000cf0| 6e 20 74 6f 20 73 70 65 | 63 69 66 79 20 61 20 6d |n to spe|cify a m|
|00000d00| 61 78 69 6d 75 6d 20 6c | 65 6e 67 74 68 0a 74 68 |aximum l|ength.th|
|00000d10| 61 74 20 74 68 65 20 72 | 65 73 75 6c 74 61 6e 74 |at the r|esultant|
|00000d20| 20 66 69 6c 65 6e 61 6d | 65 20 69 73 20 61 6c 6c | filenam|e is all|
|00000d30| 6f 77 65 64 20 74 6f 20 | 62 65 2e 0a 54 68 65 20 |owed to |be..The |
|00000d40| 64 65 66 61 75 6c 74 20 | 69 73 20 31 34 20 28 77 |default |is 14 (w|
|00000d50| 68 69 63 68 20 69 73 20 | 74 68 65 20 6d 61 78 69 |hich is |the maxi|
|00000d60| 6d 75 6d 20 66 69 6c 65 | 20 6c 65 6e 67 74 68 20 |mum file| length |
|00000d70| 75 6e 64 65 72 20 61 6c | 6c 20 75 6e 69 78 0a 73 |under al|l unix.s|
|00000d80| 79 73 74 65 6d 73 20 77 | 69 74 68 6f 75 74 20 74 |ystems w|ithout t|
|00000d90| 68 65 20 42 65 72 6b 65 | 6c 65 79 20 6d 6f 64 69 |he Berke|ley modi|
|00000da0| 66 69 65 64 20 66 69 6c | 65 73 79 73 74 65 6d 29 |fied fil|esystem)|
|00000db0| 2e 0a 2e 53 48 20 44 49 | 41 47 4e 4f 53 54 49 43 |...SH DI|AGNOSTIC|
|00000dc0| 53 0a 55 6e 64 65 72 20 | 74 68 65 0a 2e 42 20 2d |S.Under |the..B -|
|00000dd0| 76 0a 6f 70 74 69 6f 6e | 2c 20 6c 6f 74 73 20 6f |v.option|, lots o|
|00000de0| 66 20 64 69 61 67 6e 6f | 73 74 69 63 73 20 63 61 |f diagno|stics ca|
|00000df0| 6e 20 62 65 20 70 72 6f | 64 75 63 65 64 2e 0a 54 |n be pro|duced..T|
|00000e00| 68 6f 73 65 20 70 72 65 | 63 65 64 65 64 20 62 79 |hose pre|ceded by|
|00000e10| 20 74 68 65 20 77 6f 72 | 64 0a 2e 42 20 22 60 60 | the wor|d..B "``|
|00000e20| 77 61 72 6e 69 6e 67 3a | 27 27 22 0a 63 61 6e 20 |warning:|''".can |
|00000e30| 70 72 6f 62 61 62 6c 79 | 20 62 65 20 69 67 6e 6f |probably| be igno|
|00000e40| 72 65 64 2e 0a 2e 50 50 | 0a 55 6e 64 65 72 20 63 |red...PP|.Under c|
|00000e50| 65 72 74 61 69 6e 20 63 | 69 72 63 75 6d 73 74 61 |ertain c|ircumsta|
|00000e60| 6e 63 65 73 2c 20 0a 2e | 49 20 73 68 72 69 6e 6b |nces, ..|I shrink|
|00000e70| 0a 6d 61 79 20 72 65 66 | 75 73 65 20 74 6f 74 61 |.may ref|use tota|
|00000e80| 6c 6c 79 20 74 6f 20 64 | 65 61 6c 20 77 69 74 68 |lly to d|eal with|
|00000e90| 20 73 6f 6d 65 20 66 69 | 6c 65 6e 61 6d 65 73 2c | some fi|lenames,|
|00000ea0| 0a 74 68 6f 75 67 68 20 | 74 68 69 73 20 69 73 20 |.though |this is |
|00000eb0| 6e 6f 74 20 76 65 72 79 | 20 6c 69 6b 65 6c 79 20 |not very| likely |
|00000ec0| 74 6f 20 6f 63 63 75 72 | 20 75 6e 6c 65 73 73 20 |to occur| unless |
|00000ed0| 61 20 76 65 72 79 20 73 | 6d 61 6c 6c 0a 6d 61 78 |a very s|mall.max|
|00000ee0| 69 6d 75 6d 20 6c 65 6e | 67 74 68 20 66 6c 61 67 |imum len|gth flag|
|00000ef0| 20 69 73 20 73 70 65 63 | 69 66 69 65 64 2e 0a 2e | is spec|ified...|
|00000f00| 53 48 20 42 55 47 53 0a | 49 66 20 74 68 65 20 66 |SH BUGS.|If the f|
|00000f10| 69 6c 65 20 62 65 67 69 | 6e 73 20 77 69 74 68 20 |ile begi|ns with |
|00000f20| 61 20 64 65 6c 69 6d 69 | 74 65 72 20 63 68 61 72 |a delimi|ter char|
|00000f30| 61 63 74 65 72 2c 0a 74 | 68 65 6e 20 0a 2e 49 20 |acter,.t|hen ..I |
|00000f40| 73 68 72 69 6e 6b 0a 73 | 6f 6d 65 74 69 6d 65 73 |shrink.s|ometimes|
|00000f50| 20 63 61 75 73 65 73 20 | 74 68 65 20 73 68 6f 72 | causes |the shor|
|00000f60| 74 65 6e 65 64 20 66 69 | 6c 65 6e 61 6d 65 20 74 |tened fi|lename t|
|00000f70| 6f 20 62 65 20 73 68 6f | 72 74 65 72 20 74 68 61 |o be sho|rter tha|
|00000f80| 6e 20 69 74 0a 6e 65 65 | 64 20 62 65 2e 0a 54 68 |n it.nee|d be..Th|
|00000f90| 69 73 20 69 73 20 6e 6f | 74 20 74 6f 6f 20 73 65 |is is no|t too se|
|00000fa0| 72 69 6f 75 73 20 61 20 | 62 75 67 2e 0a 2e 53 48 |rious a |bug...SH|
|00000fb0| 20 41 55 54 48 4f 52 0a | 53 69 6d 6f 6e 20 42 72 | AUTHOR.|Simon Br|
|00000fc0| 6f 77 6e 2e 0a 53 48 41 | 52 5f 45 4f 46 0a 66 69 |own..SHA|R_EOF.fi|
|00000fd0| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 22 65 78 74 |.echo sh|ar: "ext|
|00000fe0| 72 61 63 74 69 6e 67 20 | 27 73 68 72 69 6e 6b 2e |racting |'shrink.|
|00000ff0| 63 27 22 20 27 28 36 34 | 32 30 20 63 68 61 72 61 |c'" '(64|20 chara|
|00001000| 63 74 65 72 73 29 27 0a | 69 66 20 74 65 73 74 20 |cters)'.|if test |
|00001010| 2d 66 20 27 73 68 72 69 | 6e 6b 2e 63 27 0a 74 68 |-f 'shri|nk.c'.th|
|00001020| 65 6e 0a 09 65 63 68 6f | 20 73 68 61 72 3a 20 22 |en..echo| shar: "|
|00001030| 77 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |will not| over-wr|
|00001040| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00001050| 65 20 27 73 68 72 69 6e | 6b 2e 63 27 22 0a 65 6c |e 'shrin|k.c'".el|
|00001060| 73 65 0a 63 61 74 20 3c | 3c 20 5c 53 48 41 52 5f |se.cat <|< \SHAR_|
|00001070| 45 4f 46 20 3e 20 27 73 | 68 72 69 6e 6b 2e 63 27 |EOF > 's|hrink.c'|
|00001080| 0a 2f 2a 0a 20 2a 09 52 | 65 6e 61 6d 65 20 61 20 |./*. *.R|ename a |
|00001090| 66 69 6c 65 20 73 6f 27 | 73 20 69 74 20 77 69 6c |file so'|s it wil|
|000010a0| 6c 20 62 65 20 75 6e 69 | 71 75 65 20 75 6e 64 65 |l be uni|que unde|
|000010b0| 72 20 73 79 73 74 65 6d | 73 20 77 69 74 68 6f 75 |r system|s withou|
|000010c0| 74 0a 20 2a 09 65 78 74 | 65 6e 64 65 64 20 66 69 |t. *.ext|ended fi|
|000010d0| 6c 65 6e 61 6d 65 20 73 | 69 7a 65 2e 0a 20 2a 09 |lename s|ize.. *.|
|000010e0| 54 68 65 20 6e 65 77 20 | 6e 61 6d 65 20 69 73 20 |The new |name is |
|000010f0| 77 72 69 74 74 65 6e 20 | 6f 6e 20 74 68 65 20 73 |written |on the s|
|00001100| 74 61 72 64 61 72 64 20 | 6f 75 74 70 75 74 2e 0a |tardard |output..|
|00001110| 20 2a 0a 20 2a 09 45 78 | 61 6d 70 6c 65 3a 0a 20 | *. *.Ex|ample:. |
|00001120| 2a 09 09 54 6f 20 63 6f | 70 79 20 6c 6f 74 73 20 |*..To co|py lots |
|00001130| 6f 66 20 66 69 6c 65 73 | 20 66 72 6f 6d 20 61 20 |of files| from a |
|00001140| 34 2e 3f 42 53 44 20 73 | 79 73 74 65 6d 20 74 6f |4.?BSD s|ystem to|
|00001150| 20 61 0a 20 2a 09 09 53 | 79 73 74 65 6d 56 2c 20 | a. *..S|ystemV, |
|00001160| 53 79 73 74 65 6d 49 49 | 49 2c 20 32 2e 3f 42 53 |SystemII|I, 2.?BS|
|00001170| 44 20 6f 72 20 56 37 20 | 73 79 73 74 65 6d 2c 20 |D or V7 |system, |
|00001180| 77 69 74 68 6f 75 74 0a | 20 2a 09 09 68 61 76 69 |without.| *..havi|
|00001190| 6e 67 20 74 6f 20 77 6f | 72 72 79 20 61 62 6f 75 |ng to wo|rry abou|
|000011a0| 74 20 6f 76 65 72 6c 61 | 70 70 69 6e 67 20 66 69 |t overla|pping fi|
|000011b0| 6c 65 6e 61 6d 65 73 0a | 20 2a 09 09 28 65 67 2c |lenames.| *..(eg,|
|000011c0| 20 73 6f 20 22 77 68 61 | 74 5f 61 5f 6c 6f 6e 67 | so "wha|t_a_long|
|000011d0| 5f 66 69 6c 65 6e 61 6d | 65 2e 63 22 20 61 6e 64 |_filenam|e.c" and|
|000011e0| 20 22 77 68 61 74 5f 61 | 5f 6c 6f 6e 67 5f 66 69 | "what_a|_long_fi|
|000011f0| 6c 65 6e 61 6d 65 2e 68 | 22 0a 20 2a 09 09 64 6f |lename.h|". *..do|
|00001200| 6e 27 74 20 67 65 74 20 | 73 71 75 69 73 68 65 64 |n't get |squished|
|00001210| 29 2c 20 6a 75 73 74 20 | 64 6f 0a 20 2a 09 09 09 |), just |do. *...|
|00001220| 66 6f 72 20 69 20 69 6e | 20 2a 0a 20 2a 09 09 09 |for i in| *. *...|
|00001230| 64 6f 0a 20 2a 09 09 09 | 09 6a 3d 60 73 68 72 69 |do. *...|.j=`shri|
|00001240| 6e 6b 20 2d 6d 20 24 69 | 60 0a 20 2a 09 09 09 09 |nk -m $i|`. *....|
|00001250| 75 75 63 70 20 24 6a 20 | 6f 74 68 65 72 73 79 73 |uucp $j |othersys|
|00001260| 21 2f 73 74 75 66 66 2f | 24 6a 20 20 28 6f 72 20 |!/stuff/|$j (or |
|00001270| 72 63 70 2c 20 68 68 63 | 70 2c 20 2e 2e 2e 29 0a |rcp, hhc|p, ...).|
|00001280| 20 2a 09 09 09 64 6f 6e | 65 0a 20 2a 0a 20 2a 09 | *...don|e. *. *.|
|00001290| 42 75 67 3a 09 49 74 20 | 67 65 74 73 20 6f 76 65 |Bug:.It |gets ove|
|000012a0| 72 65 6e 74 68 75 73 69 | 61 73 74 69 63 20 61 6e |renthusi|astic an|
|000012b0| 64 20 64 65 6c 65 74 65 | 73 20 63 68 61 72 61 63 |d delete|s charac|
|000012c0| 74 65 72 73 0a 20 2a 09 | 20 20 20 20 09 75 6e 6e |ters. *.| .unn|
|000012d0| 65 63 65 73 73 61 72 69 | 6c 79 20 69 66 20 74 68 |ecessari|ly if th|
|000012e0| 65 20 66 69 6c 65 6e 61 | 6d 65 20 62 65 67 69 6e |e filena|me begin|
|000012f0| 73 20 77 69 74 68 20 61 | 20 22 2e 22 0a 20 2a 0a |s with a| ".". *.|
|00001300| 20 2a 09 41 75 74 68 6f | 72 3a 0a 20 2a 09 09 53 | *.Autho|r:. *..S|
|00001310| 69 6d 6f 6e 20 42 72 6f | 77 6e 0a 20 2a 09 09 44 |imon Bro|wn. *..D|
|00001320| 65 70 61 72 74 6d 65 6e | 74 20 6f 66 20 43 6f 6d |epartmen|t of Com|
|00001330| 70 75 74 65 72 20 53 63 | 69 65 6e 63 65 2c 20 55 |puter Sc|ience, U|
|00001340| 6e 69 76 65 72 73 69 74 | 79 20 6f 66 20 45 64 69 |niversit|y of Edi|
|00001350| 6e 62 75 72 67 68 2e 0a | 20 2a 2f 0a 0a 23 69 6e |nburgh..| */..#in|
|00001360| 63 6c 75 64 65 20 3c 73 | 74 64 69 6f 2e 68 3e 0a |clude <s|tdio.h>.|
|00001370| 0a 2f 2a 0a 20 2a 09 6d | 61 78 69 6d 75 6d 20 6e |./*. *.m|aximum n|
|00001380| 6f 2e 20 6f 66 20 22 73 | 65 67 6d 65 6e 74 73 22 |o. of "s|egments"|
|00001390| 20 61 6c 6c 6f 77 65 64 | 20 69 6e 20 61 20 66 69 | allowed| in a fi|
|000013a0| 6c 65 20 0a 20 2a 2f 0a | 23 64 65 66 69 6e 65 20 |le . */.|#define |
|000013b0| 4d 41 58 53 45 47 53 20 | 31 30 0a 0a 2f 2a 0a 20 |MAXSEGS |10../*. |
|000013c0| 2a 09 73 69 6c 6c 79 20 | 6e 61 6d 65 73 20 66 6f |*.silly |names fo|
|000013d0| 72 20 73 74 72 63 68 72 | 2f 73 74 72 72 63 68 72 |r strchr|/strrchr|
|000013e0| 20 75 6e 64 65 72 20 6e | 6f 6e 2d 75 73 67 20 75 | under n|on-usg u|
|000013f0| 6e 69 63 65 73 0a 20 2a | 2f 0a 23 69 66 6e 64 65 |nices. *|/.#ifnde|
|00001400| 66 20 73 79 73 56 0a 23 | 64 65 66 69 6e 65 20 73 |f sysV.#|define s|
|00001410| 74 72 63 68 72 09 69 6e | 64 65 78 0a 23 64 65 66 |trchr.in|dex.#def|
|00001420| 69 6e 65 20 73 74 72 72 | 63 68 72 09 72 69 6e 64 |ine strr|chr.rind|
|00001430| 65 78 0a 23 65 6e 64 69 | 66 20 73 79 73 56 0a 0a |ex.#endi|f sysV..|
|00001440| 63 68 61 72 20 2a 67 65 | 74 73 65 67 6d 65 6e 74 |char *ge|tsegment|
|00001450| 28 29 3b 0a 63 68 61 72 | 20 2a 73 74 72 63 68 72 |();.char| *strchr|
|00001460| 28 29 2c 20 2a 73 74 72 | 72 63 68 72 28 29 3b 0a |(), *str|rchr();.|
|00001470| 0a 73 74 72 75 63 74 20 | 73 65 67 6d 65 6e 74 20 |.struct |segment |
|00001480| 7b 0a 09 63 68 61 72 20 | 73 65 67 5f 73 74 72 69 |{..char |seg_stri|
|00001490| 6e 67 5b 36 33 5d 3b 0a | 09 63 68 61 72 20 73 65 |ng[63];.|.char se|
|000014a0| 67 5f 73 65 70 3b 0a 7d | 20 73 65 67 5b 4d 41 58 |g_sep;.}| seg[MAX|
|000014b0| 53 45 47 53 5d 3b 0a 0a | 63 68 61 72 20 64 65 66 |SEGS];..|char def|
|000014c0| 61 75 6c 74 73 5b 5d 20 | 3d 20 22 2e 5f 2b 2d 2c |aults[] |= "._+-,|
|000014d0| 40 7e 3d 22 3b 0a 63 68 | 61 72 20 75 73 61 67 65 |@~=";.ch|ar usage|
|000014e0| 6d 73 67 5b 5d 20 3d 20 | 22 55 73 61 67 65 3a 20 |msg[] = |"Usage: |
|000014f0| 25 73 20 5b 2d 3c 6d 61 | 78 6c 65 6e 67 74 68 3e |%s [-<ma|xlength>|
|00001500| 5d 20 5b 2d 6d 6e 53 76 | 5d 20 5b 2d 73 3c 73 65 |] [-mnSv|] [-s<se|
|00001510| 70 61 72 61 74 6f 72 73 | 3e 5d 20 66 69 6c 65 6e |parators|>] filen|
|00001520| 61 6d 65 20 2e 2e 2e 5c | 6e 22 3b 0a 0a 69 6e 74 |ame ...\|n";..int|
|00001530| 20 6d 61 78 20 3d 20 31 | 34 3b 09 09 09 2f 2a 20 | max = 1|4;.../* |
|00001540| 74 61 72 67 65 74 20 6c | 65 6e 67 74 68 20 2a 2f |target l|ength */|
|00001550| 0a 69 6e 74 20 6e 6f 63 | 68 65 63 6b 20 3d 20 30 |.int noc|heck = 0|
|00001560| 3b 09 09 2f 2a 20 64 6f | 6e 27 74 20 63 68 65 63 |;../* do|n't chec|
|00001570| 6b 20 66 6f 72 20 65 78 | 69 73 74 61 6e 63 65 20 |k for ex|istance |
|00001580| 28 2d 6e 20 66 6c 61 67 | 29 20 2a 2f 0a 69 6e 74 |(-n flag|) */.int|
|00001590| 20 63 68 61 74 74 79 20 | 3d 20 30 3b 09 09 09 2f | chatty |= 0;.../|
|000015a0| 2a 20 74 61 6c 6b 20 61 | 20 6c 6f 74 20 28 2d 76 |* talk a| lot (-v|
|000015b0| 20 66 6c 61 67 29 20 2a | 2f 0a 69 6e 74 20 73 69 | flag) *|/.int si|
|000015c0| 6c 65 6e 74 20 3d 20 30 | 3b 09 09 09 2f 2a 20 64 |lent = 0|;.../* d|
|000015d0| 6f 6e 27 74 20 73 61 79 | 20 61 6e 79 74 68 69 6e |on't say| anythin|
|000015e0| 67 20 28 2d 73 20 66 6c | 61 67 29 20 2a 2f 0a 69 |g (-s fl|ag) */.i|
|000015f0| 6e 74 20 6d 6f 76 65 20 | 3d 20 30 3b 09 09 09 2f |nt move |= 0;.../|
|00001600| 2a 20 72 65 6e 61 6d 65 | 20 66 69 6c 65 20 28 2d |* rename| file (-|
|00001610| 6d 20 66 6c 61 67 29 20 | 2a 2f 0a 63 68 61 72 20 |m flag) |*/.char |
|00001620| 2a 66 69 6c 65 2c 20 2a | 70 72 65 66 69 78 3b 0a |*file, *|prefix;.|
|00001630| 69 6e 74 20 6d 6f 64 69 | 66 69 65 64 20 3d 20 30 |int modi|fied = 0|
|00001640| 3b 0a 63 68 61 72 20 72 | 65 61 6c 6e 61 6d 65 5b |;.char r|ealname[|
|00001650| 35 31 32 5d 3b 0a 63 68 | 61 72 20 2a 73 65 70 61 |512];.ch|ar *sepa|
|00001660| 72 61 74 6f 72 73 20 3d | 20 64 65 66 61 75 6c 74 |rators =| default|
|00001670| 73 3b 0a 0a 6d 61 69 6e | 28 61 72 67 63 2c 61 72 |s;..main|(argc,ar|
|00001680| 67 76 29 0a 63 68 61 72 | 20 2a 2a 61 72 67 76 3b |gv).char| **argv;|
|00001690| 0a 7b 0a 09 72 65 67 69 | 73 74 65 72 20 69 6e 74 |.{..regi|ster int|
|000016a0| 20 69 2c 20 6a 3b 0a 09 | 69 6e 74 20 6e 73 65 67 | i, j;..|int nseg|
|000016b0| 73 2c 20 73 75 66 6c 65 | 6e 2c 20 72 65 6d 61 69 |s, sufle|n, remai|
|000016c0| 6e 64 65 72 2c 20 64 65 | 6c 65 74 65 3b 0a 09 69 |nder, de|lete;..i|
|000016d0| 6e 74 20 74 6f 74 61 6c | 3b 0a 09 69 6e 74 20 7a |nt total|;..int z|
|000016e0| 61 70 20 3d 20 30 3b 0a | 09 72 65 67 69 73 74 65 |ap = 0;.|.registe|
|000016f0| 72 20 63 68 61 72 20 2a | 6f 70 3b 0a 09 63 68 61 |r char *|op;..cha|
|00001700| 72 20 2a 70 72 6f 67 6e | 61 6d 65 20 3d 20 61 72 |r *progn|ame = ar|
|00001710| 67 76 5b 30 5d 3b 0a 0a | 09 69 66 20 28 61 72 67 |gv[0];..|.if (arg|
|00001720| 76 5b 31 5d 20 3d 3d 20 | 28 63 68 61 72 20 2a 29 |v[1] == |(char *)|
|00001730| 30 29 7b 0a 09 09 66 70 | 72 69 6e 74 66 28 73 74 |0){...fp|rintf(st|
|00001740| 64 65 72 72 2c 20 75 73 | 61 67 65 6d 73 67 2c 20 |derr, us|agemsg, |
|00001750| 70 72 6f 67 6e 61 6d 65 | 29 3b 0a 09 09 65 78 69 |progname|);...exi|
|00001760| 74 28 31 29 3b 0a 09 7d | 0a 09 77 68 69 6c 65 20 |t(1);..}|..while |
|00001770| 28 2a 2b 2b 61 72 67 76 | 29 09 09 2f 2a 20 70 72 |(*++argv|)../* pr|
|00001780| 6f 63 65 73 73 20 63 6f | 6d 6d 61 6e 64 2d 6c 69 |ocess co|mmand-li|
|00001790| 6e 65 20 6f 70 74 69 6f | 6e 73 2e 2e 2e 20 2a 2f |ne optio|ns... */|
|000017a0| 0a 09 09 69 66 20 28 2a | 2a 61 72 67 76 3d 3d 27 |...if (*|*argv=='|
|000017b0| 2d 27 29 0a 09 09 09 77 | 68 69 6c 65 20 28 2a 2b |-')....w|hile (*+|
|000017c0| 2b 2a 61 72 67 76 29 0a | 09 09 09 09 73 77 69 74 |+*argv).|....swit|
|000017d0| 63 68 28 2a 2a 61 72 67 | 76 29 7b 0a 09 09 09 09 |ch(**arg|v){.....|
|000017e0| 20 20 20 63 61 73 65 20 | 27 30 27 3a 20 63 61 73 | case |'0': cas|
|000017f0| 65 20 27 31 27 3a 20 63 | 61 73 65 20 27 32 27 3a |e '1': c|ase '2':|
|00001800| 0a 09 09 09 09 20 20 20 | 63 61 73 65 20 27 33 27 |..... |case '3'|
|00001810| 3a 20 63 61 73 65 20 27 | 34 27 3a 20 63 61 73 65 |: case '|4': case|
|00001820| 20 27 35 27 3a 0a 09 09 | 09 09 20 20 20 63 61 73 | '5':...|.. cas|
|00001830| 65 20 27 36 27 3a 20 63 | 61 73 65 20 27 37 27 3a |e '6': c|ase '7':|
|00001840| 20 63 61 73 65 20 27 38 | 27 3a 0a 09 09 09 09 20 | case '8|':..... |
|00001850| 20 20 63 61 73 65 20 27 | 39 27 3a 09 2f 2a 20 63 | case '|9':./* c|
|00001860| 68 61 6e 67 65 20 74 61 | 72 67 65 74 20 6c 65 6e |hange ta|rget len|
|00001870| 67 74 68 20 2a 2f 0a 09 | 09 09 09 09 6d 61 78 20 |gth */..|....max |
|00001880| 3d 20 61 74 6f 69 28 2a | 61 72 67 76 29 3b 0a 09 |= atoi(*|argv);..|
|00001890| 09 09 09 09 69 66 20 28 | 6d 61 78 3c 3d 30 29 7b |....if (|max<=0){|
|000018a0| 0a 09 09 09 09 09 09 66 | 70 72 69 6e 74 66 28 73 |.......f|printf(s|
|000018b0| 74 64 65 72 72 2c 22 25 | 73 3a 20 69 6c 6c 65 67 |tderr,"%|s: illeg|
|000018c0| 61 6c 20 6c 65 6e 67 74 | 68 20 25 73 5c 6e 22 2c |al lengt|h %s\n",|
|000018d0| 20 61 72 67 76 5b 30 5d | 2c 20 61 72 67 76 5b 31 | argv[0]|, argv[1|
|000018e0| 5d 29 3b 0a 09 09 09 09 | 09 09 65 78 69 74 28 31 |]);.....|..exit(1|
|000018f0| 29 3b 0a 09 09 09 09 09 | 7d 0a 09 09 09 09 09 77 |);......|}......w|
|00001900| 68 69 6c 65 20 28 2a 2b | 2b 2a 61 72 67 76 29 3b |hile (*+|+*argv);|
|00001910| 0a 09 09 09 09 09 2d 2d | 2a 61 72 67 76 3b 0a 09 |......--|*argv;..|
|00001920| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 20 |....brea|k;..... |
|00001930| 20 20 63 61 73 65 20 27 | 73 27 3a 09 2f 2a 20 63 | case '|s':./* c|
|00001940| 68 61 6e 67 65 20 73 65 | 70 61 72 61 74 6f 72 20 |hange se|parator |
|00001950| 64 65 66 69 6e 69 74 69 | 6f 6e 20 2a 2f 0a 09 09 |definiti|on */...|
|00001960| 09 09 09 73 65 70 61 72 | 61 74 6f 72 73 20 3d 20 |...separ|ators = |
|00001970| 2b 2b 2a 61 72 67 76 3b | 0a 09 09 09 09 09 77 68 |++*argv;|......wh|
|00001980| 69 6c 65 20 28 2a 2b 2b | 2a 61 72 67 76 29 3b 0a |ile (*++|*argv);.|
|00001990| 09 09 09 09 09 2d 2d 2a | 61 72 67 76 3b 0a 09 09 |.....--*|argv;...|
|000019a0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 20 20 |...break|;..... |
|000019b0| 20 63 61 73 65 20 27 6e | 27 3a 09 2f 2a 20 64 6f | case 'n|':./* do|
|000019c0| 6e 27 74 20 63 72 65 61 | 74 65 20 61 20 75 6e 69 |n't crea|te a uni|
|000019d0| 71 75 65 6c 79 20 6e 61 | 6d 65 64 20 66 69 6c 65 |quely na|med file|
|000019e0| 20 2a 2f 0a 09 09 09 09 | 09 6e 6f 63 68 65 63 6b | */.....|.nocheck|
|000019f0| 3d 31 3b 0a 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |=1;.....|.break;.|
|00001a00| 09 09 09 09 20 20 20 63 | 61 73 65 20 27 76 27 3a |.... c|ase 'v':|
|00001a10| 09 2f 2a 20 74 61 6c 6b | 20 61 20 6c 6f 74 20 2a |./* talk| a lot *|
|00001a20| 2f 0a 09 09 09 09 09 63 | 68 61 74 74 79 3d 31 3b |/......c|hatty=1;|
|00001a30| 0a 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|00001a40| 09 20 20 20 63 61 73 65 | 20 27 6d 27 3a 20 09 2f |. case| 'm': ./|
|00001a50| 2a 20 6d 6f 76 65 20 66 | 69 6c 65 73 20 2a 2f 0a |* move f|iles */.|
|00001a60| 09 09 09 09 09 6d 6f 76 | 65 3d 31 3b 0a 09 09 09 |.....mov|e=1;....|
|00001a70| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 09 20 20 20 |..break;|..... |
|00001a80| 63 61 73 65 27 53 27 3a | 09 2f 2a 20 73 69 6c 65 |case'S':|./* sile|
|00001a90| 6e 74 20 2a 2f 0a 09 09 | 09 09 09 73 69 6c 65 6e |nt */...|...silen|
|00001aa0| 74 3d 31 3b 0a 09 09 09 | 09 09 62 72 65 61 6b 3b |t=1;....|..break;|
|00001ab0| 0a 09 09 09 09 20 20 20 | 64 65 66 61 75 6c 74 3a |..... |default:|
|00001ac0| 0a 09 09 09 09 09 66 70 | 72 69 6e 74 66 28 73 74 |......fp|rintf(st|
|00001ad0| 64 65 72 72 2c 75 73 61 | 67 65 6d 73 67 2c 70 72 |derr,usa|gemsg,pr|
|00001ae0| 6f 67 6e 61 6d 65 29 3b | 0a 09 09 09 09 09 65 78 |ogname);|......ex|
|00001af0| 69 74 28 31 29 3b 0a 09 | 09 09 09 7d 0a 09 09 65 |it(1);..|...}...e|
|00001b00| 6c 73 65 20 62 72 65 61 | 6b 3b 0a 09 77 68 69 6c |lse brea|k;..whil|
|00001b10| 65 20 28 2a 61 72 67 76 | 29 7b 0a 09 09 73 74 72 |e (*argv|){...str|
|00001b20| 63 70 79 28 72 65 61 6c | 6e 61 6d 65 2c 20 2a 61 |cpy(real|name, *a|
|00001b30| 72 67 76 29 3b 0a 09 09 | 69 66 20 28 70 72 65 66 |rgv);...|if (pref|
|00001b40| 69 78 3d 73 74 72 72 63 | 68 72 28 2a 61 72 67 76 |ix=strrc|hr(*argv|
|00001b50| 2c 27 2f 27 29 29 7b 09 | 09 2f 2a 20 64 69 72 2f |,'/')){.|./* dir/|
|00001b60| 2e 2e 2e 2f 66 69 6c 65 | 20 2a 2f 0a 09 09 09 66 |.../file| */....f|
|00001b70| 69 6c 65 3d 70 72 65 66 | 69 78 2b 31 3b 0a 09 09 |ile=pref|ix+1;...|
|00001b80| 09 2a 70 72 65 66 69 78 | 20 3d 20 27 5c 30 27 3b |.*prefix| = '\0';|
|00001b90| 0a 09 09 09 70 72 65 66 | 69 78 20 3d 20 2a 61 72 |....pref|ix = *ar|
|00001ba0| 67 76 3b 0a 09 09 7d 20 | 65 6c 73 65 20 66 69 6c |gv;...} |else fil|
|00001bb0| 65 20 3d 20 2a 61 72 67 | 76 3b 0a 09 09 61 72 67 |e = *arg|v;...arg|
|00001bc0| 76 2b 2b 3b 0a 09 09 6f | 70 3d 66 69 6c 65 3b 0a |v++;...o|p=file;.|
|00001bd0| 09 09 6d 6f 64 69 66 69 | 65 64 3d 30 3b 0a 09 09 |..modifi|ed=0;...|
|00001be0| 2f 2a 20 73 70 6c 69 74 | 20 69 6e 74 6f 20 6c 6f |/* split| into lo|
|00001bf0| 67 69 63 61 6c 20 70 61 | 72 74 73 20 2a 2f 0a 09 |gical pa|rts */..|
|00001c00| 09 66 6f 72 20 28 69 3d | 30 3b 20 69 3c 4d 41 58 |.for (i=|0; i<MAX|
|00001c10| 53 45 47 53 20 26 26 20 | 28 6f 70 3d 67 65 74 73 |SEGS && |(op=gets|
|00001c20| 65 67 6d 65 6e 74 28 6f | 70 2c 69 29 29 3b 20 69 |egment(o|p,i)); i|
|00001c30| 2b 2b 29 3b 0a 09 09 69 | 66 20 28 69 3d 3d 4d 41 |++);...i|f (i==MA|
|00001c40| 58 53 45 47 53 29 7b 0a | 09 09 09 66 70 72 69 6e |XSEGS){.|...fprin|
|00001c50| 74 66 28 73 74 64 65 72 | 72 2c 22 25 73 3a 20 74 |tf(stder|r,"%s: t|
|00001c60| 6f 6f 20 6d 61 6e 79 20 | 73 65 67 6d 65 6e 74 73 |oo many |segments|
|00001c70| 5c 6e 22 2c 20 66 69 6c | 65 29 3b 0a 09 09 09 63 |\n", fil|e);....c|
|00001c80| 6f 6e 74 69 6e 75 65 3b | 0a 09 09 7d 0a 09 09 6e |ontinue;|...}...n|
|00001c90| 73 65 67 73 20 3d 20 69 | 2d 31 3b 0a 09 09 69 66 |segs = i|-1;...if|
|00001ca0| 20 28 28 6e 73 65 67 73 | 2a 32 29 20 3e 3d 20 6d | ((nsegs|*2) >= m|
|00001cb0| 61 78 29 7b 0a 09 09 09 | 66 70 72 69 6e 74 66 28 |ax){....|fprintf(|
|00001cc0| 73 74 64 65 72 72 2c 22 | 25 73 3a 20 74 6f 6f 20 |stderr,"|%s: too |
|00001cd0| 6d 61 6e 79 20 73 65 67 | 6d 65 6e 74 73 5c 6e 22 |many seg|ments\n"|
|00001ce0| 2c 20 66 69 6c 65 29 3b | 0a 09 09 09 63 6f 6e 74 |, file);|....cont|
|00001cf0| 69 6e 75 65 3b 0a 09 09 | 7d 0a 09 09 73 75 66 6c |inue;...|}...sufl|
|00001d00| 65 6e 20 3d 20 73 74 72 | 6c 65 6e 28 73 65 67 5b |en = str|len(seg[|
|00001d10| 6e 73 65 67 73 5d 2e 73 | 65 67 5f 73 74 72 69 6e |nsegs].s|eg_strin|
|00001d20| 67 29 3b 0a 09 09 69 66 | 20 28 73 75 66 6c 65 6e |g);...if| (suflen|
|00001d30| 3e 6d 61 78 2d 6e 73 65 | 67 73 2d 31 29 7b 0a 09 |>max-nse|gs-1){..|
|00001d40| 09 09 69 66 20 28 63 68 | 61 74 74 79 29 0a 09 09 |..if (ch|atty)...|
|00001d50| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00001d60| 2c 22 77 61 72 6e 69 6e | 67 3a 20 25 73 3a 20 73 |,"warnin|g: %s: s|
|00001d70| 75 66 66 69 78 20 74 72 | 75 6e 63 61 74 65 64 5c |uffix tr|uncated\|
|00001d80| 6e 22 2c 20 66 69 6c 65 | 29 3b 0a 09 09 09 73 75 |n", file|);....su|
|00001d90| 66 6c 65 6e 20 3d 20 6d | 61 78 2d 28 32 2a 6e 73 |flen = m|ax-(2*ns|
|00001da0| 65 67 73 29 2d 31 3b 0a | 09 09 09 73 65 67 5b 6e |egs)-1;.|...seg[n|
|00001db0| 73 65 67 73 5d 2e 73 65 | 67 5f 73 74 72 69 6e 67 |segs].se|g_string|
|00001dc0| 5b 73 75 66 6c 65 6e 2d | 31 5d 20 3d 20 27 5c 30 |[suflen-|1] = '\0|
|00001dd0| 27 3b 0a 09 09 09 6d 6f | 64 69 66 69 65 64 3d 31 |';....mo|dified=1|
|00001de0| 3b 0a 09 09 7d 20 65 6c | 73 65 20 69 66 20 28 73 |;...} el|se if (s|
|00001df0| 75 66 6c 65 6e 2b 6e 73 | 65 67 73 20 3e 20 6d 61 |uflen+ns|egs > ma|
|00001e00| 78 2d 6e 73 65 67 73 2d | 31 29 7b 0a 09 09 09 7a |x-nsegs-|1){....z|
|00001e10| 61 70 20 3d 20 6e 73 65 | 67 73 20 2d 20 28 6d 61 |ap = nse|gs - (ma|
|00001e20| 78 2d 73 75 66 6c 65 6e | 29 2f 32 3b 0a 09 09 09 |x-suflen|)/2;....|
|00001e30| 69 66 20 28 63 68 61 74 | 74 79 20 26 26 20 7a 61 |if (chat|ty && za|
|00001e40| 70 29 0a 09 09 09 09 66 | 70 72 69 6e 74 66 28 73 |p).....f|printf(s|
|00001e50| 74 64 65 72 72 2c 22 77 | 61 72 6e 69 6e 67 3a 20 |tderr,"w|arning: |
|00001e60| 25 73 3a 20 25 64 20 73 | 65 67 6d 65 6e 74 73 20 |%s: %d s|egments |
|00001e70| 72 65 6d 6f 76 65 64 5c | 6e 22 2c 20 66 69 6c 65 |removed\|n", file|
|00001e80| 2c 20 7a 61 70 29 3b 0a | 09 09 7d 0a 09 09 69 66 |, zap);.|..}...if|
|00001e90| 20 28 6e 73 65 67 73 3e | 3d 31 29 7b 09 09 2f 2a | (nsegs>|=1){../*|
|00001ea0| 20 63 6f 6d 70 6c 69 63 | 61 74 65 64 20 66 69 6c | complic|ated fil|
|00001eb0| 65 6e 61 6d 65 20 2a 2f | 0a 09 09 09 66 6f 72 20 |ename */|....for |
|00001ec0| 28 69 3d 7a 61 70 2b 31 | 3b 20 69 3c 3d 6e 73 65 |(i=zap+1|; i<=nse|
|00001ed0| 67 73 3b 20 69 2b 2b 29 | 0a 09 09 09 09 69 66 20 |gs; i++)|.....if |
|00001ee0| 28 73 65 67 5b 69 5d 2e | 73 65 67 5f 73 65 70 29 |(seg[i].|seg_sep)|
|00001ef0| 20 73 75 66 6c 65 6e 2b | 2b 3b 0a 09 09 09 69 66 | suflen+|+;....if|
|00001f00| 20 28 73 65 67 5b 30 5d | 2e 73 65 67 5f 73 65 70 | (seg[0]|.seg_sep|
|00001f10| 29 20 73 75 66 6c 65 6e | 2b 2b 3b 0a 09 09 09 72 |) suflen|++;....r|
|00001f20| 65 6d 61 69 6e 64 65 72 | 20 3d 20 6d 61 78 20 2d |emainder| = max -|
|00001f30| 20 73 75 66 6c 65 6e 3b | 0a 09 09 09 64 65 6c 65 | suflen;|....dele|
|00001f40| 74 65 20 3d 20 72 65 6d | 61 69 6e 64 65 72 2f 6e |te = rem|ainder/n|
|00001f50| 73 65 67 73 3b 0a 09 09 | 09 74 6f 74 61 6c 20 3d |segs;...|.total =|
|00001f60| 20 73 75 66 6c 65 6e 3b | 0a 09 09 09 66 6f 72 20 | suflen;|....for |
|00001f70| 28 69 3d 7a 61 70 2b 31 | 3b 20 69 3c 6e 73 65 67 |(i=zap+1|; i<nseg|
|00001f80| 73 3b 20 69 2b 2b 29 7b | 0a 09 09 09 09 69 66 20 |s; i++){|.....if |
|00001f90| 28 73 74 72 6c 65 6e 28 | 73 65 67 5b 69 5d 2e 73 |(strlen(|seg[i].s|
|00001fa0| 65 67 5f 73 74 72 69 6e | 67 29 20 3e 20 64 65 6c |eg_strin|g) > del|
|00001fb0| 65 74 65 29 0a 09 09 09 | 09 09 6d 6f 64 69 66 69 |ete)....|..modifi|
|00001fc0| 65 64 3d 31 3b 0a 09 09 | 09 09 73 65 67 5b 69 5d |ed=1;...|..seg[i]|
|00001fd0| 2e 73 65 67 5f 73 74 72 | 69 6e 67 5b 64 65 6c 65 |.seg_str|ing[dele|
|00001fe0| 74 65 5d 20 3d 20 27 5c | 30 27 3b 0a 09 09 09 09 |te] = '\|0';.....|
|00001ff0| 74 6f 74 61 6c 20 2b 3d | 20 64 65 6c 65 74 65 3b |total +=| delete;|
|00002000| 0a 09 09 09 7d 0a 09 09 | 09 69 66 20 28 73 74 72 |....}...|.if (str|
|00002010| 6c 65 6e 28 73 65 67 5b | 30 5d 2e 73 65 67 5f 73 |len(seg[|0].seg_s|
|00002020| 74 72 69 6e 67 29 20 3e | 20 6d 61 78 2d 74 6f 74 |tring) >| max-tot|
|00002030| 61 6c 29 0a 09 09 09 09 | 6d 6f 64 69 66 69 65 64 |al).....|modified|
|00002040| 3d 31 3b 0a 09 09 09 73 | 65 67 5b 30 5d 2e 73 65 |=1;....s|eg[0].se|
|00002050| 67 5f 73 74 72 69 6e 67 | 5b 6d 61 78 2d 74 6f 74 |g_string|[max-tot|
|00002060| 61 6c 5d 20 3d 20 27 5c | 30 27 3b 0a 09 09 7d 0a |al] = '\|0';...}.|
|00002070| 09 09 75 6e 69 71 75 65 | 28 7a 61 70 2c 6e 73 65 |..unique|(zap,nse|
|00002080| 67 73 2c 6d 6f 64 69 66 | 69 65 64 29 3b 0a 09 7d |gs,modif|ied);..}|
|00002090| 0a 7d 0a 0a 2f 2a 0a 20 | 2a 09 67 65 74 20 61 20 |.}../*. |*.get a |
|000020a0| 73 65 67 6d 65 6e 74 20 | 66 72 6f 6d 20 61 20 66 |segment |from a f|
|000020b0| 69 6c 65 6e 61 6d 65 2e | 0a 20 2a 09 72 65 74 75 |ilename.|. *.retu|
|000020c0| 72 6e 73 20 70 6f 69 6e | 74 65 72 20 74 6f 20 72 |rns poin|ter to r|
|000020d0| 65 6d 61 69 6e 64 65 72 | 20 6f 66 20 66 69 6c 65 |emainder| of file|
|000020e0| 6e 61 6d 65 2c 20 6f 72 | 20 30 20 61 74 20 65 6e |name, or| 0 at en|
|000020f0| 64 20 6f 66 20 66 69 6c | 65 6e 61 6d 65 0a 20 2a |d of fil|ename. *|
|00002100| 2f 0a 63 68 61 72 20 2a | 0a 67 65 74 73 65 67 6d |/.char *|.getsegm|
|00002110| 65 6e 74 28 63 70 2c 69 | 29 0a 63 68 61 72 20 2a |ent(cp,i|).char *|
|00002120| 63 70 3b 0a 7b 0a 09 72 | 65 67 69 73 74 65 72 20 |cp;.{..r|egister |
|00002130| 63 68 61 72 20 2a 78 70 | 20 3d 20 73 65 67 5b 69 |char *xp| = seg[i|
|00002140| 5d 2e 73 65 67 5f 73 74 | 72 69 6e 67 3b 0a 09 77 |].seg_st|ring;..w|
|00002150| 68 69 6c 65 20 28 2a 63 | 70 20 26 26 20 73 74 72 |hile (*c|p && str|
|00002160| 63 68 72 28 73 65 70 61 | 72 61 74 6f 72 73 2c 2a |chr(sepa|rators,*|
|00002170| 63 70 29 3d 3d 30 29 0a | 09 09 2a 78 70 2b 2b 20 |cp)==0).|..*xp++ |
|00002180| 3d 20 2a 63 70 2b 2b 3b | 0a 09 2a 78 70 20 3d 20 |= *cp++;|..*xp = |
|00002190| 27 5c 30 27 3b 0a 09 73 | 65 67 5b 69 5d 2e 73 65 |'\0';..s|eg[i].se|
|000021a0| 67 5f 73 65 70 20 3d 20 | 2a 63 70 3b 0a 09 69 66 |g_sep = |*cp;..if|
|000021b0| 20 28 2a 63 70 29 20 63 | 70 2b 2b 3b 0a 09 69 66 | (*cp) c|p++;..if|
|000021c0| 20 28 73 65 67 5b 69 5d | 2e 73 65 67 5f 73 74 72 | (seg[i]|.seg_str|
|000021d0| 69 6e 67 5b 30 5d 20 7c | 7c 20 73 65 67 5b 69 5d |ing[0] ||| seg[i]|
|000021e0| 2e 73 65 67 5f 73 65 70 | 29 20 72 65 74 75 72 6e |.seg_sep|) return|
|000021f0| 28 63 70 29 3b 0a 09 65 | 6c 73 65 20 72 65 74 75 |(cp);..e|lse retu|
|00002200| 72 6e 28 28 63 68 61 72 | 20 2a 29 30 29 3b 0a 7d |rn((char| *)0);.}|
|00002210| 0a 0a 09 0a 2f 2a 0a 20 | 2a 09 70 72 69 6e 74 20 |..../*. |*.print |
|00002220| 6f 75 74 20 74 68 65 20 | 63 75 72 72 65 6e 74 20 |out the |current |
|00002230| 66 69 6c 65 6e 61 6d 65 | 20 69 6e 20 61 20 75 6e |filename| in a un|
|00002240| 69 71 75 65 20 66 6f 72 | 6d 0a 20 2a 2f 0a 75 6e |ique for|m. */.un|
|00002250| 69 71 75 65 28 7a 61 70 | 2c 6e 2c 6d 6f 64 29 0a |ique(zap|,n,mod).|
|00002260| 7b 0a 09 72 65 67 69 73 | 74 65 72 20 69 6e 74 20 |{..regis|ter int |
|00002270| 69 2c 20 6a 3b 0a 09 69 | 6e 74 20 6a 6d 61 78 5b |i, j;..i|nt jmax[|
|00002280| 4d 41 58 53 45 47 53 5d | 3b 0a 09 69 6e 74 20 78 |MAXSEGS]|;..int x|
|00002290| 73 74 61 72 74 2c 20 78 | 73 74 6f 70 3b 0a 0a 09 |start, x|stop;...|
|000022a0| 69 66 20 28 6f 6b 28 7a | 61 70 2c 7a 61 70 7c 7c |if (ok(z|ap,zap|||
|000022b0| 6d 6f 64 29 29 20 72 65 | 74 75 72 6e 3b 0a 09 78 |mod)) re|turn;..x|
|000022c0| 73 74 61 72 74 20 3d 20 | 28 6e 3d 3d 30 29 3f 20 |start = |(n==0)? |
|000022d0| 30 20 3a 20 31 3b 0a 09 | 78 73 74 6f 70 20 3d 20 |0 : 1;..|xstop = |
|000022e0| 28 6e 3d 3d 30 29 3f 20 | 31 20 3a 20 6e 3b 0a 20 |(n==0)? |1 : n;. |
|000022f0| 20 20 20 6d 6f 72 65 3a | 0a 09 69 66 20 28 78 73 | more:|..if (xs|
|00002300| 74 6f 70 20 3c 3d 20 78 | 73 74 61 72 74 29 7b 0a |top <= x|start){.|
|00002310| 09 09 78 73 74 61 72 74 | 3d 30 3b 0a 09 09 78 73 |..xstart|=0;...xs|
|00002320| 74 6f 70 20 3d 20 6e 2b | 31 3b 0a 09 7d 0a 09 66 |top = n+|1;..}..f|
|00002330| 6f 72 20 28 69 3d 78 73 | 74 61 72 74 3b 20 69 3c |or (i=xs|tart; i<|
|00002340| 78 73 74 6f 70 3b 20 69 | 2b 2b 29 0a 09 09 6a 6d |xstop; i|++)...jm|
|00002350| 61 78 5b 69 5d 20 3d 20 | 73 74 72 6c 65 6e 28 73 |ax[i] = |strlen(s|
|00002360| 65 67 5b 69 5d 2e 73 65 | 67 5f 73 74 72 69 6e 67 |eg[i].se|g_string|
|00002370| 29 3b 0a 09 66 6f 72 20 | 28 6a 3d 30 3b 20 6a 3c |);..for |(j=0; j<|
|00002380| 35 3b 20 6a 2b 2b 29 7b | 0a 09 09 66 6f 72 20 28 |5; j++){|...for (|
|00002390| 69 3d 78 73 74 61 72 74 | 3b 20 69 3c 78 73 74 6f |i=xstart|; i<xsto|
|000023a0| 70 3b 20 69 2b 2b 29 7b | 0a 09 09 09 69 66 20 28 |p; i++){|....if (|
|000023b0| 6a 20 3e 3d 20 6a 6d 61 | 78 5b 69 5d 29 20 63 6f |j >= jma|x[i]) co|
|000023c0| 6e 74 69 6e 75 65 3b 0a | 09 09 09 69 6e 63 72 65 |ntinue;.|...incre|
|000023d0| 6d 65 6e 74 28 73 65 67 | 5b 69 5d 2e 73 65 67 5f |ment(seg|[i].seg_|
|000023e0| 73 74 72 69 6e 67 2c 6a | 29 3b 0a 09 09 09 69 66 |string,j|);....if|
|000023f0| 20 28 6f 6b 28 7a 61 70 | 2c 31 29 29 20 72 65 74 | (ok(zap|,1)) ret|
|00002400| 75 72 6e 3b 0a 09 09 7d | 0a 09 7d 0a 09 69 66 20 |urn;...}|..}..if |
|00002410| 28 78 73 74 61 72 74 3e | 30 20 7c 7c 20 78 73 74 |(xstart>|0 || xst|
|00002420| 6f 70 3c 6e 2b 31 29 7b | 09 2f 2a 20 44 65 73 70 |op<n+1){|./* Desp|
|00002430| 61 72 61 74 69 6f 6e 20 | 74 69 6d 65 3a 20 74 72 |aration |time: tr|
|00002440| 79 20 5f 61 6e 79 5f 20 | 73 65 67 6d 65 6e 74 21 |y _any_ |segment!|
|00002450| 20 2a 2f 0a 09 09 78 73 | 74 6f 70 20 3d 20 2d 31 | */...xs|top = -1|
|00002460| 3b 0a 09 09 67 6f 74 6f | 20 6d 6f 72 65 3b 0a 09 |;...goto| more;..|
|00002470| 7d 0a 09 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |}..fprin|tf(stder|
|00002480| 72 2c 22 43 61 6e 27 74 | 20 67 65 6e 65 72 61 74 |r,"Can't| generat|
|00002490| 65 20 75 6e 69 71 75 65 | 20 6e 61 6d 65 20 66 6f |e unique| name fo|
|000024a0| 72 20 25 73 5c 6e 22 2c | 20 66 69 6c 65 29 3b 0a |r %s\n",| file);.|
|000024b0| 7d 0a 0a 2f 2a 0a 20 2a | 09 6d 6f 64 69 66 79 20 |}../*. *|.modify |
|000024c0| 61 20 63 68 61 72 61 63 | 74 65 72 20 69 6e 20 61 |a charac|ter in a|
|000024d0| 20 73 74 72 69 6e 67 20 | 28 73 74 75 70 69 64 20 | string |(stupid |
|000024e0| 61 6c 67 6f 72 69 74 68 | 6d 29 0a 20 2a 2f 0a 69 |algorith|m). */.i|
|000024f0| 6e 63 72 65 6d 65 6e 74 | 28 73 74 72 2c 69 6e 64 |ncrement|(str,ind|
|00002500| 29 0a 63 68 61 72 20 2a | 73 74 72 3b 0a 7b 0a 09 |).char *|str;.{..|
|00002510| 63 68 61 72 20 63 68 20 | 3d 20 73 74 72 5b 69 6e |char ch |= str[in|
|00002520| 64 5d 3b 0a 0a 09 69 66 | 20 28 63 68 3e 3d 27 61 |d];...if| (ch>='a|
|00002530| 27 20 26 26 20 63 68 3c | 3d 27 7a 27 29 20 63 68 |' && ch<|='z') ch|
|00002540| 20 2b 3d 20 28 27 41 27 | 2d 27 61 27 29 3b 0a 09 | += ('A'|-'a');..|
|00002550| 65 6c 73 65 20 69 66 20 | 28 63 68 3e 3d 27 41 27 |else if |(ch>='A'|
|00002560| 20 26 26 20 63 68 3c 3d | 27 5a 27 29 20 63 68 20 | && ch<=|'Z') ch |
|00002570| 2b 3d 20 28 27 61 27 2d | 27 41 27 29 3b 0a 09 73 |+= ('a'-|'A');..s|
|00002580| 74 72 5b 69 6e 64 5d 20 | 3d 20 63 68 3b 0a 7d 0a |tr[ind] |= ch;.}.|
|00002590| 0a 0a 2f 2a 0a 20 2a 09 | 73 65 65 20 69 66 20 61 |../*. *.|see if a|
|000025a0| 20 66 69 6c 65 6e 61 6d | 65 20 69 73 20 72 65 61 | filenam|e is rea|
|000025b0| 73 6f 6e 61 62 6c 65 2c | 20 61 6e 64 20 69 66 20 |sonable,| and if |
|000025c0| 73 6f 20 70 72 69 6e 74 | 20 69 74 20 6f 75 74 0a |so print| it out.|
|000025d0| 20 2a 09 61 6e 64 20 72 | 65 74 75 72 6e 20 31 2e | *.and r|eturn 1.|
|000025e0| 0a 20 2a 09 6f 74 68 65 | 72 77 69 73 65 20 72 65 |. *.othe|rwise re|
|000025f0| 74 75 72 6e 20 30 2e 0a | 20 2a 2f 0a 6f 6b 28 7a |turn 0..| */.ok(z|
|00002600| 61 70 2c 63 68 61 6e 67 | 65 64 29 0a 7b 0a 09 63 |ap,chang|ed).{..c|
|00002610| 68 61 72 20 62 75 66 66 | 65 72 5b 35 31 32 5d 3b |har buff|er[512];|
|00002620| 0a 09 72 65 67 69 73 74 | 65 72 20 63 68 61 72 20 |..regist|er char |
|00002630| 2a 63 70 20 3d 20 62 75 | 66 66 65 72 3b 0a 09 72 |*cp = bu|ffer;..r|
|00002640| 65 67 69 73 74 65 72 20 | 63 68 61 72 20 2a 78 70 |egister |char *xp|
|00002650| 3b 0a 09 72 65 67 69 73 | 74 65 72 20 69 6e 74 20 |;..regis|ter int |
|00002660| 69 3b 0a 0a 09 69 66 20 | 28 70 72 65 66 69 78 29 |i;...if |(prefix)|
|00002670| 7b 0a 09 09 66 6f 72 20 | 28 78 70 3d 70 72 65 66 |{...for |(xp=pref|
|00002680| 69 78 3b 20 2a 78 70 3b | 20 29 0a 09 09 09 2a 63 |ix; *xp;| )....*c|
|00002690| 70 2b 2b 20 3d 20 2a 78 | 70 2b 2b 3b 0a 09 09 2a |p++ = *x|p++;...*|
|000026a0| 63 70 2b 2b 20 3d 20 27 | 2f 27 3b 0a 09 7d 0a 09 |cp++ = '|/';..}..|
|000026b0| 66 6f 72 20 28 78 70 3d | 73 65 67 5b 30 5d 2e 73 |for (xp=|seg[0].s|
|000026c0| 65 67 5f 73 74 72 69 6e | 67 3b 20 2a 78 70 3b 20 |eg_strin|g; *xp; |
|000026d0| 29 09 2f 2a 20 63 6f 70 | 79 20 69 6e 69 74 69 61 |)./* cop|y initia|
|000026e0| 6c 20 73 65 67 6d 65 6e | 74 20 2a 2f 0a 09 09 2a |l segmen|t */...*|
|000026f0| 63 70 2b 2b 20 3d 20 2a | 78 70 2b 2b 3b 0a 09 69 |cp++ = *|xp++;..i|
|00002700| 66 20 28 73 65 67 5b 30 | 5d 2e 73 65 67 5f 73 65 |f (seg[0|].seg_se|
|00002710| 70 29 7b 0a 09 09 2a 63 | 70 2b 2b 20 3d 20 73 65 |p){...*c|p++ = se|
|00002720| 67 5b 30 5d 2e 73 65 67 | 5f 73 65 70 3b 0a 09 09 |g[0].seg|_sep;...|
|00002730| 66 6f 72 20 28 69 3d 7a | 61 70 2b 31 3b 20 3b 20 |for (i=z|ap+1; ; |
|00002740| 69 2b 2b 29 7b 09 09 2f | 2a 20 63 6f 70 79 20 72 |i++){../|* copy r|
|00002750| 65 73 74 20 6f 66 20 73 | 65 67 6d 65 6e 74 73 20 |est of s|egments |
|00002760| 2a 2f 0a 09 09 09 66 6f | 72 20 28 78 70 3d 73 65 |*/....fo|r (xp=se|
|00002770| 67 5b 69 5d 2e 73 65 67 | 5f 73 74 72 69 6e 67 3b |g[i].seg|_string;|
|00002780| 20 2a 78 70 3b 20 29 0a | 09 09 09 09 2a 63 70 2b | *xp; ).|....*cp+|
|00002790| 2b 20 3d 20 2a 78 70 2b | 2b 3b 0a 09 09 09 69 66 |+ = *xp+|+;....if|
|000027a0| 20 28 73 65 67 5b 69 5d | 2e 73 65 67 5f 73 65 70 | (seg[i]|.seg_sep|
|000027b0| 29 20 2a 63 70 2b 2b 20 | 3d 20 73 65 67 5b 69 5d |) *cp++ |= seg[i]|
|000027c0| 2e 73 65 67 5f 73 65 70 | 3b 0a 09 09 09 65 6c 73 |.seg_sep|;....els|
|000027d0| 65 20 69 66 20 28 73 65 | 67 5b 69 5d 2e 73 65 67 |e if (se|g[i].seg|
|000027e0| 5f 73 74 72 69 6e 67 5b | 30 5d 20 3d 3d 20 27 5c |_string[|0] == '\|
|000027f0| 30 27 29 20 62 72 65 61 | 6b 3b 0a 09 09 7d 0a 09 |0') brea|k;...}..|
|00002800| 7d 0a 09 2a 63 70 20 3d | 20 27 5c 30 27 3b 0a 09 |}..*cp =| '\0';..|
|00002810| 69 66 20 28 63 68 61 6e | 67 65 64 20 26 26 20 6e |if (chan|ged && n|
|00002820| 6f 63 68 65 63 6b 3d 3d | 30 20 26 26 20 61 63 63 |ocheck==|0 && acc|
|00002830| 65 73 73 28 62 75 66 66 | 65 72 2c 30 29 3d 3d 30 |ess(buff|er,0)==0|
|00002840| 29 7b 0a 09 09 69 66 20 | 28 63 68 61 74 74 79 29 |){...if |(chatty)|
|00002850| 0a 09 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |....fpri|ntf(stde|
|00002860| 72 72 2c 22 77 61 72 6e | 69 6e 67 3a 20 25 73 20 |rr,"warn|ing: %s |
|00002870| 61 6c 72 65 61 64 79 20 | 65 78 69 73 74 73 20 2d |already |exists -|
|00002880| 20 74 72 79 69 6e 67 20 | 61 67 61 69 6e 5c 6e 22 | trying |again\n"|
|00002890| 2c 62 75 66 66 65 72 29 | 3b 0a 09 09 72 65 74 75 |,buffer)|;...retu|
|000028a0| 72 6e 28 30 29 3b 0a 09 | 7d 20 65 6c 73 65 20 7b |rn(0);..|} else {|
|000028b0| 0a 09 09 69 66 20 28 73 | 69 6c 65 6e 74 3d 3d 30 |...if (s|ilent==0|
|000028c0| 29 20 70 72 69 6e 74 66 | 28 22 25 73 5c 6e 22 2c |) printf|("%s\n",|
|000028d0| 20 62 75 66 66 65 72 29 | 3b 0a 09 09 69 66 20 28 | buffer)|;...if (|
|000028e0| 6d 6f 76 65 20 26 26 20 | 73 74 72 63 6d 70 28 72 |move && |strcmp(r|
|000028f0| 65 61 6c 6e 61 6d 65 2c | 62 75 66 66 65 72 29 29 |ealname,|buffer))|
|00002900| 7b 0a 09 09 09 69 66 20 | 28 6c 69 6e 6b 28 72 65 |{....if |(link(re|
|00002910| 61 6c 6e 61 6d 65 2c 62 | 75 66 66 65 72 29 3d 3d |alname,b|uffer)==|
|00002920| 2d 31 20 7c 7c 20 75 6e | 6c 69 6e 6b 28 72 65 61 |-1 || un|link(rea|
|00002930| 6c 6e 61 6d 65 29 3d 3d | 2d 31 29 0a 09 09 09 09 |lname)==|-1).....|
|00002940| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 22 |fprintf(|stderr,"|
|00002950| 25 73 3a 20 6c 69 6e 6b | 2f 75 6e 6c 69 6e 6b 20 |%s: link|/unlink |
|00002960| 66 61 69 6c 75 72 65 5c | 6e 22 2c 20 72 65 61 6c |failure\|n", real|
|00002970| 6e 61 6d 65 29 3b 0a 09 | 09 7d 0a 09 09 72 65 74 |name);..|.}...ret|
|00002980| 75 72 6e 28 31 29 3b 0a | 09 7d 0a 7d 0a 0a 0a 53 |urn(1);.|.}.}...S|
|00002990| 48 41 52 5f 45 4f 46 0a | 66 69 0a 69 66 20 74 65 |HAR_EOF.|fi.if te|
|000029a0| 73 74 20 2d 66 20 27 4d | 61 6b 65 66 69 6c 65 27 |st -f 'M|akefile'|
|000029b0| 0a 74 68 65 6e 0a 09 65 | 63 68 6f 20 73 68 61 72 |.then..e|cho shar|
|000029c0| 3a 20 22 77 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |: "will |not over|
|000029d0| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|000029e0| 66 69 6c 65 20 27 4d 61 | 6b 65 66 69 6c 65 27 22 |file 'Ma|kefile'"|
|000029f0| 0a 65 6c 73 65 0a 63 61 | 74 20 3c 3c 20 5c 53 48 |.else.ca|t << \SH|
|00002a00| 41 52 5f 45 4f 46 20 3e | 20 27 4d 61 6b 65 66 69 |AR_EOF >| 'Makefi|
|00002a10| 6c 65 27 0a 43 46 4c 41 | 47 53 3d 2d 4f 0a 73 68 |le'.CFLA|GS=-O.sh|
|00002a20| 72 69 6e 6b 3a 20 73 68 | 72 69 6e 6b 2e 63 0a 09 |rink: sh|rink.c..|
|00002a30| 24 28 43 43 29 20 24 28 | 43 46 4c 41 47 53 29 20 |$(CC) $(|CFLAGS) |
|00002a40| 2d 6f 20 73 68 72 69 6e | 6b 20 73 68 72 69 6e 6b |-o shrin|k shrink|
|00002a50| 2e 63 0a 69 6e 73 74 61 | 6c 6c 3a 20 73 68 72 69 |.c.insta|ll: shri|
|00002a60| 6e 6b 0a 09 40 65 63 68 | 6f 20 63 6f 70 79 20 73 |nk..@ech|o copy s|
|00002a70| 68 72 69 6e 6b 2e 31 20 | 61 6e 64 20 73 68 72 69 |hrink.1 |and shri|
|00002a80| 6e 6b 20 74 6f 20 61 70 | 70 72 6f 70 72 69 61 74 |nk to ap|propriat|
|00002a90| 65 20 64 69 72 65 63 74 | 6f 72 69 65 73 0a 53 48 |e direct|ories.SH|
|00002aa0| 41 52 5f 45 4f 46 0a 66 | 69 0a 65 78 69 74 20 30 |AR_EOF.f|i.exit 0|
|00002ab0| 0a 23 09 45 6e 64 20 6f | 66 20 73 68 65 6c 6c 20 |.#.End o|f shell |
|00002ac0| 61 72 63 68 69 76 65 0a | 2d 2d 0a |archive.|--. |
+--------+-------------------------+-------------------------+--------+--------+