home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / mac / source / sit_shar < prev    next >
SHell self-extracting ARchive  |  1991-05-20  |  21.4 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


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

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file POSIX shell script text executable default
99% file C source text default
98% file a /bin/sh script, ASCII text executable default (weak)
100% TrID shar SHell self-extracting aRchive default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% gt2 Shell Skript: '/bin/sh' default (weak)
100% detectItEasy Format: plain text[LF] default (weak)
100% binwalkID Executable script, shebang: "/bin/sh" default (weak)
100% xdgMime application/x-shellscript default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 23 21 20 2f 62 69 6e 2f | 73 68 0a 23 20 54 68 69 |#! /bin/|sh.# Thi|
|00000010| 73 20 69 73 20 61 20 73 | 68 65 6c 6c 20 61 72 63 |s is a s|hell arc|
|00000020| 68 69 76 65 2c 20 6d 65 | 61 6e 69 6e 67 3a 0a 23 |hive, me|aning:.#|
|00000030| 20 31 2e 20 52 65 6d 6f | 76 65 20 65 76 65 72 79 | 1. Remo|ve every|
|00000040| 74 68 69 6e 67 20 61 62 | 6f 76 65 20 74 68 65 20 |thing ab|ove the |
|00000050| 23 21 20 2f 62 69 6e 2f | 73 68 20 6c 69 6e 65 2e |#! /bin/|sh line.|
|00000060| 0a 23 20 32 2e 20 53 61 | 76 65 20 74 68 65 20 72 |.# 2. Sa|ve the r|
|00000070| 65 73 75 6c 74 69 6e 67 | 20 74 65 78 74 20 69 6e |esulting| text in|
|00000080| 20 61 20 66 69 6c 65 2e | 0a 23 20 33 2e 20 45 78 | a file.|.# 3. Ex|
|00000090| 65 63 75 74 65 20 74 68 | 65 20 66 69 6c 65 20 77 |ecute th|e file w|
|000000a0| 69 74 68 20 2f 62 69 6e | 2f 73 68 20 28 6e 6f 74 |ith /bin|/sh (not|
|000000b0| 20 63 73 68 29 20 74 6f | 20 63 72 65 61 74 65 20 | csh) to| create |
|000000c0| 74 68 65 20 66 69 6c 65 | 73 3a 0a 23 09 52 45 41 |the file|s:.#.REA|
|000000d0| 44 4d 45 0a 23 09 4d 61 | 6b 65 66 69 6c 65 0a 23 |DME.#.Ma|kefile.#|
|000000e0| 09 73 69 74 2e 68 0a 23 | 09 73 69 74 2e 63 0a 23 |.sit.h.#|.sit.c.#|
|000000f0| 09 75 70 64 63 72 63 2e | 63 0a 23 09 6d 61 63 62 |.updcrc.|c.#.macb|
|00000100| 69 6e 66 69 6c 74 2e 63 | 0a 23 20 54 68 69 73 20 |infilt.c|.# This |
|00000110| 61 72 63 68 69 76 65 20 | 63 72 65 61 74 65 64 3a |archive |created:|
|00000120| 20 54 75 65 20 44 65 63 | 20 20 36 20 30 37 3a 34 | Tue Dec| 6 07:4|
|00000130| 35 3a 30 36 20 31 39 38 | 38 0a 23 20 42 79 3a 09 |5:06 198|8.# By:.|
|00000140| 52 6f 67 65 72 20 4c 2e | 20 4c 6f 6e 67 20 28 62 |Roger L.| Long (b|
|00000150| 79 74 65 62 75 67 40 64 | 68 77 36 38 6b 2e 63 74 |ytebug@d|hw68k.ct|
|00000160| 73 2e 63 6f 6d 29 0a 23 | 0a 65 78 70 6f 72 74 20 |s.com).#|.export |
|00000170| 50 41 54 48 3b 20 50 41 | 54 48 3d 2f 62 69 6e 3a |PATH; PA|TH=/bin:|
|00000180| 24 50 41 54 48 0a 65 63 | 68 6f 20 73 68 61 72 3a |$PATH.ec|ho shar:|
|00000190| 20 65 78 74 72 61 63 74 | 69 6e 67 20 22 27 52 45 | extract|ing "'RE|
|000001a0| 41 44 4d 45 27 22 20 27 | 28 31 32 30 39 20 63 68 |ADME'" '|(1209 ch|
|000001b0| 61 72 61 63 74 65 72 73 | 29 27 0a 69 66 20 74 65 |aracters|)'.if te|
|000001c0| 73 74 20 2d 66 20 27 52 | 45 41 44 4d 45 27 0a 74 |st -f 'R|EADME'.t|
|000001d0| 68 65 6e 0a 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|000001e0| 77 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |will not| over-wr|
|000001f0| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00000200| 65 20 22 27 52 45 41 44 | 4d 45 27 22 0a 65 6c 73 |e "'READ|ME'".els|
|00000210| 65 0a 73 65 64 20 27 73 | 2f 5e 58 2f 2f 27 20 3c |e.sed 's|/^X//' <|
|00000220| 3c 20 5c 53 48 41 52 5f | 45 4f 46 20 3e 20 27 52 |< \SHAR_|EOF > 'R|
|00000230| 45 41 44 4d 45 27 0a 58 | 54 68 69 73 20 73 68 61 |EADME'.X|This sha|
|00000240| 72 20 66 69 6c 65 20 63 | 6f 6e 74 61 69 6e 73 20 |r file c|ontains |
|00000250| 74 68 65 20 73 6f 75 72 | 63 65 20 74 6f 20 22 73 |the sour|ce to "s|
|00000260| 69 74 22 20 61 20 55 4e | 49 58 20 75 74 69 6c 69 |it" a UN|IX utili|
|00000270| 74 79 20 77 68 69 63 68 | 20 70 72 6f 64 75 63 65 |ty which| produce|
|00000280| 73 0a 58 53 74 75 66 66 | 69 74 20 61 72 63 68 69 |s.XStuff|it archi|
|00000290| 76 65 73 20 66 6f 72 20 | 64 6f 77 6e 6c 6f 61 64 |ves for |download|
|000002a0| 69 6e 67 20 74 6f 20 74 | 68 65 20 6d 61 63 2e 20 |ing to t|he mac. |
|000002b0| 20 41 73 20 61 20 62 6f | 6e 75 73 20 49 27 76 65 | As a bo|nus I've|
|000002c0| 20 61 6c 73 6f 20 69 6e | 63 6c 75 64 65 64 0a 58 | also in|cluded.X|
|000002d0| 22 6d 61 63 62 69 6e 66 | 69 6c 74 22 2c 20 61 20 |"macbinf|ilt", a |
|000002e0| 66 69 6c 74 65 72 20 77 | 68 69 63 68 20 74 61 6b |filter w|hich tak|
|000002f0| 65 73 20 61 72 74 69 63 | 6c 65 73 20 66 72 6f 6d |es artic|les from|
|00000300| 20 63 6f 6d 70 2e 62 69 | 6e 61 72 69 65 73 2e 6d | comp.bi|naries.m|
|00000310| 61 63 2c 20 70 75 74 73 | 20 74 68 65 0a 58 70 61 |ac, puts| the.Xpa|
|00000320| 72 74 73 20 69 6e 20 74 | 68 65 20 63 6f 72 72 65 |rts in t|he corre|
|00000330| 63 74 20 6f 72 64 65 72 | 2c 20 61 6e 64 20 74 68 |ct order|, and th|
|00000340| 72 6f 77 73 20 6f 75 74 | 20 61 6c 6c 20 74 68 65 |rows out| all the|
|00000350| 20 22 6e 6f 69 73 65 22 | 20 6c 69 6e 65 73 2e 0a | "noise"| lines..|
|00000360| 58 0a 58 54 6f 20 75 73 | 65 20 74 68 65 20 73 69 |X.XTo us|e the si|
|00000370| 74 20 63 6f 64 65 20 79 | 6f 75 20 6e 65 65 64 20 |t code y|ou need |
|00000380| 74 68 65 20 67 65 74 6f | 70 74 28 33 29 20 6c 69 |the geto|pt(3) li|
|00000390| 62 72 61 72 79 20 72 6f | 75 74 69 6e 65 20 61 6e |brary ro|utine an|
|000003a0| 64 20 74 68 65 20 63 6f | 6d 70 72 65 73 73 28 31 |d the co|mpress(1|
|000003b0| 29 0a 58 75 74 69 6c 69 | 74 79 2c 20 62 6f 74 68 |).Xutili|ty, both|
|000003c0| 20 6f 66 20 77 68 69 63 | 68 20 6d 6f 73 74 20 65 | of whic|h most e|
|000003d0| 76 65 72 79 6f 6e 65 20 | 73 65 65 6d 73 20 74 6f |veryone |seems to|
|000003e0| 20 68 61 76 65 20 62 79 | 20 6e 6f 77 2e 0a 58 0a | have by| now..X.|
|000003f0| 58 54 68 65 72 65 20 69 | 73 20 6e 6f 74 20 6d 75 |XThere i|s not mu|
|00000400| 63 68 20 6f 72 69 67 69 | 6e 61 6c 20 63 6f 64 65 |ch origi|nal code|
|00000410| 20 68 65 72 65 3a 20 65 | 76 65 72 79 74 68 69 6e | here: e|verythin|
|00000420| 67 20 69 73 20 72 65 76 | 65 72 73 65 20 65 6e 67 |g is rev|erse eng|
|00000430| 69 6e 65 65 72 65 64 20 | 66 72 6f 6d 0a 58 74 68 |ineered |from.Xth|
|00000440| 65 20 75 6e 73 69 74 20 | 75 74 69 6c 69 74 79 20 |e unsit |utility |
|00000450| 62 79 20 41 6c 61 6e 20 | 57 65 62 65 72 2e 20 20 |by Alan |Weber. |
|00000460| 54 68 65 20 75 70 64 63 | 72 63 2e 63 20 66 69 6c |The updc|rc.c fil|
|00000470| 65 20 69 73 20 65 78 61 | 63 74 6c 79 20 74 68 65 |e is exa|ctly the|
|00000480| 20 73 61 6d 65 20 66 69 | 6c 65 0a 58 66 72 6f 6d | same fi|le.Xfrom|
|00000490| 20 74 68 65 20 75 6e 73 | 69 74 20 70 61 63 6b 61 | the uns|it packa|
|000004a0| 67 65 2e 0a 58 0a 58 49 | 27 76 65 20 74 65 73 74 |ge..X.XI|'ve test|
|000004b0| 65 64 20 74 68 65 20 63 | 6f 64 65 20 6f 6e 20 62 |ed the c|ode on b|
|000004c0| 6f 74 68 20 42 53 44 20 | 61 6e 64 20 53 59 53 56 |oth BSD |and SYSV|
|000004d0| 20 6d 61 63 68 69 6e 65 | 73 2e 20 42 6f 74 68 20 | machine|s. Both |
|000004e0| 6d 61 63 68 69 6e 65 73 | 20 77 65 72 65 20 62 69 |machines| were bi|
|000004f0| 67 0a 58 65 6e 64 69 61 | 6e 20 73 6f 20 62 79 74 |g.Xendia|n so byt|
|00000500| 65 20 6f 72 64 65 72 20 | 70 72 6f 62 6c 65 6d 73 |e order |problems|
|00000510| 20 6d 61 79 20 73 74 69 | 6c 6c 20 62 65 20 6c 75 | may sti|ll be lu|
|00000520| 72 6b 69 6e 67 2e 0a 58 | 0a 58 57 68 65 6e 20 79 |rking..X|.XWhen y|
|00000530| 6f 75 20 74 72 61 6e 73 | 66 65 72 20 61 72 63 68 |ou trans|fer arch|
|00000540| 69 76 65 73 20 74 6f 20 | 79 6f 75 72 20 6d 61 63 |ives to |your mac|
|00000550| 20 62 65 20 73 75 72 65 | 20 74 6f 20 75 73 65 20 | be sure| to use |
|00000560| 22 62 69 6e 61 72 79 22 | 20 6d 6f 64 65 2e 20 20 |"binary"| mode. |
|00000570| 49 6e 20 0a 58 6f 72 64 | 65 72 20 66 6f 72 20 53 |In .Xord|er for S|
|00000580| 75 66 66 69 74 20 74 6f | 20 72 65 63 6f 67 6e 69 |uffit to| recogni|
|00000590| 7a 65 20 79 6f 75 72 20 | 64 6f 77 6e 6c 6f 61 64 |ze your |download|
|000005a0| 65 64 20 66 69 6c 65 20 | 69 74 20 6d 75 73 74 20 |ed file |it must |
|000005b0| 68 61 76 65 20 61 20 74 | 79 70 65 20 6f 66 0a 58 |have a t|ype of.X|
|000005c0| 22 53 49 54 21 22 2e 20 | 20 49 66 20 79 6f 75 72 |"SIT!". | If your|
|000005d0| 20 63 6f 6d 6d 75 6e 69 | 63 61 74 69 6f 6e 20 70 | communi|cation p|
|000005e0| 72 6f 67 72 61 6d 20 64 | 6f 65 73 6e 27 74 20 61 |rogram d|oesn't a|
|000005f0| 6c 6c 6f 77 20 79 6f 75 | 20 74 6f 20 73 70 65 63 |llow you| to spec|
|00000600| 69 66 79 20 74 68 65 20 | 74 79 70 65 0a 58 79 6f |ify the |type.Xyo|
|00000610| 75 27 6c 6c 20 6e 65 65 | 64 20 74 6f 20 52 65 73 |u'll nee|d to Res|
|00000620| 45 64 69 74 20 69 74 20 | 69 6e 2e 20 20 49 74 20 |Edit it |in. It |
|00000630| 73 68 6f 75 6c 64 20 62 | 65 20 71 75 69 74 65 20 |should b|e quite |
|00000640| 73 69 6d 70 6c 65 20 74 | 6f 20 6d 6f 64 69 66 79 |simple t|o modify|
|00000650| 20 73 69 74 2e 63 0a 58 | 74 6f 20 70 75 74 20 61 | sit.c.X|to put a|
|00000660| 20 4d 61 63 42 69 6e 61 | 72 79 20 68 65 61 64 65 | MacBina|ry heade|
|00000670| 72 20 6f 6e 20 74 68 65 | 20 61 72 63 68 69 76 65 |r on the| archive|
|00000680| 2e 0a 58 0a 58 41 73 20 | 77 69 74 68 20 65 76 65 |..X.XAs |with eve|
|00000690| 72 79 74 68 69 6e 67 20 | 69 6e 20 74 68 65 20 6d |rything |in the m|
|000006a0| 6f 64 65 72 6e 20 77 6f | 72 6c 64 3a 20 75 73 65 |odern wo|rld: use|
|000006b0| 20 61 74 20 79 6f 75 72 | 20 6f 77 6e 20 72 69 73 | at your| own ris|
|000006c0| 6b 2e 0a 58 0a 58 2d 2d | 54 6f 6d 20 42 65 72 65 |k..X.X--|Tom Bere|
|000006d0| 69 74 65 72 0a 58 20 20 | 2e 2e 21 7b 72 75 74 67 |iter.X |..!{rutg|
|000006e0| 65 72 73 2c 61 6d 65 73 | 7d 21 63 73 2e 75 74 65 |ers,ames|}!cs.ute|
|000006f0| 78 61 73 2e 65 64 75 21 | 68 61 6c 6c 65 79 21 72 |xas.edu!|halley!r|
|00000700| 6f 6c 65 78 21 74 77 62 | 0a 53 48 41 52 5f 45 4f |olex!twb|.SHAR_EO|
|00000710| 46 0a 69 66 20 74 65 73 | 74 20 31 32 30 39 20 2d |F.if tes|t 1209 -|
|00000720| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 52 45 |ne "`wc |-c < 'RE|
|00000730| 41 44 4d 45 27 60 22 0a | 74 68 65 6e 0a 09 65 63 |ADME'`".|then..ec|
|00000740| 68 6f 20 73 68 61 72 3a | 20 65 72 72 6f 72 20 74 |ho shar:| error t|
|00000750| 72 61 6e 73 6d 69 74 74 | 69 6e 67 20 22 27 52 45 |ransmitt|ing "'RE|
|00000760| 41 44 4d 45 27 22 20 27 | 28 73 68 6f 75 6c 64 20 |ADME'" '|(should |
|00000770| 68 61 76 65 20 62 65 65 | 6e 20 31 32 30 39 20 63 |have bee|n 1209 c|
|00000780| 68 61 72 61 63 74 65 72 | 73 29 27 0a 66 69 0a 66 |haracter|s)'.fi.f|
|00000790| 69 20 23 20 65 6e 64 20 | 6f 66 20 6f 76 65 72 77 |i # end |of overw|
|000007a0| 72 69 74 69 6e 67 20 63 | 68 65 63 6b 0a 65 63 68 |riting c|heck.ech|
|000007b0| 6f 20 73 68 61 72 3a 20 | 65 78 74 72 61 63 74 69 |o shar: |extracti|
|000007c0| 6e 67 20 22 27 4d 61 6b | 65 66 69 6c 65 27 22 20 |ng "'Mak|efile'" |
|000007d0| 27 28 36 37 20 63 68 61 | 72 61 63 74 65 72 73 29 |'(67 cha|racters)|
|000007e0| 27 0a 69 66 20 74 65 73 | 74 20 2d 66 20 27 4d 61 |'.if tes|t -f 'Ma|
|000007f0| 6b 65 66 69 6c 65 27 0a | 74 68 65 6e 0a 09 65 63 |kefile'.|then..ec|
|00000800| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|00000810| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|00000820| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 4d 61 6b |sting fi|le "'Mak|
|00000830| 65 66 69 6c 65 27 22 0a | 65 6c 73 65 0a 73 65 64 |efile'".|else.sed|
|00000840| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|00000850| 41 52 5f 45 4f 46 20 3e | 20 27 4d 61 6b 65 66 69 |AR_EOF >| 'Makefi|
|00000860| 6c 65 27 0a 58 61 6c 6c | 3a 09 73 69 74 20 6d 61 |le'.Xall|:.sit ma|
|00000870| 63 62 69 6e 66 69 6c 74 | 0a 58 0a 58 73 69 74 3a |cbinfilt|.X.Xsit:|
|00000880| 09 73 69 74 2e 6f 20 75 | 70 64 63 72 63 2e 6f 0a |.sit.o u|pdcrc.o.|
|00000890| 58 09 63 63 20 2d 6f 20 | 73 69 74 20 73 69 74 2e |X.cc -o |sit sit.|
|000008a0| 6f 20 75 70 64 63 72 63 | 2e 6f 0a 53 48 41 52 5f |o updcrc|.o.SHAR_|
|000008b0| 45 4f 46 0a 69 66 20 74 | 65 73 74 20 36 37 20 2d |EOF.if t|est 67 -|
|000008c0| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 4d 61 |ne "`wc |-c < 'Ma|
|000008d0| 6b 65 66 69 6c 65 27 60 | 22 0a 74 68 65 6e 0a 09 |kefile'`|".then..|
|000008e0| 65 63 68 6f 20 73 68 61 | 72 3a 20 65 72 72 6f 72 |echo sha|r: error|
|000008f0| 20 74 72 61 6e 73 6d 69 | 74 74 69 6e 67 20 22 27 | transmi|tting "'|
|00000900| 4d 61 6b 65 66 69 6c 65 | 27 22 20 27 28 73 68 6f |Makefile|'" '(sho|
|00000910| 75 6c 64 20 68 61 76 65 | 20 62 65 65 6e 20 36 37 |uld have| been 67|
|00000920| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 66 69 | charact|ers)'.fi|
|00000930| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00000940| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 65 |rwriting| check.e|
|00000950| 63 68 6f 20 73 68 61 72 | 3a 20 65 78 74 72 61 63 |cho shar|: extrac|
|00000960| 74 69 6e 67 20 22 27 73 | 69 74 2e 68 27 22 20 27 |ting "'s|it.h'" '|
|00000970| 28 31 38 33 34 20 63 68 | 61 72 61 63 74 65 72 73 |(1834 ch|aracters|
|00000980| 29 27 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 73 |)'.if te|st -f 's|
|00000990| 69 74 2e 68 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |it.h'.th|en..echo|
|000009a0| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|000009b0| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000009c0| 69 6e 67 20 66 69 6c 65 | 20 22 27 73 69 74 2e 68 |ing file| "'sit.h|
|000009d0| 27 22 0a 65 6c 73 65 0a | 73 65 64 20 27 73 2f 5e |'".else.|sed 's/^|
|000009e0| 58 2f 2f 27 20 3c 3c 20 | 5c 53 48 41 52 5f 45 4f |X//' << |\SHAR_EO|
|000009f0| 46 20 3e 20 27 73 69 74 | 2e 68 27 0a 58 0a 58 2f |F > 'sit|.h'.X.X/|
|00000a00| 2a 20 73 69 74 2e 68 3a | 20 63 6f 6e 74 61 69 6e |* sit.h:| contain|
|00000a10| 73 20 64 65 63 6c 61 72 | 61 74 69 6f 6e 73 20 66 |s declar|ations f|
|00000a20| 6f 72 20 53 49 54 20 68 | 65 61 64 65 72 73 20 2a |or SIT h|eaders *|
|00000a30| 2f 0a 58 0a 58 74 79 70 | 65 64 65 66 20 73 74 72 |/.X.Xtyp|edef str|
|00000a40| 75 63 74 20 73 69 74 48 | 64 72 20 7b 09 09 2f 2a |uct sitH|dr {../*|
|00000a50| 20 32 32 20 62 79 74 65 | 73 20 2a 2f 0a 58 09 75 | 22 byte|s */.X.u|
|00000a60| 5f 63 68 61 72 09 73 69 | 67 31 5b 34 5d 3b 09 09 |_char.si|g1[4];..|
|00000a70| 2f 2a 20 3d 20 27 53 49 | 54 21 27 20 2d 2d 20 66 |/* = 'SI|T!' -- f|
|00000a80| 6f 72 20 76 65 72 69 66 | 69 63 61 74 69 6f 6e 20 |or verif|ication |
|00000a90| 2a 2f 0a 58 09 75 5f 63 | 68 61 72 09 6e 75 6d 46 |*/.X.u_c|har.numF|
|00000aa0| 69 6c 65 73 5b 32 5d 3b | 09 2f 2a 20 6e 75 6d 62 |iles[2];|./* numb|
|00000ab0| 65 72 20 6f 66 20 66 69 | 6c 65 73 20 69 6e 20 61 |er of fi|les in a|
|00000ac0| 72 63 68 69 76 65 20 2a | 2f 0a 58 09 75 5f 63 68 |rchive *|/.X.u_ch|
|00000ad0| 61 72 09 61 72 63 4c 65 | 6e 5b 34 5d 3b 09 09 2f |ar.arcLe|n[4];../|
|00000ae0| 2a 20 6c 65 6e 67 74 68 | 20 6f 66 20 65 6e 74 69 |* length| of enti|
|00000af0| 72 65 20 61 72 63 68 69 | 76 65 20 69 6e 63 6c 2e |re archi|ve incl.|
|00000b00| 20 2a 2f 0a 58 09 75 5f | 63 68 61 72 09 73 69 67 | */.X.u_|char.sig|
|00000b10| 32 5b 34 5d 3b 09 09 2f | 2a 20 3d 20 27 72 4c 61 |2[4];../|* = 'rLa|
|00000b20| 75 27 20 2d 2d 20 66 6f | 72 20 76 65 72 69 66 69 |u' -- fo|r verifi|
|00000b30| 63 61 74 69 6f 6e 20 2a | 2f 0a 58 09 75 5f 63 68 |cation *|/.X.u_ch|
|00000b40| 61 72 09 76 65 72 73 69 | 6f 6e 3b 09 09 2f 2a 20 |ar.versi|on;../* |
|00000b50| 76 65 72 73 69 6f 6e 20 | 6e 75 6d 62 65 72 20 2a |version |number *|
|00000b60| 2f 0a 58 09 63 68 61 72 | 20 72 65 73 65 72 76 65 |/.X.char| reserve|
|00000b70| 64 5b 37 5d 3b 0a 58 7d | 3b 0a 58 0a 58 74 79 70 |d[7];.X}|;.X.Xtyp|
|00000b80| 65 64 65 66 20 73 74 72 | 75 63 74 20 66 69 6c 65 |edef str|uct file|
|00000b90| 48 64 72 20 7b 09 2f 2a | 20 31 31 32 20 62 79 74 |Hdr {./*| 112 byt|
|00000ba0| 65 73 20 2a 2f 0a 58 09 | 75 5f 63 68 61 72 09 63 |es */.X.|u_char.c|
|00000bb0| 6f 6d 70 52 4d 65 74 68 | 6f 64 3b 09 09 2f 2a 20 |ompRMeth|od;../* |
|00000bc0| 72 73 72 63 20 66 6f 72 | 6b 20 63 6f 6d 70 72 65 |rsrc for|k compre|
|00000bd0| 73 73 69 6f 6e 20 6d 65 | 74 68 6f 64 20 2a 2f 0a |ssion me|thod */.|
|00000be0| 58 09 75 5f 63 68 61 72 | 09 63 6f 6d 70 44 4d 65 |X.u_char|.compDMe|
|00000bf0| 74 68 6f 64 3b 09 09 2f | 2a 20 64 61 74 61 20 66 |thod;../|* data f|
|00000c00| 6f 72 6b 20 63 6f 6d 70 | 72 65 73 73 69 6f 6e 20 |ork comp|ression |
|00000c10| 6d 65 74 68 6f 64 20 2a | 2f 0a 58 09 75 5f 63 68 |method *|/.X.u_ch|
|00000c20| 61 72 09 66 4e 61 6d 65 | 5b 36 34 5d 3b 09 09 09 |ar.fName|[64];...|
|00000c30| 2f 2a 20 61 20 53 54 52 | 36 33 20 2a 2f 0a 58 09 |/* a STR|63 */.X.|
|00000c40| 63 68 61 72 09 66 54 79 | 70 65 5b 34 5d 3b 09 09 |char.fTy|pe[4];..|
|00000c50| 09 2f 2a 20 66 69 6c 65 | 20 74 79 70 65 20 2a 2f |./* file| type */|
|00000c60| 0a 58 09 63 68 61 72 09 | 66 43 72 65 61 74 6f 72 |.X.char.|fCreator|
|00000c70| 5b 34 5d 3b 09 09 2f 2a | 20 63 72 65 61 74 6f 72 |[4];../*| creator|
|00000c80| 2e 2e 2e 20 2a 2f 0a 58 | 09 63 68 61 72 09 46 6e |... */.X|.char.Fn|
|00000c90| 64 72 46 6c 61 67 73 5b | 32 5d 3b 09 09 2f 2a 20 |drFlags[|2];../* |
|00000ca0| 63 6f 70 79 20 6f 66 20 | 46 69 6e 64 65 72 20 66 |copy of |Finder f|
|00000cb0| 6c 61 67 73 20 2a 2f 0a | 58 09 63 68 61 72 09 63 |lags */.|X.char.c|
|00000cc0| 44 61 74 65 5b 34 5d 3b | 09 09 09 2f 2a 20 63 72 |Date[4];|.../* cr|
|00000cd0| 65 61 74 69 6f 6e 20 64 | 61 74 65 20 2a 2f 0a 58 |eation d|ate */.X|
|00000ce0| 09 63 68 61 72 09 6d 44 | 61 74 65 5b 34 5d 3b 09 |.char.mD|ate[4];.|
|00000cf0| 09 09 2f 2a 20 21 72 65 | 73 74 6f 72 65 64 2d 63 |../* !re|stored-c|
|00000d00| 6f 6d 70 61 74 20 77 2f | 62 61 63 6b 75 70 20 70 |ompat w/|backup p|
|00000d10| 72 67 6d 73 20 2a 2f 0a | 58 09 75 5f 63 68 61 72 |rgms */.|X.u_char|
|00000d20| 09 72 4c 65 6e 5b 34 5d | 3b 09 09 09 2f 2a 20 64 |.rLen[4]|;.../* d|
|00000d30| 65 63 6f 6d 20 72 73 72 | 63 20 6c 65 6e 67 74 68 |ecom rsr|c length|
|00000d40| 20 2a 2f 0a 58 09 75 5f | 63 68 61 72 09 64 4c 65 | */.X.u_|char.dLe|
|00000d50| 6e 5b 34 5d 3b 09 09 09 | 2f 2a 20 64 65 63 6f 6d |n[4];...|/* decom|
|00000d60| 70 20 64 61 74 61 20 6c | 65 6e 67 74 68 20 2a 2f |p data l|ength */|
|00000d70| 0a 58 09 75 5f 63 68 61 | 72 09 63 52 4c 65 6e 5b |.X.u_cha|r.cRLen[|
|00000d80| 34 5d 3b 09 09 09 2f 2a | 20 63 6f 6d 70 72 65 73 |4];.../*| compres|
|00000d90| 73 65 64 20 6c 65 6e 67 | 74 68 73 20 2a 2f 0a 58 |sed leng|ths */.X|
|00000da0| 09 75 5f 63 68 61 72 09 | 63 44 4c 65 6e 5b 34 5d |.u_char.|cDLen[4]|
|00000db0| 3b 0a 58 09 75 5f 63 68 | 61 72 09 72 73 72 63 43 |;.X.u_ch|ar.rsrcC|
|00000dc0| 52 43 5b 32 5d 3b 09 09 | 09 2f 2a 20 63 72 63 20 |RC[2];..|./* crc |
|00000dd0| 6f 66 20 72 73 72 63 20 | 66 6f 72 6b 20 2a 2f 0a |of rsrc |fork */.|
|00000de0| 58 09 75 5f 63 68 61 72 | 09 64 61 74 61 43 52 43 |X.u_char|.dataCRC|
|00000df0| 5b 32 5d 3b 09 09 09 2f | 2a 20 63 72 63 20 6f 66 |[2];.../|* crc of|
|00000e00| 20 64 61 74 61 20 66 6f | 72 6b 20 2a 2f 0a 58 09 | data fo|rk */.X.|
|00000e10| 63 68 61 72 09 72 65 73 | 65 72 76 65 64 5b 36 5d |char.res|erved[6]|
|00000e20| 3b 0a 58 09 75 5f 63 68 | 61 72 09 68 64 72 43 52 |;.X.u_ch|ar.hdrCR|
|00000e30| 43 5b 32 5d 3b 09 09 09 | 2f 2a 20 63 72 63 20 6f |C[2];...|/* crc o|
|00000e40| 66 20 66 69 6c 65 20 68 | 65 61 64 65 72 20 2a 2f |f file h|eader */|
|00000e50| 0a 58 7d 3b 0a 58 0a 58 | 2f 2a 20 66 69 6c 65 20 |.X};.X.X|/* file |
|00000e60| 66 6f 72 6d 61 74 20 69 | 73 3a 0a 58 09 73 69 74 |format i|s:.X.sit|
|00000e70| 41 72 63 68 69 76 65 48 | 64 72 0a 58 09 09 66 69 |ArchiveH|dr.X..fi|
|00000e80| 6c 65 31 48 64 72 0a 58 | 09 09 09 66 69 6c 65 31 |le1Hdr.X|...file1|
|00000e90| 52 73 72 63 46 6f 72 6b | 0a 58 09 09 09 66 69 6c |RsrcFork|.X...fil|
|00000ea0| 65 31 44 61 74 61 46 6f | 72 6b 0a 58 09 09 66 69 |e1DataFo|rk.X..fi|
|00000eb0| 6c 65 32 48 64 72 0a 58 | 09 09 09 66 69 6c 65 32 |le2Hdr.X|...file2|
|00000ec0| 52 73 72 63 46 6f 72 6b | 0a 58 09 09 09 66 69 6c |RsrcFork|.X...fil|
|00000ed0| 65 32 44 61 74 61 46 6f | 72 6b 0a 58 09 09 2e 0a |e2DataFo|rk.X....|
|00000ee0| 58 09 09 2e 0a 58 09 09 | 2e 0a 58 09 09 66 69 6c |X....X..|..X..fil|
|00000ef0| 65 4e 48 64 72 0a 58 09 | 09 09 66 69 6c 65 4e 52 |eNHdr.X.|..fileNR|
|00000f00| 73 72 63 46 6f 72 6b 0a | 58 09 09 09 66 69 6c 65 |srcFork.|X...file|
|00000f10| 4e 44 61 74 61 46 6f 72 | 6b 0a 58 2a 2f 0a 58 0a |NDataFor|k.X*/.X.|
|00000f20| 58 0a 58 0a 58 2f 2a 20 | 63 6f 6d 70 72 65 73 73 |X.X.X/* |compress|
|00000f30| 69 6f 6e 20 6d 65 74 68 | 6f 64 73 20 2a 2f 0a 58 |ion meth|ods */.X|
|00000f40| 23 64 65 66 69 6e 65 20 | 6e 6f 43 6f 6d 70 09 30 |#define |noComp.0|
|00000f50| 09 2f 2a 20 6a 75 73 74 | 20 72 65 61 64 20 65 61 |./* just| read ea|
|00000f60| 63 68 20 62 79 74 65 20 | 61 6e 64 20 77 72 69 74 |ch byte |and writ|
|00000f70| 65 20 69 74 20 74 6f 20 | 61 72 63 68 69 76 65 20 |e it to |archive |
|00000f80| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 72 65 70 43 |*/.X#def|ine repC|
|00000f90| 6f 6d 70 20 31 09 2f 2a | 20 52 4c 45 20 63 6f 6d |omp 1./*| RLE com|
|00000fa0| 70 72 65 73 73 69 6f 6e | 20 2a 2f 0a 58 23 64 65 |pression| */.X#de|
|00000fb0| 66 69 6e 65 20 6c 70 7a | 43 6f 6d 70 20 32 09 2f |fine lpz|Comp 2./|
|00000fc0| 2a 20 4c 5a 57 20 63 6f | 6d 70 72 65 73 73 69 6f |* LZW co|mpressio|
|00000fd0| 6e 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 68 75 |n */.X#d|efine hu|
|00000fe0| 66 43 6f 6d 70 20 33 09 | 2f 2a 20 48 75 66 66 6d |fComp 3.|/* Huffm|
|00000ff0| 61 6e 20 63 6f 6d 70 72 | 65 73 73 69 6f 6e 20 2a |an compr|ession *|
|00001000| 2f 0a 58 0a 58 2f 2a 20 | 61 6c 6c 20 6f 74 68 65 |/.X.X/* |all othe|
|00001010| 72 20 6e 75 6d 62 65 72 | 73 20 61 72 65 20 72 65 |r number|s are re|
|00001020| 73 65 72 76 65 64 20 2a | 2f 0a 58 0a 58 2f 2a 0a |served *|/.X.X/*.|
|00001030| 58 20 2a 20 74 68 65 20 | 66 6f 72 6d 61 74 20 6f |X * the |format o|
|00001040| 66 20 61 20 2a 2e 69 6e | 66 6f 20 66 69 6c 65 20 |f a *.in|fo file |
|00001050| 6d 61 64 65 20 62 79 20 | 78 62 69 6e 0a 58 20 2a |made by |xbin.X *|
|00001060| 2f 0a 58 73 74 72 75 63 | 74 20 69 6e 66 6f 68 64 |/.Xstruc|t infohd|
|00001070| 72 20 7b 0a 58 09 63 68 | 61 72 09 72 65 73 30 3b |r {.X.ch|ar.res0;|
|00001080| 0a 58 09 63 68 61 72 09 | 6e 61 6d 65 5b 36 34 5d |.X.char.|name[64]|
|00001090| 3b 09 2f 2a 20 20 32 20 | 28 61 20 73 74 72 20 36 |;./* 2 |(a str 6|
|000010a0| 33 29 20 2a 2f 0a 58 09 | 63 68 61 72 09 74 79 70 |3) */.X.|char.typ|
|000010b0| 65 5b 34 5d 3b 09 2f 2a | 20 36 35 20 2a 2f 0a 58 |e[4];./*| 65 */.X|
|000010c0| 09 63 68 61 72 09 63 72 | 65 61 74 6f 72 5b 34 5d |.char.cr|eator[4]|
|000010d0| 3b 09 2f 2a 20 36 39 20 | 2a 2f 0a 58 09 63 68 61 |;./* 69 |*/.X.cha|
|000010e0| 72 09 66 6c 61 67 5b 32 | 5d 3b 09 2f 2a 20 37 33 |r.flag[2|];./* 73|
|000010f0| 20 2a 2f 0a 58 09 63 68 | 61 72 09 72 65 73 31 5b | */.X.ch|ar.res1[|
|00001100| 38 5d 3b 0a 58 09 63 68 | 61 72 09 64 6c 65 6e 5b |8];.X.ch|ar.dlen[|
|00001110| 34 5d 3b 09 2f 2a 20 38 | 33 20 2a 2f 0a 58 09 63 |4];./* 8|3 */.X.c|
|00001120| 68 61 72 09 72 6c 65 6e | 5b 34 5d 3b 09 2f 2a 20 |har.rlen|[4];./* |
|00001130| 38 37 20 2a 2f 0a 58 09 | 63 68 61 72 09 63 74 69 |87 */.X.|char.cti|
|00001140| 6d 65 5b 34 5d 3b 09 2f | 2a 20 39 31 20 2a 2f 0a |me[4];./|* 91 */.|
|00001150| 58 09 63 68 61 72 09 6d | 74 69 6d 65 5b 34 5d 3b |X.char.m|time[4];|
|00001160| 09 2f 2a 20 39 35 20 2a | 2f 0a 58 7d 3b 0a 53 48 |./* 95 *|/.X};.SH|
|00001170| 41 52 5f 45 4f 46 0a 69 | 66 20 74 65 73 74 20 31 |AR_EOF.i|f test 1|
|00001180| 38 33 34 20 2d 6e 65 20 | 22 60 77 63 20 2d 63 20 |834 -ne |"`wc -c |
|00001190| 3c 20 27 73 69 74 2e 68 | 27 60 22 0a 74 68 65 6e |< 'sit.h|'`".then|
|000011a0| 0a 09 65 63 68 6f 20 73 | 68 61 72 3a 20 65 72 72 |..echo s|har: err|
|000011b0| 6f 72 20 74 72 61 6e 73 | 6d 69 74 74 69 6e 67 20 |or trans|mitting |
|000011c0| 22 27 73 69 74 2e 68 27 | 22 20 27 28 73 68 6f 75 |"'sit.h'|" '(shou|
|000011d0| 6c 64 20 68 61 76 65 20 | 62 65 65 6e 20 31 38 33 |ld have |been 183|
|000011e0| 34 20 63 68 61 72 61 63 | 74 65 72 73 29 27 0a 66 |4 charac|ters)'.f|
|000011f0| 69 0a 66 69 20 23 20 65 | 6e 64 20 6f 66 20 6f 76 |i.fi # e|nd of ov|
|00001200| 65 72 77 72 69 74 69 6e | 67 20 63 68 65 63 6b 0a |erwritin|g check.|
|00001210| 65 63 68 6f 20 73 68 61 | 72 3a 20 65 78 74 72 61 |echo sha|r: extra|
|00001220| 63 74 69 6e 67 20 22 27 | 73 69 74 2e 63 27 22 20 |cting "'|sit.c'" |
|00001230| 27 28 36 30 36 33 20 63 | 68 61 72 61 63 74 65 72 |'(6063 c|haracter|
|00001240| 73 29 27 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |s)'.if t|est -f '|
|00001250| 73 69 74 2e 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |sit.c'.t|hen..ech|
|00001260| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00001270| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00001280| 74 69 6e 67 20 66 69 6c | 65 20 22 27 73 69 74 2e |ting fil|e "'sit.|
|00001290| 63 27 22 0a 65 6c 73 65 | 0a 73 65 64 20 27 73 2f |c'".else|.sed 's/|
|000012a0| 5e 58 2f 2f 27 20 3c 3c | 20 5c 53 48 41 52 5f 45 |^X//' <<| \SHAR_E|
|000012b0| 4f 46 20 3e 20 27 73 69 | 74 2e 63 27 0a 58 2f 2a |OF > 'si|t.c'.X/*|
|000012c0| 0a 58 20 2a 20 73 69 74 | 20 2d 20 53 74 75 66 66 |.X * sit| - Stuff|
|000012d0| 69 74 20 66 6f 72 20 55 | 4e 49 58 0a 58 20 2a 20 |it for U|NIX.X * |
|000012e0| 20 50 75 74 73 20 75 6e | 69 78 20 64 61 74 61 20 | Puts un|ix data |
|000012f0| 66 69 6c 65 73 20 69 6e | 74 6f 20 73 74 75 66 66 |files in|to stuff|
|00001300| 69 74 20 61 72 63 68 69 | 76 65 20 73 75 69 74 61 |it archi|ve suita|
|00001310| 62 6c 65 20 66 6f 72 20 | 64 6f 77 6e 6c 6f 61 64 |ble for |download|
|00001320| 69 6e 67 0a 58 20 2a 09 | 74 6f 20 61 20 4d 61 63 |ing.X *.|to a Mac|
|00001330| 2e 20 20 41 75 74 6f 6d | 61 74 69 63 61 6c 6c 79 |. Autom|atically|
|00001340| 20 70 72 6f 63 65 73 73 | 65 73 20 66 69 6c 65 73 | process|es files|
|00001350| 20 6f 75 74 70 75 74 20 | 66 72 6f 6d 20 78 62 69 | output |from xbi|
|00001360| 6e 2e 0a 58 20 2a 0a 58 | 20 2a 20 20 52 65 76 65 |n..X *.X| * Reve|
|00001370| 72 73 65 20 65 6e 67 69 | 6e 65 65 72 65 64 20 66 |rse engi|neered f|
|00001380| 72 6f 6d 20 75 6e 73 69 | 74 20 62 79 20 41 6c 6c |rom unsi|t by All|
|00001390| 61 6e 20 47 2e 20 57 65 | 62 65 72 2c 20 77 68 69 |an G. We|ber, whi|
|000013a0| 63 68 20 77 61 73 20 62 | 61 73 65 64 20 6f 6e 0a |ch was b|ased on.|
|000013b0| 58 20 2a 20 20 6d 61 63 | 70 75 74 2c 20 77 68 69 |X * mac|put, whi|
|000013c0| 63 68 20 77 61 73 20 62 | 61 73 65 64 20 6f 6e 20 |ch was b|ased on |
|000013d0| 2e 2e 2e 0a 58 20 2a 20 | 20 4a 75 73 74 20 6c 69 |....X * | Just li|
|000013e0| 6b 65 20 75 6e 73 69 74 | 20 74 68 69 73 20 75 73 |ke unsit| this us|
|000013f0| 65 73 20 74 68 65 20 68 | 6f 73 74 27 73 20 76 65 |es the h|ost's ve|
|00001400| 72 73 69 6f 6e 20 6f 66 | 20 63 6f 6d 70 72 65 73 |rsion of| compres|
|00001410| 73 20 74 6f 20 64 6f 20 | 74 68 65 20 77 6f 72 6b |s to do |the work|
|00001420| 2e 0a 58 20 2a 0a 58 20 | 2a 20 45 78 61 6d 70 6c |..X *.X |* Exampl|
|00001430| 65 73 3a 0a 58 20 2a 20 | 20 20 31 29 20 74 61 6b |es:.X * | 1) tak|
|00001440| 65 20 63 6f 6c 6c 65 63 | 74 69 6f 6e 20 6f 66 20 |e collec|tion of |
|00001450| 55 4e 49 58 20 74 65 78 | 74 20 66 69 6c 65 73 20 |UNIX tex|t files |
|00001460| 61 6e 64 20 6d 61 6b 65 | 20 74 68 65 6d 20 4c 53 |and make| them LS|
|00001470| 43 20 74 65 78 74 20 66 | 69 6c 65 73 20 0a 58 20 |C text f|iles .X |
|00001480| 2a 09 77 68 65 6e 20 75 | 6e 63 6f 6d 70 72 65 73 |*.when u|ncompres|
|00001490| 73 65 64 20 6f 6e 20 74 | 68 65 20 6d 61 63 3a 0a |sed on t|he mac:.|
|000014a0| 58 20 2a 09 20 20 20 73 | 69 74 20 2d 75 20 2d 54 |X *. s|it -u -T|
|000014b0| 20 54 45 58 54 20 2d 43 | 20 4b 41 48 4c 20 66 69 | TEXT -C| KAHL fi|
|000014c0| 6c 65 20 2e 2e 2e 0a 58 | 20 2a 20 20 20 32 29 20 |le ....X| * 2) |
|000014d0| 50 72 6f 63 65 73 73 20 | 6f 75 74 70 75 74 20 66 |Process |output f|
|000014e0| 72 6f 6d 20 78 62 69 6e | 3a 0a 58 20 2a 09 20 20 |rom xbin|:.X *. |
|000014f0| 20 78 62 69 6e 20 66 69 | 6c 65 31 09 20 28 70 72 | xbin fi|le1. (pr|
|00001500| 6f 64 75 63 65 73 20 46 | 69 6c 65 4f 6e 65 2e 7b |oduces F|ileOne.{|
|00001510| 69 6e 66 6f 2c 72 73 72 | 63 2c 64 61 74 61 7d 29 |info,rsr|c,data})|
|00001520| 0a 58 20 2a 09 20 20 20 | 73 69 74 20 66 69 6c 65 |.X *. |sit file|
|00001530| 31 0a 58 20 2a 0a 58 20 | 2a 20 20 54 6f 6d 20 42 |1.X *.X |* Tom B|
|00001540| 65 72 65 69 74 65 72 0a | 58 20 2a 09 2e 2e 21 7b |ereiter.|X *...!{|
|00001550| 72 75 74 67 65 72 73 2c | 61 6d 65 73 7d 21 63 73 |rutgers,|ames}!cs|
|00001560| 2e 75 74 65 78 61 73 2e | 65 64 75 21 68 61 6c 6c |.utexas.|edu!hall|
|00001570| 65 79 21 72 6f 6c 65 78 | 21 74 77 62 0a 58 20 2a |ey!rolex|!twb.X *|
|00001580| 2f 0a 58 23 64 65 66 69 | 6e 65 20 42 53 44 0a 58 |/.X#defi|ne BSD.X|
|00001590| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 79 73 2f |.X#inclu|de <sys/|
|000015a0| 74 79 70 65 73 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |types.h>|.X#inclu|
|000015b0| 64 65 20 3c 73 79 73 2f | 73 74 61 74 2e 68 3e 0a |de <sys/|stat.h>.|
|000015c0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 69 6f |X#includ|e <stdio|
|000015d0| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 22 73 |.h>.X#in|clude "s|
|000015e0| 69 74 2e 68 22 0a 58 23 | 69 66 64 65 66 20 42 53 |it.h".X#|ifdef BS|
|000015f0| 44 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |D.X#incl|ude <sys|
|00001600| 2f 74 69 6d 65 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |/time.h>|.X#inclu|
|00001610| 64 65 20 3c 73 79 73 2f | 74 69 6d 65 62 2e 68 3e |de <sys/|timeb.h>|
|00001620| 0a 58 23 65 6c 73 65 0a | 58 23 69 6e 63 6c 75 64 |.X#else.|X#includ|
|00001630| 65 20 3c 74 69 6d 65 2e | 68 3e 0a 58 65 78 74 65 |e <time.|h>.Xexte|
|00001640| 72 6e 20 6c 6f 6e 67 20 | 74 69 6d 65 7a 6f 6e 65 |rn long |timezone|
|00001650| 3b 0a 58 23 65 6e 64 69 | 66 0a 58 0a 58 23 69 66 |;.X#endi|f.X.X#if|
|00001660| 6e 64 65 66 20 6d 69 6e | 0a 58 23 64 65 66 69 6e |ndef min|.X#defin|
|00001670| 65 20 6d 69 6e 28 61 2c | 62 29 20 28 28 61 29 3c |e min(a,|b) ((a)<|
|00001680| 28 62 29 3f 28 61 29 3a | 28 62 29 29 0a 58 23 65 |(b)?(a):|(b)).X#e|
|00001690| 6e 64 69 66 0a 58 0a 58 | 2f 2a 20 4d 61 63 20 74 |ndif.X.X|/* Mac t|
|000016a0| 69 6d 65 20 6f 66 20 30 | 30 3a 30 30 3a 30 30 20 |ime of 0|0:00:00 |
|000016b0| 47 4d 54 2c 20 4a 61 6e | 20 31 2c 20 31 39 37 30 |GMT, Jan| 1, 1970|
|000016c0| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 54 49 4d | */.X#de|fine TIM|
|000016d0| 45 44 49 46 46 20 30 78 | 37 63 32 35 62 30 38 30 |EDIFF 0x|7c25b080|
|000016e0| 0a 58 0a 58 73 74 72 75 | 63 74 20 73 69 74 48 64 |.X.Xstru|ct sitHd|
|000016f0| 72 20 73 68 3b 0a 58 73 | 74 72 75 63 74 20 66 69 |r sh;.Xs|truct fi|
|00001700| 6c 65 48 64 72 20 66 68 | 3b 0a 58 0a 58 63 68 61 |leHdr fh|;.X.Xcha|
|00001710| 72 20 62 75 66 5b 42 55 | 46 53 49 5a 5d 3b 0a 58 |r buf[BU|FSIZ];.X|
|00001720| 63 68 61 72 20 2a 64 65 | 66 6f 75 74 66 69 6c 65 |char *de|foutfile|
|00001730| 20 3d 20 22 61 72 63 68 | 69 76 65 2e 73 69 74 22 | = "arch|ive.sit"|
|00001740| 3b 0a 58 69 6e 74 20 6f | 66 64 3b 0a 58 75 73 68 |;.Xint o|fd;.Xush|
|00001750| 6f 72 74 20 63 72 63 3b | 0a 58 69 6e 74 20 63 6c |ort crc;|.Xint cl|
|00001760| 65 6e 3b 0a 58 69 6e 74 | 20 72 6d 66 69 6c 65 73 |en;.Xint| rmfiles|
|00001770| 3b 0a 58 69 6e 74 09 75 | 6e 69 78 66 3b 0a 58 63 |;.Xint.u|nixf;.Xc|
|00001780| 68 61 72 20 2a 43 72 65 | 61 74 6f 72 2c 20 2a 54 |har *Cre|ator, *T|
|00001790| 79 70 65 3b 0a 58 0a 58 | 75 73 61 67 65 28 29 20 |ype;.X.X|usage() |
|000017a0| 7b 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |{ fprint|f(stderr|
|000017b0| 2c 22 55 73 61 67 65 3a | 20 73 69 74 20 66 69 6c |,"Usage:| sit fil|
|000017c0| 65 5c 6e 22 29 3b 20 7d | 0a 58 65 78 74 65 72 6e |e\n"); }|.Xextern|
|000017d0| 20 63 68 61 72 20 2a 6f | 70 74 61 72 67 3b 0a 58 | char *o|ptarg;.X|
|000017e0| 65 78 74 65 72 6e 20 69 | 6e 74 20 6f 70 74 69 6e |extern i|nt optin|
|000017f0| 64 3b 0a 58 0a 58 6d 61 | 69 6e 28 61 72 67 63 2c |d;.X.Xma|in(argc,|
|00001800| 61 72 67 76 29 20 63 68 | 61 72 20 2a 2a 61 72 67 |argv) ch|ar **arg|
|00001810| 76 3b 20 7b 0a 58 09 69 | 6e 74 20 69 2c 6e 3b 0a |v; {.X.i|nt i,n;.|
|00001820| 58 09 69 6e 74 20 74 6f | 74 61 6c 2c 20 6e 66 69 |X.int to|tal, nfi|
|00001830| 6c 65 73 3b 0a 58 09 69 | 6e 74 20 63 3b 0a 58 0a |les;.X.i|nt c;.X.|
|00001840| 58 20 20 20 20 77 68 69 | 6c 65 20 28 28 63 3d 67 |X whi|le ((c=g|
|00001850| 65 74 6f 70 74 28 61 72 | 67 63 2c 20 61 72 67 76 |etopt(ar|gc, argv|
|00001860| 2c 20 22 72 6f 3a 75 43 | 3a 54 3a 22 29 29 20 21 |, "ro:uC|:T:")) !|
|00001870| 3d 20 45 4f 46 29 0a 58 | 09 73 77 69 74 63 68 20 |= EOF).X|.switch |
|00001880| 28 63 29 20 7b 0a 58 09 | 09 63 61 73 65 20 27 72 |(c) {.X.|.case 'r|
|00001890| 27 3a 0a 58 09 09 09 72 | 6d 66 69 6c 65 73 2b 2b |':.X...r|mfiles++|
|000018a0| 3b 09 2f 2a 20 72 65 6d | 6f 76 65 20 66 69 6c 65 |;./* rem|ove file|
|000018b0| 73 20 77 68 65 6e 20 64 | 6f 6e 65 20 2a 2f 0a 58 |s when d|one */.X|
|000018c0| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 63 61 73 |...break|;.X..cas|
|000018d0| 65 20 27 6f 27 3a 09 09 | 2f 2a 20 73 70 65 63 69 |e 'o':..|/* speci|
|000018e0| 66 79 20 6f 75 74 70 75 | 74 20 66 69 6c 65 20 2a |fy outpu|t file *|
|000018f0| 2f 0a 58 09 09 09 64 65 | 66 6f 75 74 66 69 6c 65 |/.X...de|foutfile|
|00001900| 20 3d 20 6f 70 74 61 72 | 67 3b 0a 58 09 09 09 62 | = optar|g;.X...b|
|00001910| 72 65 61 6b 3b 0a 58 09 | 09 63 61 73 65 20 27 75 |reak;.X.|.case 'u|
|00001920| 27 3a 09 09 2f 2a 20 75 | 6e 69 78 20 66 69 6c 65 |':../* u|nix file|
|00001930| 20 2d 2d 20 63 68 61 6e | 67 65 20 27 5c 6e 27 20 | -- chan|ge '\n' |
|00001940| 74 6f 20 27 5c 72 27 20 | 2a 2f 0a 58 09 09 09 75 |to '\r' |*/.X...u|
|00001950| 6e 69 78 66 2b 2b 3b 0a | 58 09 09 09 62 72 65 61 |nixf++;.|X...brea|
|00001960| 6b 3b 0a 58 09 09 63 61 | 73 65 20 27 43 27 3a 09 |k;.X..ca|se 'C':.|
|00001970| 09 2f 2a 20 73 65 74 20 | 4d 61 63 20 63 72 65 61 |./* set |Mac crea|
|00001980| 74 6f 72 20 2a 2f 0a 58 | 09 09 09 43 72 65 61 74 |tor */.X|...Creat|
|00001990| 6f 72 20 3d 20 6f 70 74 | 61 72 67 3b 0a 58 09 09 |or = opt|arg;.X..|
|000019a0| 09 62 72 65 61 6b 3b 0a | 58 09 09 63 61 73 65 20 |.break;.|X..case |
|000019b0| 27 54 27 3a 09 09 2f 2a | 20 73 65 74 20 4d 61 63 |'T':../*| set Mac|
|000019c0| 20 66 69 6c 65 20 74 79 | 70 65 20 2a 2f 0a 58 09 | file ty|pe */.X.|
|000019d0| 09 09 54 79 70 65 20 3d | 20 6f 70 74 61 72 67 3b |..Type =| optarg;|
|000019e0| 0a 58 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 63 |.X...bre|ak;.X..c|
|000019f0| 61 73 65 20 27 3f 27 3a | 0a 58 09 09 09 75 73 61 |ase '?':|.X...usa|
|00001a00| 67 65 28 29 3b 0a 58 09 | 09 09 65 78 69 74 28 31 |ge();.X.|..exit(1|
|00001a10| 29 3b 0a 58 09 7d 0a 58 | 0a 58 09 69 66 20 28 28 |);.X.}.X|.X.if ((|
|00001a20| 6f 66 64 3d 63 72 65 61 | 74 28 64 65 66 6f 75 74 |ofd=crea|t(defout|
|00001a30| 66 69 6c 65 2c 30 36 34 | 34 29 29 3c 30 29 20 7b |file,064|4))<0) {|
|00001a40| 0a 58 09 09 70 65 72 72 | 6f 72 28 64 65 66 6f 75 |.X..perr|or(defou|
|00001a50| 74 66 69 6c 65 29 3b 0a | 58 09 09 65 78 69 74 28 |tfile);.|X..exit(|
|00001a60| 31 29 3b 0a 58 09 7d 0a | 58 09 2f 2a 20 65 6d 70 |1);.X.}.|X./* emp|
|00001a70| 74 79 20 68 65 61 64 65 | 72 2c 20 77 69 6c 6c 20 |ty heade|r, will |
|00001a80| 73 65 65 6b 20 62 61 63 | 6b 20 61 6e 64 20 66 69 |seek bac|k and fi|
|00001a90| 6c 6c 20 69 6e 20 6c 61 | 74 65 72 20 2a 2f 0a 58 |ll in la|ter */.X|
|00001aa0| 09 77 72 69 74 65 28 6f | 66 64 2c 26 73 68 2c 73 |.write(o|fd,&sh,s|
|00001ab0| 69 7a 65 6f 66 20 73 68 | 29 3b 0a 58 0a 58 09 66 |izeof sh|);.X.X.f|
|00001ac0| 6f 72 20 28 69 3d 6f 70 | 74 69 6e 64 3b 20 69 3c |or (i=op|tind; i<|
|00001ad0| 61 72 67 63 3b 20 69 2b | 2b 29 20 7b 0a 58 09 09 |argc; i+|+) {.X..|
|00001ae0| 6e 20 3d 20 70 75 74 5f | 66 69 6c 65 28 61 72 67 |n = put_|file(arg|
|00001af0| 76 5b 69 5d 29 3b 0a 58 | 09 09 69 66 20 28 6e 29 |v[i]);.X|..if (n)|
|00001b00| 20 7b 0a 58 09 09 09 74 | 6f 74 61 6c 20 2b 3d 20 | {.X...t|otal += |
|00001b10| 6e 3b 0a 58 09 09 09 6e | 66 69 6c 65 73 2b 2b 3b |n;.X...n|files++;|
|00001b20| 0a 58 09 09 7d 0a 58 09 | 7d 0a 58 09 6c 73 65 65 |.X..}.X.|}.X.lsee|
|00001b30| 6b 28 6f 66 64 2c 30 2c | 30 29 3b 0a 58 0a 58 09 |k(ofd,0,|0);.X.X.|
|00001b40| 74 6f 74 61 6c 20 2b 3d | 20 73 69 7a 65 6f 66 28 |total +=| sizeof(|
|00001b50| 73 68 29 3b 0a 58 09 2f | 2a 20 68 65 61 64 65 72 |sh);.X./|* header|
|00001b60| 20 68 65 61 64 65 72 20 | 2a 2f 0a 58 20 20 20 20 | header |*/.X |
|00001b70| 73 74 72 6e 63 70 79 28 | 73 68 2e 73 69 67 31 2c |strncpy(|sh.sig1,|
|00001b80| 22 53 49 54 21 22 2c 34 | 29 3b 0a 58 20 20 20 20 |"SIT!",4|);.X |
|00001b90| 63 70 32 28 6e 66 69 6c | 65 73 2c 73 68 2e 6e 75 |cp2(nfil|es,sh.nu|
|00001ba0| 6d 46 69 6c 65 73 29 3b | 0a 58 20 20 20 20 63 70 |mFiles);|.X cp|
|00001bb0| 34 28 74 6f 74 61 6c 2c | 73 68 2e 61 72 63 4c 65 |4(total,|sh.arcLe|
|00001bc0| 6e 29 3b 0a 58 20 20 20 | 20 73 74 72 6e 63 70 79 |n);.X | strncpy|
|00001bd0| 28 73 68 2e 73 69 67 32 | 2c 22 72 4c 61 75 22 2c |(sh.sig2|,"rLau",|
|00001be0| 34 29 3b 0a 58 20 20 20 | 20 73 68 2e 76 65 72 73 |4);.X | sh.vers|
|00001bf0| 69 6f 6e 20 3d 20 31 3b | 0a 58 0a 58 09 77 72 69 |ion = 1;|.X.X.wri|
|00001c00| 74 65 28 6f 66 64 2c 26 | 73 68 2c 73 69 7a 65 6f |te(ofd,&|sh,sizeo|
|00001c10| 66 20 73 68 29 3b 0a 58 | 7d 0a 58 0a 58 70 75 74 |f sh);.X|}.X.Xput|
|00001c20| 5f 66 69 6c 65 28 6e 61 | 6d 65 29 0a 58 63 68 61 |_file(na|me).Xcha|
|00001c30| 72 20 6e 61 6d 65 5b 5d | 3b 0a 58 7b 0a 58 09 73 |r name[]|;.X{.X.s|
|00001c40| 74 72 75 63 74 20 73 74 | 61 74 20 73 74 3b 0a 58 |truct st|at st;.X|
|00001c50| 09 73 74 72 75 63 74 20 | 69 6e 66 6f 68 64 72 20 |.struct |infohdr |
|00001c60| 69 68 3b 0a 58 09 69 6e | 74 20 69 2c 6e 2c 66 64 |ih;.X.in|t i,n,fd|
|00001c70| 3b 0a 58 09 6c 6f 6e 67 | 20 66 70 6f 73 31 2c 20 |;.X.long| fpos1, |
|00001c80| 66 70 6f 73 32 3b 0a 58 | 09 63 68 61 72 20 6e 62 |fpos2;.X|.char nb|
|00001c90| 75 66 5b 32 35 36 5d 2c | 20 2a 70 3b 0a 58 09 69 |uf[256],| *p;.X.i|
|00001ca0| 6e 74 20 66 6f 72 6b 3d | 30 3b 0a 58 09 6c 6f 6e |nt fork=|0;.X.lon|
|00001cb0| 67 20 74 64 69 66 66 3b | 0a 58 09 73 74 72 75 63 |g tdiff;|.X.struc|
|00001cc0| 74 20 74 6d 20 2a 74 70 | 3b 0a 58 23 69 66 64 65 |t tm *tp|;.X#ifde|
|00001cd0| 66 20 42 53 44 0a 58 09 | 73 74 72 75 63 74 20 74 |f BSD.X.|struct t|
|00001ce0| 69 6d 65 62 20 74 62 75 | 66 3b 0a 58 23 65 6c 73 |imeb tbu|f;.X#els|
|00001cf0| 65 0a 58 09 6c 6f 6e 67 | 20 62 73 3b 0a 58 23 65 |e.X.long| bs;.X#e|
|00001d00| 6e 64 69 66 0a 58 0a 58 | 09 66 70 6f 73 31 20 3d |ndif.X.X|.fpos1 =|
|00001d10| 20 6c 73 65 65 6b 28 6f | 66 64 2c 30 2c 31 29 3b | lseek(o|fd,0,1);|
|00001d20| 20 2f 2a 20 72 65 6d 65 | 6d 62 65 72 20 77 68 65 | /* reme|mber whe|
|00001d30| 72 65 20 77 65 20 61 72 | 65 20 2a 2f 0a 58 09 2f |re we ar|e */.X./|
|00001d40| 2a 20 77 72 69 74 65 20 | 65 6d 70 74 79 20 68 65 |* write |empty he|
|00001d50| 61 64 65 72 2c 20 77 69 | 6c 6c 20 73 65 65 6b 20 |ader, wi|ll seek |
|00001d60| 62 61 63 6b 20 61 6e 64 | 20 66 69 6c 6c 20 69 6e |back and| fill in|
|00001d70| 20 6c 61 74 65 72 20 2a | 2f 0a 58 09 62 7a 65 72 | later *|/.X.bzer|
|00001d80| 6f 28 26 66 68 2c 73 69 | 7a 65 6f 66 20 66 68 29 |o(&fh,si|zeof fh)|
|00001d90| 3b 0a 58 09 77 72 69 74 | 65 28 6f 66 64 2c 26 66 |;.X.writ|e(ofd,&f|
|00001da0| 68 2c 73 69 7a 65 6f 66 | 20 66 68 29 3b 0a 58 0a |h,sizeof| fh);.X.|
|00001db0| 58 09 2f 2a 20 6c 6f 6f | 6b 20 66 6f 72 20 72 65 |X./* loo|k for re|
|00001dc0| 73 6f 75 72 63 65 20 66 | 6f 72 6b 20 2a 2f 0a 58 |source f|ork */.X|
|00001dd0| 09 73 74 72 63 70 79 28 | 6e 62 75 66 2c 6e 61 6d |.strcpy(|nbuf,nam|
|00001de0| 65 29 3b 0a 58 09 73 74 | 72 63 61 74 28 6e 62 75 |e);.X.st|rcat(nbu|
|00001df0| 66 2c 22 2e 72 73 72 63 | 22 29 3b 0a 58 09 69 66 |f,".rsrc|");.X.if|
|00001e00| 20 28 73 74 61 74 28 6e | 62 75 66 2c 26 73 74 29 | (stat(n|buf,&st)|
|00001e10| 3e 3d 30 20 26 26 20 73 | 74 2e 73 74 5f 73 69 7a |>=0 && s|t.st_siz|
|00001e20| 65 29 20 7b 09 2f 2a 20 | 72 65 73 6f 75 72 63 65 |e) {./* |resource|
|00001e30| 20 66 6f 72 6b 20 65 78 | 69 73 74 73 20 2a 2f 0a | fork ex|ists */.|
|00001e40| 58 09 09 64 6f 66 6f 72 | 6b 28 6e 62 75 66 29 3b |X..dofor|k(nbuf);|
|00001e50| 0a 58 09 09 63 70 34 28 | 73 74 2e 73 74 5f 73 69 |.X..cp4(|st.st_si|
|00001e60| 7a 65 2c 66 68 2e 72 4c | 65 6e 29 3b 0a 58 09 09 |ze,fh.rL|en);.X..|
|00001e70| 63 70 34 28 63 6c 65 6e | 2c 66 68 2e 63 52 4c 65 |cp4(clen|,fh.cRLe|
|00001e80| 6e 29 3b 0a 58 09 09 63 | 70 32 28 63 72 63 2c 66 |n);.X..c|p2(crc,f|
|00001e90| 68 2e 72 73 72 63 43 52 | 43 29 3b 0a 58 09 09 66 |h.rsrcCR|C);.X..f|
|00001ea0| 68 2e 63 6f 6d 70 52 4d | 65 74 68 6f 64 20 3d 20 |h.compRM|ethod = |
|00001eb0| 6c 70 7a 43 6f 6d 70 3b | 0a 58 09 09 66 6f 72 6b |lpzComp;|.X..fork|
|00001ec0| 2b 2b 3b 0a 58 09 7d 0a | 58 09 69 66 20 28 72 6d |++;.X.}.|X.if (rm|
|00001ed0| 66 69 6c 65 73 29 20 75 | 6e 6c 69 6e 6b 28 6e 62 |files) u|nlink(nb|
|00001ee0| 75 66 29 3b 09 2f 2a 20 | 69 67 6e 6f 72 65 20 65 |uf);./* |ignore e|
|00001ef0| 72 72 6f 72 73 20 2a 2f | 0a 58 0a 58 09 2f 2a 20 |rrors */|.X.X./* |
|00001f00| 6c 6f 6f 6b 20 66 6f 72 | 20 64 61 74 61 20 66 6f |look for| data fo|
|00001f10| 72 6b 20 2a 2f 0a 58 09 | 73 74 2e 73 74 5f 73 69 |rk */.X.|st.st_si|
|00001f20| 7a 65 20 3d 20 30 3b 0a | 58 09 73 74 72 63 70 79 |ze = 0;.|X.strcpy|
|00001f30| 28 6e 62 75 66 2c 6e 61 | 6d 65 29 3b 0a 58 09 69 |(nbuf,na|me);.X.i|
|00001f40| 66 20 28 73 74 61 74 28 | 6e 62 75 66 2c 26 73 74 |f (stat(|nbuf,&st|
|00001f50| 29 3c 30 29 20 7b 09 09 | 2f 2a 20 66 69 72 73 74 |)<0) {..|/* first|
|00001f60| 20 74 72 79 20 70 6c 61 | 69 6e 20 6e 61 6d 65 20 | try pla|in name |
|00001f70| 2a 2f 0a 58 09 09 73 74 | 72 63 61 74 28 6e 62 75 |*/.X..st|rcat(nbu|
|00001f80| 66 2c 22 2e 64 61 74 61 | 22 29 3b 0a 58 09 09 73 |f,".data|");.X..s|
|00001f90| 74 61 74 28 6e 62 75 66 | 2c 26 73 74 29 3b 0a 58 |tat(nbuf|,&st);.X|
|00001fa0| 09 7d 0a 58 09 69 66 20 | 28 73 74 2e 73 74 5f 73 |.}.X.if |(st.st_s|
|00001fb0| 69 7a 65 29 20 7b 09 09 | 2f 2a 20 64 61 74 61 20 |ize) {..|/* data |
|00001fc0| 66 6f 72 6b 20 65 78 69 | 73 74 73 20 2a 2f 0a 58 |fork exi|sts */.X|
|00001fd0| 09 09 64 6f 66 6f 72 6b | 28 6e 62 75 66 29 3b 0a |..dofork|(nbuf);.|
|00001fe0| 58 09 09 63 70 34 28 73 | 74 2e 73 74 5f 73 69 7a |X..cp4(s|t.st_siz|
|00001ff0| 65 2c 66 68 2e 64 4c 65 | 6e 29 3b 0a 58 09 09 63 |e,fh.dLe|n);.X..c|
|00002000| 70 34 28 63 6c 65 6e 2c | 66 68 2e 63 44 4c 65 6e |p4(clen,|fh.cDLen|
|00002010| 29 3b 0a 58 09 09 63 70 | 32 28 63 72 63 2c 66 68 |);.X..cp|2(crc,fh|
|00002020| 2e 64 61 74 61 43 52 43 | 29 3b 0a 58 09 09 66 68 |.dataCRC|);.X..fh|
|00002030| 2e 63 6f 6d 70 44 4d 65 | 74 68 6f 64 20 3d 20 6c |.compDMe|thod = l|
|00002040| 70 7a 43 6f 6d 70 3b 0a | 58 09 09 66 6f 72 6b 2b |pzComp;.|X..fork+|
|00002050| 2b 3b 0a 58 09 7d 0a 58 | 09 69 66 20 28 66 6f 72 |+;.X.}.X|.if (for|
|00002060| 6b 20 3d 3d 20 30 29 20 | 7b 0a 58 09 09 66 70 72 |k == 0) |{.X..fpr|
|00002070| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 22 25 73 3a |intf(std|err,"%s:|
|00002080| 20 6e 6f 20 64 61 74 61 | 20 6f 72 20 72 65 73 6f | no data| or reso|
|00002090| 75 72 63 65 20 66 69 6c | 65 73 5c 6e 22 2c 6e 61 |urce fil|es\n",na|
|000020a0| 6d 65 29 3b 0a 58 09 09 | 72 65 74 75 72 6e 20 30 |me);.X..|return 0|
|000020b0| 3b 0a 58 09 7d 0a 58 09 | 69 66 20 28 72 6d 66 69 |;.X.}.X.|if (rmfi|
|000020c0| 6c 65 73 29 20 75 6e 6c | 69 6e 6b 28 6e 62 75 66 |les) unl|ink(nbuf|
|000020d0| 29 3b 09 2f 2a 20 69 67 | 6e 6f 72 65 20 65 72 72 |);./* ig|nore err|
|000020e0| 6f 72 73 20 2a 2f 0a 58 | 0a 58 09 2f 2a 20 6c 6f |ors */.X|.X./* lo|
|000020f0| 6f 6b 20 66 6f 72 20 2e | 69 6e 66 6f 20 66 69 6c |ok for .|info fil|
|00002100| 65 20 2a 2f 0a 58 09 73 | 74 72 63 70 79 28 6e 62 |e */.X.s|trcpy(nb|
|00002110| 75 66 2c 6e 61 6d 65 29 | 3b 0a 58 09 73 74 72 63 |uf,name)|;.X.strc|
|00002120| 61 74 28 6e 62 75 66 2c | 22 2e 69 6e 66 6f 22 29 |at(nbuf,|".info")|
|00002130| 3b 0a 58 09 69 66 20 28 | 28 66 64 3d 6f 70 65 6e |;.X.if (|(fd=open|
|00002140| 28 6e 62 75 66 2c 30 29 | 29 3e 3d 30 20 26 26 20 |(nbuf,0)|)>=0 && |
|00002150| 72 65 61 64 28 66 64 2c | 26 69 68 2c 73 69 7a 65 |read(fd,|&ih,size|
|00002160| 6f 66 28 69 68 29 29 3d | 3d 73 69 7a 65 6f 66 28 |of(ih))=|=sizeof(|
|00002170| 69 68 29 29 20 7b 0a 58 | 09 09 73 74 72 6e 63 70 |ih)) {.X|..strncp|
|00002180| 79 28 66 68 2e 66 4e 61 | 6d 65 2c 20 69 68 2e 6e |y(fh.fNa|me, ih.n|
|00002190| 61 6d 65 2c 36 34 29 3b | 0a 58 09 09 73 74 72 6e |ame,64);|.X..strn|
|000021a0| 63 70 79 28 66 68 2e 66 | 54 79 70 65 2c 20 69 68 |cpy(fh.f|Type, ih|
|000021b0| 2e 74 79 70 65 2c 20 34 | 29 3b 0a 58 09 09 73 74 |.type, 4|);.X..st|
|000021c0| 72 6e 63 70 79 28 66 68 | 2e 66 43 72 65 61 74 6f |rncpy(fh|.fCreato|
|000021d0| 72 2c 20 69 68 2e 63 72 | 65 61 74 6f 72 2c 20 34 |r, ih.cr|eator, 4|
|000021e0| 29 3b 0a 58 09 09 73 74 | 72 6e 63 70 79 28 66 68 |);.X..st|rncpy(fh|
|000021f0| 2e 46 6e 64 72 46 6c 61 | 67 73 2c 20 69 68 2e 66 |.FndrFla|gs, ih.f|
|00002200| 6c 61 67 2c 20 32 29 3b | 0a 58 09 09 73 74 72 6e |lag, 2);|.X..strn|
|00002210| 63 70 79 28 66 68 2e 63 | 44 61 74 65 2c 20 69 68 |cpy(fh.c|Date, ih|
|00002220| 2e 63 74 69 6d 65 2c 20 | 34 29 3b 0a 58 09 09 73 |.ctime, |4);.X..s|
|00002230| 74 72 6e 63 70 79 28 66 | 68 2e 6d 44 61 74 65 2c |trncpy(f|h.mDate,|
|00002240| 20 69 68 2e 6d 74 69 6d | 65 2c 20 34 29 3b 0a 58 | ih.mtim|e, 4);.X|
|00002250| 09 7d 0a 58 09 65 6c 73 | 65 20 7b 09 2f 2a 20 6e |.}.X.els|e {./* n|
|00002260| 6f 20 69 6e 66 6f 20 66 | 69 6c 65 20 73 6f 20 66 |o info f|ile so f|
|00002270| 61 6b 65 20 69 74 20 2a | 2f 0a 58 09 09 73 74 72 |ake it *|/.X..str|
|00002280| 6e 63 70 79 28 26 66 68 | 2e 66 4e 61 6d 65 5b 31 |ncpy(&fh|.fName[1|
|00002290| 5d 2c 20 6e 61 6d 65 2c | 36 33 29 3b 20 66 68 2e |], name,|63); fh.|
|000022a0| 66 4e 61 6d 65 5b 30 5d | 20 3d 20 6d 69 6e 28 73 |fName[0]| = min(s|
|000022b0| 74 72 6c 65 6e 28 6e 61 | 6d 65 29 2c 36 33 29 3b |trlen(na|me),63);|
|000022c0| 0a 58 09 09 2f 2a 20 64 | 65 66 61 75 6c 74 20 74 |.X../* d|efault t|
|000022d0| 6f 20 4c 53 43 20 74 65 | 78 74 20 66 69 6c 65 20 |o LSC te|xt file |
|000022e0| 2a 2f 0a 58 09 09 73 74 | 72 6e 63 70 79 28 66 68 |*/.X..st|rncpy(fh|
|000022f0| 2e 66 54 79 70 65 2c 20 | 54 79 70 65 20 3f 20 54 |.fType, |Type ? T|
|00002300| 79 70 65 20 3a 20 22 54 | 45 58 54 22 2c 20 34 29 |ype : "T|EXT", 4)|
|00002310| 3b 0a 58 09 09 73 74 72 | 6e 63 70 79 28 66 68 2e |;.X..str|ncpy(fh.|
|00002320| 66 43 72 65 61 74 6f 72 | 2c 20 43 72 65 61 74 6f |fCreator|, Creato|
|00002330| 72 20 3f 20 43 72 65 61 | 74 6f 72 20 3a 20 22 4b |r ? Crea|tor : "K|
|00002340| 41 48 4c 22 2c 20 34 29 | 3b 0a 58 09 09 2f 2a 20 |AHL", 4)|;.X../* |
|00002350| 63 6f 6e 76 65 72 74 20 | 75 6e 69 78 20 66 69 6c |convert |unix fil|
|00002360| 65 20 74 69 6d 65 20 74 | 6f 20 6d 61 63 20 74 69 |e time t|o mac ti|
|00002370| 6d 65 20 66 6f 72 6d 61 | 74 20 2a 2f 0a 58 23 69 |me forma|t */.X#i|
|00002380| 66 64 65 66 20 42 53 44 | 0a 58 09 09 66 74 69 6d |fdef BSD|.X..ftim|
|00002390| 65 28 26 74 62 75 66 29 | 3b 0a 58 09 09 74 70 20 |e(&tbuf)|;.X..tp |
|000023a0| 3d 20 6c 6f 63 61 6c 74 | 69 6d 65 28 26 74 62 75 |= localt|ime(&tbu|
|000023b0| 66 2e 74 69 6d 65 29 3b | 0a 58 09 09 74 64 69 66 |f.time);|.X..tdif|
|000023c0| 66 20 3d 20 54 49 4d 45 | 44 49 46 46 20 2d 20 74 |f = TIME|DIFF - t|
|000023d0| 62 75 66 2e 74 69 6d 65 | 7a 6f 6e 65 20 2a 20 36 |buf.time|zone * 6|
|000023e0| 30 3b 0a 58 09 09 69 66 | 20 28 74 70 2d 3e 74 6d |0;.X..if| (tp->tm|
|000023f0| 5f 69 73 64 73 74 29 0a | 58 09 09 09 74 64 69 66 |_isdst).|X...tdif|
|00002400| 66 20 2b 3d 20 36 30 20 | 2a 20 36 30 3b 0a 58 23 |f += 60 |* 60;.X#|
|00002410| 65 6c 73 65 0a 58 09 09 | 2f 2a 20 49 20 68 6f 70 |else.X..|/* I hop|
|00002420| 65 20 74 68 69 73 20 69 | 73 20 72 69 67 68 74 21 |e this i|s right!|
|00002430| 20 2d 61 6e 64 79 20 2a | 2f 0a 58 09 09 74 69 6d | -andy *|/.X..tim|
|00002440| 65 28 26 62 73 29 3b 0a | 58 09 09 74 70 20 3d 20 |e(&bs);.|X..tp = |
|00002450| 6c 6f 63 61 6c 74 69 6d | 65 28 26 62 73 29 3b 0a |localtim|e(&bs);.|
|00002460| 58 09 09 74 64 69 66 66 | 20 3d 20 54 49 4d 45 44 |X..tdiff| = TIMED|
|00002470| 49 46 46 20 2d 20 74 69 | 6d 65 7a 6f 6e 65 3b 0a |IFF - ti|mezone;.|
|00002480| 58 09 09 69 66 20 28 74 | 70 2d 3e 74 6d 5f 69 73 |X..if (t|p->tm_is|
|00002490| 64 73 74 29 0a 58 09 09 | 09 74 64 69 66 66 20 2b |dst).X..|.tdiff +|
|000024a0| 3d 20 36 30 20 2a 20 36 | 30 3b 0a 58 23 65 6e 64 |= 60 * 6|0;.X#end|
|000024b0| 69 66 0a 58 09 09 63 70 | 34 28 73 74 2e 73 74 5f |if.X..cp|4(st.st_|
|000024c0| 63 74 69 6d 65 20 2b 20 | 74 64 69 66 66 2c 20 66 |ctime + |tdiff, f|
|000024d0| 68 2e 63 44 61 74 65 29 | 3b 0a 58 09 09 63 70 34 |h.cDate)|;.X..cp4|
|000024e0| 28 73 74 2e 73 74 5f 6d | 74 69 6d 65 20 2b 20 74 |(st.st_m|time + t|
|000024f0| 64 69 66 66 2c 20 66 68 | 2e 6d 44 61 74 65 29 3b |diff, fh|.mDate);|
|00002500| 0a 58 09 7d 0a 58 09 63 | 6c 6f 73 65 28 66 64 29 |.X.}.X.c|lose(fd)|
|00002510| 3b 0a 58 09 69 66 20 28 | 72 6d 66 69 6c 65 73 29 |;.X.if (|rmfiles)|
|00002520| 20 75 6e 6c 69 6e 6b 28 | 6e 62 75 66 29 3b 09 2f | unlink(|nbuf);./|
|00002530| 2a 20 69 67 6e 6f 72 65 | 20 65 72 72 6f 72 73 20 |* ignore| errors |
|00002540| 2a 2f 0a 58 0a 58 09 63 | 72 63 20 3d 20 75 70 64 |*/.X.X.c|rc = upd|
|00002550| 63 72 63 28 30 2c 26 66 | 68 2c 28 73 69 7a 65 6f |crc(0,&f|h,(sizeo|
|00002560| 66 20 66 68 29 2d 32 29 | 3b 0a 58 09 63 70 32 28 |f fh)-2)|;.X.cp2(|
|00002570| 63 72 63 2c 20 66 68 2e | 68 64 72 43 52 43 29 3b |crc, fh.|hdrCRC);|
|00002580| 0a 58 0a 58 09 66 70 6f | 73 32 20 3d 20 6c 73 65 |.X.X.fpo|s2 = lse|
|00002590| 65 6b 28 6f 66 64 2c 30 | 2c 31 29 3b 09 09 2f 2a |ek(ofd,0|,1);../*|
|000025a0| 20 72 65 6d 65 6d 62 65 | 72 20 77 68 65 72 65 20 | remembe|r where |
|000025b0| 77 65 20 61 72 65 20 2a | 2f 0a 58 09 6c 73 65 65 |we are *|/.X.lsee|
|000025c0| 6b 28 6f 66 64 2c 66 70 | 6f 73 31 2c 30 29 3b 09 |k(ofd,fp|os1,0);.|
|000025d0| 09 09 09 2f 2a 20 73 65 | 65 6b 20 62 61 63 6b 20 |.../* se|ek back |
|000025e0| 6f 76 65 72 20 66 69 6c | 65 28 73 29 20 61 6e 64 |over fil|e(s) and|
|000025f0| 20 68 65 61 64 65 72 20 | 2a 2f 0a 58 09 77 72 69 | header |*/.X.wri|
|00002600| 74 65 28 6f 66 64 2c 26 | 66 68 2c 73 69 7a 65 6f |te(ofd,&|fh,sizeo|
|00002610| 66 20 66 68 29 3b 09 09 | 2f 2a 20 77 72 69 74 65 |f fh);..|/* write|
|00002620| 20 62 61 63 6b 20 68 65 | 61 64 65 72 20 2a 2f 0a | back he|ader */.|
|00002630| 58 09 66 70 6f 73 32 3d | 6c 73 65 65 6b 28 6f 66 |X.fpos2=|lseek(of|
|00002640| 64 2c 66 70 6f 73 32 2c | 30 29 3b 09 09 09 09 2f |d,fpos2,|0);..../|
|00002650| 2a 20 73 65 65 6b 20 66 | 6f 72 77 61 72 64 20 66 |* seek f|orward f|
|00002660| 69 6c 65 20 2a 2f 0a 58 | 0a 58 09 72 65 74 75 72 |ile */.X|.X.retur|
|00002670| 6e 20 28 66 70 6f 73 32 | 20 2d 20 66 70 6f 73 31 |n (fpos2| - fpos1|
|00002680| 29 3b 0a 58 7d 0a 58 09 | 0a 58 64 6f 66 6f 72 6b |);.X}.X.|.Xdofork|
|00002690| 28 6e 61 6d 65 29 0a 58 | 63 68 61 72 20 6e 61 6d |(name).X|char nam|
|000026a0| 65 5b 5d 3b 0a 58 7b 0a | 58 09 46 49 4c 45 20 2a |e[];.X{.|X.FILE *|
|000026b0| 66 73 3b 0a 58 09 69 6e | 74 20 6e 2c 20 66 64 2c |fs;.X.in|t n, fd,|
|000026c0| 20 75 66 64 3b 0a 58 09 | 63 68 61 72 20 2a 70 3b | ufd;.X.|char *p;|
|000026d0| 0a 58 0a 58 09 69 66 20 | 28 28 66 64 3d 6f 70 65 |.X.X.if |((fd=ope|
|000026e0| 6e 28 6e 61 6d 65 2c 30 | 29 29 3c 30 29 20 7b 0a |n(name,0|))<0) {.|
|000026f0| 58 09 09 70 65 72 72 6f | 72 28 6e 61 6d 65 29 3b |X..perro|r(name);|
|00002700| 0a 58 09 09 72 65 74 75 | 72 6e 20 30 3b 0a 58 09 |.X..retu|rn 0;.X.|
|00002710| 7d 20 20 20 0a 58 09 69 | 66 20 28 75 6e 69 78 66 |} .X.i|f (unixf|
|00002720| 29 09 09 2f 2a 20 62 75 | 69 6c 64 20 63 6f 6e 76 |)../* bu|ild conv|
|00002730| 65 72 73 69 6f 6e 20 66 | 69 6c 65 20 2a 2f 0a 58 |ersion f|ile */.X|
|00002740| 09 09 69 66 20 28 28 75 | 66 64 3d 63 72 65 61 74 |..if ((u|fd=creat|
|00002750| 28 22 73 69 74 2b 74 65 | 6d 70 22 2c 30 36 34 34 |("sit+te|mp",0644|
|00002760| 29 29 3c 30 29 20 7b 0a | 58 09 09 09 70 65 72 72 |))<0) {.|X...perr|
|00002770| 6f 72 28 22 73 69 74 2b | 74 65 6d 70 22 29 3b 0a |or("sit+|temp");.|
|00002780| 58 09 09 09 72 65 74 75 | 72 6e 20 30 3b 0a 58 09 |X...retu|rn 0;.X.|
|00002790| 09 7d 20 20 20 0a 58 09 | 2f 2a 20 64 6f 20 63 72 |.} .X.|/* do cr|
|000027a0| 63 20 6f 66 20 66 69 6c | 65 3a 20 2a 2f 0a 58 09 |c of fil|e: */.X.|
|000027b0| 63 72 63 20 3d 20 30 3b | 0a 58 09 77 68 69 6c 65 |crc = 0;|.X.while|
|000027c0| 20 28 28 6e 3d 72 65 61 | 64 28 66 64 2c 62 75 66 | ((n=rea|d(fd,buf|
|000027d0| 2c 42 55 46 53 49 5a 29 | 29 3e 30 29 20 7b 0a 58 |,BUFSIZ)|)>0) {.X|
|000027e0| 09 09 69 66 20 28 75 6e | 69 78 66 29 20 7b 09 2f |..if (un|ixf) {./|
|000027f0| 2a 20 63 6f 6e 76 65 72 | 74 20 27 5c 6e 27 20 74 |* conver|t '\n' t|
|00002800| 6f 20 27 5c 72 27 20 2a | 2f 0a 58 09 09 09 66 6f |o '\r' *|/.X...fo|
|00002810| 72 20 28 70 3d 62 75 66 | 3b 20 70 3c 26 62 75 66 |r (p=buf|; p<&buf|
|00002820| 5b 6e 5d 3b 20 70 2b 2b | 29 0a 58 09 09 09 09 69 |[n]; p++|).X....i|
|00002830| 66 20 28 2a 70 20 3d 3d | 20 27 5c 6e 27 29 20 2a |f (*p ==| '\n') *|
|00002840| 70 20 3d 20 27 5c 72 27 | 3b 0a 58 09 09 09 77 72 |p = '\r'|;.X...wr|
|00002850| 69 74 65 28 75 66 64 2c | 62 75 66 2c 6e 29 3b 0a |ite(ufd,|buf,n);.|
|00002860| 58 09 09 7d 0a 58 09 09 | 63 72 63 20 3d 20 75 70 |X..}.X..|crc = up|
|00002870| 64 63 72 63 28 63 72 63 | 2c 62 75 66 2c 6e 29 3b |dcrc(crc|,buf,n);|
|00002880| 0a 58 09 7d 0a 58 09 63 | 6c 6f 73 65 28 66 64 29 |.X.}.X.c|lose(fd)|
|00002890| 3b 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 6f 70 65 6e |;.X./*.X|. * open|
|000028a0| 20 70 69 70 65 20 74 6f | 20 63 6f 6d 70 72 65 73 | pipe to| compres|
|000028b0| 73 20 66 69 6c 65 0a 58 | 09 20 2a 20 20 20 49 66 |s file.X|. * If|
|000028c0| 20 61 20 75 6e 69 78 20 | 66 69 6c 65 20 28 27 5c | a unix |file ('\|
|000028d0| 6e 27 20 2d 3e 20 27 5c | 72 27 20 63 6f 6e 76 65 |n' -> '\|r' conve|
|000028e0| 72 73 69 6f 6e 29 20 27 | 73 69 74 2b 74 65 6d 70 |rsion) '|sit+temp|
|000028f0| 27 20 77 69 6c 6c 20 62 | 65 20 61 20 6e 65 77 20 |' will b|e a new |
|00002900| 63 6f 70 79 0a 58 09 20 | 2a 20 20 20 77 69 74 68 |copy.X. |* with|
|00002910| 20 74 68 65 20 63 6f 6e | 76 65 72 73 69 6f 6e 20 | the con|version |
|00002920| 64 6f 6e 65 2e 09 4f 74 | 68 65 72 77 69 73 65 2c |done..Ot|herwise,|
|00002930| 20 27 73 69 74 2b 74 65 | 6d 70 27 20 69 73 20 6a | 'sit+te|mp' is j|
|00002940| 75 73 74 20 61 20 6c 69 | 6e 6b 20 74 6f 20 0a 58 |ust a li|nk to .X|
|00002950| 09 20 2a 20 20 20 74 68 | 65 20 69 6e 70 75 74 20 |. * th|e input |
|00002960| 66 69 6c 65 2e 0a 58 09 | 20 2a 2f 0a 58 09 69 66 |file..X.| */.X.if|
|00002970| 20 28 75 6e 69 78 66 29 | 0a 58 09 09 63 6c 6f 73 | (unixf)|.X..clos|
|00002980| 65 28 75 66 64 29 3b 0a | 58 09 65 6c 73 65 20 6c |e(ufd);.|X.else l|
|00002990| 69 6e 6b 28 6e 61 6d 65 | 2c 22 73 69 74 2b 74 65 |ink(name|,"sit+te|
|000029a0| 6d 70 22 29 3b 0a 58 09 | 66 73 20 3d 20 70 6f 70 |mp");.X.|fs = pop|
|000029b0| 65 6e 28 22 63 6f 6d 70 | 72 65 73 73 20 2d 63 20 |en("comp|ress -c |
|000029c0| 2d 6e 20 2d 62 20 31 34 | 20 73 69 74 2b 74 65 6d |-n -b 14| sit+tem|
|000029d0| 70 22 2c 22 72 22 29 3b | 0a 58 09 69 66 20 28 66 |p","r");|.X.if (f|
|000029e0| 73 20 3d 3d 20 4e 55 4c | 4c 29 20 7b 0a 58 09 09 |s == NUL|L) {.X..|
|000029f0| 70 65 72 72 6f 72 28 6e | 61 6d 65 29 3b 0a 58 09 |perror(n|ame);.X.|
|00002a00| 09 72 65 74 75 72 6e 20 | 30 3b 0a 58 09 7d 0a 58 |.return |0;.X.}.X|
|00002a10| 09 2f 2a 20 77 72 69 74 | 65 20 6f 75 74 20 63 6f |./* writ|e out co|
|00002a20| 6d 70 72 65 73 73 65 64 | 20 66 69 6c 65 20 2a 2f |mpressed| file */|
|00002a30| 0a 58 09 63 6c 65 6e 20 | 3d 20 30 3b 0a 58 09 77 |.X.clen |= 0;.X.w|
|00002a40| 68 69 6c 65 20 28 28 6e | 3d 66 72 65 61 64 28 62 |hile ((n|=fread(b|
|00002a50| 75 66 2c 31 2c 42 55 46 | 53 49 5a 2c 66 73 29 29 |uf,1,BUF|SIZ,fs))|
|00002a60| 3e 30 29 20 7b 0a 58 09 | 09 77 72 69 74 65 28 6f |>0) {.X.|.write(o|
|00002a70| 66 64 2c 62 75 66 2c 6e | 29 3b 0a 58 09 09 63 6c |fd,buf,n|);.X..cl|
|00002a80| 65 6e 20 2b 3d 20 6e 3b | 0a 58 09 7d 0a 58 09 70 |en += n;|.X.}.X.p|
|00002a90| 63 6c 6f 73 65 28 66 73 | 29 3b 0a 58 09 75 6e 6c |close(fs|);.X.unl|
|00002aa0| 69 6e 6b 28 22 73 69 74 | 2b 74 65 6d 70 22 29 3b |ink("sit|+temp");|
|00002ab0| 0a 58 7d 0a 58 0a 58 63 | 70 32 28 78 2c 64 65 73 |.X}.X.Xc|p2(x,des|
|00002ac0| 74 29 0a 58 75 6e 73 69 | 67 6e 65 64 20 73 68 6f |t).Xunsi|gned sho|
|00002ad0| 72 74 20 78 3b 0a 58 63 | 68 61 72 20 64 65 73 74 |rt x;.Xc|har dest|
|00002ae0| 5b 5d 3b 0a 58 7b 0a 58 | 09 64 65 73 74 5b 30 5d |[];.X{.X|.dest[0]|
|00002af0| 20 3d 20 78 3e 3e 38 3b | 0a 58 09 64 65 73 74 5b | = x>>8;|.X.dest[|
|00002b00| 31 5d 20 3d 20 78 3b 0a | 58 7d 0a 58 0a 58 63 70 |1] = x;.|X}.X.Xcp|
|00002b10| 34 28 78 2c 64 65 73 74 | 29 0a 58 75 6e 73 69 67 |4(x,dest|).Xunsig|
|00002b20| 6e 65 64 20 6c 6f 6e 67 | 20 78 3b 0a 58 63 68 61 |ned long| x;.Xcha|
|00002b30| 72 20 64 65 73 74 5b 5d | 3b 0a 58 7b 0a 58 09 64 |r dest[]|;.X{.X.d|
|00002b40| 65 73 74 5b 30 5d 20 3d | 20 78 3e 3e 32 34 3b 0a |est[0] =| x>>24;.|
|00002b50| 58 09 64 65 73 74 5b 31 | 5d 20 3d 20 78 3e 3e 31 |X.dest[1|] = x>>1|
|00002b60| 36 3b 0a 58 09 64 65 73 | 74 5b 32 5d 20 3d 20 78 |6;.X.des|t[2] = x|
|00002b70| 3e 3e 38 3b 0a 58 09 64 | 65 73 74 5b 33 5d 20 3d |>>8;.X.d|est[3] =|
|00002b80| 20 78 3b 0a 58 7d 0a 53 | 48 41 52 5f 45 4f 46 0a | x;.X}.S|HAR_EOF.|
|00002b90| 69 66 20 74 65 73 74 20 | 36 30 36 33 20 2d 6e 65 |if test |6063 -ne|
|00002ba0| 20 22 60 77 63 20 2d 63 | 20 3c 20 27 73 69 74 2e | "`wc -c| < 'sit.|
|00002bb0| 63 27 60 22 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |c'`".the|n..echo |
|00002bc0| 73 68 61 72 3a 20 65 72 | 72 6f 72 20 74 72 61 6e |shar: er|ror tran|
|00002bd0| 73 6d 69 74 74 69 6e 67 | 20 22 27 73 69 74 2e 63 |smitting| "'sit.c|
|00002be0| 27 22 20 27 28 73 68 6f | 75 6c 64 20 68 61 76 65 |'" '(sho|uld have|
|00002bf0| 20 62 65 65 6e 20 36 30 | 36 33 20 63 68 61 72 61 | been 60|63 chara|
|00002c00| 63 74 65 72 73 29 27 0a | 66 69 0a 66 69 20 23 20 |cters)'.|fi.fi # |
|00002c10| 65 6e 64 20 6f 66 20 6f | 76 65 72 77 72 69 74 69 |end of o|verwriti|
|00002c20| 6e 67 20 63 68 65 63 6b | 0a 65 63 68 6f 20 73 68 |ng check|.echo sh|
|00002c30| 61 72 3a 20 65 78 74 72 | 61 63 74 69 6e 67 20 22 |ar: extr|acting "|
|00002c40| 27 75 70 64 63 72 63 2e | 63 27 22 20 27 28 35 38 |'updcrc.|c'" '(58|
|00002c50| 34 38 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |48 chara|cters)'.|
|00002c60| 69 66 20 74 65 73 74 20 | 2d 66 20 27 75 70 64 63 |if test |-f 'updc|
|00002c70| 72 63 2e 63 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |rc.c'.th|en..echo|
|00002c80| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|00002c90| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|00002ca0| 69 6e 67 20 66 69 6c 65 | 20 22 27 75 70 64 63 72 |ing file| "'updcr|
|00002cb0| 63 2e 63 27 22 0a 65 6c | 73 65 0a 73 65 64 20 27 |c.c'".el|se.sed '|
|00002cc0| 73 2f 5e 58 2f 2f 27 20 | 3c 3c 20 5c 53 48 41 52 |s/^X//' |<< \SHAR|
|00002cd0| 5f 45 4f 46 20 3e 20 27 | 75 70 64 63 72 63 2e 63 |_EOF > '|updcrc.c|
|00002ce0| 27 0a 58 2f 2a 20 75 70 | 64 63 72 63 28 33 29 2c |'.X/* up|dcrc(3),|
|00002cf0| 20 63 72 63 28 31 29 20 | 2d 20 63 61 6c 63 75 6c | crc(1) |- calcul|
|00002d00| 61 74 65 20 63 72 63 20 | 70 6f 6c 79 6e 6f 6d 69 |ate crc |polynomi|
|00002d10| 61 6c 73 0a 58 20 2a 0a | 58 20 2a 20 43 61 6c 63 |als.X *.|X * Calc|
|00002d20| 75 6c 61 74 65 2c 20 69 | 6e 74 65 6c 6c 69 67 65 |ulate, i|ntellige|
|00002d30| 6e 74 6c 79 2c 20 74 68 | 65 20 43 52 43 20 6f 66 |ntly, th|e CRC of|
|00002d40| 20 61 20 64 61 74 61 73 | 65 74 20 69 6e 63 72 65 | a datas|et incre|
|00002d50| 6d 65 6e 74 61 6c 6c 79 | 20 67 69 76 65 6e 20 61 |mentally| given a|
|00002d60| 20 0a 58 20 2a 20 62 75 | 66 66 65 72 20 66 75 6c | .X * bu|ffer ful|
|00002d70| 6c 20 61 74 20 61 20 74 | 69 6d 65 2e 0a 58 20 2a |l at a t|ime..X *|
|00002d80| 20 0a 58 20 2a 20 55 73 | 61 67 65 3a 0a 58 20 2a | .X * Us|age:.X *|
|00002d90| 20 09 6e 65 77 63 72 63 | 20 3d 20 75 70 64 63 72 | .newcrc| = updcr|
|00002da0| 63 28 20 6f 6c 64 63 72 | 63 2c 20 62 75 66 61 64 |c( oldcr|c, bufad|
|00002db0| 72 2c 20 62 75 66 6c 65 | 6e 20 29 0a 58 20 2a 20 |r, bufle|n ).X * |
|00002dc0| 09 09 75 6e 73 69 67 6e | 65 64 20 69 6e 74 20 6f |..unsign|ed int o|
|00002dd0| 6c 64 63 72 63 2c 20 62 | 75 66 6c 65 6e 3b 0a 58 |ldcrc, b|uflen;.X|
|00002de0| 20 2a 20 09 09 63 68 61 | 72 20 2a 62 75 66 61 64 | * ..cha|r *bufad|
|00002df0| 72 3b 0a 58 20 2a 0a 58 | 20 2a 20 43 6f 6d 70 69 |r;.X *.X| * Compi|
|00002e00| 6c 69 6e 67 20 77 69 74 | 68 20 2d 44 54 45 53 54 |ling wit|h -DTEST|
|00002e10| 20 63 72 65 61 74 65 73 | 20 61 20 70 72 6f 67 72 | creates| a progr|
|00002e20| 61 6d 20 74 6f 20 70 72 | 69 6e 74 20 74 68 65 20 |am to pr|int the |
|00002e30| 43 52 43 20 6f 66 20 73 | 74 64 69 6e 20 74 6f 20 |CRC of s|tdin to |
|00002e40| 73 74 64 6f 75 74 2e 0a | 58 20 2a 20 43 6f 6d 70 |stdout..|X * Comp|
|00002e50| 69 6c 65 20 77 69 74 68 | 20 2d 44 4d 41 4b 45 54 |ile with| -DMAKET|
|00002e60| 41 42 20 74 6f 20 70 72 | 69 6e 74 20 76 61 6c 75 |AB to pr|int valu|
|00002e70| 65 73 20 66 6f 72 20 63 | 72 63 74 61 62 20 74 6f |es for c|rctab to|
|00002e80| 20 73 74 64 6f 75 74 2e | 20 20 49 66 20 79 6f 75 | stdout.| If you|
|00002e90| 20 63 68 61 6e 67 65 0a | 58 20 2a 09 74 68 65 20 | change.|X *.the |
|00002ea0| 43 52 43 20 70 6f 6c 79 | 6e 6f 6d 69 61 6c 20 70 |CRC poly|nomial p|
|00002eb0| 61 72 61 6d 65 74 65 72 | 73 2c 20 62 65 20 73 75 |arameter|s, be su|
|00002ec0| 72 65 20 74 6f 20 64 6f | 20 74 68 69 73 20 61 6e |re to do| this an|
|00002ed0| 64 20 63 68 61 6e 67 65 | 0a 58 20 2a 09 63 72 63 |d change|.X *.crc|
|00002ee0| 74 61 62 27 73 20 69 6e | 69 74 69 61 6c 20 76 61 |tab's in|itial va|
|00002ef0| 6c 75 65 2e 0a 58 20 2a | 0a 58 20 2a 20 4e 6f 74 |lue..X *|.X * Not|
|00002f00| 65 73 3a 0a 58 20 2a 20 | 20 52 65 67 61 72 64 73 |es:.X * | Regards|
|00002f10| 20 74 68 65 20 64 61 74 | 61 20 73 74 72 65 61 6d | the dat|a stream|
|00002f20| 20 61 73 20 61 6e 20 69 | 6e 74 65 67 65 72 20 77 | as an i|nteger w|
|00002f30| 68 6f 73 65 20 4d 53 42 | 20 69 73 20 74 68 65 20 |hose MSB| is the |
|00002f40| 4d 53 42 20 6f 66 20 74 | 68 65 20 66 69 72 73 74 |MSB of t|he first|
|00002f50| 0a 58 20 2a 20 20 62 79 | 74 65 20 72 65 63 69 65 |.X * by|te recie|
|00002f60| 76 65 64 2e 20 20 54 68 | 69 73 20 6e 75 6d 62 65 |ved. Th|is numbe|
|00002f70| 72 20 69 73 20 27 64 69 | 76 69 64 65 64 27 20 28 |r is 'di|vided' (|
|00002f80| 75 73 69 6e 67 20 78 6f | 72 20 69 6e 73 74 65 61 |using xo|r instea|
|00002f90| 64 20 6f 66 20 73 75 62 | 74 72 61 63 74 69 6f 6e |d of sub|traction|
|00002fa0| 29 0a 58 20 2a 20 20 62 | 79 20 74 68 65 20 63 72 |).X * b|y the cr|
|00002fb0| 63 2d 70 6f 6c 79 6e 6f | 6d 69 61 6c 20 50 2e 0a |c-polyno|mial P..|
|00002fc0| 58 20 2a 20 20 58 4d 4f | 44 45 4d 20 64 6f 65 73 |X * XMO|DEM does|
|00002fd0| 20 74 68 69 6e 67 73 20 | 61 20 6c 69 74 74 6c 65 | things |a little|
|00002fe0| 20 64 69 66 66 65 72 65 | 6e 74 6c 79 2c 20 65 73 | differe|ntly, es|
|00002ff0| 73 65 6e 74 69 61 6c 6c | 79 20 74 72 65 61 74 69 |sentiall|y treati|
|00003000| 6e 67 20 74 68 65 20 4c | 53 42 20 6f 66 0a 58 20 |ng the L|SB of.X |
|00003010| 2a 20 74 68 65 20 66 69 | 72 73 74 20 64 61 74 61 |* the fi|rst data|
|00003020| 20 62 79 74 65 20 61 73 | 20 74 68 65 20 4d 53 42 | byte as| the MSB|
|00003030| 20 6f 66 20 74 68 65 20 | 69 6e 74 65 67 65 72 2e | of the |integer.|
|00003040| 20 44 65 66 69 6e 65 20 | 53 57 41 50 50 45 44 20 | Define |SWAPPED |
|00003050| 74 6f 20 6d 61 6b 65 0a | 58 20 2a 20 74 68 69 6e |to make.|X * thin|
|00003060| 67 73 20 62 65 68 61 76 | 65 20 69 6e 20 74 68 69 |gs behav|e in thi|
|00003070| 73 20 6d 61 6e 6e 65 72 | 2e 0a 58 20 2a 0a 58 20 |s manner|..X *.X |
|00003080| 2a 20 41 75 74 68 6f 72 | 3a 09 4d 61 72 6b 20 47 |* Author|:.Mark G|
|00003090| 2e 20 4d 65 6e 64 65 6c | 2c 20 37 2f 38 36 0a 58 |. Mendel|, 7/86.X|
|000030a0| 20 2a 09 09 55 55 43 50 | 3a 20 69 68 6e 70 34 21 | *..UUCP|: ihnp4!|
|000030b0| 75 6d 6e 2d 63 73 21 68 | 79 70 65 72 21 6d 61 72 |umn-cs!h|yper!mar|
|000030c0| 6b 2c 20 47 45 6e 69 65 | 3a 20 6d 67 6d 0a 58 20 |k, GEnie|: mgm.X |
|000030d0| 2a 2f 0a 58 0a 58 2f 2a | 20 54 68 65 20 43 52 43 |*/.X.X/*| The CRC|
|000030e0| 20 70 6f 6c 79 6e 6f 6d | 69 61 6c 2e 0a 58 20 2a | polynom|ial..X *|
|000030f0| 20 54 68 65 73 65 20 34 | 20 76 61 6c 75 65 73 20 | These 4| values |
|00003100| 64 65 66 69 6e 65 20 74 | 68 65 20 63 72 63 2d 70 |define t|he crc-p|
|00003110| 6f 6c 79 6e 6f 6d 69 61 | 6c 2e 0a 58 20 2a 20 49 |olynomia|l..X * I|
|00003120| 66 20 79 6f 75 20 63 68 | 61 6e 67 65 20 74 68 65 |f you ch|ange the|
|00003130| 6d 2c 20 79 6f 75 20 6d | 75 73 74 20 63 68 61 6e |m, you m|ust chan|
|00003140| 67 65 20 63 72 63 74 61 | 62 5b 5d 27 73 20 69 6e |ge crcta|b[]'s in|
|00003150| 69 74 69 61 6c 20 76 61 | 6c 75 65 20 74 6f 20 77 |itial va|lue to w|
|00003160| 68 61 74 20 69 73 0a 58 | 20 2a 20 70 72 69 6e 74 |hat is.X| * print|
|00003170| 65 64 20 62 79 20 69 6e | 69 74 63 72 63 74 61 62 |ed by in|itcrctab|
|00003180| 28 29 20 5b 73 65 65 20 | 27 63 6f 6d 70 69 6c 65 |() [see |'compile|
|00003190| 20 77 69 74 68 20 2d 44 | 4d 41 4b 45 54 41 42 27 | with -D|MAKETAB'|
|000031a0| 20 61 62 6f 76 65 5d 2e | 0a 58 20 2a 2f 0a 58 20 | above].|.X */.X |
|000031b0| 20 20 20 2f 2a 20 56 61 | 6c 75 65 20 75 73 65 64 | /* Va|lue used|
|000031c0| 20 62 79 3a 09 20 20 20 | 20 09 09 43 49 54 54 09 | by:. | ..CITT.|
|000031d0| 58 4d 4f 44 45 4d 09 41 | 52 43 20 20 09 2a 2f 0a |XMODEM.A|RC .*/.|
|000031e0| 58 23 64 65 66 69 6e 65 | 09 50 09 20 30 78 41 30 |X#define|.P. 0xA0|
|000031f0| 30 31 09 20 2f 2a 20 74 | 68 65 20 70 6f 6c 79 3a |01. /* t|he poly:|
|00003200| 09 30 78 31 30 32 31 09 | 30 78 31 30 32 31 09 41 |.0x1021.|0x1021.A|
|00003210| 30 30 31 09 2a 2f 0a 58 | 23 64 65 66 69 6e 65 20 |001.*/.X|#define |
|00003220| 49 4e 49 54 5f 43 52 43 | 20 30 4c 09 20 2f 2a 20 |INIT_CRC| 0L. /* |
|00003230| 69 6e 69 74 20 76 61 6c | 75 65 3a 09 2d 31 09 30 |init val|ue:.-1.0|
|00003240| 09 30 09 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 53 |.0.*/.X#|define S|
|00003250| 57 41 50 50 45 44 09 09 | 20 2f 2a 20 62 69 74 20 |WAPPED..| /* bit |
|00003260| 6f 72 64 65 72 3a 09 75 | 6e 64 65 66 09 64 65 66 |order:.u|ndef.def|
|00003270| 69 6e 65 64 09 64 65 66 | 69 6e 65 64 20 2a 2f 0a |ined.def|ined */.|
|00003280| 58 23 64 65 66 69 6e 65 | 20 57 09 31 36 09 20 2f |X#define| W.16. /|
|00003290| 2a 20 62 69 74 73 20 69 | 6e 20 43 52 43 3a 31 36 |* bits i|n CRC:16|
|000032a0| 09 31 36 09 31 36 09 2a | 2f 0a 58 0a 58 20 20 20 |.16.16.*|/.X.X |
|000032b0| 20 2f 2a 20 64 61 74 61 | 20 74 79 70 65 20 74 68 | /* data| type th|
|000032c0| 61 74 20 68 6f 6c 64 73 | 20 61 20 57 2d 62 69 74 |at holds| a W-bit|
|000032d0| 20 75 6e 73 69 67 6e 65 | 64 20 69 6e 74 65 67 65 | unsigne|d intege|
|000032e0| 72 20 2a 2f 0a 58 23 69 | 66 20 57 20 3c 3d 20 31 |r */.X#i|f W <= 1|
|000032f0| 36 0a 58 23 20 20 64 65 | 66 69 6e 65 20 57 54 59 |6.X# de|fine WTY|
|00003300| 50 45 09 75 6e 73 69 67 | 6e 65 64 20 73 68 6f 72 |PE.unsig|ned shor|
|00003310| 74 0a 58 23 65 6c 73 65 | 0a 58 23 20 20 64 65 66 |t.X#else|.X# def|
|00003320| 69 6e 65 20 57 54 59 50 | 45 20 20 20 75 6e 73 69 |ine WTYP|E unsi|
|00003330| 67 6e 65 64 20 6c 6f 6e | 67 0a 58 23 65 6e 64 69 |gned lon|g.X#endi|
|00003340| 66 0a 58 0a 58 20 20 20 | 20 2f 2a 20 74 68 65 20 |f.X.X | /* the |
|00003350| 6e 75 6d 62 65 72 20 6f | 66 20 62 69 74 73 20 70 |number o|f bits p|
|00003360| 65 72 20 63 68 61 72 3a | 20 64 6f 6e 27 74 20 63 |er char:| don't c|
|00003370| 68 61 6e 67 65 20 69 74 | 2e 20 2a 2f 0a 58 23 64 |hange it|. */.X#d|
|00003380| 65 66 69 6e 65 20 42 09 | 38 0a 58 0a 58 73 74 61 |efine B.|8.X.Xsta|
|00003390| 74 69 63 20 57 54 59 50 | 45 20 63 72 63 74 61 62 |tic WTYP|E crctab|
|000033a0| 5b 31 3c 3c 42 5d 20 3d | 20 2f 2a 20 61 73 20 63 |[1<<B] =| /* as c|
|000033b0| 61 6c 63 75 6c 61 74 65 | 64 20 62 79 20 69 6e 69 |alculate|d by ini|
|000033c0| 74 63 72 63 74 61 62 28 | 29 20 2a 2f 20 7b 0a 58 |tcrctab(|) */ {.X|
|000033d0| 30 78 30 2c 20 20 30 78 | 63 30 63 31 2c 20 20 30 |0x0, 0x|c0c1, 0|
|000033e0| 78 63 31 38 31 2c 20 20 | 30 78 31 34 30 2c 20 20 |xc181, |0x140, |
|000033f0| 30 78 63 33 30 31 2c 20 | 20 30 78 33 63 30 2c 20 |0xc301, | 0x3c0, |
|00003400| 20 30 78 32 38 30 2c 20 | 20 30 78 63 32 34 31 2c | 0x280, | 0xc241,|
|00003410| 0a 58 30 78 63 36 30 31 | 2c 20 20 30 78 36 63 30 |.X0xc601|, 0x6c0|
|00003420| 2c 20 20 30 78 37 38 30 | 2c 20 20 30 78 63 37 34 |, 0x780|, 0xc74|
|00003430| 31 2c 20 20 30 78 35 30 | 30 2c 20 20 30 78 63 35 |1, 0x50|0, 0xc5|
|00003440| 63 31 2c 20 20 30 78 63 | 34 38 31 2c 20 20 30 78 |c1, 0xc|481, 0x|
|00003450| 34 34 30 2c 0a 58 30 78 | 63 63 30 31 2c 20 20 30 |440,.X0x|cc01, 0|
|00003460| 78 63 63 30 2c 20 20 30 | 78 64 38 30 2c 20 20 30 |xcc0, 0|xd80, 0|
|00003470| 78 63 64 34 31 2c 20 20 | 30 78 66 30 30 2c 20 20 |xcd41, |0xf00, |
|00003480| 30 78 63 66 63 31 2c 20 | 20 30 78 63 65 38 31 2c |0xcfc1, | 0xce81,|
|00003490| 20 20 30 78 65 34 30 2c | 0a 58 30 78 61 30 30 2c | 0xe40,|.X0xa00,|
|000034a0| 20 20 30 78 63 61 63 31 | 2c 20 20 30 78 63 62 38 | 0xcac1|, 0xcb8|
|000034b0| 31 2c 20 20 30 78 62 34 | 30 2c 20 20 30 78 63 39 |1, 0xb4|0, 0xc9|
|000034c0| 30 31 2c 20 20 30 78 39 | 63 30 2c 20 20 30 78 38 |01, 0x9|c0, 0x8|
|000034d0| 38 30 2c 20 20 30 78 63 | 38 34 31 2c 0a 58 30 78 |80, 0xc|841,.X0x|
|000034e0| 64 38 30 31 2c 20 20 30 | 78 31 38 63 30 2c 20 20 |d801, 0|x18c0, |
|000034f0| 30 78 31 39 38 30 2c 20 | 20 30 78 64 39 34 31 2c |0x1980, | 0xd941,|
|00003500| 20 20 30 78 31 62 30 30 | 2c 20 20 30 78 64 62 63 | 0x1b00|, 0xdbc|
|00003510| 31 2c 20 20 30 78 64 61 | 38 31 2c 20 20 30 78 31 |1, 0xda|81, 0x1|
|00003520| 61 34 30 2c 0a 58 30 78 | 31 65 30 30 2c 20 20 30 |a40,.X0x|1e00, 0|
|00003530| 78 64 65 63 31 2c 20 20 | 30 78 64 66 38 31 2c 20 |xdec1, |0xdf81, |
|00003540| 20 30 78 31 66 34 30 2c | 20 20 30 78 64 64 30 31 | 0x1f40,| 0xdd01|
|00003550| 2c 20 20 30 78 31 64 63 | 30 2c 20 20 30 78 31 63 |, 0x1dc|0, 0x1c|
|00003560| 38 30 2c 20 20 30 78 64 | 63 34 31 2c 0a 58 30 78 |80, 0xd|c41,.X0x|
|00003570| 31 34 30 30 2c 20 20 30 | 78 64 34 63 31 2c 20 20 |1400, 0|xd4c1, |
|00003580| 30 78 64 35 38 31 2c 20 | 20 30 78 31 35 34 30 2c |0xd581, | 0x1540,|
|00003590| 20 20 30 78 64 37 30 31 | 2c 20 20 30 78 31 37 63 | 0xd701|, 0x17c|
|000035a0| 30 2c 20 20 30 78 31 36 | 38 30 2c 20 20 30 78 64 |0, 0x16|80, 0xd|
|000035b0| 36 34 31 2c 0a 58 30 78 | 64 32 30 31 2c 20 20 30 |641,.X0x|d201, 0|
|000035c0| 78 31 32 63 30 2c 20 20 | 30 78 31 33 38 30 2c 20 |x12c0, |0x1380, |
|000035d0| 20 30 78 64 33 34 31 2c | 20 20 30 78 31 31 30 30 | 0xd341,| 0x1100|
|000035e0| 2c 20 20 30 78 64 31 63 | 31 2c 20 20 30 78 64 30 |, 0xd1c|1, 0xd0|
|000035f0| 38 31 2c 20 20 30 78 31 | 30 34 30 2c 0a 58 30 78 |81, 0x1|040,.X0x|
|00003600| 66 30 30 31 2c 20 20 30 | 78 33 30 63 30 2c 20 20 |f001, 0|x30c0, |
|00003610| 30 78 33 31 38 30 2c 20 | 20 30 78 66 31 34 31 2c |0x3180, | 0xf141,|
|00003620| 20 20 30 78 33 33 30 30 | 2c 20 20 30 78 66 33 63 | 0x3300|, 0xf3c|
|00003630| 31 2c 20 20 30 78 66 32 | 38 31 2c 20 20 30 78 33 |1, 0xf2|81, 0x3|
|00003640| 32 34 30 2c 0a 58 30 78 | 33 36 30 30 2c 20 20 30 |240,.X0x|3600, 0|
|00003650| 78 66 36 63 31 2c 20 20 | 30 78 66 37 38 31 2c 20 |xf6c1, |0xf781, |
|00003660| 20 30 78 33 37 34 30 2c | 20 20 30 78 66 35 30 31 | 0x3740,| 0xf501|
|00003670| 2c 20 20 30 78 33 35 63 | 30 2c 20 20 30 78 33 34 |, 0x35c|0, 0x34|
|00003680| 38 30 2c 20 20 30 78 66 | 34 34 31 2c 0a 58 30 78 |80, 0xf|441,.X0x|
|00003690| 33 63 30 30 2c 20 20 30 | 78 66 63 63 31 2c 20 20 |3c00, 0|xfcc1, |
|000036a0| 30 78 66 64 38 31 2c 20 | 20 30 78 33 64 34 30 2c |0xfd81, | 0x3d40,|
|000036b0| 20 20 30 78 66 66 30 31 | 2c 20 20 30 78 33 66 63 | 0xff01|, 0x3fc|
|000036c0| 30 2c 20 20 30 78 33 65 | 38 30 2c 20 20 30 78 66 |0, 0x3e|80, 0xf|
|000036d0| 65 34 31 2c 0a 58 30 78 | 66 61 30 31 2c 20 20 30 |e41,.X0x|fa01, 0|
|000036e0| 78 33 61 63 30 2c 20 20 | 30 78 33 62 38 30 2c 20 |x3ac0, |0x3b80, |
|000036f0| 20 30 78 66 62 34 31 2c | 20 20 30 78 33 39 30 30 | 0xfb41,| 0x3900|
|00003700| 2c 20 20 30 78 66 39 63 | 31 2c 20 20 30 78 66 38 |, 0xf9c|1, 0xf8|
|00003710| 38 31 2c 20 20 30 78 33 | 38 34 30 2c 0a 58 30 78 |81, 0x3|840,.X0x|
|00003720| 32 38 30 30 2c 20 20 30 | 78 65 38 63 31 2c 20 20 |2800, 0|xe8c1, |
|00003730| 30 78 65 39 38 31 2c 20 | 20 30 78 32 39 34 30 2c |0xe981, | 0x2940,|
|00003740| 20 20 30 78 65 62 30 31 | 2c 20 20 30 78 32 62 63 | 0xeb01|, 0x2bc|
|00003750| 30 2c 20 20 30 78 32 61 | 38 30 2c 20 20 30 78 65 |0, 0x2a|80, 0xe|
|00003760| 61 34 31 2c 0a 58 30 78 | 65 65 30 31 2c 20 20 30 |a41,.X0x|ee01, 0|
|00003770| 78 32 65 63 30 2c 20 20 | 30 78 32 66 38 30 2c 20 |x2ec0, |0x2f80, |
|00003780| 20 30 78 65 66 34 31 2c | 20 20 30 78 32 64 30 30 | 0xef41,| 0x2d00|
|00003790| 2c 20 20 30 78 65 64 63 | 31 2c 20 20 30 78 65 63 |, 0xedc|1, 0xec|
|000037a0| 38 31 2c 20 20 30 78 32 | 63 34 30 2c 0a 58 30 78 |81, 0x2|c40,.X0x|
|000037b0| 65 34 30 31 2c 20 20 30 | 78 32 34 63 30 2c 20 20 |e401, 0|x24c0, |
|000037c0| 30 78 32 35 38 30 2c 20 | 20 30 78 65 35 34 31 2c |0x2580, | 0xe541,|
|000037d0| 20 20 30 78 32 37 30 30 | 2c 20 20 30 78 65 37 63 | 0x2700|, 0xe7c|
|000037e0| 31 2c 20 20 30 78 65 36 | 38 31 2c 20 20 30 78 32 |1, 0xe6|81, 0x2|
|000037f0| 36 34 30 2c 0a 58 30 78 | 32 32 30 30 2c 20 20 30 |640,.X0x|2200, 0|
|00003800| 78 65 32 63 31 2c 20 20 | 30 78 65 33 38 31 2c 20 |xe2c1, |0xe381, |
|00003810| 20 30 78 32 33 34 30 2c | 20 20 30 78 65 31 30 31 | 0x2340,| 0xe101|
|00003820| 2c 20 20 30 78 32 31 63 | 30 2c 20 20 30 78 32 30 |, 0x21c|0, 0x20|
|00003830| 38 30 2c 20 20 30 78 65 | 30 34 31 2c 0a 58 30 78 |80, 0xe|041,.X0x|
|00003840| 61 30 30 31 2c 20 20 30 | 78 36 30 63 30 2c 20 20 |a001, 0|x60c0, |
|00003850| 30 78 36 31 38 30 2c 20 | 20 30 78 61 31 34 31 2c |0x6180, | 0xa141,|
|00003860| 20 20 30 78 36 33 30 30 | 2c 20 20 30 78 61 33 63 | 0x6300|, 0xa3c|
|00003870| 31 2c 20 20 30 78 61 32 | 38 31 2c 20 20 30 78 36 |1, 0xa2|81, 0x6|
|00003880| 32 34 30 2c 0a 58 30 78 | 36 36 30 30 2c 20 20 30 |240,.X0x|6600, 0|
|00003890| 78 61 36 63 31 2c 20 20 | 30 78 61 37 38 31 2c 20 |xa6c1, |0xa781, |
|000038a0| 20 30 78 36 37 34 30 2c | 20 20 30 78 61 35 30 31 | 0x6740,| 0xa501|
|000038b0| 2c 20 20 30 78 36 35 63 | 30 2c 20 20 30 78 36 34 |, 0x65c|0, 0x64|
|000038c0| 38 30 2c 20 20 30 78 61 | 34 34 31 2c 0a 58 30 78 |80, 0xa|441,.X0x|
|000038d0| 36 63 30 30 2c 20 20 30 | 78 61 63 63 31 2c 20 20 |6c00, 0|xacc1, |
|000038e0| 30 78 61 64 38 31 2c 20 | 20 30 78 36 64 34 30 2c |0xad81, | 0x6d40,|
|000038f0| 20 20 30 78 61 66 30 31 | 2c 20 20 30 78 36 66 63 | 0xaf01|, 0x6fc|
|00003900| 30 2c 20 20 30 78 36 65 | 38 30 2c 20 20 30 78 61 |0, 0x6e|80, 0xa|
|00003910| 65 34 31 2c 0a 58 30 78 | 61 61 30 31 2c 20 20 30 |e41,.X0x|aa01, 0|
|00003920| 78 36 61 63 30 2c 20 20 | 30 78 36 62 38 30 2c 20 |x6ac0, |0x6b80, |
|00003930| 20 30 78 61 62 34 31 2c | 20 20 30 78 36 39 30 30 | 0xab41,| 0x6900|
|00003940| 2c 20 20 30 78 61 39 63 | 31 2c 20 20 30 78 61 38 |, 0xa9c|1, 0xa8|
|00003950| 38 31 2c 20 20 30 78 36 | 38 34 30 2c 0a 58 30 78 |81, 0x6|840,.X0x|
|00003960| 37 38 30 30 2c 20 20 30 | 78 62 38 63 31 2c 20 20 |7800, 0|xb8c1, |
|00003970| 30 78 62 39 38 31 2c 20 | 20 30 78 37 39 34 30 2c |0xb981, | 0x7940,|
|00003980| 20 20 30 78 62 62 30 31 | 2c 20 20 30 78 37 62 63 | 0xbb01|, 0x7bc|
|00003990| 30 2c 20 20 30 78 37 61 | 38 30 2c 20 20 30 78 62 |0, 0x7a|80, 0xb|
|000039a0| 61 34 31 2c 0a 58 30 78 | 62 65 30 31 2c 20 20 30 |a41,.X0x|be01, 0|
|000039b0| 78 37 65 63 30 2c 20 20 | 30 78 37 66 38 30 2c 20 |x7ec0, |0x7f80, |
|000039c0| 20 30 78 62 66 34 31 2c | 20 20 30 78 37 64 30 30 | 0xbf41,| 0x7d00|
|000039d0| 2c 20 20 30 78 62 64 63 | 31 2c 20 20 30 78 62 63 |, 0xbdc|1, 0xbc|
|000039e0| 38 31 2c 20 20 30 78 37 | 63 34 30 2c 0a 58 30 78 |81, 0x7|c40,.X0x|
|000039f0| 62 34 30 31 2c 20 20 30 | 78 37 34 63 30 2c 20 20 |b401, 0|x74c0, |
|00003a00| 30 78 37 35 38 30 2c 20 | 20 30 78 62 35 34 31 2c |0x7580, | 0xb541,|
|00003a10| 20 20 30 78 37 37 30 30 | 2c 20 20 30 78 62 37 63 | 0x7700|, 0xb7c|
|00003a20| 31 2c 20 20 30 78 62 36 | 38 31 2c 20 20 30 78 37 |1, 0xb6|81, 0x7|
|00003a30| 36 34 30 2c 0a 58 30 78 | 37 32 30 30 2c 20 20 30 |640,.X0x|7200, 0|
|00003a40| 78 62 32 63 31 2c 20 20 | 30 78 62 33 38 31 2c 20 |xb2c1, |0xb381, |
|00003a50| 20 30 78 37 33 34 30 2c | 20 20 30 78 62 31 30 31 | 0x7340,| 0xb101|
|00003a60| 2c 20 20 30 78 37 31 63 | 30 2c 20 20 30 78 37 30 |, 0x71c|0, 0x70|
|00003a70| 38 30 2c 20 20 30 78 62 | 30 34 31 2c 0a 58 30 78 |80, 0xb|041,.X0x|
|00003a80| 35 30 30 30 2c 20 20 30 | 78 39 30 63 31 2c 20 20 |5000, 0|x90c1, |
|00003a90| 30 78 39 31 38 31 2c 20 | 20 30 78 35 31 34 30 2c |0x9181, | 0x5140,|
|00003aa0| 20 20 30 78 39 33 30 31 | 2c 20 20 30 78 35 33 63 | 0x9301|, 0x53c|
|00003ab0| 30 2c 20 20 30 78 35 32 | 38 30 2c 20 20 30 78 39 |0, 0x52|80, 0x9|
|00003ac0| 32 34 31 2c 0a 58 30 78 | 39 36 30 31 2c 20 20 30 |241,.X0x|9601, 0|
|00003ad0| 78 35 36 63 30 2c 20 20 | 30 78 35 37 38 30 2c 20 |x56c0, |0x5780, |
|00003ae0| 20 30 78 39 37 34 31 2c | 20 20 30 78 35 35 30 30 | 0x9741,| 0x5500|
|00003af0| 2c 20 20 30 78 39 35 63 | 31 2c 20 20 30 78 39 34 |, 0x95c|1, 0x94|
|00003b00| 38 31 2c 20 20 30 78 35 | 34 34 30 2c 0a 58 30 78 |81, 0x5|440,.X0x|
|00003b10| 39 63 30 31 2c 20 20 30 | 78 35 63 63 30 2c 20 20 |9c01, 0|x5cc0, |
|00003b20| 30 78 35 64 38 30 2c 20 | 20 30 78 39 64 34 31 2c |0x5d80, | 0x9d41,|
|00003b30| 20 20 30 78 35 66 30 30 | 2c 20 20 30 78 39 66 63 | 0x5f00|, 0x9fc|
|00003b40| 31 2c 20 20 30 78 39 65 | 38 31 2c 20 20 30 78 35 |1, 0x9e|81, 0x5|
|00003b50| 65 34 30 2c 0a 58 30 78 | 35 61 30 30 2c 20 20 30 |e40,.X0x|5a00, 0|
|00003b60| 78 39 61 63 31 2c 20 20 | 30 78 39 62 38 31 2c 20 |x9ac1, |0x9b81, |
|00003b70| 20 30 78 35 62 34 30 2c | 20 20 30 78 39 39 30 31 | 0x5b40,| 0x9901|
|00003b80| 2c 20 20 30 78 35 39 63 | 30 2c 20 20 30 78 35 38 |, 0x59c|0, 0x58|
|00003b90| 38 30 2c 20 20 30 78 39 | 38 34 31 2c 0a 58 30 78 |80, 0x9|841,.X0x|
|00003ba0| 38 38 30 31 2c 20 20 30 | 78 34 38 63 30 2c 20 20 |8801, 0|x48c0, |
|00003bb0| 30 78 34 39 38 30 2c 20 | 20 30 78 38 39 34 31 2c |0x4980, | 0x8941,|
|00003bc0| 20 20 30 78 34 62 30 30 | 2c 20 20 30 78 38 62 63 | 0x4b00|, 0x8bc|
|00003bd0| 31 2c 20 20 30 78 38 61 | 38 31 2c 20 20 30 78 34 |1, 0x8a|81, 0x4|
|00003be0| 61 34 30 2c 0a 58 30 78 | 34 65 30 30 2c 20 20 30 |a40,.X0x|4e00, 0|
|00003bf0| 78 38 65 63 31 2c 20 20 | 30 78 38 66 38 31 2c 20 |x8ec1, |0x8f81, |
|00003c00| 20 30 78 34 66 34 30 2c | 20 20 30 78 38 64 30 31 | 0x4f40,| 0x8d01|
|00003c10| 2c 20 20 30 78 34 64 63 | 30 2c 20 20 30 78 34 63 |, 0x4dc|0, 0x4c|
|00003c20| 38 30 2c 20 20 30 78 38 | 63 34 31 2c 0a 58 30 78 |80, 0x8|c41,.X0x|
|00003c30| 34 34 30 30 2c 20 20 30 | 78 38 34 63 31 2c 20 20 |4400, 0|x84c1, |
|00003c40| 30 78 38 35 38 31 2c 20 | 20 30 78 34 35 34 30 2c |0x8581, | 0x4540,|
|00003c50| 20 20 30 78 38 37 30 31 | 2c 20 20 30 78 34 37 63 | 0x8701|, 0x47c|
|00003c60| 30 2c 20 20 30 78 34 36 | 38 30 2c 20 20 30 78 38 |0, 0x46|80, 0x8|
|00003c70| 36 34 31 2c 0a 58 30 78 | 38 32 30 31 2c 20 20 30 |641,.X0x|8201, 0|
|00003c80| 78 34 32 63 30 2c 20 20 | 30 78 34 33 38 30 2c 20 |x42c0, |0x4380, |
|00003c90| 20 30 78 38 33 34 31 2c | 20 20 30 78 34 31 30 30 | 0x8341,| 0x4100|
|00003ca0| 2c 20 20 30 78 38 31 63 | 31 2c 20 20 30 78 38 30 |, 0x81c|1, 0x80|
|00003cb0| 38 31 2c 20 20 30 78 34 | 30 34 30 2c 0a 58 7d 20 |81, 0x4|040,.X} |
|00003cc0| 3b 0a 58 0a 58 57 54 59 | 50 45 0a 58 75 70 64 63 |;.X.XWTY|PE.Xupdc|
|00003cd0| 72 63 28 20 69 63 72 63 | 2c 20 69 63 70 2c 20 69 |rc( icrc|, icp, i|
|00003ce0| 63 6e 74 20 29 0a 58 20 | 20 20 20 57 54 59 50 45 |cnt ).X | WTYPE|
|00003cf0| 20 69 63 72 63 3b 0a 58 | 20 20 20 20 75 6e 73 69 | icrc;.X| unsi|
|00003d00| 67 6e 65 64 20 63 68 61 | 72 20 2a 69 63 70 3b 0a |gned cha|r *icp;.|
|00003d10| 58 20 20 20 20 69 6e 74 | 20 69 63 6e 74 3b 0a 58 |X int| icnt;.X|
|00003d20| 7b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |{.X r|egister |
|00003d30| 57 54 59 50 45 20 63 72 | 63 20 3d 20 69 63 72 63 |WTYPE cr|c = icrc|
|00003d40| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00003d50| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 20 2a 63 |unsigned| char *c|
|00003d60| 70 20 3d 20 69 63 70 3b | 0a 58 20 20 20 20 72 65 |p = icp;|.X re|
|00003d70| 67 69 73 74 65 72 20 69 | 6e 74 20 63 6e 74 20 3d |gister i|nt cnt =|
|00003d80| 20 69 63 6e 74 3b 0a 58 | 0a 58 20 20 20 20 77 68 | icnt;.X|.X wh|
|00003d90| 69 6c 65 28 20 63 6e 74 | 2d 2d 20 29 20 7b 0a 58 |ile( cnt|-- ) {.X|
|00003da0| 23 69 66 6e 64 65 66 20 | 53 57 41 50 50 45 44 0a |#ifndef |SWAPPED.|
|00003db0| 58 09 63 72 63 20 3d 20 | 28 63 72 63 3c 3c 42 29 |X.crc = |(crc<<B)|
|00003dc0| 20 5e 20 63 72 63 74 61 | 62 5b 28 63 72 63 3e 3e | ^ crcta|b[(crc>>|
|00003dd0| 28 57 2d 42 29 29 20 5e | 20 2a 63 70 2b 2b 5d 3b |(W-B)) ^| *cp++];|
|00003de0| 0a 58 23 65 6c 73 65 0a | 58 09 63 72 63 20 3d 20 |.X#else.|X.crc = |
|00003df0| 28 63 72 63 3e 3e 42 29 | 20 5e 20 63 72 63 74 61 |(crc>>B)| ^ crcta|
|00003e00| 62 5b 28 63 72 63 20 26 | 20 28 28 31 3c 3c 42 29 |b[(crc &| ((1<<B)|
|00003e10| 2d 31 29 29 20 5e 20 2a | 63 70 2b 2b 5d 3b 20 0a |-1)) ^ *|cp++]; .|
|00003e20| 58 23 65 6e 64 69 66 20 | 53 57 41 50 50 45 44 0a |X#endif |SWAPPED.|
|00003e30| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 72 65 |X }.X|.X re|
|00003e40| 74 75 72 6e 28 20 63 72 | 63 20 29 3b 0a 58 7d 0a |turn( cr|c );.X}.|
|00003e50| 58 0a 58 23 69 66 64 65 | 66 20 4d 41 4b 45 54 41 |X.X#ifde|f MAKETA|
|00003e60| 42 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |B.X.X#in|clude <s|
|00003e70| 74 64 69 6f 2e 68 3e 0a | 58 6d 61 69 6e 28 29 0a |tdio.h>.|Xmain().|
|00003e80| 58 7b 0a 58 20 20 20 20 | 69 6e 69 74 63 72 63 74 |X{.X |initcrct|
|00003e90| 61 62 28 29 3b 0a 58 7d | 0a 58 0a 58 69 6e 69 74 |ab();.X}|.X.Xinit|
|00003ea0| 63 72 63 74 61 62 28 29 | 0a 58 7b 0a 58 20 20 20 |crctab()|.X{.X |
|00003eb0| 20 72 65 67 69 73 74 65 | 72 20 20 69 6e 74 20 62 | registe|r int b|
|00003ec0| 2c 20 69 3b 0a 58 20 20 | 20 20 57 54 59 50 45 20 |, i;.X | WTYPE |
|00003ed0| 76 3b 0a 58 0a 58 20 20 | 20 20 0a 58 20 20 20 20 |v;.X.X | .X |
|00003ee0| 66 6f 72 28 20 62 20 3d | 20 30 3b 20 62 20 3c 3d |for( b =| 0; b <=|
|00003ef0| 20 28 31 3c 3c 42 29 2d | 31 3b 20 2b 2b 62 20 29 | (1<<B)-|1; ++b )|
|00003f00| 20 7b 0a 58 23 69 66 6e | 64 65 66 20 53 57 41 50 | {.X#ifn|def SWAP|
|00003f10| 50 45 44 0a 58 09 66 6f | 72 28 20 76 20 3d 20 62 |PED.X.fo|r( v = b|
|00003f20| 3c 3c 28 57 2d 42 29 2c | 20 69 20 3d 20 42 3b 20 |<<(W-B),| i = B; |
|00003f30| 2d 2d 69 20 3e 3d 20 30 | 3b 20 29 0a 58 09 20 20 |--i >= 0|; ).X. |
|00003f40| 20 20 76 20 3d 20 76 20 | 26 20 28 28 57 54 59 50 | v = v |& ((WTYP|
|00003f50| 45 29 31 3c 3c 28 57 2d | 31 29 29 20 3f 20 28 76 |E)1<<(W-|1)) ? (v|
|00003f60| 3c 3c 31 29 5e 50 20 3a | 20 76 3c 3c 31 3b 0a 58 |<<1)^P :| v<<1;.X|
|00003f70| 23 65 6c 73 65 0a 58 09 | 66 6f 72 28 20 76 20 3d |#else.X.|for( v =|
|00003f80| 20 62 2c 20 69 20 3d 20 | 42 3b 20 2d 2d 69 20 3e | b, i = |B; --i >|
|00003f90| 3d 20 30 3b 20 29 0a 58 | 09 20 20 20 20 76 20 3d |= 0; ).X|. v =|
|00003fa0| 20 76 20 26 20 31 20 3f | 20 28 76 3e 3e 31 29 5e | v & 1 ?| (v>>1)^|
|00003fb0| 50 20 3a 20 76 3e 3e 31 | 3b 0a 58 23 65 6e 64 69 |P : v>>1|;.X#endi|
|00003fc0| 66 09 20 20 20 20 0a 58 | 09 63 72 63 74 61 62 5b |f. .X|.crctab[|
|00003fd0| 62 5d 20 3d 20 76 3b 0a | 58 0a 58 09 70 72 69 6e |b] = v;.|X.X.prin|
|00003fe0| 74 66 28 20 22 30 78 25 | 6c 78 2c 22 2c 20 76 20 |tf( "0x%|lx,", v |
|00003ff0| 26 20 28 28 31 4c 3c 3c | 57 29 2d 31 4c 29 29 3b |& ((1L<<|W)-1L));|
|00004000| 0a 58 09 69 66 28 20 28 | 62 26 37 29 20 3d 3d 20 |.X.if( (|b&7) == |
|00004010| 37 20 29 0a 58 09 20 20 | 20 20 70 72 69 6e 74 66 |7 ).X. | printf|
|00004020| 28 22 5c 6e 22 20 29 3b | 0a 58 09 65 6c 73 65 0a |("\n" );|.X.else.|
|00004030| 58 09 20 20 20 20 70 72 | 69 6e 74 66 28 22 20 20 |X. pr|intf(" |
|00004040| 22 29 3b 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 23 |");.X | }.X}.X#|
|00004050| 65 6e 64 69 66 0a 58 0a | 58 23 69 66 64 65 66 20 |endif.X.|X#ifdef |
|00004060| 54 45 53 54 0a 58 0a 58 | 23 69 6e 63 6c 75 64 65 |TEST.X.X|#include|
|00004070| 20 3c 73 74 64 69 6f 2e | 68 3e 0a 58 23 69 6e 63 | <stdio.|h>.X#inc|
|00004080| 6c 75 64 65 20 3c 66 63 | 6e 74 6c 2e 68 3e 0a 58 |lude <fc|ntl.h>.X|
|00004090| 0a 58 23 64 65 66 69 6e | 65 20 4d 41 58 42 55 46 |.X#defin|e MAXBUF|
|000040a0| 09 34 30 39 36 0a 58 0a | 58 0a 58 0a 58 6d 61 69 |.4096.X.|X.X.Xmai|
|000040b0| 6e 28 20 61 63 2c 20 61 | 76 20 29 0a 58 20 20 20 |n( ac, a|v ).X |
|000040c0| 20 69 6e 74 20 61 63 3b | 20 63 68 61 72 20 2a 2a | int ac;| char **|
|000040d0| 61 76 3b 0a 58 7b 0a 58 | 20 20 20 20 69 6e 74 20 |av;.X{.X| int |
|000040e0| 66 64 3b 0a 58 20 20 20 | 20 69 6e 74 20 6e 72 3b |fd;.X | int nr;|
|000040f0| 0a 58 20 20 20 20 69 6e | 74 20 69 3b 0a 58 20 20 |.X in|t i;.X |
|00004100| 20 20 63 68 61 72 20 62 | 75 66 5b 4d 41 58 42 55 | char b|uf[MAXBU|
|00004110| 46 5d 3b 0a 58 20 20 20 | 20 57 54 59 50 45 20 63 |F];.X | WTYPE c|
|00004120| 72 63 2c 20 63 72 63 32 | 3b 0a 58 0a 58 20 20 20 |rc, crc2|;.X.X |
|00004130| 20 66 64 20 3d 20 30 3b | 0a 58 20 20 20 20 69 66 | fd = 0;|.X if|
|00004140| 28 20 61 63 20 3e 20 31 | 20 29 0a 58 09 69 66 28 |( ac > 1| ).X.if(|
|00004150| 20 28 66 64 20 3d 20 6f | 70 65 6e 28 20 61 76 5b | (fd = o|pen( av[|
|00004160| 31 5d 2c 20 4f 5f 52 44 | 4f 4e 4c 59 20 29 29 20 |1], O_RD|ONLY )) |
|00004170| 3c 20 30 20 29 20 7b 0a | 58 09 20 20 20 20 70 65 |< 0 ) {.|X. pe|
|00004180| 72 72 6f 72 28 20 61 76 | 5b 31 5d 20 29 3b 0a 58 |rror( av|[1] );.X|
|00004190| 09 20 20 20 20 65 78 69 | 74 28 20 2d 31 20 29 3b |. exi|t( -1 );|
|000041a0| 0a 58 09 7d 0a 58 20 20 | 20 20 63 72 63 20 3d 20 |.X.}.X | crc = |
|000041b0| 63 72 63 32 20 3d 20 49 | 4e 49 54 5f 43 52 43 3b |crc2 = I|NIT_CRC;|
|000041c0| 0a 58 0a 58 20 20 20 20 | 77 68 69 6c 65 28 20 28 |.X.X |while( (|
|000041d0| 6e 72 20 3d 20 72 65 61 | 64 28 20 66 64 2c 20 62 |nr = rea|d( fd, b|
|000041e0| 75 66 2c 20 4d 41 58 42 | 55 46 20 29 29 20 3e 20 |uf, MAXB|UF )) > |
|000041f0| 30 20 29 20 7b 0a 58 09 | 63 72 63 20 3d 20 75 70 |0 ) {.X.|crc = up|
|00004200| 64 63 72 63 28 20 63 72 | 63 2c 20 62 75 66 2c 20 |dcrc( cr|c, buf, |
|00004210| 6e 72 20 29 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |nr );.X | }.X.X|
|00004220| 20 20 20 20 69 66 28 20 | 6e 72 20 21 3d 20 30 20 | if( |nr != 0 |
|00004230| 29 0a 58 09 70 65 72 72 | 6f 72 28 20 22 72 65 61 |).X.perr|or( "rea|
|00004240| 64 69 6e 67 22 20 29 3b | 0a 58 20 20 20 20 65 6c |ding" );|.X el|
|00004250| 73 65 20 7b 0a 58 09 70 | 72 69 6e 74 66 28 20 22 |se {.X.p|rintf( "|
|00004260| 25 6c 78 5c 6e 22 2c 20 | 63 72 63 20 29 3b 0a 58 |%lx\n", |crc );.X|
|00004270| 20 20 20 20 7d 0a 58 0a | 58 23 69 66 64 65 66 20 | }.X.|X#ifdef |
|00004280| 4d 41 47 49 43 43 48 45 | 43 4b 0a 58 20 20 20 20 |MAGICCHE|CK.X |
|00004290| 2f 2a 20 74 61 63 6b 20 | 6f 6e 65 27 73 20 63 6f |/* tack |one's co|
|000042a0| 6d 70 6c 65 6d 65 6e 74 | 20 6f 66 20 63 72 63 20 |mplement| of crc |
|000042b0| 6f 6e 74 6f 20 64 61 74 | 61 20 73 74 72 65 61 6d |onto dat|a stream|
|000042c0| 2c 20 61 6e 64 0a 58 20 | 20 20 20 20 20 20 63 6f |, and.X | co|
|000042d0| 6e 74 69 6e 75 65 20 63 | 72 63 20 63 61 6c 63 75 |ntinue c|rc calcu|
|000042e0| 6c 61 74 69 6f 6e 2e 20 | 20 53 68 6f 75 6c 64 20 |lation. | Should |
|000042f0| 67 65 74 20 61 20 63 6f | 6e 73 74 61 6e 74 20 28 |get a co|nstant (|
|00004300| 6d 61 67 69 63 20 6e 75 | 6d 62 65 72 29 0a 58 20 |magic nu|mber).X |
|00004310| 20 20 20 20 20 20 64 65 | 70 65 6e 64 65 6e 74 20 | de|pendent |
|00004320| 6f 6e 6c 79 20 6f 6e 20 | 50 2c 20 6e 6f 74 20 74 |only on |P, not t|
|00004330| 68 65 20 64 61 74 61 2e | 0a 58 20 20 20 20 20 2a |he data.|.X *|
|00004340| 2f 0a 58 20 20 20 20 63 | 72 63 32 20 3d 20 63 72 |/.X c|rc2 = cr|
|00004350| 63 20 5e 20 2d 31 4c 3b | 0a 58 20 20 20 20 66 6f |c ^ -1L;|.X fo|
|00004360| 72 28 20 6e 72 20 3d 20 | 57 2d 42 3b 20 6e 72 20 |r( nr = |W-B; nr |
|00004370| 3e 3d 20 30 3b 20 6e 72 | 20 2d 3d 20 42 20 29 20 |>= 0; nr| -= B ) |
|00004380| 7b 0a 58 09 62 75 66 5b | 30 5d 20 3d 20 28 63 72 |{.X.buf[|0] = (cr|
|00004390| 63 32 20 3e 3e 20 6e 72 | 29 3b 0a 58 09 63 72 63 |c2 >> nr|);.X.crc|
|000043a0| 20 3d 20 75 70 64 63 72 | 63 28 63 72 63 2c 20 62 | = updcr|c(crc, b|
|000043b0| 75 66 2c 20 31 29 3b 0a | 58 20 20 20 20 7d 0a 58 |uf, 1);.|X }.X|
|000043c0| 0a 58 20 20 20 20 2f 2a | 20 63 72 63 20 73 68 6f |.X /*| crc sho|
|000043d0| 75 6c 64 20 6e 6f 77 20 | 65 71 75 61 6c 20 6d 61 |uld now |equal ma|
|000043e0| 67 69 63 20 2a 2f 0a 58 | 20 20 20 20 62 75 66 5b |gic */.X| buf[|
|000043f0| 30 5d 20 3d 20 62 75 66 | 5b 31 5d 20 3d 20 62 75 |0] = buf|[1] = bu|
|00004400| 66 5b 32 5d 20 3d 20 62 | 75 66 5b 33 5d 20 3d 20 |f[2] = b|uf[3] = |
|00004410| 30 3b 0a 58 20 20 20 20 | 70 72 69 6e 74 66 28 20 |0;.X |printf( |
|00004420| 22 6d 61 67 69 63 20 74 | 65 73 74 3a 20 25 6c 78 |"magic t|est: %lx|
|00004430| 20 3d 3f 3d 20 25 6c 78 | 5c 6e 22 2c 20 63 72 63 | =?= %lx|\n", crc|
|00004440| 2c 20 75 70 64 63 72 63 | 28 2d 31 2c 20 62 75 66 |, updcrc|(-1, buf|
|00004450| 2c 20 57 2f 42 29 29 3b | 0a 58 23 65 6e 64 69 66 |, W/B));|.X#endif|
|00004460| 20 4d 41 47 49 43 43 48 | 45 43 4b 0a 58 7d 0a 58 | MAGICCH|ECK.X}.X|
|00004470| 0a 58 23 65 6e 64 69 66 | 0a 53 48 41 52 5f 45 4f |.X#endif|.SHAR_EO|
|00004480| 46 0a 69 66 20 74 65 73 | 74 20 35 38 34 38 20 2d |F.if tes|t 5848 -|
|00004490| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 75 70 |ne "`wc |-c < 'up|
|000044a0| 64 63 72 63 2e 63 27 60 | 22 0a 74 68 65 6e 0a 09 |dcrc.c'`|".then..|
|000044b0| 65 63 68 6f 20 73 68 61 | 72 3a 20 65 72 72 6f 72 |echo sha|r: error|
|000044c0| 20 74 72 61 6e 73 6d 69 | 74 74 69 6e 67 20 22 27 | transmi|tting "'|
|000044d0| 75 70 64 63 72 63 2e 63 | 27 22 20 27 28 73 68 6f |updcrc.c|'" '(sho|
|000044e0| 75 6c 64 20 68 61 76 65 | 20 62 65 65 6e 20 35 38 |uld have| been 58|
|000044f0| 34 38 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |48 chara|cters)'.|
|00004500| 66 69 0a 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |fi.fi # |end of o|
|00004510| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00004520| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 65 78 74 72 |.echo sh|ar: extr|
|00004530| 61 63 74 69 6e 67 20 22 | 27 6d 61 63 62 69 6e 66 |acting "|'macbinf|
|00004540| 69 6c 74 2e 63 27 22 20 | 27 28 33 36 33 38 20 63 |ilt.c'" |'(3638 c|
|00004550| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|00004560| 65 73 74 20 2d 66 20 27 | 6d 61 63 62 69 6e 66 69 |est -f '|macbinfi|
|00004570| 6c 74 2e 63 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |lt.c'.th|en..echo|
|00004580| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|00004590| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000045a0| 69 6e 67 20 66 69 6c 65 | 20 22 27 6d 61 63 62 69 |ing file| "'macbi|
|000045b0| 6e 66 69 6c 74 2e 63 27 | 22 0a 65 6c 73 65 0a 73 |nfilt.c'|".else.s|
|000045c0| 65 64 20 27 73 2f 5e 58 | 2f 2f 27 20 3c 3c 20 5c |ed 's/^X|//' << \|
|000045d0| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 6d 61 63 62 |SHAR_EOF| > 'macb|
|000045e0| 69 6e 66 69 6c 74 2e 63 | 27 0a 58 2f 2a 0a 58 20 |infilt.c|'.X/*.X |
|000045f0| 2a 20 6d 61 63 62 69 6e | 66 69 6c 74 20 2d 2d 20 |* macbin|filt -- |
|00004600| 66 69 6c 74 65 72 73 20 | 75 73 65 6e 65 74 20 61 |filters |usenet a|
|00004610| 72 74 69 63 6c 65 73 20 | 66 72 6f 6d 20 63 6f 6d |rticles |from com|
|00004620| 70 2e 62 69 6e 61 72 69 | 65 73 2e 6d 61 63 20 69 |p.binari|es.mac i|
|00004630| 6e 74 6f 20 61 20 66 6f | 72 6d 0a 58 20 2a 20 20 |nto a fo|rm.X * |
|00004640| 73 75 69 74 61 62 6c 65 | 20 66 6f 72 20 78 62 69 |suitable| for xbi|
|00004650| 6e 20 74 6f 20 64 65 63 | 6f 64 65 2e 20 20 57 69 |n to dec|ode. Wi|
|00004660| 6c 6c 20 72 65 61 72 61 | 6e 67 65 20 70 61 72 74 |ll reara|nge part|
|00004670| 73 20 6f 66 20 66 69 6c | 65 20 69 66 20 74 68 65 |s of fil|e if the|
|00004680| 79 20 61 72 65 20 6e 6f | 74 0a 58 20 2a 20 20 69 |y are no|t.X * i|
|00004690| 6e 20 6f 72 64 65 72 2e | 20 20 53 74 72 69 70 73 |n order.| Strips|
|000046a0| 20 6f 75 74 20 61 6c 6c | 20 65 78 74 72 61 6e 65 | out all| extrane|
|000046b0| 6f 75 73 20 6c 69 6e 65 | 73 2e 0a 58 20 2a 20 20 |ous line|s..X * |
|000046c0| 44 6f 65 73 20 61 6c 6c | 20 6f 66 20 74 68 69 73 |Does all| of this|
|000046d0| 20 62 79 20 6d 61 6b 69 | 6e 67 20 6d 61 6e 79 20 | by maki|ng many |
|000046e0| 62 6f 6c 64 20 61 73 73 | 75 6d 74 69 6f 6e 73 2d |bold ass|umtions-|
|000046f0| 2d 62 75 74 20 69 74 27 | 73 20 77 6f 72 6b 65 64 |-but it'|s worked|
|00004700| 20 73 6f 20 66 61 72 2e | 0a 58 20 2a 0a 58 20 2a | so far.|.X *.X *|
|00004710| 20 20 4f 6e 6c 79 20 77 | 6f 72 6b 73 20 6f 6e 20 | Only w|orks on |
|00004720| 6f 6e 65 20 61 72 74 69 | 63 6c 65 20 61 74 20 61 |one arti|cle at a|
|00004730| 20 74 69 6d 65 2e 20 20 | 41 6c 6c 20 66 69 6c 65 | time. |All file|
|00004740| 73 20 6f 6e 20 74 68 65 | 20 69 6e 70 75 74 20 6c |s on the| input l|
|00004750| 69 6e 65 20 61 72 65 0a | 58 20 2a 20 20 63 6f 6e |ine are.|X * con|
|00004760| 73 69 64 65 72 65 64 20 | 70 61 72 74 73 20 6f 66 |sidered |parts of|
|00004770| 20 74 68 65 20 73 61 6d | 65 20 61 72 74 69 63 6c | the sam|e articl|
|00004780| 65 2e 0a 58 20 2a 0a 58 | 20 2a 20 20 49 66 20 79 |e..X *.X| * If y|
|00004790| 6f 75 20 68 61 76 65 20 | 74 68 65 20 73 79 73 56 |ou have |the sysV|
|000047a0| 20 72 65 67 75 61 6c 61 | 72 20 65 78 70 72 65 73 | reguala|r expres|
|000047b0| 73 69 6f 6e 20 72 6f 75 | 74 69 6e 65 73 20 28 72 |sion rou|tines (r|
|000047c0| 65 67 63 6d 70 2c 20 72 | 65 67 65 78 29 20 74 68 |egcmp, r|egex) th|
|000047d0| 65 6e 0a 58 20 2a 20 20 | 64 65 66 69 6e 65 20 48 |en.X * |define H|
|000047e0| 41 56 45 5f 52 45 47 43 | 4d 50 20 66 6f 72 20 61 |AVE_REGC|MP for a|
|000047f0| 20 6d 6f 72 65 20 72 6f | 62 75 73 74 20 70 61 74 | more ro|bust pat|
|00004800| 74 65 72 6e 20 6d 61 74 | 63 68 2e 0a 58 20 2a 0a |tern mat|ch..X *.|
|00004810| 58 20 2a 20 20 2d 2d 54 | 6f 6d 20 42 65 72 65 69 |X * --T|om Berei|
|00004820| 74 65 72 0a 58 20 2a 20 | 20 20 20 2e 2e 21 7b 72 |ter.X * | ..!{r|
|00004830| 75 74 67 65 72 73 2c 61 | 6d 65 73 7d 21 63 73 2e |utgers,a|mes}!cs.|
|00004840| 75 74 65 78 61 73 2e 65 | 64 75 21 68 61 6c 6c 65 |utexas.e|du!halle|
|00004850| 79 21 72 6f 6c 65 78 21 | 74 77 62 0a 58 20 2a 2f |y!rolex!|twb.X */|
|00004860| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |.X#inclu|de <stdi|
|00004870| 6f 2e 68 3e 0a 58 0a 58 | 69 6e 74 20 63 75 72 5f |o.h>.X.X|int cur_|
|00004880| 70 61 72 74 2c 70 61 72 | 74 2c 64 69 76 65 72 74 |part,par|t,divert|
|00004890| 5f 70 61 72 74 3b 0a 58 | 69 6e 74 20 6d 61 78 5f |_part;.X|int max_|
|000048a0| 70 61 72 74 3b 0a 58 23 | 64 65 66 69 6e 65 20 49 |part;.X#|define I|
|000048b0| 42 55 46 53 5a 09 35 31 | 32 0a 58 63 68 61 72 20 |BUFSZ.51|2.Xchar |
|000048c0| 69 62 75 66 5b 49 42 55 | 46 53 5a 5d 3b 0a 58 63 |ibuf[IBU|FSZ];.Xc|
|000048d0| 68 61 72 20 70 6e 61 6d | 65 5b 38 30 5d 3b 0a 58 |har pnam|e[80];.X|
|000048e0| 46 49 4c 45 20 2a 6f 66 | 73 3d 73 74 64 6f 75 74 |FILE *of|s=stdout|
|000048f0| 3b 0a 58 46 49 4c 45 20 | 2a 73 61 76 65 6f 66 73 |;.XFILE |*saveofs|
|00004900| 3b 0a 58 46 49 4c 45 20 | 2a 70 61 72 74 73 5b 31 |;.XFILE |*parts[1|
|00004910| 30 30 5d 3b 0a 58 0a 58 | 23 69 66 64 65 66 20 48 |00];.X.X|#ifdef H|
|00004920| 41 56 45 5f 52 45 47 43 | 4d 50 0a 58 23 64 65 66 |AVE_REGC|MP.X#def|
|00004930| 69 6e 65 20 45 58 50 20 | 22 2e 2a 5b 50 70 5d 5b |ine EXP |".*[Pp][|
|00004940| 41 61 5d 5b 52 72 5d 5b | 54 74 5d 5b 20 5c 74 5d |Aa][Rr][|Tt][ \t]|
|00004950| 2a 28 5b 30 2d 39 5d 2b | 29 24 30 5b 20 5c 74 5d |*([0-9]+|)$0[ \t]|
|00004960| 2a 5b 4f 6f 5d 5b 46 66 | 5d 5b 20 5c 74 5d 2a 28 |*[Oo][Ff|][ \t]*(|
|00004970| 5b 30 2d 39 5d 2b 29 24 | 31 22 0a 58 23 65 6c 73 |[0-9]+)$|1".X#els|
|00004980| 65 0a 58 23 64 65 66 69 | 6e 65 20 45 58 50 20 22 |e.X#defi|ne EXP "|
|00004990| 70 61 72 74 20 25 64 20 | 6f 66 20 25 64 22 0a 58 |part %d |of %d".X|
|000049a0| 23 65 6e 64 69 66 0a 58 | 63 68 61 72 20 2a 65 78 |#endif.X|char *ex|
|000049b0| 70 3b 0a 58 0a 58 6d 61 | 69 6e 28 61 72 67 63 2c |p;.X.Xma|in(argc,|
|000049c0| 61 72 67 76 29 20 63 68 | 61 72 20 2a 2a 61 72 67 |argv) ch|ar **arg|
|000049d0| 76 5b 5d 3b 20 7b 0a 58 | 09 46 49 4c 45 20 2a 66 |v[]; {.X|.FILE *f|
|000049e0| 73 3b 0a 58 09 69 6e 74 | 20 69 2c 72 63 3d 30 3b |s;.X.int| i,rc=0;|
|000049f0| 0a 58 0a 58 23 69 66 64 | 65 66 20 48 41 56 45 5f |.X.X#ifd|ef HAVE_|
|00004a00| 52 45 47 43 4d 50 0a 58 | 09 65 78 70 20 3d 20 28 |REGCMP.X|.exp = (|
|00004a10| 63 68 61 72 20 2a 29 72 | 65 67 63 6d 70 28 45 58 |char *)r|egcmp(EX|
|00004a20| 50 2c 30 29 3b 0a 58 23 | 65 6c 73 65 0a 58 09 65 |P,0);.X#|else.X.e|
|00004a30| 78 70 20 3d 20 45 58 50 | 3b 0a 58 23 65 6e 64 69 |xp = EXP|;.X#endi|
|00004a40| 66 0a 58 0a 58 09 66 70 | 75 74 73 28 22 28 54 68 |f.X.X.fp|uts("(Th|
|00004a50| 69 73 20 66 69 6c 65 20 | 6d 75 73 74 20 62 65 20 |is file |must be |
|00004a60| 63 6f 6e 76 65 72 74 65 | 64 20 77 69 74 68 20 42 |converte|d with B|
|00004a70| 69 6e 48 65 78 20 34 2e | 30 29 5c 6e 5c 6e 22 2c |inHex 4.|0)\n\n",|
|00004a80| 6f 66 73 29 3b 0a 58 0a | 58 09 69 66 20 28 61 72 |ofs);.X.|X.if (ar|
|00004a90| 67 63 20 3d 3d 20 31 29 | 0a 58 09 09 66 69 6c 74 |gc == 1)|.X..filt|
|00004aa0| 65 72 28 73 74 64 69 6e | 29 3b 0a 58 09 65 6c 73 |er(stdin|);.X.els|
|00004ab0| 65 20 77 68 69 6c 65 20 | 28 2d 2d 61 72 67 63 29 |e while |(--argc)|
|00004ac0| 20 7b 0a 58 09 09 69 66 | 20 28 28 66 73 3d 66 6f | {.X..if| ((fs=fo|
|00004ad0| 70 65 6e 28 2a 2b 2b 61 | 72 67 76 2c 22 72 22 29 |pen(*++a|rgv,"r")|
|00004ae0| 29 3d 3d 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 09 70 |)==NULL)| {.X...p|
|00004af0| 65 72 72 6f 72 28 2a 61 | 72 67 76 29 3b 20 65 78 |error(*a|rgv); ex|
|00004b00| 69 74 28 2d 31 29 3b 20 | 7d 0a 58 09 09 66 69 6c |it(-1); |}.X..fil|
|00004b10| 74 65 72 28 66 73 29 3b | 0a 58 09 09 66 63 6c 6f |ter(fs);|.X..fclo|
|00004b20| 73 65 28 66 73 29 3b 0a | 58 09 7d 0a 58 09 2f 2a |se(fs);.|X.}.X./*|
|00004b30| 20 61 64 64 20 61 6e 79 | 20 72 65 6d 61 69 6e 69 | add any| remaini|
|00004b40| 6e 67 20 70 61 72 74 73 | 20 2a 2f 0a 58 09 66 6f |ng parts| */.X.fo|
|00004b50| 72 20 28 69 3d 63 75 72 | 5f 70 61 72 74 2b 31 3b |r (i=cur|_part+1;|
|00004b60| 20 69 3c 3d 6d 61 78 5f | 70 61 72 74 3b 20 69 2b | i<=max_|part; i+|
|00004b70| 2b 29 0a 58 09 09 69 66 | 20 28 70 61 72 74 73 5b |+).X..if| (parts[|
|00004b80| 69 5d 29 0a 58 09 09 09 | 70 75 74 70 61 72 74 28 |i]).X...|putpart(|
|00004b90| 69 29 3b 0a 58 09 09 65 | 6c 73 65 20 7b 0a 58 09 |i);.X..e|lse {.X.|
|00004ba0| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00004bb0| 2c 22 4d 69 73 73 69 6e | 67 20 70 61 72 74 20 25 |,"Missin|g part %|
|00004bc0| 64 5c 6e 22 2c 69 29 3b | 0a 58 09 09 09 72 63 20 |d\n",i);|.X...rc |
|00004bd0| 3d 20 2d 31 3b 0a 58 09 | 09 7d 0a 58 09 65 78 69 |= -1;.X.|.}.X.exi|
|00004be0| 74 28 72 63 29 3b 0a 58 | 7d 0a 58 0a 58 2f 2a 20 |t(rc);.X|}.X.X/* |
|00004bf0| 76 61 6c 69 64 20 78 62 | 69 6e 20 63 68 61 72 73 |valid xb|in chars|
|00004c00| 20 2b 20 27 5c 6e 27 20 | 61 6e 64 20 27 5c 72 27 | + '\n' |and '\r'|
|00004c10| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 09 42 74 73 | */.X#de|fine.Bts|
|00004c20| 74 28 69 29 20 28 62 6d | 61 70 5b 69 3e 3e 33 5d |t(i) (bm|ap[i>>3]|
|00004c30| 20 26 20 28 31 3c 3c 28 | 69 26 30 37 29 29 29 0a | & (1<<(|i&07))).|
|00004c40| 58 63 68 61 72 20 62 6d | 61 70 5b 5d 3d 7b 30 78 |Xchar bm|ap[]={0x|
|00004c50| 30 30 2c 30 78 32 34 2c | 30 78 30 30 2c 30 78 30 |00,0x24,|0x00,0x0|
|00004c60| 30 2c 30 78 66 65 2c 30 | 78 33 66 2c 30 78 37 66 |0,0xfe,0|x3f,0x7f|
|00004c70| 2c 30 78 30 37 2c 0a 58 | 09 09 09 20 30 78 66 66 |,0x07,.X|... 0xff|
|00004c80| 2c 30 78 37 66 2c 30 78 | 37 66 2c 30 78 30 66 2c |,0x7f,0x|7f,0x0f,|
|00004c90| 30 78 37 66 2c 30 78 33 | 66 2c 30 78 30 37 2c 30 |0x7f,0x3|f,0x07,0|
|00004ca0| 78 30 30 7d 3b 0a 58 0a | 58 2f 2a 20 66 69 6c 74 |x00};.X.|X/* filt|
|00004cb0| 65 72 20 6f 75 74 20 65 | 78 74 72 61 6e 65 6f 75 |er out e|xtraneou|
|00004cc0| 73 20 6c 69 6e 65 73 20 | 61 6e 64 20 6c 6f 6f 6b |s lines |and look|
|00004cd0| 20 66 6f 72 20 6c 69 6e | 65 73 20 6f 66 20 74 68 | for lin|es of th|
|00004ce0| 65 20 66 6f 72 6d 3a 0a | 58 20 2a 20 20 20 20 70 |e form:.|X * p|
|00004cf0| 61 72 74 20 6e 20 6f 66 | 20 6d 0a 58 20 2a 20 41 |art n of| m.X * A|
|00004d00| 20 6c 69 6e 65 20 69 73 | 20 63 6f 6e 73 69 64 65 | line is| conside|
|00004d10| 72 65 64 20 76 61 6c 69 | 64 20 69 66 20 69 74 20 |red vali|d if it |
|00004d20| 68 61 73 20 6f 6e 6c 79 | 20 76 61 6c 69 64 20 78 |has only| valid x|
|00004d30| 62 69 6e 20 63 68 61 72 | 61 63 74 65 72 73 20 61 |bin char|acters a|
|00004d40| 6e 64 20 69 73 0a 58 20 | 2a 20 65 69 74 68 65 72 |nd is.X |* either|
|00004d50| 20 67 72 65 61 74 65 72 | 20 74 68 61 6e 20 36 30 | greater| than 60|
|00004d60| 20 63 68 61 72 61 63 74 | 65 72 73 20 6f 72 20 65 | charact|ers or e|
|00004d70| 6e 64 73 20 69 6e 20 61 | 20 27 3a 27 0a 58 20 2a |nds in a| ':'.X *|
|00004d80| 2f 0a 58 0a 58 66 69 6c | 74 65 72 28 66 73 29 20 |/.X.Xfil|ter(fs) |
|00004d90| 46 49 4c 45 20 2a 66 73 | 3b 20 7b 0a 58 09 72 65 |FILE *fs|; {.X.re|
|00004da0| 67 69 73 74 65 72 20 63 | 68 61 72 20 2a 70 2c 2a |gister c|har *p,*|
|00004db0| 69 6e 70 3b 0a 58 0a 58 | 72 65 67 65 74 3a 0a 58 |inp;.X.X|reget:.X|
|00004dc0| 09 77 68 69 6c 65 20 28 | 28 69 6e 70 3d 66 67 65 |.while (|(inp=fge|
|00004dd0| 74 73 28 69 62 75 66 2c | 49 42 55 46 53 5a 2c 66 |ts(ibuf,|IBUFSZ,f|
|00004de0| 73 29 29 29 20 7b 0a 58 | 09 09 66 6f 72 20 28 70 |s))) {.X|..for (p|
|00004df0| 3d 69 6e 70 3b 20 2a 70 | 3b 20 70 2b 2b 29 0a 58 |=inp; *p|; p++).X|
|00004e00| 09 09 09 69 66 20 28 42 | 74 73 74 28 2a 70 29 20 |...if (B|tst(*p) |
|00004e10| 3d 3d 20 30 29 20 7b 09 | 2f 2a 20 69 6e 76 61 6c |== 0) {.|/* inval|
|00004e20| 69 64 20 63 68 61 72 61 | 63 74 65 72 20 2a 2f 0a |id chara|cter */.|
|00004e30| 58 09 09 09 09 63 68 65 | 63 6b 70 61 72 74 73 28 |X....che|ckparts(|
|00004e40| 69 6e 70 29 3b 0a 58 09 | 09 09 09 67 6f 74 6f 20 |inp);.X.|...goto |
|00004e50| 72 65 67 65 74 3b 0a 58 | 09 09 09 7d 0a 58 09 09 |reget;.X|...}.X..|
|00004e60| 69 66 20 28 70 2d 69 6e | 70 20 3e 20 36 30 20 7c |if (p-in|p > 60 ||
|00004e70| 7c 20 69 6e 70 5b 28 70 | 2d 69 6e 70 29 2d 32 5d || inp[(p|-inp)-2]|
|00004e80| 3d 3d 27 3a 27 29 09 2f | 2a 20 61 72 62 69 74 72 |==':')./|* arbitr|
|00004e90| 61 72 79 20 6d 61 78 20 | 6f 72 20 65 6e 64 20 2a |ary max |or end *|
|00004ea0| 2f 0a 58 09 09 09 66 70 | 75 74 73 28 69 62 75 66 |/.X...fp|uts(ibuf|
|00004eb0| 2c 6f 66 73 29 3b 0a 58 | 09 7d 0a 58 09 69 66 20 |,ofs);.X|.}.X.if |
|00004ec0| 28 64 69 76 65 72 74 5f | 70 61 72 74 29 09 2f 2a |(divert_|part)./*|
|00004ed0| 20 64 69 76 65 72 73 69 | 6f 6e 20 69 6e 20 70 72 | diversi|on in pr|
|00004ee0| 6f 67 72 65 73 73 20 2a | 2f 0a 58 09 09 65 6e 64 |ogress *|/.X..end|
|00004ef0| 5f 6f 73 65 71 28 29 3b | 0a 58 7d 0a 58 0a 58 63 |_oseq();|.X}.X.Xc|
|00004f00| 68 65 63 6b 70 61 72 74 | 73 28 73 74 72 29 20 63 |heckpart|s(str) c|
|00004f10| 68 61 72 20 2a 73 74 72 | 3b 20 7b 0a 58 09 63 68 |har *str|; {.X.ch|
|00004f20| 61 72 20 2a 70 3b 0a 58 | 09 63 68 61 72 20 6e 75 |ar *p;.X|.char nu|
|00004f30| 6d 30 5b 34 30 5d 2c 20 | 6e 75 6d 31 5b 34 30 5d |m0[40], |num1[40]|
|00004f40| 3b 0a 58 0a 58 23 69 66 | 64 65 66 20 48 41 56 45 |;.X.X#if|def HAVE|
|00004f50| 5f 52 45 47 45 58 50 0a | 58 09 69 66 20 28 72 65 |_REGEXP.|X.if (re|
|00004f60| 67 65 78 28 65 78 70 2c | 20 73 74 72 2c 20 6e 75 |gex(exp,| str, nu|
|00004f70| 6d 30 2c 6e 75 6d 31 29 | 21 3d 4e 55 4c 4c 29 20 |m0,num1)|!=NULL) |
|00004f80| 7b 0a 58 09 09 70 61 72 | 74 20 3d 20 61 74 6f 69 |{.X..par|t = atoi|
|00004f90| 28 6e 75 6d 30 29 3b 0a | 58 09 09 6d 61 78 5f 70 |(num0);.|X..max_p|
|00004fa0| 61 72 74 20 3d 20 61 74 | 6f 69 28 6e 75 6d 31 29 |art = at|oi(num1)|
|00004fb0| 3b 0a 58 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |;.Xfprin|tf(stder|
|00004fc0| 72 2c 22 70 61 72 74 20 | 25 64 20 6f 66 20 25 64 |r,"part |%d of %d|
|00004fd0| 5c 6e 22 2c 70 61 72 74 | 2c 6d 61 78 5f 70 61 72 |\n",part|,max_par|
|00004fe0| 74 29 3b 0a 58 09 09 64 | 6f 70 61 72 74 28 29 3b |t);.X..d|opart();|
|00004ff0| 0a 58 09 7d 0a 58 23 65 | 6c 73 65 0a 58 09 66 6f |.X.}.X#e|lse.X.fo|
|00005000| 72 20 28 70 3d 73 74 72 | 3b 20 2a 70 3b 20 70 2b |r (p=str|; *p; p+|
|00005010| 2b 29 09 2f 2a 20 72 65 | 73 63 61 6e 20 66 6f 72 |+)./* re|scan for|
|00005020| 20 27 70 61 72 74 27 20 | 73 74 72 69 6e 67 20 2a | 'part' |string *|
|00005030| 2f 0a 58 09 09 69 66 20 | 28 2a 70 3d 3d 65 78 70 |/.X..if |(*p==exp|
|00005040| 5b 30 5d 29 0a 58 09 09 | 09 69 66 20 28 73 73 63 |[0]).X..|.if (ssc|
|00005050| 61 6e 66 28 70 2c 65 78 | 70 2c 26 70 61 72 74 2c |anf(p,ex|p,&part,|
|00005060| 26 6d 61 78 5f 70 61 72 | 74 29 20 3d 3d 20 32 29 |&max_par|t) == 2)|
|00005070| 20 7b 0a 58 09 09 09 09 | 64 6f 70 61 72 74 28 29 | {.X....|dopart()|
|00005080| 3b 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |;.X....b|reak;.X.|
|00005090| 09 09 7d 0a 58 23 65 6e | 64 69 66 0a 58 7d 0a 58 |..}.X#en|dif.X}.X|
|000050a0| 0a 58 64 6f 70 61 72 74 | 28 29 20 7b 0a 58 09 69 |.Xdopart|() {.X.i|
|000050b0| 66 20 28 64 69 76 65 72 | 74 5f 70 61 72 74 29 20 |f (diver|t_part) |
|000050c0| 7b 09 2f 2a 20 64 69 76 | 65 72 73 69 6f 6e 20 69 |{./* div|ersion i|
|000050d0| 6e 20 70 72 6f 67 72 65 | 73 73 20 2a 2f 0a 58 09 |n progre|ss */.X.|
|000050e0| 09 69 66 20 28 70 61 72 | 74 20 3d 3d 20 64 69 76 |.if (par|t == div|
|000050f0| 65 72 74 5f 70 61 72 74 | 29 09 2f 2a 20 61 6e 6f |ert_part|)./* ano|
|00005100| 74 68 65 72 20 6d 65 6e | 74 69 6f 6e 20 6f 66 20 |ther men|tion of |
|00005110| 63 75 72 72 65 6e 74 20 | 70 61 72 74 20 2a 2f 0a |current |part */.|
|00005120| 58 09 09 09 72 65 74 75 | 72 6e 3b 0a 58 09 09 65 |X...retu|rn;.X..e|
|00005130| 6e 64 5f 6f 73 65 71 28 | 29 3b 0a 58 09 7d 0a 58 |nd_oseq(|);.X.}.X|
|00005140| 09 69 66 20 28 70 61 72 | 74 20 3d 3d 20 63 75 72 |.if (par|t == cur|
|00005150| 5f 70 61 72 74 2b 31 29 | 20 09 2f 2a 20 4f 4b 3a |_part+1)| ./* OK:|
|00005160| 20 6e 65 78 74 20 69 6e | 20 73 65 71 75 65 6e 63 | next in| sequenc|
|00005170| 65 20 2a 2f 0a 58 09 09 | 63 75 72 5f 70 61 72 74 |e */.X..|cur_part|
|00005180| 20 3d 20 70 61 72 74 3b | 0a 58 09 65 6c 73 65 20 | = part;|.X.else |
|00005190| 69 66 20 28 70 61 72 74 | 20 3e 20 63 75 72 5f 70 |if (part| > cur_p|
|000051a0| 61 72 74 29 20 09 2f 2a | 20 6f 75 74 20 6f 66 20 |art) ./*| out of |
|000051b0| 73 65 71 75 65 6e 63 65 | 20 2a 2f 0a 58 09 09 6f |sequence| */.X..o|
|000051c0| 73 65 71 28 29 3b 0a 58 | 09 65 6c 73 65 20 09 2f |seq();.X|.else ./|
|000051d0| 2a 20 22 63 61 6e 27 74 | 22 20 68 61 70 70 65 6e |* "can't|" happen|
|000051e0| 20 2a 2f 0a 58 09 09 66 | 70 72 69 6e 74 66 28 73 | */.X..f|printf(s|
|000051f0| 74 64 65 72 72 2c 22 50 | 61 72 74 20 25 64 20 75 |tderr,"P|art %d u|
|00005200| 6e 65 78 70 65 63 74 65 | 64 5c 6e 22 2c 70 61 72 |nexpecte|d\n",par|
|00005210| 74 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 70 61 72 |t);.X}.X|.X/* par|
|00005220| 74 20 6f 75 74 20 6f 66 | 20 73 65 71 75 65 6e 63 |t out of| sequenc|
|00005230| 65 20 2a 2f 0a 58 6f 73 | 65 71 28 29 20 7b 0a 58 |e */.Xos|eq() {.X|
|00005240| 09 69 6e 74 20 69 3b 0a | 58 0a 58 09 2f 2a 20 74 |.int i;.|X.X./* t|
|00005250| 72 79 20 61 6e 64 20 66 | 69 6c 6c 20 69 6e 20 67 |ry and f|ill in g|
|00005260| 61 70 20 2a 2f 0a 58 09 | 66 6f 72 20 28 69 3d 63 |ap */.X.|for (i=c|
|00005270| 75 72 5f 70 61 72 74 2b | 31 3b 20 69 3c 70 61 72 |ur_part+|1; i<par|
|00005280| 74 3b 20 69 2b 2b 29 0a | 58 09 09 69 66 20 28 70 |t; i++).|X..if (p|
|00005290| 61 72 74 73 5b 69 5d 29 | 20 7b 0a 58 09 09 09 70 |arts[i])| {.X...p|
|000052a0| 75 74 70 61 72 74 28 69 | 29 3b 0a 58 09 09 09 63 |utpart(i|);.X...c|
|000052b0| 75 72 5f 70 61 72 74 20 | 3d 20 69 3b 0a 58 09 09 |ur_part |= i;.X..|
|000052c0| 7d 0a 58 09 09 65 6c 73 | 65 20 67 6f 74 6f 20 69 |}.X..els|e goto i|
|000052d0| 73 67 61 70 3b 0a 58 09 | 2f 2a 20 61 6c 6c 20 6d |sgap;.X.|/* all m|
|000052e0| 69 73 73 69 6e 67 20 70 | 61 72 74 73 20 72 65 73 |issing p|arts res|
|000052f0| 74 6f 72 65 64 20 2d 2d | 20 63 6f 6e 74 69 6e 75 |tored --| continu|
|00005300| 65 20 2a 2f 0a 58 09 72 | 65 74 75 72 6e 3b 0a 58 |e */.X.r|eturn;.X|
|00005310| 69 73 67 61 70 3a 0a 58 | 09 2f 2a 20 73 74 61 72 |isgap:.X|./* star|
|00005320| 74 20 64 69 76 65 72 73 | 69 6f 6e 20 2a 2f 0a 58 |t divers|ion */.X|
|00005330| 09 64 69 76 65 72 74 5f | 70 61 72 74 20 3d 20 70 |.divert_|part = p|
|00005340| 61 72 74 3b 0a 58 09 73 | 61 76 65 6f 66 73 20 3d |art;.X.s|aveofs =|
|00005350| 20 6f 66 73 3b 0a 58 09 | 73 70 72 69 6e 74 66 28 | ofs;.X.|sprintf(|
|00005360| 70 6e 61 6d 65 2c 22 70 | 61 72 74 25 64 22 2c 70 |pname,"p|art%d",p|
|00005370| 61 72 74 29 3b 0a 58 09 | 69 66 20 28 28 6f 66 73 |art);.X.|if ((ofs|
|00005380| 20 3d 20 66 6f 70 65 6e | 28 70 6e 61 6d 65 2c 22 | = fopen|(pname,"|
|00005390| 77 2b 22 29 29 20 3d 3d | 20 4e 55 4c 4c 29 20 7b |w+")) ==| NULL) {|
|000053a0| 0a 58 09 09 70 65 72 72 | 6f 72 28 70 6e 61 6d 65 |.X..perr|or(pname|
|000053b0| 29 3b 20 65 78 69 74 28 | 2d 31 29 3b 20 7d 0a 58 |); exit(|-1); }.X|
|000053c0| 09 70 61 72 74 73 5b 70 | 61 72 74 5d 20 3d 20 6f |.parts[p|art] = o|
|000053d0| 66 73 3b 0a 58 7d 0a 58 | 65 6e 64 5f 6f 73 65 71 |fs;.X}.X|end_oseq|
|000053e0| 28 29 20 7b 0a 58 09 64 | 69 76 65 72 74 5f 70 61 |() {.X.d|ivert_pa|
|000053f0| 72 74 20 3d 20 30 3b 0a | 58 09 6f 66 73 20 3d 20 |rt = 0;.|X.ofs = |
|00005400| 73 61 76 65 6f 66 73 3b | 0a 58 7d 0a 58 0a 58 70 |saveofs;|.X}.X.Xp|
|00005410| 75 74 70 61 72 74 28 6e | 29 20 7b 0a 58 09 46 49 |utpart(n|) {.X.FI|
|00005420| 4c 45 20 2a 66 73 3b 0a | 58 09 72 65 67 69 73 74 |LE *fs;.|X.regist|
|00005430| 65 72 20 69 6e 74 20 63 | 3b 0a 58 0a 58 09 66 73 |er int c|;.X.X.fs|
|00005440| 20 3d 20 70 61 72 74 73 | 5b 6e 5d 3b 0a 58 09 72 | = parts|[n];.X.r|
|00005450| 65 77 69 6e 64 28 66 73 | 29 3b 0a 58 09 77 68 69 |ewind(fs|);.X.whi|
|00005460| 6c 65 20 28 28 63 3d 67 | 65 74 63 28 66 73 29 29 |le ((c=g|etc(fs))|
|00005470| 21 3d 45 4f 46 29 0a 58 | 09 09 70 75 74 63 28 63 |!=EOF).X|..putc(c|
|00005480| 2c 6f 66 73 29 3b 0a 58 | 09 66 63 6c 6f 73 65 28 |,ofs);.X|.fclose(|
|00005490| 66 73 29 3b 0a 58 09 73 | 70 72 69 6e 74 66 28 70 |fs);.X.s|printf(p|
|000054a0| 6e 61 6d 65 2c 22 70 61 | 72 74 25 64 22 2c 6e 29 |name,"pa|rt%d",n)|
|000054b0| 3b 0a 58 09 75 6e 6c 69 | 6e 6b 28 70 6e 61 6d 65 |;.X.unli|nk(pname|
|000054c0| 29 3b 0a 58 7d 0a 53 48 | 41 52 5f 45 4f 46 0a 69 |);.X}.SH|AR_EOF.i|
|000054d0| 66 20 74 65 73 74 20 33 | 36 33 38 20 2d 6e 65 20 |f test 3|638 -ne |
|000054e0| 22 60 77 63 20 2d 63 20 | 3c 20 27 6d 61 63 62 69 |"`wc -c |< 'macbi|
|000054f0| 6e 66 69 6c 74 2e 63 27 | 60 22 0a 74 68 65 6e 0a |nfilt.c'|`".then.|
|00005500| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 65 72 72 6f |.echo sh|ar: erro|
|00005510| 72 20 74 72 61 6e 73 6d | 69 74 74 69 6e 67 20 22 |r transm|itting "|
|00005520| 27 6d 61 63 62 69 6e 66 | 69 6c 74 2e 63 27 22 20 |'macbinf|ilt.c'" |
|00005530| 27 28 73 68 6f 75 6c 64 | 20 68 61 76 65 20 62 65 |'(should| have be|
|00005540| 65 6e 20 33 36 33 38 20 | 63 68 61 72 61 63 74 65 |en 3638 |characte|
|00005550| 72 73 29 27 0a 66 69 0a | 66 69 20 23 20 65 6e 64 |rs)'.fi.|fi # end|
|00005560| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00005570| 63 68 65 63 6b 0a 23 09 | 45 6e 64 20 6f 66 20 73 |check.#.|End of s|
|00005580| 68 65 6c 6c 20 61 72 63 | 68 69 76 65 0a 65 78 69 |hell arc|hive.exi|
|00005590| 74 20 30 0a 0a | |t 0.. | |
+--------+-------------------------+-------------------------+--------+--------+