home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume6 / crc-check < prev    next >
SHell self-extracting ARchive  |  1989-03-07  |  18.8 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 ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 61 6c 6c 62 | 65 72 79 40 75 75 6e 65 |om: allb|ery@uune|
|00000030| 74 2e 55 55 2e 4e 45 54 | 20 28 42 72 61 6e 64 6f |t.UU.NET| (Brando|
|00000040| 6e 20 53 2e 20 41 6c 6c | 62 65 72 79 20 2d 20 63 |n S. All|bery - c|
|00000050| 6f 6d 70 2e 73 6f 75 72 | 63 65 73 2e 6d 69 73 63 |omp.sour|ces.misc|
|00000060| 29 0a 53 75 62 6a 65 63 | 74 3a 20 76 30 36 69 30 |).Subjec|t: v06i0|
|00000070| 35 39 3a 20 66 69 6c 65 | 20 63 68 65 63 6b 65 72 |59: file| checker|
|00000080| 0a 4b 65 79 77 6f 72 64 | 73 3a 20 63 72 63 2c 20 |.Keyword|s: crc, |
|00000090| 66 69 6c 65 73 0a 4f 72 | 67 61 6e 69 7a 61 74 69 |files.Or|ganizati|
|000000a0| 6f 6e 3a 20 42 72 61 6e | 63 68 20 54 65 63 68 6e |on: Bran|ch Techn|
|000000b0| 6f 6c 6f 67 79 2c 20 41 | 6e 6e 20 41 72 62 6f 72 |ology, A|nn Arbor|
|000000c0| 2c 20 4d 49 0a 52 65 70 | 6c 79 2d 54 6f 3a 20 7a |, MI.Rep|ly-To: z|
|000000d0| 65 65 66 66 40 62 2d 74 | 65 63 68 2e 61 6e 6e 2d |eeff@b-t|ech.ann-|
|000000e0| 61 72 62 6f 72 2e 6d 69 | 2e 75 73 20 28 4a 6f 6e |arbor.mi|.us (Jon|
|000000f0| 20 5a 65 65 66 66 29 0a | 0a 50 6f 73 74 69 6e 67 | Zeeff).|.Posting|
|00000100| 2d 6e 75 6d 62 65 72 3a | 20 56 6f 6c 75 6d 65 20 |-number:| Volume |
|00000110| 36 2c 20 49 73 73 75 65 | 20 35 39 0a 53 75 62 6d |6, Issue| 59.Subm|
|00000120| 69 74 74 65 64 2d 62 79 | 3a 20 7a 65 65 66 66 40 |itted-by|: zeeff@|
|00000130| 62 2d 74 65 63 68 2e 61 | 6e 6e 2d 61 72 62 6f 72 |b-tech.a|nn-arbor|
|00000140| 2e 6d 69 2e 75 73 20 28 | 4a 6f 6e 20 5a 65 65 66 |.mi.us (|Jon Zeef|
|00000150| 66 29 0a 41 72 63 68 69 | 76 65 2d 6e 61 6d 65 3a |f).Archi|ve-name:|
|00000160| 20 63 72 63 2d 63 68 65 | 63 6b 0a 0a 5b 41 20 73 | crc-che|ck..[A s|
|00000170| 65 74 20 6f 66 20 63 72 | 63 20 70 72 6f 67 72 61 |et of cr|c progra|
|00000180| 6d 73 2e 20 20 54 68 69 | 73 20 63 61 6d 65 20 74 |ms. Thi|s came t|
|00000190| 6f 20 6d 65 20 6c 61 62 | 65 6c 65 64 20 61 73 20 |o me lab|eled as |
|000001a0| 61 20 22 66 69 6c 65 20 | 73 79 73 74 65 6d 20 63 |a "file |system c|
|000001b0| 68 65 63 6b 65 72 22 2c | 0a 62 75 74 20 69 74 27 |hecker",|.but it'|
|000001c0| 73 20 6e 6f 20 66 73 63 | 6b 2e 20 20 2b 2b 62 73 |s no fsc|k. ++bs|
|000001d0| 61 5d 0a 0a 54 68 69 73 | 20 69 73 20 61 20 73 65 |a]..This| is a se|
|000001e0| 74 20 6f 66 20 70 72 6f | 67 72 61 6d 73 20 74 6f |t of pro|grams to|
|000001f0| 20 63 68 65 63 6b 20 66 | 6f 72 20 75 6e 65 78 70 | check f|or unexp|
|00000200| 65 63 74 65 64 20 66 69 | 6c 65 20 73 79 73 74 65 |ected fi|le syste|
|00000210| 6d 20 0a 63 6f 72 72 75 | 70 74 69 6f 6e 20 6f 72 |m .corru|ption or|
|00000220| 20 73 65 63 75 72 69 74 | 79 20 62 72 65 61 63 68 | securit|y breach|
|00000230| 65 73 2e 20 20 49 74 27 | 73 20 6e 69 63 65 20 74 |es. It'|s nice t|
|00000240| 6f 20 62 65 20 61 62 6c | 65 20 74 6f 20 73 61 79 |o be abl|e to say|
|00000250| 20 74 68 61 74 20 79 6f | 75 20 0a 6b 6e 6f 77 20 | that yo|u .know |
|00000260| 61 6c 6c 20 79 6f 75 72 | 20 66 69 6c 65 73 20 61 |all your| files a|
|00000270| 72 65 20 61 73 20 74 68 | 65 79 20 73 68 6f 75 6c |re as th|ey shoul|
|00000280| 64 20 62 65 2e 0a 0a 23 | 21 20 2f 62 69 6e 2f 73 |d be...#|! /bin/s|
|00000290| 68 0a 23 20 54 68 69 73 | 20 69 73 20 61 20 73 68 |h.# This| is a sh|
|000002a0| 65 6c 6c 20 61 72 63 68 | 69 76 65 2e 20 20 52 65 |ell arch|ive. Re|
|000002b0| 6d 6f 76 65 20 61 6e 79 | 74 68 69 6e 67 20 62 65 |move any|thing be|
|000002c0| 66 6f 72 65 20 74 68 69 | 73 20 6c 69 6e 65 2c 20 |fore thi|s line, |
|000002d0| 74 68 65 6e 20 75 6e 70 | 61 63 6b 0a 23 20 69 74 |then unp|ack.# it|
|000002e0| 20 62 79 20 73 61 76 69 | 6e 67 20 69 74 20 69 6e | by savi|ng it in|
|000002f0| 74 6f 20 61 20 66 69 6c | 65 20 61 6e 64 20 74 79 |to a fil|e and ty|
|00000300| 70 69 6e 67 20 22 73 68 | 20 66 69 6c 65 22 2e 20 |ping "sh| file". |
|00000310| 20 54 6f 20 6f 76 65 72 | 77 72 69 74 65 20 65 78 | To over|write ex|
|00000320| 69 73 74 69 6e 67 0a 23 | 20 66 69 6c 65 73 2c 20 |isting.#| files, |
|00000330| 74 79 70 65 20 22 73 68 | 20 66 69 6c 65 20 2d 63 |type "sh| file -c|
|00000340| 22 2e 20 20 59 6f 75 20 | 63 61 6e 20 61 6c 73 6f |". You |can also|
|00000350| 20 66 65 65 64 20 74 68 | 69 73 20 61 73 20 73 74 | feed th|is as st|
|00000360| 61 6e 64 61 72 64 20 69 | 6e 70 75 74 20 76 69 61 |andard i|nput via|
|00000370| 0a 23 20 75 6e 73 68 61 | 72 2c 20 6f 72 20 62 79 |.# unsha|r, or by|
|00000380| 20 74 79 70 69 6e 67 20 | 22 73 68 20 3c 66 69 6c | typing |"sh <fil|
|00000390| 65 22 2c 20 65 2e 67 2e | 2e 20 20 49 66 20 74 68 |e", e.g.|. If th|
|000003a0| 69 73 20 61 72 63 68 69 | 76 65 20 69 73 20 63 6f |is archi|ve is co|
|000003b0| 6d 70 6c 65 74 65 2c 20 | 79 6f 75 0a 23 20 77 69 |mplete, |you.# wi|
|000003c0| 6c 6c 20 73 65 65 20 74 | 68 65 20 66 6f 6c 6c 6f |ll see t|he follo|
|000003d0| 77 69 6e 67 20 6d 65 73 | 73 61 67 65 20 61 74 20 |wing mes|sage at |
|000003e0| 74 68 65 20 65 6e 64 3a | 0a 23 09 09 22 45 6e 64 |the end:|.#.."End|
|000003f0| 20 6f 66 20 73 68 65 6c | 6c 20 61 72 63 68 69 76 | of shel|l archiv|
|00000400| 65 2e 22 0a 23 20 43 6f | 6e 74 65 6e 74 73 3a 20 |e.".# Co|ntents: |
|00000410| 20 4d 61 6b 65 66 69 6c | 65 20 52 45 41 44 4d 45 | Makefil|e README|
|00000420| 20 63 72 63 2e 63 20 63 | 72 63 5f 63 68 65 63 6b | crc.c c|rc_check|
|00000430| 2e 63 20 66 69 6e 64 5f | 63 72 63 0a 23 20 57 72 |.c find_|crc.# Wr|
|00000440| 61 70 70 65 64 20 62 79 | 20 7a 65 65 66 66 40 62 |apped by| zeeff@b|
|00000450| 2d 74 65 63 68 20 6f 6e | 20 53 75 6e 20 46 65 62 |-tech on| Sun Feb|
|00000460| 20 32 36 20 31 32 3a 31 | 30 3a 32 35 20 31 39 38 | 26 12:1|0:25 198|
|00000470| 39 0a 50 41 54 48 3d 2f | 62 69 6e 3a 2f 75 73 72 |9.PATH=/|bin:/usr|
|00000480| 2f 62 69 6e 3a 2f 75 73 | 72 2f 75 63 62 20 3b 20 |/bin:/us|r/ucb ; |
|00000490| 65 78 70 6f 72 74 20 50 | 41 54 48 0a 69 66 20 74 |export P|ATH.if t|
|000004a0| 65 73 74 20 2d 66 20 4d | 61 6b 65 66 69 6c 65 20 |est -f M|akefile |
|000004b0| 2d 61 20 22 24 7b 31 7d | 22 20 21 3d 20 22 2d 63 |-a "${1}|" != "-c|
|000004c0| 22 20 3b 20 74 68 65 6e | 20 0a 20 20 65 63 68 6f |" ; then| . echo|
|000004d0| 20 73 68 61 72 3a 20 57 | 69 6c 6c 20 6e 6f 74 20 | shar: W|ill not |
|000004e0| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000004f0| 69 6e 67 20 66 69 6c 65 | 20 5c 22 4d 61 6b 65 66 |ing file| \"Makef|
|00000500| 69 6c 65 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |ile\".el|se.echo |
|00000510| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00000520| 20 5c 22 4d 61 6b 65 66 | 69 6c 65 5c 22 20 5c 28 | \"Makef|ile\" \(|
|00000530| 32 34 31 20 63 68 61 72 | 61 63 74 65 72 73 5c 29 |241 char|acters\)|
|00000540| 0a 73 65 64 20 22 73 2f | 5e 58 2f 2f 22 20 3e 4d |.sed "s/|^X//" >M|
|00000550| 61 6b 65 66 69 6c 65 20 | 3c 3c 27 45 4e 44 5f 4f |akefile |<<'END_O|
|00000560| 46 5f 4d 61 6b 65 66 69 | 6c 65 27 0a 58 0a 58 43 |F_Makefi|le'.X.XC|
|00000570| 43 3d 63 63 20 0a 58 43 | 46 4c 41 47 53 20 3d 20 |C=cc .XC|FLAGS = |
|00000580| 2d 4f 20 0a 58 4c 44 46 | 4c 41 47 53 20 3d 0a 58 |-O .XLDF|LAGS =.X|
|00000590| 0a 58 0a 58 53 52 43 53 | 3d 63 72 63 2e 63 20 63 |.X.XSRCS|=crc.c c|
|000005a0| 72 63 5f 63 68 65 63 6b | 2e 63 0a 58 4f 42 4a 53 |rc_check|.c.XOBJS|
|000005b0| 3d 63 72 63 2e 6f 20 63 | 72 63 5f 63 68 65 63 6b |=crc.o c|rc_check|
|000005c0| 2e 6f 0a 58 0a 58 63 72 | 63 3a 20 24 28 4f 42 4a |.o.X.Xcr|c: $(OBJ|
|000005d0| 53 29 0a 58 09 24 28 43 | 43 29 20 2d 6f 20 63 72 |S).X.$(C|C) -o cr|
|000005e0| 63 20 63 72 63 2e 6f 20 | 24 28 43 46 4c 41 47 53 |c crc.o |$(CFLAGS|
|000005f0| 29 20 24 28 4c 44 46 4c | 41 47 53 29 20 0a 58 09 |) $(LDFL|AGS) .X.|
|00000600| 24 28 43 43 29 20 2d 6f | 20 63 72 63 5f 63 68 65 |$(CC) -o| crc_che|
|00000610| 63 6b 20 63 72 63 5f 63 | 68 65 63 6b 2e 6f 20 24 |ck crc_c|heck.o $|
|00000620| 28 43 46 4c 41 47 53 29 | 20 24 28 4c 44 46 4c 41 |(CFLAGS)| $(LDFLA|
|00000630| 47 53 29 20 0a 58 0a 58 | 63 6c 65 61 6e 3a 0a 58 |GS) .X.X|clean:.X|
|00000640| 09 72 6d 20 2d 66 20 63 | 72 63 2e 74 6d 70 20 63 |.rm -f c|rc.tmp c|
|00000650| 72 63 2e 66 69 6c 65 73 | 20 2a 2e 6f 20 63 72 63 |rc.files| *.o crc|
|00000660| 20 63 72 63 5f 63 68 65 | 63 6b 0a 58 0a 45 4e 44 | crc_che|ck.X.END|
|00000670| 5f 4f 46 5f 4d 61 6b 65 | 66 69 6c 65 0a 69 66 20 |_OF_Make|file.if |
|00000680| 74 65 73 74 20 32 34 31 | 20 2d 6e 65 20 60 77 63 |test 241| -ne `wc|
|00000690| 20 2d 63 20 3c 4d 61 6b | 65 66 69 6c 65 60 3b 20 | -c <Mak|efile`; |
|000006a0| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|000006b0| 61 72 3a 20 5c 22 4d 61 | 6b 65 66 69 6c 65 5c 22 |ar: \"Ma|kefile\"|
|000006c0| 20 75 6e 70 61 63 6b 65 | 64 20 77 69 74 68 20 77 | unpacke|d with w|
|000006d0| 72 6f 6e 67 20 73 69 7a | 65 21 0a 66 69 0a 23 20 |rong siz|e!.fi.# |
|000006e0| 65 6e 64 20 6f 66 20 6f | 76 65 72 77 72 69 74 69 |end of o|verwriti|
|000006f0| 6e 67 20 63 68 65 63 6b | 0a 66 69 0a 69 66 20 74 |ng check|.fi.if t|
|00000700| 65 73 74 20 2d 66 20 52 | 45 41 44 4d 45 20 2d 61 |est -f R|EADME -a|
|00000710| 20 22 24 7b 31 7d 22 20 | 21 3d 20 22 2d 63 22 20 | "${1}" |!= "-c" |
|00000720| 3b 20 74 68 65 6e 20 0a | 20 20 65 63 68 6f 20 73 |; then .| echo s|
|00000730| 68 61 72 3a 20 57 69 6c | 6c 20 6e 6f 74 20 6f 76 |har: Wil|l not ov|
|00000740| 65 72 2d 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |er-write| existin|
|00000750| 67 20 66 69 6c 65 20 5c | 22 52 45 41 44 4d 45 5c |g file \|"README\|
|00000760| 22 0a 65 6c 73 65 0a 65 | 63 68 6f 20 73 68 61 72 |".else.e|cho shar|
|00000770| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 52 |: Extrac|ting \"R|
|00000780| 45 41 44 4d 45 5c 22 20 | 5c 28 31 32 38 33 20 63 |EADME\" |\(1283 c|
|00000790| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|000007a0| 22 73 2f 5e 58 2f 2f 22 | 20 3e 52 45 41 44 4d 45 |"s/^X//"| >README|
|000007b0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 52 45 41 44 4d | <<'END_|OF_READM|
|000007c0| 45 27 0a 58 0a 58 54 68 | 69 73 20 69 73 20 61 20 |E'.X.XTh|is is a |
|000007d0| 73 65 74 20 6f 66 20 70 | 72 6f 67 72 61 6d 73 20 |set of p|rograms |
|000007e0| 74 6f 20 63 68 65 63 6b | 20 66 6f 72 20 75 6e 65 |to check| for une|
|000007f0| 78 70 65 63 74 65 64 20 | 66 69 6c 65 20 73 79 73 |xpected |file sys|
|00000800| 74 65 6d 20 0a 58 63 6f | 72 72 75 70 74 69 6f 6e |tem .Xco|rruption|
|00000810| 20 6f 72 20 73 65 63 75 | 72 69 74 79 20 62 72 65 | or secu|rity bre|
|00000820| 61 63 68 65 73 2e 20 20 | 49 74 27 73 20 6e 69 63 |aches. |It's nic|
|00000830| 65 20 74 6f 20 62 65 20 | 61 62 6c 65 20 74 6f 20 |e to be |able to |
|00000840| 73 61 79 20 74 68 61 74 | 20 79 6f 75 20 0a 58 6b |say that| you .Xk|
|00000850| 6e 6f 77 20 61 6c 6c 20 | 79 6f 75 72 20 66 69 6c |now all |your fil|
|00000860| 65 73 20 61 72 65 20 61 | 73 20 74 68 65 79 20 73 |es are a|s they s|
|00000870| 68 6f 75 6c 64 20 62 65 | 2e 20 20 4d 61 72 6b 20 |hould be|. Mark |
|00000880| 4d 65 6e 64 65 6c 20 77 | 72 6f 74 65 20 6d 6f 73 |Mendel w|rote mos|
|00000890| 74 20 6f 66 20 0a 58 63 | 72 63 2e 63 20 61 6e 64 |t of .Xc|rc.c and|
|000008a0| 20 49 20 77 72 6f 74 65 | 20 63 72 63 5f 63 68 65 | I wrote| crc_che|
|000008b0| 63 6b 2e 63 2e 20 20 49 | 74 27 73 20 77 72 69 74 |ck.c. I|t's writ|
|000008c0| 74 65 6e 20 66 6f 72 20 | 53 79 73 20 56 2c 20 62 |ten for |Sys V, b|
|000008d0| 75 74 20 42 53 44 20 0a | 58 73 68 6f 75 6c 64 6e |ut BSD .|Xshouldn|
|000008e0| 27 74 20 62 65 20 68 61 | 72 64 2e 20 20 0a 58 0a |'t be ha|rd. .X.|
|000008f0| 58 0a 58 54 6f 20 75 73 | 65 20 69 74 3a 0a 58 0a |X.XTo us|e it:.X.|
|00000900| 58 31 29 20 79 6f 75 20 | 66 69 72 73 74 20 63 72 |X1) you |first cr|
|00000910| 65 61 74 65 20 61 20 63 | 72 63 20 6c 69 73 74 20 |eate a c|rc list |
|00000920| 77 69 74 68 20 74 68 65 | 20 73 63 72 69 70 74 20 |with the| script |
|00000930| 66 69 6e 64 5f 63 72 63 | 2e 20 20 59 6f 75 20 63 |find_crc|. You c|
|00000940| 61 6e 0a 58 6d 6f 64 69 | 66 79 20 69 74 20 61 6e |an.Xmodi|fy it an|
|00000950| 64 20 61 64 64 20 67 72 | 65 70 20 2d 76 20 74 6f |d add gr|ep -v to|
|00000960| 20 74 68 65 20 70 69 70 | 65 20 74 6f 20 63 68 61 | the pip|e to cha|
|00000970| 6e 67 65 20 74 68 65 20 | 66 69 6c 65 20 73 79 73 |nge the |file sys|
|00000980| 74 65 6d 73 20 74 68 61 | 74 0a 58 69 74 20 63 68 |tems tha|t.Xit ch|
|00000990| 65 63 6b 73 2e 20 20 20 | 54 68 65 20 65 6e 64 20 |ecks. |The end |
|000009a0| 72 65 73 75 6c 74 20 69 | 73 20 61 20 66 69 6c 65 |result i|s a file|
|000009b0| 20 22 63 72 63 2e 74 6d | 70 22 2e 0a 58 0a 58 32 | "crc.tm|p"..X.X2|
|000009c0| 29 20 59 6f 75 20 63 61 | 6e 20 6e 6f 77 20 75 73 |) You ca|n now us|
|000009d0| 65 20 63 72 63 5f 63 68 | 65 63 6b 20 74 6f 20 63 |e crc_ch|eck to c|
|000009e0| 6f 6d 70 61 72 65 20 74 | 68 69 73 20 63 72 63 2e |ompare t|his crc.|
|000009f0| 74 6d 70 20 66 69 6c 65 | 20 74 6f 20 61 20 63 72 |tmp file| to a cr|
|00000a00| 63 20 6c 69 73 74 0a 58 | 63 72 65 61 74 65 64 20 |c list.X|created |
|00000a10| 65 61 72 6c 69 65 72 20 | 63 61 6c 6c 65 64 20 63 |earlier |called c|
|00000a20| 72 63 2e 66 69 6c 65 73 | 2e 20 20 49 66 20 65 76 |rc.files|. If ev|
|00000a30| 65 72 79 74 68 69 6e 67 | 20 69 73 20 6f 6b 2c 20 |erything| is ok, |
|00000a40| 79 6f 75 20 63 61 6e 20 | 6d 76 20 0a 58 63 72 63 |you can |mv .Xcrc|
|00000a50| 2e 74 6d 70 20 74 6f 20 | 63 72 63 2e 66 69 6c 65 |.tmp to |crc.file|
|00000a60| 73 2e 20 20 49 74 20 69 | 73 20 65 78 70 65 63 74 |s. It i|s expect|
|00000a70| 65 64 20 74 68 61 74 20 | 79 6f 75 20 77 69 6c 6c |ed that |you will|
|00000a80| 20 77 61 6e 74 20 74 6f | 20 75 73 65 20 67 72 65 | want to| use gre|
|00000a90| 70 20 2d 76 0a 58 6f 6e | 20 74 68 65 20 6f 75 74 |p -v.Xon| the out|
|00000aa0| 70 75 74 20 6f 66 20 63 | 72 63 5f 63 68 65 63 6b |put of c|rc_check|
|00000ab0| 20 74 6f 20 63 75 74 20 | 64 6f 77 6e 20 6f 6e 20 | to cut |down on |
|00000ac0| 74 68 65 20 6e 6f 69 73 | 65 2e 0a 58 0a 58 4e 6f |the nois|e..X.XNo|
|00000ad0| 74 65 20 74 68 61 74 20 | 79 6f 75 20 63 61 6e 20 |te that |you can |
|00000ae0| 75 73 65 20 61 20 2d 69 | 20 6f 70 74 69 6f 6e 20 |use a -i| option |
|00000af0| 77 68 65 6e 20 72 75 6e | 6e 69 6e 67 20 63 72 63 |when run|ning crc|
|00000b00| 20 74 6f 20 63 68 61 6e | 67 65 20 74 68 65 20 0a | to chan|ge the .|
|00000b10| 58 69 6e 69 74 69 61 6c | 20 63 72 63 20 76 61 6c |Xinitial| crc val|
|00000b20| 75 65 2e 20 20 49 66 20 | 79 6f 75 20 64 6f 6e 27 |ue. If |you don'|
|00000b30| 74 20 74 65 6c 6c 20 61 | 6e 79 6f 6e 65 20 77 68 |t tell a|nyone wh|
|00000b40| 61 74 20 74 68 69 73 20 | 69 73 2c 20 79 6f 75 20 |at this |is, you |
|00000b50| 63 61 6e 20 0a 58 6d 61 | 6b 65 20 69 74 20 6e 65 |can .Xma|ke it ne|
|00000b60| 61 72 6c 79 20 69 6d 70 | 6f 73 73 69 62 6c 65 20 |arly imp|ossible |
|00000b70| 66 6f 72 20 61 6e 79 6f | 6e 65 20 74 6f 20 6d 6f |for anyo|ne to mo|
|00000b80| 64 69 66 79 20 61 20 66 | 69 6c 65 20 61 6e 64 20 |dify a f|ile and |
|00000b90| 74 68 65 6e 20 61 64 6a | 75 73 74 20 0a 58 74 68 |then adj|ust .Xth|
|00000ba0| 65 20 63 72 63 20 76 61 | 6c 75 65 20 74 6f 20 74 |e crc va|lue to t|
|00000bb0| 68 65 20 6f 6c 64 20 6f | 6e 65 2e 20 20 54 6f 20 |he old o|ne. To |
|00000bc0| 72 65 61 6c 6c 79 20 64 | 6f 20 69 74 20 72 69 67 |really d|o it rig|
|00000bd0| 68 74 2c 20 79 6f 75 20 | 6e 65 65 64 20 74 6f 20 |ht, you |need to |
|00000be0| 0a 58 0a 58 31 29 20 52 | 75 6e 20 66 69 6e 64 5f |.X.X1) R|un find_|
|00000bf0| 63 72 63 20 69 6e 20 73 | 69 6e 67 6c 65 20 75 73 |crc in s|ingle us|
|00000c00| 65 72 20 6d 6f 64 65 20 | 28 75 6e 6c 65 73 73 20 |er mode |(unless |
|00000c10| 79 6f 75 20 6d 6f 64 69 | 66 79 20 74 68 65 20 63 |you modi|fy the c|
|00000c20| 72 63 20 73 6f 75 72 63 | 65 29 2e 0a 58 32 29 20 |rc sourc|e)..X2) |
|00000c30| 53 74 6f 72 65 20 61 6c | 6c 20 63 72 63 20 72 65 |Store al|l crc re|
|00000c40| 73 75 6c 74 73 20 6f 66 | 66 6c 69 6e 65 2e 0a 58 |sults of|fline..X|
|00000c50| 33 29 20 44 6f 6e 27 74 | 20 6c 65 74 20 61 6e 79 |3) Don't| let any|
|00000c60| 6f 6e 65 20 73 65 65 20 | 79 6f 75 72 20 2d 69 20 |one see |your -i |
|00000c70| 76 61 6c 75 65 20 6f 72 | 20 74 68 65 20 63 72 63 |value or| the crc|
|00000c80| 20 72 65 73 75 6c 74 73 | 2e 0a 58 0a 58 0a 58 50 | results|..X.X.XP|
|00000c90| 6c 65 61 73 65 20 73 65 | 6e 64 20 6d 65 20 61 6e |lease se|nd me an|
|00000ca0| 79 20 6d 6f 64 69 66 69 | 63 61 74 69 6f 6e 73 20 |y modifi|cations |
|00000cb0| 79 6f 75 20 6d 61 6b 65 | 2e 0a 58 0a 58 4a 6f 6e |you make|..X.XJon|
|00000cc0| 20 5a 65 65 66 66 0a 58 | 7a 65 65 66 66 40 62 2d | Zeeff.X|zeeff@b-|
|00000cd0| 74 65 63 68 2e 61 6e 6e | 2d 61 72 62 6f 72 2e 6d |tech.ann|-arbor.m|
|00000ce0| 69 2e 75 73 0a 58 0a 58 | 0a 45 4e 44 5f 4f 46 5f |i.us.X.X|.END_OF_|
|00000cf0| 52 45 41 44 4d 45 0a 69 | 66 20 74 65 73 74 20 31 |README.i|f test 1|
|00000d00| 32 38 33 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |283 -ne |`wc -c <|
|00000d10| 52 45 41 44 4d 45 60 3b | 20 74 68 65 6e 0a 20 20 |README`;| then. |
|00000d20| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 52 | echo s|har: \"R|
|00000d30| 45 41 44 4d 45 5c 22 20 | 75 6e 70 61 63 6b 65 64 |EADME\" |unpacked|
|00000d40| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00000d50| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 6f 76 |!.fi.# e|nd of ov|
|00000d60| 65 72 77 72 69 74 69 6e | 67 20 63 68 65 63 6b 0a |erwritin|g check.|
|00000d70| 66 69 0a 69 66 20 74 65 | 73 74 20 2d 66 20 63 72 |fi.if te|st -f cr|
|00000d80| 63 2e 63 20 2d 61 20 22 | 24 7b 31 7d 22 20 21 3d |c.c -a "|${1}" !=|
|00000d90| 20 22 2d 63 22 20 3b 20 | 74 68 65 6e 20 0a 20 20 | "-c" ; |then . |
|00000da0| 65 63 68 6f 20 73 68 61 | 72 3a 20 57 69 6c 6c 20 |echo sha|r: Will |
|00000db0| 6e 6f 74 20 6f 76 65 72 | 2d 77 72 69 74 65 20 65 |not over|-write e|
|00000dc0| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 5c 22 63 |xisting |file \"c|
|00000dd0| 72 63 2e 63 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |rc.c\".e|lse.echo|
|00000de0| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|00000df0| 67 20 5c 22 63 72 63 2e | 63 5c 22 20 5c 28 39 39 |g \"crc.|c\" \(99|
|00000e00| 31 38 20 63 68 61 72 61 | 63 74 65 72 73 5c 29 0a |18 chara|cters\).|
|00000e10| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 63 72 |sed "s/^|X//" >cr|
|00000e20| 63 2e 63 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 63 72 |c.c <<'E|ND_OF_cr|
|00000e30| 63 2e 63 27 0a 58 2f 2a | 20 75 70 64 63 72 63 28 |c.c'.X/*| updcrc(|
|00000e40| 33 29 2c 20 63 72 63 28 | 31 29 20 2d 20 63 61 6c |3), crc(|1) - cal|
|00000e50| 63 75 6c 61 74 65 20 63 | 72 63 20 70 6f 6c 79 6e |culate c|rc polyn|
|00000e60| 6f 6d 69 61 6c 73 0a 58 | 20 2a 0a 58 20 2a 20 43 |omials.X| *.X * C|
|00000e70| 61 6c 63 75 6c 61 74 65 | 2c 20 69 6e 74 65 6c 6c |alculate|, intell|
|00000e80| 69 67 65 6e 74 6c 79 2c | 20 74 68 65 20 43 52 43 |igently,| the CRC|
|00000e90| 20 6f 66 20 61 20 64 61 | 74 61 73 65 74 20 69 6e | of a da|taset in|
|00000ea0| 63 72 65 6d 65 6e 74 61 | 6c 6c 79 20 67 69 76 65 |crementa|lly give|
|00000eb0| 6e 20 61 20 0a 58 20 2a | 20 62 75 66 66 65 72 20 |n a .X *| buffer |
|00000ec0| 66 75 6c 6c 20 61 74 20 | 61 20 74 69 6d 65 2e 0a |full at |a time..|
|00000ed0| 58 20 2a 20 0a 58 20 2a | 20 55 73 61 67 65 3a 0a |X * .X *| Usage:.|
|00000ee0| 58 20 2a 20 09 6e 65 77 | 63 72 63 20 3d 20 75 70 |X * .new|crc = up|
|00000ef0| 64 63 72 63 28 20 6f 6c | 64 63 72 63 2c 20 62 75 |dcrc( ol|dcrc, bu|
|00000f00| 66 61 64 72 2c 20 62 75 | 66 6c 65 6e 20 29 0a 58 |fadr, bu|flen ).X|
|00000f10| 20 2a 20 09 09 75 6e 73 | 69 67 6e 65 64 20 69 6e | * ..uns|igned in|
|00000f20| 74 20 6f 6c 64 63 72 63 | 2c 20 62 75 66 6c 65 6e |t oldcrc|, buflen|
|00000f30| 3b 0a 58 20 2a 20 09 09 | 63 68 61 72 20 2a 62 75 |;.X * ..|char *bu|
|00000f40| 66 61 64 72 3b 0a 58 20 | 2a 0a 58 20 2a 20 43 6f |fadr;.X |*.X * Co|
|00000f50| 6d 70 69 6c 69 6e 67 20 | 77 69 74 68 20 2d 44 54 |mpiling |with -DT|
|00000f60| 45 53 54 20 63 72 65 61 | 74 65 73 20 61 20 70 72 |EST crea|tes a pr|
|00000f70| 6f 67 72 61 6d 20 74 6f | 20 70 72 69 6e 74 20 74 |ogram to| print t|
|00000f80| 68 65 20 43 52 43 20 6f | 66 20 73 74 64 69 6e 20 |he CRC o|f stdin |
|00000f90| 74 6f 20 73 74 64 6f 75 | 74 2e 0a 58 20 2a 20 43 |to stdou|t..X * C|
|00000fa0| 6f 6d 70 69 6c 65 20 77 | 69 74 68 20 2d 44 4d 41 |ompile w|ith -DMA|
|00000fb0| 4b 45 54 41 42 20 74 6f | 20 70 72 69 6e 74 20 76 |KETAB to| print v|
|00000fc0| 61 6c 75 65 73 20 66 6f | 72 20 63 72 63 74 61 62 |alues fo|r crctab|
|00000fd0| 20 74 6f 20 73 74 64 6f | 75 74 2e 20 20 49 66 20 | to stdo|ut. If |
|00000fe0| 79 6f 75 20 63 68 61 6e | 67 65 0a 58 20 2a 09 74 |you chan|ge.X *.t|
|00000ff0| 68 65 20 43 52 43 20 70 | 6f 6c 79 6e 6f 6d 69 61 |he CRC p|olynomia|
|00001000| 6c 20 70 61 72 61 6d 65 | 74 65 72 73 2c 20 62 65 |l parame|ters, be|
|00001010| 20 73 75 72 65 20 74 6f | 20 64 6f 20 74 68 69 73 | sure to| do this|
|00001020| 20 61 6e 64 20 63 68 61 | 6e 67 65 0a 58 20 2a 09 | and cha|nge.X *.|
|00001030| 63 72 63 74 61 62 27 73 | 20 69 6e 69 74 69 61 6c |crctab's| initial|
|00001040| 20 76 61 6c 75 65 2e 0a | 58 20 2a 0a 58 20 2a 20 | value..|X *.X * |
|00001050| 4e 6f 74 65 73 3a 0a 58 | 20 2a 20 20 52 65 67 61 |Notes:.X| * Rega|
|00001060| 72 64 73 20 74 68 65 20 | 64 61 74 61 20 73 74 72 |rds the |data str|
|00001070| 65 61 6d 20 61 73 20 61 | 6e 20 69 6e 74 65 67 65 |eam as a|n intege|
|00001080| 72 20 77 68 6f 73 65 20 | 4d 53 42 20 69 73 20 74 |r whose |MSB is t|
|00001090| 68 65 20 4d 53 42 20 6f | 66 20 74 68 65 20 66 69 |he MSB o|f the fi|
|000010a0| 72 73 74 0a 58 20 2a 20 | 20 62 79 74 65 20 72 65 |rst.X * | byte re|
|000010b0| 63 69 65 76 65 64 2e 20 | 20 54 68 69 73 20 6e 75 |cieved. | This nu|
|000010c0| 6d 62 65 72 20 69 73 20 | 27 64 69 76 69 64 65 64 |mber is |'divided|
|000010d0| 27 20 28 75 73 69 6e 67 | 20 78 6f 72 20 69 6e 73 |' (using| xor ins|
|000010e0| 74 65 61 64 20 6f 66 20 | 73 75 62 74 72 61 63 74 |tead of |subtract|
|000010f0| 69 6f 6e 29 0a 58 20 2a | 20 20 62 79 20 74 68 65 |ion).X *| by the|
|00001100| 20 63 72 63 2d 70 6f 6c | 79 6e 6f 6d 69 61 6c 20 | crc-pol|ynomial |
|00001110| 50 2e 0a 58 20 2a 20 20 | 58 4d 4f 44 45 4d 20 64 |P..X * |XMODEM d|
|00001120| 6f 65 73 20 74 68 69 6e | 67 73 20 61 20 6c 69 74 |oes thin|gs a lit|
|00001130| 74 6c 65 20 64 69 66 66 | 65 72 65 6e 74 6c 79 2c |tle diff|erently,|
|00001140| 20 65 73 73 65 6e 74 69 | 61 6c 6c 79 20 74 72 65 | essenti|ally tre|
|00001150| 61 74 69 6e 67 20 74 68 | 65 20 4c 53 42 20 6f 66 |ating th|e LSB of|
|00001160| 0a 58 20 2a 20 74 68 65 | 20 66 69 72 73 74 20 64 |.X * the| first d|
|00001170| 61 74 61 20 62 79 74 65 | 20 61 73 20 74 68 65 20 |ata byte| as the |
|00001180| 4d 53 42 20 6f 66 20 74 | 68 65 20 69 6e 74 65 67 |MSB of t|he integ|
|00001190| 65 72 2e 20 44 65 66 69 | 6e 65 20 53 57 41 50 50 |er. Defi|ne SWAPP|
|000011a0| 45 44 20 74 6f 20 6d 61 | 6b 65 0a 58 20 2a 20 74 |ED to ma|ke.X * t|
|000011b0| 68 69 6e 67 73 20 62 65 | 68 61 76 65 20 69 6e 20 |hings be|have in |
|000011c0| 74 68 69 73 20 6d 61 6e | 6e 65 72 2e 0a 58 20 2a |this man|ner..X *|
|000011d0| 0a 58 20 2a 20 41 75 74 | 68 6f 72 3a 09 4d 61 72 |.X * Aut|hor:.Mar|
|000011e0| 6b 20 47 2e 20 4d 65 6e | 64 65 6c 2c 20 37 2f 38 |k G. Men|del, 7/8|
|000011f0| 36 0a 58 20 2a 09 09 55 | 55 43 50 3a 20 69 68 6e |6.X *..U|UCP: ihn|
|00001200| 70 34 21 75 6d 6e 2d 63 | 73 21 68 79 70 65 72 21 |p4!umn-c|s!hyper!|
|00001210| 6d 61 72 6b 2c 20 47 45 | 6e 69 65 3a 20 6d 67 6d |mark, GE|nie: mgm|
|00001220| 0a 58 20 2a 2f 0a 58 0a | 58 23 64 65 66 69 6e 65 |.X */.X.|X#define|
|00001230| 20 54 45 53 54 0a 58 0a | 58 2f 2a 20 54 68 65 20 | TEST.X.|X/* The |
|00001240| 43 52 43 20 70 6f 6c 79 | 6e 6f 6d 69 61 6c 2e 0a |CRC poly|nomial..|
|00001250| 58 20 2a 20 54 68 65 73 | 65 20 34 20 76 61 6c 75 |X * Thes|e 4 valu|
|00001260| 65 73 20 64 65 66 69 6e | 65 20 74 68 65 20 63 72 |es defin|e the cr|
|00001270| 63 2d 70 6f 6c 79 6e 6f | 6d 69 61 6c 2e 0a 58 20 |c-polyno|mial..X |
|00001280| 2a 20 49 66 20 79 6f 75 | 20 63 68 61 6e 67 65 20 |* If you| change |
|00001290| 74 68 65 6d 2c 20 79 6f | 75 20 6d 75 73 74 20 63 |them, yo|u must c|
|000012a0| 68 61 6e 67 65 20 63 72 | 63 74 61 62 5b 5d 27 73 |hange cr|ctab[]'s|
|000012b0| 20 69 6e 69 74 69 61 6c | 20 76 61 6c 75 65 20 74 | initial| value t|
|000012c0| 6f 20 77 68 61 74 20 69 | 73 0a 58 20 2a 20 70 72 |o what i|s.X * pr|
|000012d0| 69 6e 74 65 64 20 62 79 | 20 69 6e 69 74 63 72 63 |inted by| initcrc|
|000012e0| 74 61 62 28 29 20 5b 73 | 65 65 20 27 63 6f 6d 70 |tab() [s|ee 'comp|
|000012f0| 69 6c 65 20 77 69 74 68 | 20 2d 44 4d 41 4b 45 54 |ile with| -DMAKET|
|00001300| 41 42 27 20 61 62 6f 76 | 65 5d 2e 0a 58 20 2a 2f |AB' abov|e]..X */|
|00001310| 0a 58 0a 58 2f 2a 20 56 | 61 6c 75 65 20 75 73 65 |.X.X/* V|alue use|
|00001320| 64 20 62 79 3a 09 20 20 | 20 20 09 09 43 49 54 54 |d by:. | ..CITT|
|00001330| 09 58 4d 4f 44 45 4d 09 | 41 52 43 20 20 09 2a 2f |.XMODEM.|ARC .*/|
|00001340| 0a 58 23 64 65 66 69 6e | 65 09 50 09 20 30 78 41 |.X#defin|e.P. 0xA|
|00001350| 30 30 31 09 20 2f 2a 20 | 74 68 65 20 70 6f 6c 79 |001. /* |the poly|
|00001360| 3a 09 30 78 31 30 32 31 | 09 30 78 31 30 32 31 09 |:.0x1021|.0x1021.|
|00001370| 41 30 30 31 09 2a 2f 0a | 58 23 64 65 66 69 6e 65 |A001.*/.|X#define|
|00001380| 20 49 4e 49 54 5f 43 52 | 43 20 30 4c 09 20 2f 2a | INIT_CR|C 0L. /*|
|00001390| 20 69 6e 69 74 20 76 61 | 6c 75 65 3a 09 2d 31 09 | init va|lue:.-1.|
|000013a0| 30 09 30 09 2a 2f 0a 58 | 23 64 65 66 69 6e 65 20 |0.0.*/.X|#define |
|000013b0| 53 57 41 50 50 45 44 09 | 09 20 2f 2a 20 62 69 74 |SWAPPED.|. /* bit|
|000013c0| 20 6f 72 64 65 72 3a 09 | 75 6e 64 65 66 09 64 65 | order:.|undef.de|
|000013d0| 66 69 6e 65 64 09 64 65 | 66 69 6e 65 64 20 2a 2f |fined.de|fined */|
|000013e0| 0a 58 23 64 65 66 69 6e | 65 20 57 09 31 36 09 20 |.X#defin|e W.16. |
|000013f0| 2f 2a 20 62 69 74 73 20 | 69 6e 20 43 52 43 3a 31 |/* bits |in CRC:1|
|00001400| 36 09 31 36 09 31 36 09 | 2a 2f 0a 58 0a 58 2f 2a |6.16.16.|*/.X.X/*|
|00001410| 20 64 61 74 61 20 74 79 | 70 65 20 74 68 61 74 20 | data ty|pe that |
|00001420| 68 6f 6c 64 73 20 61 20 | 57 2d 62 69 74 20 75 6e |holds a |W-bit un|
|00001430| 73 69 67 6e 65 64 20 69 | 6e 74 65 67 65 72 20 2a |signed i|nteger *|
|00001440| 2f 0a 58 23 69 66 20 57 | 20 3c 3d 20 31 36 0a 58 |/.X#if W| <= 16.X|
|00001450| 23 20 20 64 65 66 69 6e | 65 20 57 54 59 50 45 09 |# defin|e WTYPE.|
|00001460| 75 6e 73 69 67 6e 65 64 | 20 73 68 6f 72 74 0a 58 |unsigned| short.X|
|00001470| 23 65 6c 73 65 0a 58 23 | 20 20 64 65 66 69 6e 65 |#else.X#| define|
|00001480| 20 57 54 59 50 45 20 20 | 20 75 6e 73 69 67 6e 65 | WTYPE | unsigne|
|00001490| 64 20 6c 6f 6e 67 0a 58 | 23 65 6e 64 69 66 0a 58 |d long.X|#endif.X|
|000014a0| 0a 58 2f 2a 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |.X/* the| number |
|000014b0| 6f 66 20 62 69 74 73 20 | 70 65 72 20 63 68 61 72 |of bits |per char|
|000014c0| 3a 20 64 6f 6e 27 74 20 | 63 68 61 6e 67 65 20 69 |: don't |change i|
|000014d0| 74 2e 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 42 |t. */.X#|define B|
|000014e0| 09 38 0a 58 0a 58 73 74 | 61 74 69 63 20 57 54 59 |.8.X.Xst|atic WTY|
|000014f0| 50 45 20 63 72 63 74 61 | 62 5b 31 3c 3c 42 5d 20 |PE crcta|b[1<<B] |
|00001500| 3d 20 2f 2a 20 61 73 20 | 63 61 6c 63 75 6c 61 74 |= /* as |calculat|
|00001510| 65 64 20 62 79 20 69 6e | 69 74 63 72 63 74 61 62 |ed by in|itcrctab|
|00001520| 28 29 20 2a 2f 20 7b 0a | 58 20 20 20 30 78 30 2c |() */ {.|X 0x0,|
|00001530| 20 20 30 78 63 30 63 31 | 2c 20 20 30 78 63 31 38 | 0xc0c1|, 0xc18|
|00001540| 31 2c 20 20 30 78 31 34 | 30 2c 20 20 30 78 63 33 |1, 0x14|0, 0xc3|
|00001550| 30 31 2c 20 20 30 78 33 | 63 30 2c 20 20 30 78 32 |01, 0x3|c0, 0x2|
|00001560| 38 30 2c 20 20 30 78 63 | 32 34 31 2c 0a 58 20 20 |80, 0xc|241,.X |
|00001570| 20 30 78 63 36 30 31 2c | 20 20 30 78 36 63 30 2c | 0xc601,| 0x6c0,|
|00001580| 20 20 30 78 37 38 30 2c | 20 20 30 78 63 37 34 31 | 0x780,| 0xc741|
|00001590| 2c 20 20 30 78 35 30 30 | 2c 20 20 30 78 63 35 63 |, 0x500|, 0xc5c|
|000015a0| 31 2c 20 20 30 78 63 34 | 38 31 2c 20 20 30 78 34 |1, 0xc4|81, 0x4|
|000015b0| 34 30 2c 0a 58 20 20 20 | 30 78 63 63 30 31 2c 20 |40,.X |0xcc01, |
|000015c0| 20 30 78 63 63 30 2c 20 | 20 30 78 64 38 30 2c 20 | 0xcc0, | 0xd80, |
|000015d0| 20 30 78 63 64 34 31 2c | 20 20 30 78 66 30 30 2c | 0xcd41,| 0xf00,|
|000015e0| 20 20 30 78 63 66 63 31 | 2c 20 20 30 78 63 65 38 | 0xcfc1|, 0xce8|
|000015f0| 31 2c 20 20 30 78 65 34 | 30 2c 0a 58 20 20 20 30 |1, 0xe4|0,.X 0|
|00001600| 78 61 30 30 2c 20 20 30 | 78 63 61 63 31 2c 20 20 |xa00, 0|xcac1, |
|00001610| 30 78 63 62 38 31 2c 20 | 20 30 78 62 34 30 2c 20 |0xcb81, | 0xb40, |
|00001620| 20 30 78 63 39 30 31 2c | 20 20 30 78 39 63 30 2c | 0xc901,| 0x9c0,|
|00001630| 20 20 30 78 38 38 30 2c | 20 20 30 78 63 38 34 31 | 0x880,| 0xc841|
|00001640| 2c 0a 58 20 20 20 30 78 | 64 38 30 31 2c 20 20 30 |,.X 0x|d801, 0|
|00001650| 78 31 38 63 30 2c 20 20 | 30 78 31 39 38 30 2c 20 |x18c0, |0x1980, |
|00001660| 20 30 78 64 39 34 31 2c | 20 20 30 78 31 62 30 30 | 0xd941,| 0x1b00|
|00001670| 2c 20 20 30 78 64 62 63 | 31 2c 20 20 30 78 64 61 |, 0xdbc|1, 0xda|
|00001680| 38 31 2c 20 20 30 78 31 | 61 34 30 2c 0a 58 20 20 |81, 0x1|a40,.X |
|00001690| 20 30 78 31 65 30 30 2c | 20 20 30 78 64 65 63 31 | 0x1e00,| 0xdec1|
|000016a0| 2c 20 20 30 78 64 66 38 | 31 2c 20 20 30 78 31 66 |, 0xdf8|1, 0x1f|
|000016b0| 34 30 2c 20 20 30 78 64 | 64 30 31 2c 20 20 30 78 |40, 0xd|d01, 0x|
|000016c0| 31 64 63 30 2c 20 20 30 | 78 31 63 38 30 2c 20 20 |1dc0, 0|x1c80, |
|000016d0| 30 78 64 63 34 31 2c 0a | 58 20 20 20 30 78 31 34 |0xdc41,.|X 0x14|
|000016e0| 30 30 2c 20 20 30 78 64 | 34 63 31 2c 20 20 30 78 |00, 0xd|4c1, 0x|
|000016f0| 64 35 38 31 2c 20 20 30 | 78 31 35 34 30 2c 20 20 |d581, 0|x1540, |
|00001700| 30 78 64 37 30 31 2c 20 | 20 30 78 31 37 63 30 2c |0xd701, | 0x17c0,|
|00001710| 20 20 30 78 31 36 38 30 | 2c 20 20 30 78 64 36 34 | 0x1680|, 0xd64|
|00001720| 31 2c 0a 58 20 20 20 30 | 78 64 32 30 31 2c 20 20 |1,.X 0|xd201, |
|00001730| 30 78 31 32 63 30 2c 20 | 20 30 78 31 33 38 30 2c |0x12c0, | 0x1380,|
|00001740| 20 20 30 78 64 33 34 31 | 2c 20 20 30 78 31 31 30 | 0xd341|, 0x110|
|00001750| 30 2c 20 20 30 78 64 31 | 63 31 2c 20 20 30 78 64 |0, 0xd1|c1, 0xd|
|00001760| 30 38 31 2c 20 20 30 78 | 31 30 34 30 2c 0a 58 20 |081, 0x|1040,.X |
|00001770| 20 20 30 78 66 30 30 31 | 2c 20 20 30 78 33 30 63 | 0xf001|, 0x30c|
|00001780| 30 2c 20 20 30 78 33 31 | 38 30 2c 20 20 30 78 66 |0, 0x31|80, 0xf|
|00001790| 31 34 31 2c 20 20 30 78 | 33 33 30 30 2c 20 20 30 |141, 0x|3300, 0|
|000017a0| 78 66 33 63 31 2c 20 20 | 30 78 66 32 38 31 2c 20 |xf3c1, |0xf281, |
|000017b0| 20 30 78 33 32 34 30 2c | 0a 58 20 20 20 30 78 33 | 0x3240,|.X 0x3|
|000017c0| 36 30 30 2c 20 20 30 78 | 66 36 63 31 2c 20 20 30 |600, 0x|f6c1, 0|
|000017d0| 78 66 37 38 31 2c 20 20 | 30 78 33 37 34 30 2c 20 |xf781, |0x3740, |
|000017e0| 20 30 78 66 35 30 31 2c | 20 20 30 78 33 35 63 30 | 0xf501,| 0x35c0|
|000017f0| 2c 20 20 30 78 33 34 38 | 30 2c 20 20 30 78 66 34 |, 0x348|0, 0xf4|
|00001800| 34 31 2c 0a 58 20 20 20 | 30 78 33 63 30 30 2c 20 |41,.X |0x3c00, |
|00001810| 20 30 78 66 63 63 31 2c | 20 20 30 78 66 64 38 31 | 0xfcc1,| 0xfd81|
|00001820| 2c 20 20 30 78 33 64 34 | 30 2c 20 20 30 78 66 66 |, 0x3d4|0, 0xff|
|00001830| 30 31 2c 20 20 30 78 33 | 66 63 30 2c 20 20 30 78 |01, 0x3|fc0, 0x|
|00001840| 33 65 38 30 2c 20 20 30 | 78 66 65 34 31 2c 0a 58 |3e80, 0|xfe41,.X|
|00001850| 20 20 20 30 78 66 61 30 | 31 2c 20 20 30 78 33 61 | 0xfa0|1, 0x3a|
|00001860| 63 30 2c 20 20 30 78 33 | 62 38 30 2c 20 20 30 78 |c0, 0x3|b80, 0x|
|00001870| 66 62 34 31 2c 20 20 30 | 78 33 39 30 30 2c 20 20 |fb41, 0|x3900, |
|00001880| 30 78 66 39 63 31 2c 20 | 20 30 78 66 38 38 31 2c |0xf9c1, | 0xf881,|
|00001890| 20 20 30 78 33 38 34 30 | 2c 0a 58 20 20 20 30 78 | 0x3840|,.X 0x|
|000018a0| 32 38 30 30 2c 20 20 30 | 78 65 38 63 31 2c 20 20 |2800, 0|xe8c1, |
|000018b0| 30 78 65 39 38 31 2c 20 | 20 30 78 32 39 34 30 2c |0xe981, | 0x2940,|
|000018c0| 20 20 30 78 65 62 30 31 | 2c 20 20 30 78 32 62 63 | 0xeb01|, 0x2bc|
|000018d0| 30 2c 20 20 30 78 32 61 | 38 30 2c 20 20 30 78 65 |0, 0x2a|80, 0xe|
|000018e0| 61 34 31 2c 0a 58 20 20 | 20 30 78 65 65 30 31 2c |a41,.X | 0xee01,|
|000018f0| 20 20 30 78 32 65 63 30 | 2c 20 20 30 78 32 66 38 | 0x2ec0|, 0x2f8|
|00001900| 30 2c 20 20 30 78 65 66 | 34 31 2c 20 20 30 78 32 |0, 0xef|41, 0x2|
|00001910| 64 30 30 2c 20 20 30 78 | 65 64 63 31 2c 20 20 30 |d00, 0x|edc1, 0|
|00001920| 78 65 63 38 31 2c 20 20 | 30 78 32 63 34 30 2c 0a |xec81, |0x2c40,.|
|00001930| 58 20 20 20 30 78 65 34 | 30 31 2c 20 20 30 78 32 |X 0xe4|01, 0x2|
|00001940| 34 63 30 2c 20 20 30 78 | 32 35 38 30 2c 20 20 30 |4c0, 0x|2580, 0|
|00001950| 78 65 35 34 31 2c 20 20 | 30 78 32 37 30 30 2c 20 |xe541, |0x2700, |
|00001960| 20 30 78 65 37 63 31 2c | 20 20 30 78 65 36 38 31 | 0xe7c1,| 0xe681|
|00001970| 2c 20 20 30 78 32 36 34 | 30 2c 0a 58 20 20 20 30 |, 0x264|0,.X 0|
|00001980| 78 32 32 30 30 2c 20 20 | 30 78 65 32 63 31 2c 20 |x2200, |0xe2c1, |
|00001990| 20 30 78 65 33 38 31 2c | 20 20 30 78 32 33 34 30 | 0xe381,| 0x2340|
|000019a0| 2c 20 20 30 78 65 31 30 | 31 2c 20 20 30 78 32 31 |, 0xe10|1, 0x21|
|000019b0| 63 30 2c 20 20 30 78 32 | 30 38 30 2c 20 20 30 78 |c0, 0x2|080, 0x|
|000019c0| 65 30 34 31 2c 0a 58 20 | 20 20 30 78 61 30 30 31 |e041,.X | 0xa001|
|000019d0| 2c 20 20 30 78 36 30 63 | 30 2c 20 20 30 78 36 31 |, 0x60c|0, 0x61|
|000019e0| 38 30 2c 20 20 30 78 61 | 31 34 31 2c 20 20 30 78 |80, 0xa|141, 0x|
|000019f0| 36 33 30 30 2c 20 20 30 | 78 61 33 63 31 2c 20 20 |6300, 0|xa3c1, |
|00001a00| 30 78 61 32 38 31 2c 20 | 20 30 78 36 32 34 30 2c |0xa281, | 0x6240,|
|00001a10| 0a 58 20 20 20 30 78 36 | 36 30 30 2c 20 20 30 78 |.X 0x6|600, 0x|
|00001a20| 61 36 63 31 2c 20 20 30 | 78 61 37 38 31 2c 20 20 |a6c1, 0|xa781, |
|00001a30| 30 78 36 37 34 30 2c 20 | 20 30 78 61 35 30 31 2c |0x6740, | 0xa501,|
|00001a40| 20 20 30 78 36 35 63 30 | 2c 20 20 30 78 36 34 38 | 0x65c0|, 0x648|
|00001a50| 30 2c 20 20 30 78 61 34 | 34 31 2c 0a 58 20 20 20 |0, 0xa4|41,.X |
|00001a60| 30 78 36 63 30 30 2c 20 | 20 30 78 61 63 63 31 2c |0x6c00, | 0xacc1,|
|00001a70| 20 20 30 78 61 64 38 31 | 2c 20 20 30 78 36 64 34 | 0xad81|, 0x6d4|
|00001a80| 30 2c 20 20 30 78 61 66 | 30 31 2c 20 20 30 78 36 |0, 0xaf|01, 0x6|
|00001a90| 66 63 30 2c 20 20 30 78 | 36 65 38 30 2c 20 20 30 |fc0, 0x|6e80, 0|
|00001aa0| 78 61 65 34 31 2c 0a 58 | 20 20 20 30 78 61 61 30 |xae41,.X| 0xaa0|
|00001ab0| 31 2c 20 20 30 78 36 61 | 63 30 2c 20 20 30 78 36 |1, 0x6a|c0, 0x6|
|00001ac0| 62 38 30 2c 20 20 30 78 | 61 62 34 31 2c 20 20 30 |b80, 0x|ab41, 0|
|00001ad0| 78 36 39 30 30 2c 20 20 | 30 78 61 39 63 31 2c 20 |x6900, |0xa9c1, |
|00001ae0| 20 30 78 61 38 38 31 2c | 20 20 30 78 36 38 34 30 | 0xa881,| 0x6840|
|00001af0| 2c 0a 58 20 20 20 30 78 | 37 38 30 30 2c 20 20 30 |,.X 0x|7800, 0|
|00001b00| 78 62 38 63 31 2c 20 20 | 30 78 62 39 38 31 2c 20 |xb8c1, |0xb981, |
|00001b10| 20 30 78 37 39 34 30 2c | 20 20 30 78 62 62 30 31 | 0x7940,| 0xbb01|
|00001b20| 2c 20 20 30 78 37 62 63 | 30 2c 20 20 30 78 37 61 |, 0x7bc|0, 0x7a|
|00001b30| 38 30 2c 20 20 30 78 62 | 61 34 31 2c 0a 58 20 20 |80, 0xb|a41,.X |
|00001b40| 20 30 78 62 65 30 31 2c | 20 20 30 78 37 65 63 30 | 0xbe01,| 0x7ec0|
|00001b50| 2c 20 20 30 78 37 66 38 | 30 2c 20 20 30 78 62 66 |, 0x7f8|0, 0xbf|
|00001b60| 34 31 2c 20 20 30 78 37 | 64 30 30 2c 20 20 30 78 |41, 0x7|d00, 0x|
|00001b70| 62 64 63 31 2c 20 20 30 | 78 62 63 38 31 2c 20 20 |bdc1, 0|xbc81, |
|00001b80| 30 78 37 63 34 30 2c 0a | 58 20 20 20 30 78 62 34 |0x7c40,.|X 0xb4|
|00001b90| 30 31 2c 20 20 30 78 37 | 34 63 30 2c 20 20 30 78 |01, 0x7|4c0, 0x|
|00001ba0| 37 35 38 30 2c 20 20 30 | 78 62 35 34 31 2c 20 20 |7580, 0|xb541, |
|00001bb0| 30 78 37 37 30 30 2c 20 | 20 30 78 62 37 63 31 2c |0x7700, | 0xb7c1,|
|00001bc0| 20 20 30 78 62 36 38 31 | 2c 20 20 30 78 37 36 34 | 0xb681|, 0x764|
|00001bd0| 30 2c 0a 58 20 20 20 30 | 78 37 32 30 30 2c 20 20 |0,.X 0|x7200, |
|00001be0| 30 78 62 32 63 31 2c 20 | 20 30 78 62 33 38 31 2c |0xb2c1, | 0xb381,|
|00001bf0| 20 20 30 78 37 33 34 30 | 2c 20 20 30 78 62 31 30 | 0x7340|, 0xb10|
|00001c00| 31 2c 20 20 30 78 37 31 | 63 30 2c 20 20 30 78 37 |1, 0x71|c0, 0x7|
|00001c10| 30 38 30 2c 20 20 30 78 | 62 30 34 31 2c 0a 58 20 |080, 0x|b041,.X |
|00001c20| 20 20 30 78 35 30 30 30 | 2c 20 20 30 78 39 30 63 | 0x5000|, 0x90c|
|00001c30| 31 2c 20 20 30 78 39 31 | 38 31 2c 20 20 30 78 35 |1, 0x91|81, 0x5|
|00001c40| 31 34 30 2c 20 20 30 78 | 39 33 30 31 2c 20 20 30 |140, 0x|9301, 0|
|00001c50| 78 35 33 63 30 2c 20 20 | 30 78 35 32 38 30 2c 20 |x53c0, |0x5280, |
|00001c60| 20 30 78 39 32 34 31 2c | 0a 58 20 20 20 30 78 39 | 0x9241,|.X 0x9|
|00001c70| 36 30 31 2c 20 20 30 78 | 35 36 63 30 2c 20 20 30 |601, 0x|56c0, 0|
|00001c80| 78 35 37 38 30 2c 20 20 | 30 78 39 37 34 31 2c 20 |x5780, |0x9741, |
|00001c90| 20 30 78 35 35 30 30 2c | 20 20 30 78 39 35 63 31 | 0x5500,| 0x95c1|
|00001ca0| 2c 20 20 30 78 39 34 38 | 31 2c 20 20 30 78 35 34 |, 0x948|1, 0x54|
|00001cb0| 34 30 2c 0a 58 20 20 20 | 30 78 39 63 30 31 2c 20 |40,.X |0x9c01, |
|00001cc0| 20 30 78 35 63 63 30 2c | 20 20 30 78 35 64 38 30 | 0x5cc0,| 0x5d80|
|00001cd0| 2c 20 20 30 78 39 64 34 | 31 2c 20 20 30 78 35 66 |, 0x9d4|1, 0x5f|
|00001ce0| 30 30 2c 20 20 30 78 39 | 66 63 31 2c 20 20 30 78 |00, 0x9|fc1, 0x|
|00001cf0| 39 65 38 31 2c 20 20 30 | 78 35 65 34 30 2c 0a 58 |9e81, 0|x5e40,.X|
|00001d00| 20 20 20 30 78 35 61 30 | 30 2c 20 20 30 78 39 61 | 0x5a0|0, 0x9a|
|00001d10| 63 31 2c 20 20 30 78 39 | 62 38 31 2c 20 20 30 78 |c1, 0x9|b81, 0x|
|00001d20| 35 62 34 30 2c 20 20 30 | 78 39 39 30 31 2c 20 20 |5b40, 0|x9901, |
|00001d30| 30 78 35 39 63 30 2c 20 | 20 30 78 35 38 38 30 2c |0x59c0, | 0x5880,|
|00001d40| 20 20 30 78 39 38 34 31 | 2c 0a 58 20 20 20 30 78 | 0x9841|,.X 0x|
|00001d50| 38 38 30 31 2c 20 20 30 | 78 34 38 63 30 2c 20 20 |8801, 0|x48c0, |
|00001d60| 30 78 34 39 38 30 2c 20 | 20 30 78 38 39 34 31 2c |0x4980, | 0x8941,|
|00001d70| 20 20 30 78 34 62 30 30 | 2c 20 20 30 78 38 62 63 | 0x4b00|, 0x8bc|
|00001d80| 31 2c 20 20 30 78 38 61 | 38 31 2c 20 20 30 78 34 |1, 0x8a|81, 0x4|
|00001d90| 61 34 30 2c 0a 58 20 20 | 20 30 78 34 65 30 30 2c |a40,.X | 0x4e00,|
|00001da0| 20 20 30 78 38 65 63 31 | 2c 20 20 30 78 38 66 38 | 0x8ec1|, 0x8f8|
|00001db0| 31 2c 20 20 30 78 34 66 | 34 30 2c 20 20 30 78 38 |1, 0x4f|40, 0x8|
|00001dc0| 64 30 31 2c 20 20 30 78 | 34 64 63 30 2c 20 20 30 |d01, 0x|4dc0, 0|
|00001dd0| 78 34 63 38 30 2c 20 20 | 30 78 38 63 34 31 2c 0a |x4c80, |0x8c41,.|
|00001de0| 58 20 20 20 30 78 34 34 | 30 30 2c 20 20 30 78 38 |X 0x44|00, 0x8|
|00001df0| 34 63 31 2c 20 20 30 78 | 38 35 38 31 2c 20 20 30 |4c1, 0x|8581, 0|
|00001e00| 78 34 35 34 30 2c 20 20 | 30 78 38 37 30 31 2c 20 |x4540, |0x8701, |
|00001e10| 20 30 78 34 37 63 30 2c | 20 20 30 78 34 36 38 30 | 0x47c0,| 0x4680|
|00001e20| 2c 20 20 30 78 38 36 34 | 31 2c 0a 58 20 20 20 30 |, 0x864|1,.X 0|
|00001e30| 78 38 32 30 31 2c 20 20 | 30 78 34 32 63 30 2c 20 |x8201, |0x42c0, |
|00001e40| 20 30 78 34 33 38 30 2c | 20 20 30 78 38 33 34 31 | 0x4380,| 0x8341|
|00001e50| 2c 20 20 30 78 34 31 30 | 30 2c 20 20 30 78 38 31 |, 0x410|0, 0x81|
|00001e60| 63 31 2c 20 20 30 78 38 | 30 38 31 2c 20 20 30 78 |c1, 0x8|081, 0x|
|00001e70| 34 30 34 30 2c 0a 58 7d | 3b 0a 58 0a 58 0a 58 76 |4040,.X}|;.X.X.Xv|
|00001e80| 6f 69 64 20 70 65 72 72 | 6f 72 28 29 3b 0a 58 63 |oid perr|or();.Xc|
|00001e90| 68 61 72 20 2a 73 74 72 | 63 70 79 28 29 3b 20 0a |har *str|cpy(); .|
|00001ea0| 58 76 6f 69 64 20 65 78 | 69 74 28 29 3b 0a 58 0a |Xvoid ex|it();.X.|
|00001eb0| 58 57 54 59 50 45 0a 58 | 75 70 64 63 72 63 28 20 |XWTYPE.X|updcrc( |
|00001ec0| 69 63 72 63 2c 20 69 63 | 70 2c 20 69 63 6e 74 20 |icrc, ic|p, icnt |
|00001ed0| 29 0a 58 57 54 59 50 45 | 20 69 63 72 63 3b 0a 58 |).XWTYPE| icrc;.X|
|00001ee0| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 09 2a 69 |unsigned| char.*i|
|00001ef0| 63 70 3b 0a 58 69 6e 74 | 09 69 63 6e 74 3b 0a 58 |cp;.Xint|.icnt;.X|
|00001f00| 7b 0a 58 20 20 20 72 65 | 67 69 73 74 65 72 20 57 |{.X re|gister W|
|00001f10| 54 59 50 45 20 63 72 63 | 20 3d 20 69 63 72 63 3b |TYPE crc| = icrc;|
|00001f20| 0a 58 20 20 20 72 65 67 | 69 73 74 65 72 20 75 6e |.X reg|ister un|
|00001f30| 73 69 67 6e 65 64 20 63 | 68 61 72 09 2a 63 70 20 |signed c|har.*cp |
|00001f40| 3d 20 69 63 70 3b 0a 58 | 20 20 20 72 65 67 69 73 |= icp;.X| regis|
|00001f50| 74 65 72 20 69 6e 74 09 | 63 6e 74 20 3d 20 69 63 |ter int.|cnt = ic|
|00001f60| 6e 74 3b 0a 58 0a 58 20 | 20 20 77 68 69 6c 65 20 |nt;.X.X | while |
|00001f70| 28 20 63 6e 74 2d 2d 29 | 20 7b 0a 58 23 69 66 6e |( cnt--)| {.X#ifn|
|00001f80| 64 65 66 20 53 57 41 50 | 50 45 44 0a 58 20 20 20 |def SWAP|PED.X |
|00001f90| 20 20 20 63 72 63 20 3d | 20 28 63 72 63 20 3c 3c | crc =| (crc <<|
|00001fa0| 20 42 29 20 5e 20 63 72 | 63 74 61 62 5b 28 63 72 | B) ^ cr|ctab[(cr|
|00001fb0| 63 3e 3e 28 57 2d 42 29 | 29 20 5e 20 2a 63 70 2b |c>>(W-B)|) ^ *cp+|
|00001fc0| 2b 5d 3b 0a 58 23 65 6c | 73 65 0a 58 20 20 20 20 |+];.X#el|se.X |
|00001fd0| 20 20 63 72 63 20 3d 20 | 28 63 72 63 20 3e 3e 20 | crc = |(crc >> |
|00001fe0| 42 29 20 5e 20 63 72 63 | 74 61 62 5b 28 63 72 63 |B) ^ crc|tab[(crc|
|00001ff0| 20 26 20 28 28 31 3c 3c | 42 29 2d 31 29 29 20 5e | & ((1<<|B)-1)) ^|
|00002000| 20 2a 63 70 2b 2b 5d 3b | 0a 58 23 65 6e 64 69 66 | *cp++];|.X#endif|
|00002010| 20 0a 58 20 20 20 7d 0a | 58 0a 58 20 20 20 72 65 | .X }.|X.X re|
|00002020| 74 75 72 6e 28 20 63 72 | 63 20 29 3b 0a 58 7d 0a |turn( cr|c );.X}.|
|00002030| 58 0a 58 0a 58 23 69 66 | 64 65 66 20 4d 41 4b 45 |X.X.X#if|def MAKE|
|00002040| 54 41 42 0a 58 0a 58 23 | 69 6e 63 6c 75 64 65 20 |TAB.X.X#|include |
|00002050| 3c 73 74 64 69 6f 2e 68 | 3e 0a 58 6d 61 69 6e 28 |<stdio.h|>.Xmain(|
|00002060| 29 0a 58 7b 0a 58 20 20 | 20 69 6e 69 74 63 72 63 |).X{.X | initcrc|
|00002070| 74 61 62 28 29 3b 0a 58 | 7d 0a 58 0a 58 0a 58 69 |tab();.X|}.X.X.Xi|
|00002080| 6e 69 74 63 72 63 74 61 | 62 28 29 0a 58 7b 0a 58 |nitcrcta|b().X{.X|
|00002090| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 09 | regis|ter int.|
|000020a0| 62 2c 20 69 3b 0a 58 20 | 20 20 57 54 59 50 45 20 |b, i;.X | WTYPE |
|000020b0| 76 3b 0a 58 0a 58 0a 58 | 20 20 20 66 6f 72 20 28 |v;.X.X.X| for (|
|000020c0| 20 62 20 3d 20 30 3b 20 | 62 20 3c 3d 20 28 31 20 | b = 0; |b <= (1 |
|000020d0| 3c 3c 20 42 29 20 2d 20 | 31 3b 20 2b 2b 62 20 29 |<< B) - |1; ++b )|
|000020e0| 20 7b 0a 58 23 69 66 6e | 64 65 66 20 53 57 41 50 | {.X#ifn|def SWAP|
|000020f0| 50 45 44 0a 58 20 20 20 | 20 20 20 66 6f 72 20 28 |PED.X | for (|
|00002100| 20 76 20 3d 20 62 20 3c | 3c 20 28 57 20 2d 20 42 | v = b <|< (W - B|
|00002110| 29 2c 20 69 20 3d 20 42 | 3b 20 2d 2d 69 20 3e 3d |), i = B|; --i >=|
|00002120| 20 30 3b 20 29 0a 58 20 | 20 20 20 20 20 20 20 20 | 0; ).X | |
|00002130| 76 20 3d 20 76 20 26 20 | 28 28 57 54 59 50 45 29 |v = v & |((WTYPE)|
|00002140| 31 20 3c 3c 20 28 57 20 | 2d 20 31 29 29 20 3f 20 |1 << (W |- 1)) ? |
|00002150| 28 76 20 3c 3c 20 31 29 | 20 5e 20 50 20 3a 20 76 |(v << 1)| ^ P : v|
|00002160| 20 3c 3c 20 31 3b 0a 58 | 23 65 6c 73 65 0a 58 20 | << 1;.X|#else.X |
|00002170| 20 20 20 20 20 66 6f 72 | 20 28 20 76 20 3d 20 62 | for| ( v = b|
|00002180| 2c 20 69 20 3d 20 42 3b | 20 2d 2d 69 20 3e 3d 20 |, i = B;| --i >= |
|00002190| 30 3b 20 29 0a 58 20 20 | 20 20 20 20 20 20 20 76 |0; ).X | v|
|000021a0| 20 3d 20 76 20 26 20 31 | 20 3f 20 28 76 20 3e 3e | = v & 1| ? (v >>|
|000021b0| 20 31 29 20 5e 20 50 20 | 3a 20 76 20 3e 3e 20 31 | 1) ^ P |: v >> 1|
|000021c0| 3b 0a 58 23 65 6e 64 69 | 66 09 20 20 20 20 0a 58 |;.X#endi|f. .X|
|000021d0| 20 20 20 20 20 20 63 72 | 63 74 61 62 5b 62 5d 20 | cr|ctab[b] |
|000021e0| 3d 20 76 3b 0a 58 0a 58 | 20 20 20 20 20 20 28 76 |= v;.X.X| (v|
|000021f0| 6f 69 64 29 20 20 70 72 | 69 6e 74 66 28 20 22 30 |oid) pr|intf( "0|
|00002200| 78 25 6c 78 2c 22 2c 20 | 76 20 26 20 28 28 31 4c |x%lx,", |v & ((1L|
|00002210| 20 3c 3c 20 57 29 20 2d | 20 31 4c 29 29 3b 0a 58 | << W) -| 1L));.X|
|00002220| 20 20 20 20 20 20 69 66 | 20 28 20 28 62 20 26 20 | if| ( (b & |
|00002230| 37 29 20 3d 3d 20 37 20 | 29 0a 58 20 20 20 20 20 |7) == 7 |).X |
|00002240| 20 20 20 20 28 76 6f 69 | 64 29 20 20 70 72 69 6e | (voi|d) prin|
|00002250| 74 66 28 22 5c 6e 22 20 | 29 3b 0a 58 20 20 20 20 |tf("\n" |);.X |
|00002260| 20 20 65 6c 73 65 0a 58 | 20 20 20 20 20 20 20 20 | else.X| |
|00002270| 20 28 76 6f 69 64 29 20 | 20 70 72 69 6e 74 66 28 | (void) | printf(|
|00002280| 22 20 20 22 29 3b 0a 58 | 20 20 20 7d 0a 58 7d 0a |" ");.X| }.X}.|
|00002290| 58 0a 58 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 23 |X.X.X#en|dif.X.X#|
|000022a0| 69 66 64 65 66 20 54 45 | 53 54 0a 58 0a 58 23 69 |ifdef TE|ST.X.X#i|
|000022b0| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|000022c0| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 66 63 6e 74 |.X#inclu|de <fcnt|
|000022d0| 6c 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |l.h>.X#i|nclude <|
|000022e0| 73 79 73 2f 74 79 70 65 | 73 2e 68 3e 0a 58 23 69 |sys/type|s.h>.X#i|
|000022f0| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 73 74 61 74 |nclude <|sys/stat|
|00002300| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 70 |.h>.X#in|clude <p|
|00002310| 77 64 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |wd.h>.X#|include |
|00002320| 3c 67 72 70 2e 68 3e 0a | 58 23 64 65 66 69 6e 65 |<grp.h>.|X#define|
|00002330| 20 4d 41 58 42 55 46 09 | 34 30 39 36 0a 58 0a 58 | MAXBUF.|4096.X.X|
|00002340| 23 69 66 6e 64 65 66 20 | 53 5f 49 52 47 52 50 0a |#ifndef |S_IRGRP.|
|00002350| 58 23 64 65 66 69 6e 65 | 20 53 5f 49 52 47 52 50 |X#define| S_IRGRP|
|00002360| 09 28 53 5f 49 52 45 41 | 44 20 3e 3e 20 33 29 0a |.(S_IREA|D >> 3).|
|00002370| 58 23 64 65 66 69 6e 65 | 20 53 5f 49 57 47 52 50 |X#define| S_IWGRP|
|00002380| 20 28 53 5f 49 57 52 49 | 54 45 20 3e 3e 20 33 29 | (S_IWRI|TE >> 3)|
|00002390| 0a 58 23 64 65 66 69 6e | 65 20 53 5f 49 58 47 52 |.X#defin|e S_IXGR|
|000023a0| 50 20 28 53 5f 49 45 58 | 45 43 20 3e 3e 20 33 29 |P (S_IEX|EC >> 3)|
|000023b0| 0a 58 23 64 65 66 69 6e | 65 20 53 5f 49 52 4f 54 |.X#defin|e S_IROT|
|000023c0| 48 20 28 53 5f 49 52 45 | 41 44 20 3e 3e 20 36 29 |H (S_IRE|AD >> 6)|
|000023d0| 0a 58 23 64 65 66 69 6e | 65 20 53 5f 49 57 4f 54 |.X#defin|e S_IWOT|
|000023e0| 48 20 28 53 5f 49 57 52 | 49 54 45 20 3e 3e 20 36 |H (S_IWR|ITE >> 6|
|000023f0| 29 0a 58 23 64 65 66 69 | 6e 65 20 53 5f 49 58 4f |).X#defi|ne S_IXO|
|00002400| 54 48 20 28 53 5f 49 45 | 58 45 43 20 3e 3e 20 36 |TH (S_IE|XEC >> 6|
|00002410| 29 0a 58 23 65 6e 64 69 | 66 0a 58 0a 58 73 74 72 |).X#endi|f.X.Xstr|
|00002420| 75 63 74 20 73 74 61 74 | 20 73 74 61 74 5f 62 75 |uct stat| stat_bu|
|00002430| 66 3b 0a 58 69 6e 74 09 | 69 6e 69 74 69 61 6c 5f |f;.Xint.|initial_|
|00002440| 63 72 63 20 3d 20 49 4e | 49 54 5f 43 52 43 3b 0a |crc = IN|IT_CRC;.|
|00002450| 58 0a 58 65 78 74 65 72 | 6e 20 63 68 61 72 09 2a |X.Xexter|n char.*|
|00002460| 6f 70 74 61 72 67 3b 0a | 58 65 78 74 65 72 6e 20 |optarg;.|Xextern |
|00002470| 69 6e 74 09 6f 70 74 69 | 6e 64 3b 0a 58 65 78 74 |int.opti|nd;.Xext|
|00002480| 65 72 6e 20 69 6e 74 09 | 6f 70 74 65 72 72 3b 0a |ern int.|opterr;.|
|00002490| 58 0a 58 6d 61 69 6e 28 | 20 61 72 67 63 2c 20 61 |X.Xmain(| argc, a|
|000024a0| 72 67 76 20 29 0a 58 69 | 6e 74 09 61 72 67 63 3b |rgv ).Xi|nt.argc;|
|000024b0| 0a 58 63 68 61 72 09 2a | 2a 61 72 67 76 3b 0a 58 |.Xchar.*|*argv;.X|
|000024c0| 7b 0a 58 20 20 20 69 6e | 74 09 73 74 61 74 73 5f |{.X in|t.stats_|
|000024d0| 66 6c 61 67 20 3d 20 30 | 3b 0a 58 0a 58 20 20 20 |flag = 0|;.X.X |
|000024e0| 69 6e 74 09 63 3b 0a 58 | 0a 58 20 20 20 69 66 20 |int.c;.X|.X if |
|000024f0| 28 61 72 67 63 20 3d 3d | 20 31 29 20 7b 0a 58 20 |(argc ==| 1) {.X |
|00002500| 20 20 20 20 20 70 72 69 | 6e 74 5f 63 72 63 28 28 | pri|nt_crc((|
|00002510| 63 68 61 72 20 2a 29 30 | 2c 20 30 29 3b 0a 58 20 |char *)0|, 0);.X |
|00002520| 20 20 20 20 20 72 65 74 | 75 72 6e 20 30 3b 0a 58 | ret|urn 0;.X|
|00002530| 20 20 20 7d 0a 58 0a 58 | 20 20 20 2f 2a 20 70 72 | }.X.X| /* pr|
|00002540| 6f 63 65 73 73 20 61 6c | 6c 20 61 72 67 75 6d 65 |ocess al|l argume|
|00002550| 6e 74 73 20 2a 2f 0a 58 | 0a 58 20 20 20 77 68 69 |nts */.X|.X whi|
|00002560| 6c 65 20 28 28 63 20 3d | 20 67 65 74 6f 70 74 28 |le ((c =| getopt(|
|00002570| 61 72 67 63 2c 20 61 72 | 67 76 2c 20 22 56 76 49 |argc, ar|gv, "VvI|
|00002580| 3a 69 3a 22 29 29 20 21 | 3d 20 45 4f 46 29 20 7b |:i:")) !|= EOF) {|
|00002590| 0a 58 0a 58 20 20 20 20 | 20 20 73 77 69 74 63 68 |.X.X | switch|
|000025a0| 20 28 63 29 20 7b 0a 58 | 0a 58 20 20 20 20 20 20 | (c) {.X|.X |
|000025b0| 63 61 73 65 20 27 56 27 | 3a 0a 58 20 20 20 20 20 |case 'V'|:.X |
|000025c0| 20 63 61 73 65 20 27 76 | 27 3a 0a 58 20 20 20 20 | case 'v|':.X |
|000025d0| 20 20 20 20 20 73 74 61 | 74 73 5f 66 6c 61 67 20 | sta|ts_flag |
|000025e0| 3d 20 31 3b 0a 58 20 20 | 20 20 20 20 20 20 20 62 |= 1;.X | b|
|000025f0| 72 65 61 6b 3b 0a 58 0a | 58 20 20 20 20 20 20 63 |reak;.X.|X c|
|00002600| 61 73 65 20 27 49 27 3a | 0a 58 20 20 20 20 20 20 |ase 'I':|.X |
|00002610| 63 61 73 65 20 27 69 27 | 3a 0a 58 20 20 20 20 20 |case 'i'|:.X |
|00002620| 20 20 20 20 69 6e 69 74 | 69 61 6c 5f 63 72 63 20 | init|ial_crc |
|00002630| 3d 20 61 74 6f 69 28 6f | 70 74 61 72 67 29 3b 0a |= atoi(o|ptarg);.|
|00002640| 58 20 20 20 20 20 20 20 | 20 20 62 72 65 61 6b 3b |X | break;|
|00002650| 0a 58 0a 58 20 20 20 20 | 20 20 64 65 66 61 75 6c |.X.X | defaul|
|00002660| 74 3a 0a 58 20 20 20 20 | 20 20 20 20 20 28 76 6f |t:.X | (vo|
|00002670| 69 64 29 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 |id) fpri|ntf(stde|
|00002680| 72 72 2c 20 22 63 72 63 | 3a 20 20 2d 76 20 28 76 |rr, "crc|: -v (v|
|00002690| 65 72 62 6f 73 65 20 6c | 69 73 74 69 6e 67 29 5c |erbose l|isting)\|
|000026a0| 6e 22 29 3b 0a 58 20 20 | 20 20 20 20 20 20 20 28 |n");.X | (|
|000026b0| 76 6f 69 64 29 20 66 70 | 72 69 6e 74 66 28 73 74 |void) fp|rintf(st|
|000026c0| 64 65 72 72 2c 20 22 20 | 20 20 20 20 20 2d 69 20 |derr, " | -i |
|000026d0| 76 61 6c 75 65 20 28 69 | 6e 69 74 69 61 6c 20 63 |value (i|nitial c|
|000026e0| 72 63 20 76 61 6c 75 65 | 29 5c 6e 22 29 3b 0a 58 |rc value|)\n");.X|
|000026f0| 20 20 20 20 20 20 20 20 | 20 65 78 69 74 28 31 29 | | exit(1)|
|00002700| 3b 0a 58 20 20 20 20 20 | 20 7d 0a 58 20 20 20 7d |;.X | }.X }|
|00002710| 0a 58 0a 58 20 20 20 66 | 6f 72 20 28 3b 20 6f 70 |.X.X f|or (; op|
|00002720| 74 69 6e 64 20 3c 20 61 | 72 67 63 20 3b 20 6f 70 |tind < a|rgc ; op|
|00002730| 74 69 6e 64 2b 2b 29 0a | 58 20 20 20 20 20 20 70 |tind++).|X p|
|00002740| 72 69 6e 74 5f 63 72 63 | 28 61 72 67 76 5b 6f 70 |rint_crc|(argv[op|
|00002750| 74 69 6e 64 5d 2c 20 73 | 74 61 74 73 5f 66 6c 61 |tind], s|tats_fla|
|00002760| 67 29 3b 0a 58 0a 58 20 | 20 20 72 65 74 75 72 6e |g);.X.X | return|
|00002770| 20 30 3b 0a 58 7d 0a 58 | 0a 58 0a 58 70 72 69 6e | 0;.X}.X|.X.Xprin|
|00002780| 74 5f 63 72 63 28 6e 61 | 6d 65 2c 20 73 74 61 74 |t_crc(na|me, stat|
|00002790| 5f 66 6c 61 67 29 0a 58 | 63 68 61 72 09 2a 6e 61 |_flag).X|char.*na|
|000027a0| 6d 65 3b 0a 58 69 6e 74 | 09 73 74 61 74 5f 66 6c |me;.Xint|.stat_fl|
|000027b0| 61 67 3b 0a 58 7b 0a 58 | 20 20 20 69 6e 74 09 66 |ag;.X{.X| int.f|
|000027c0| 64 3b 0a 58 20 20 20 69 | 6e 74 09 6e 72 3b 0a 58 |d;.X i|nt.nr;.X|
|000027d0| 20 20 20 75 6e 73 69 67 | 6e 65 64 20 63 68 61 72 | unsig|ned char|
|000027e0| 09 62 75 66 5b 4d 41 58 | 42 55 46 5d 3b 0a 58 20 |.buf[MAX|BUF];.X |
|000027f0| 20 20 57 54 59 50 45 20 | 63 72 63 3b 0a 58 23 69 | WTYPE |crc;.X#i|
|00002800| 66 64 65 66 20 4d 41 47 | 49 43 43 48 45 43 4b 0a |fdef MAG|ICCHECK.|
|00002810| 58 20 20 20 57 54 59 50 | 45 20 63 72 63 32 3b 0a |X WTYP|E crc2;.|
|00002820| 58 23 65 6e 64 69 66 0a | 58 0a 58 20 20 20 66 64 |X#endif.|X.X fd|
|00002830| 20 3d 20 30 3b 0a 58 0a | 58 20 20 20 2f 2a 20 71 | = 0;.X.|X /* q|
|00002840| 75 69 65 74 6c 79 20 69 | 67 6e 6f 72 65 20 66 69 |uietly i|gnore fi|
|00002850| 6c 65 73 20 77 65 20 63 | 61 6e 27 74 20 73 74 61 |les we c|an't sta|
|00002860| 74 20 2a 2f 0a 58 0a 58 | 20 20 20 69 66 20 28 6e |t */.X.X| if (n|
|00002870| 61 6d 65 20 21 3d 20 4e | 55 4c 4c 20 26 26 20 73 |ame != N|ULL && s|
|00002880| 74 61 74 28 6e 61 6d 65 | 2c 20 26 73 74 61 74 5f |tat(name|, &stat_|
|00002890| 62 75 66 29 20 21 3d 20 | 30 29 0a 58 20 20 20 20 |buf) != |0).X |
|000028a0| 20 20 72 65 74 75 72 6e | 3b 0a 58 0a 58 20 20 20 | return|;.X.X |
|000028b0| 2f 2a 20 64 6f 6e 27 74 | 20 64 6f 20 61 20 63 72 |/* don't| do a cr|
|000028c0| 63 20 6f 6e 20 73 74 72 | 61 6e 67 65 20 66 69 6c |c on str|ange fil|
|000028d0| 65 73 20 2a 2f 0a 58 0a | 58 20 20 20 63 72 63 20 |es */.X.|X crc |
|000028e0| 3d 20 6e 72 20 3d 20 30 | 3b 0a 58 0a 58 20 20 20 |= nr = 0|;.X.X |
|000028f0| 69 66 20 28 6e 61 6d 65 | 20 3d 3d 20 4e 55 4c 4c |if (name| == NULL|
|00002900| 20 7c 7c 20 28 73 74 61 | 74 5f 62 75 66 2e 73 74 | || (sta|t_buf.st|
|00002910| 5f 6d 6f 64 65 20 26 20 | 53 5f 49 46 4d 54 29 20 |_mode & |S_IFMT) |
|00002920| 3d 3d 20 53 5f 49 46 52 | 45 47 29 20 7b 0a 58 0a |== S_IFR|EG) {.X.|
|00002930| 58 20 20 20 20 20 20 2f | 2a 20 6f 70 65 6e 20 74 |X /|* open t|
|00002940| 68 65 20 66 69 6c 65 20 | 61 6e 64 20 64 6f 20 61 |he file |and do a|
|00002950| 20 63 72 63 20 6f 6e 20 | 69 74 20 2a 2f 0a 58 0a | crc on |it */.X.|
|00002960| 58 20 20 20 20 20 20 69 | 66 20 28 6e 61 6d 65 20 |X i|f (name |
|00002970| 21 3d 20 4e 55 4c 4c 20 | 26 26 20 28 66 64 20 3d |!= NULL |&& (fd =|
|00002980| 20 6f 70 65 6e 28 20 6e | 61 6d 65 2c 20 4f 5f 52 | open( n|ame, O_R|
|00002990| 44 4f 4e 4c 59 20 29 29 | 20 3c 20 30 20 29 20 7b |DONLY ))| < 0 ) {|
|000029a0| 0a 58 20 20 20 20 20 20 | 20 20 20 70 65 72 72 6f |.X | perro|
|000029b0| 72 28 20 6e 61 6d 65 20 | 29 3b 0a 58 20 20 20 20 |r( name |);.X |
|000029c0| 20 20 20 20 20 65 78 69 | 74 28 20 2d 31 20 29 3b | exi|t( -1 );|
|000029d0| 0a 58 20 20 20 20 20 20 | 7d 0a 58 23 69 66 64 65 |.X |}.X#ifde|
|000029e0| 66 20 4d 41 47 49 43 43 | 48 45 43 4b 0a 58 20 20 |f MAGICC|HECK.X |
|000029f0| 20 20 20 20 63 72 63 32 | 20 3d 20 0a 58 23 65 6e | crc2| = .X#en|
|00002a00| 64 69 66 0a 58 20 20 20 | 20 20 20 63 72 63 20 3d |dif.X | crc =|
|00002a10| 20 69 6e 69 74 69 61 6c | 5f 63 72 63 3b 0a 58 0a | initial|_crc;.X.|
|00002a20| 58 20 20 20 20 20 20 77 | 68 69 6c 65 20 28 20 28 |X w|hile ( (|
|00002a30| 6e 72 20 3d 20 72 65 61 | 64 28 20 66 64 2c 20 28 |nr = rea|d( fd, (|
|00002a40| 63 68 61 72 20 2a 29 62 | 75 66 2c 20 4d 41 58 42 |char *)b|uf, MAXB|
|00002a50| 55 46 20 29 29 20 3e 20 | 30 20 29 20 7b 0a 58 20 |UF )) > |0 ) {.X |
|00002a60| 20 20 20 20 20 20 20 20 | 63 72 63 20 3d 20 75 70 | |crc = up|
|00002a70| 64 63 72 63 28 63 72 63 | 2c 20 62 75 66 2c 20 6e |dcrc(crc|, buf, n|
|00002a80| 72 20 29 3b 0a 58 20 20 | 20 20 20 20 7d 0a 58 20 |r );.X | }.X |
|00002a90| 20 20 20 20 20 28 76 6f | 69 64 29 20 63 6c 6f 73 | (vo|id) clos|
|00002aa0| 65 28 66 64 29 3b 0a 58 | 0a 58 20 20 20 7d 0a 58 |e(fd);.X|.X }.X|
|00002ab0| 20 20 20 69 66 20 28 20 | 6e 72 20 21 3d 20 30 20 | if ( |nr != 0 |
|00002ac0| 29 20 7b 0a 58 20 20 20 | 20 20 20 70 65 72 72 6f |) {.X | perro|
|00002ad0| 72 28 20 22 72 65 61 64 | 20 65 72 72 6f 72 22 20 |r( "read| error" |
|00002ae0| 29 3b 0a 58 20 20 20 7d | 20 65 6c 73 65 20 7b 0a |);.X }| else {.|
|00002af0| 58 20 20 20 20 20 20 28 | 76 6f 69 64 29 20 20 70 |X (|void) p|
|00002b00| 72 69 6e 74 66 28 22 25 | 34 2e 34 78 22 2c 20 28 |rintf("%|4.4x", (|
|00002b10| 75 6e 73 69 67 6e 65 64 | 29 20 63 72 63 20 29 3b |unsigned|) crc );|
|00002b20| 0a 58 20 20 20 20 20 20 | 69 66 20 28 73 74 61 74 |.X |if (stat|
|00002b30| 5f 66 6c 61 67 29 0a 58 | 20 20 20 20 20 20 20 20 |_flag).X| |
|00002b40| 20 73 74 61 74 73 28 6e | 61 6d 65 29 3b 0a 58 20 | stats(n|ame);.X |
|00002b50| 20 20 20 20 20 65 6c 73 | 65 0a 58 20 20 20 20 20 | els|e.X |
|00002b60| 20 20 20 20 28 76 6f 69 | 64 29 20 20 70 72 69 6e | (voi|d) prin|
|00002b70| 74 66 28 22 5c 6e 22 29 | 3b 0a 58 0a 58 20 20 20 |tf("\n")|;.X.X |
|00002b80| 7d 0a 58 0a 58 23 69 66 | 64 65 66 20 4d 41 47 49 |}.X.X#if|def MAGI|
|00002b90| 43 43 48 45 43 4b 0a 58 | 20 20 20 2f 2a 20 74 61 |CCHECK.X| /* ta|
|00002ba0| 63 6b 20 6f 6e 65 27 73 | 20 63 6f 6d 70 6c 65 6d |ck one's| complem|
|00002bb0| 65 6e 74 20 6f 66 20 63 | 72 63 20 6f 6e 74 6f 20 |ent of c|rc onto |
|00002bc0| 64 61 74 61 20 73 74 72 | 65 61 6d 2c 20 61 6e 64 |data str|eam, and|
|00002bd0| 0a 58 20 20 20 20 20 20 | 20 63 6f 6e 74 69 6e 75 |.X | continu|
|00002be0| 65 20 63 72 63 20 63 61 | 6c 63 75 6c 61 74 69 6f |e crc ca|lculatio|
|00002bf0| 6e 2e 20 20 53 68 6f 75 | 6c 64 20 67 65 74 20 61 |n. Shou|ld get a|
|00002c00| 20 63 6f 6e 73 74 61 6e | 74 20 28 6d 61 67 69 63 | constan|t (magic|
|00002c10| 20 6e 75 6d 62 65 72 29 | 0a 58 20 20 20 20 20 20 | number)|.X |
|00002c20| 20 64 65 70 65 6e 64 65 | 6e 74 20 6f 6e 6c 79 20 | depende|nt only |
|00002c30| 6f 6e 20 50 2c 20 6e 6f | 74 20 74 68 65 20 64 61 |on P, no|t the da|
|00002c40| 74 61 2e 0a 58 20 20 20 | 20 20 2a 2f 0a 58 20 20 |ta..X | */.X |
|00002c50| 20 63 72 63 32 20 3d 20 | 63 72 63 20 5e 20 2d 31 | crc2 = |crc ^ -1|
|00002c60| 4c 3b 0a 58 20 20 20 66 | 6f 72 20 28 20 6e 72 20 |L;.X f|or ( nr |
|00002c70| 3d 20 57 20 2d 20 42 3b | 20 6e 72 20 3e 3d 20 30 |= W - B;| nr >= 0|
|00002c80| 3b 20 6e 72 20 2d 3d 20 | 42 20 29 20 7b 0a 58 20 |; nr -= |B ) {.X |
|00002c90| 20 20 20 20 20 62 75 66 | 5b 30 5d 20 3d 20 28 63 | buf|[0] = (c|
|00002ca0| 72 63 32 20 3e 3e 20 6e | 72 29 3b 0a 58 20 20 20 |rc2 >> n|r);.X |
|00002cb0| 20 20 20 63 72 63 20 3d | 20 75 70 64 63 72 63 28 | crc =| updcrc(|
|00002cc0| 63 72 63 2c 20 62 75 66 | 2c 20 31 29 3b 0a 58 20 |crc, buf|, 1);.X |
|00002cd0| 20 20 7d 0a 58 0a 58 20 | 20 20 2f 2a 20 63 72 63 | }.X.X | /* crc|
|00002ce0| 20 73 68 6f 75 6c 64 20 | 6e 6f 77 20 65 71 75 61 | should |now equa|
|00002cf0| 6c 20 6d 61 67 69 63 20 | 2a 2f 0a 58 20 20 20 62 |l magic |*/.X b|
|00002d00| 75 66 5b 30 5d 20 3d 20 | 62 75 66 5b 31 5d 20 3d |uf[0] = |buf[1] =|
|00002d10| 20 62 75 66 5b 32 5d 20 | 3d 20 62 75 66 5b 33 5d | buf[2] |= buf[3]|
|00002d20| 20 3d 20 30 3b 0a 58 20 | 20 20 28 76 6f 69 64 29 | = 0;.X | (void)|
|00002d30| 20 20 70 72 69 6e 74 66 | 28 20 22 6d 61 67 69 63 | printf|( "magic|
|00002d40| 20 74 65 73 74 3a 20 25 | 6c 78 20 3d 3f 3d 20 25 | test: %|lx =?= %|
|00002d50| 6c 78 5c 6e 22 2c 20 63 | 72 63 2c 20 75 70 64 63 |lx\n", c|rc, updc|
|00002d60| 72 63 28 28 57 54 59 50 | 45 29 20 2d 20 31 2c 20 |rc((WTYP|E) - 1, |
|00002d70| 62 75 66 2c 20 57 20 2f | 20 42 29 29 3b 0a 58 23 |buf, W /| B));.X#|
|00002d80| 65 6e 64 69 66 20 0a 58 | 0a 58 0a 58 7d 0a 58 0a |endif .X|.X.X}.X.|
|00002d90| 58 0a 58 73 74 61 74 73 | 28 6e 61 6d 65 29 0a 58 |X.Xstats|(name).X|
|00002da0| 63 68 61 72 09 2a 6e 61 | 6d 65 3b 0a 58 7b 0a 58 |char.*na|me;.X{.X|
|00002db0| 0a 58 20 20 20 73 74 72 | 75 63 74 20 70 61 73 73 |.X str|uct pass|
|00002dc0| 77 64 20 2a 65 6e 74 72 | 79 3b 0a 58 20 20 20 73 |wd *entr|y;.X s|
|00002dd0| 74 72 75 63 74 20 67 72 | 6f 75 70 20 2a 67 72 6f |truct gr|oup *gro|
|00002de0| 75 70 5f 65 6e 74 72 79 | 3b 0a 58 20 20 20 73 74 |up_entry|;.X st|
|00002df0| 61 74 69 63 20 63 68 61 | 72 09 6f 77 6e 65 72 5b |atic cha|r.owner[|
|00002e00| 32 30 5d 3b 0a 58 20 20 | 20 73 74 61 74 69 63 20 |20];.X | static |
|00002e10| 63 68 61 72 09 67 72 6f | 75 70 5b 32 30 5d 3b 0a |char.gro|up[20];.|
|00002e20| 58 20 20 20 63 68 61 72 | 09 61 5f 74 69 6d 65 5b |X char|.a_time[|
|00002e30| 35 30 5d 3b 0a 58 0a 58 | 20 20 20 73 74 72 75 63 |50];.X.X| struc|
|00002e40| 74 20 70 61 73 73 77 64 | 20 2a 67 65 74 70 77 75 |t passwd| *getpwu|
|00002e50| 69 64 28 29 3b 0a 58 20 | 20 20 73 74 72 75 63 74 |id();.X | struct|
|00002e60| 20 67 72 6f 75 70 20 2a | 67 65 74 67 72 67 69 64 | group *|getgrgid|
|00002e70| 28 29 3b 0a 58 20 20 20 | 63 68 61 72 09 2a 63 74 |();.X |char.*ct|
|00002e80| 69 6d 65 28 29 3b 0a 58 | 0a 58 20 20 20 73 74 61 |ime();.X|.X sta|
|00002e90| 74 69 63 20 69 6e 74 09 | 70 72 65 76 5f 75 69 64 |tic int.|prev_uid|
|00002ea0| 20 3d 20 2d 39 39 39 39 | 3b 0a 58 20 20 20 73 74 | = -9999|;.X st|
|00002eb0| 61 74 69 63 20 69 6e 74 | 09 70 72 65 76 5f 67 69 |atic int|.prev_gi|
|00002ec0| 64 20 3d 20 2d 39 39 39 | 39 3b 0a 58 0a 58 20 20 |d = -999|9;.X.X |
|00002ed0| 20 69 66 20 28 73 74 61 | 74 5f 62 75 66 2e 73 74 | if (sta|t_buf.st|
|00002ee0| 5f 75 69 64 20 21 3d 20 | 70 72 65 76 5f 75 69 64 |_uid != |prev_uid|
|00002ef0| 29 20 7b 0a 58 20 20 20 | 20 20 20 65 6e 74 72 79 |) {.X | entry|
|00002f00| 20 3d 20 67 65 74 70 77 | 75 69 64 28 28 69 6e 74 | = getpw|uid((int|
|00002f10| 29 73 74 61 74 5f 62 75 | 66 2e 73 74 5f 75 69 64 |)stat_bu|f.st_uid|
|00002f20| 29 3b 0a 58 20 20 20 20 | 20 20 69 66 20 28 65 6e |);.X | if (en|
|00002f30| 74 72 79 29 0a 58 20 20 | 20 20 20 20 20 20 20 28 |try).X | (|
|00002f40| 76 6f 69 64 29 20 73 74 | 72 63 70 79 28 6f 77 6e |void) st|rcpy(own|
|00002f50| 65 72 2c 20 65 6e 74 72 | 79 2d 3e 70 77 5f 6e 61 |er, entr|y->pw_na|
|00002f60| 6d 65 29 3b 0a 58 20 20 | 20 20 20 20 65 6c 73 65 |me);.X | else|
|00002f70| 0a 58 20 20 20 20 20 20 | 20 20 20 28 76 6f 69 64 |.X | (void|
|00002f80| 29 20 73 70 72 69 6e 74 | 66 28 6f 77 6e 65 72 2c |) sprint|f(owner,|
|00002f90| 20 22 25 64 22 2c 20 73 | 74 61 74 5f 62 75 66 2e | "%d", s|tat_buf.|
|00002fa0| 73 74 5f 75 69 64 29 3b | 0a 58 20 20 20 20 20 20 |st_uid);|.X |
|00002fb0| 70 72 65 76 5f 75 69 64 | 20 3d 20 73 74 61 74 5f |prev_uid| = stat_|
|00002fc0| 62 75 66 2e 73 74 5f 75 | 69 64 3b 0a 58 20 20 20 |buf.st_u|id;.X |
|00002fd0| 7d 0a 58 20 20 20 69 66 | 20 28 73 74 61 74 5f 62 |}.X if| (stat_b|
|00002fe0| 75 66 2e 73 74 5f 67 69 | 64 20 21 3d 20 70 72 65 |uf.st_gi|d != pre|
|00002ff0| 76 5f 67 69 64 29 20 7b | 0a 58 20 20 20 20 20 20 |v_gid) {|.X |
|00003000| 67 72 6f 75 70 5f 65 6e | 74 72 79 20 3d 20 67 65 |group_en|try = ge|
|00003010| 74 67 72 67 69 64 28 28 | 69 6e 74 29 73 74 61 74 |tgrgid((|int)stat|
|00003020| 5f 62 75 66 2e 73 74 5f | 67 69 64 29 3b 0a 58 20 |_buf.st_|gid);.X |
|00003030| 20 20 20 20 20 69 66 20 | 28 67 72 6f 75 70 5f 65 | if |(group_e|
|00003040| 6e 74 72 79 29 0a 58 20 | 20 20 20 20 20 20 20 20 |ntry).X | |
|00003050| 28 76 6f 69 64 29 20 73 | 74 72 63 70 79 28 67 72 |(void) s|trcpy(gr|
|00003060| 6f 75 70 2c 20 67 72 6f | 75 70 5f 65 6e 74 72 79 |oup, gro|up_entry|
|00003070| 2d 3e 67 72 5f 6e 61 6d | 65 29 3b 0a 58 20 20 20 |->gr_nam|e);.X |
|00003080| 20 20 20 65 6c 73 65 0a | 58 20 20 20 20 20 20 20 | else.|X |
|00003090| 20 20 28 76 6f 69 64 29 | 20 73 70 72 69 6e 74 66 | (void)| sprintf|
|000030a0| 28 67 72 6f 75 70 2c 20 | 22 25 64 22 2c 20 73 74 |(group, |"%d", st|
|000030b0| 61 74 5f 62 75 66 2e 73 | 74 5f 67 69 64 29 3b 0a |at_buf.s|t_gid);.|
|000030c0| 58 20 20 20 20 20 20 70 | 72 65 76 5f 67 69 64 20 |X p|rev_gid |
|000030d0| 3d 20 73 74 61 74 5f 62 | 75 66 2e 73 74 5f 67 69 |= stat_b|uf.st_gi|
|000030e0| 64 3b 0a 58 20 20 20 7d | 0a 58 0a 58 20 20 20 28 |d;.X }|.X.X (|
|000030f0| 76 6f 69 64 29 20 73 74 | 72 63 70 79 28 61 5f 74 |void) st|rcpy(a_t|
|00003100| 69 6d 65 2c 20 63 74 69 | 6d 65 28 26 73 74 61 74 |ime, cti|me(&stat|
|00003110| 5f 62 75 66 2e 73 74 5f | 6d 74 69 6d 65 29 29 3b |_buf.st_|mtime));|
|00003120| 0a 58 20 20 20 61 5f 74 | 69 6d 65 5b 32 34 5d 20 |.X a_t|ime[24] |
|00003130| 3d 20 27 5c 30 27 3b 0a | 58 0a 58 20 20 20 70 72 |= '\0';.|X.X pr|
|00003140| 69 6e 74 5f 70 65 72 6d | 28 73 74 61 74 5f 62 75 |int_perm|(stat_bu|
|00003150| 66 2e 73 74 5f 6d 6f 64 | 65 29 3b 0a 58 0a 58 20 |f.st_mod|e);.X.X |
|00003160| 20 20 28 76 6f 69 64 29 | 20 20 70 72 69 6e 74 66 | (void)| printf|
|00003170| 28 22 20 25 73 5c 74 25 | 73 5c 74 25 73 20 25 73 |(" %s\t%|s\t%s %s|
|00003180| 5c 6e 22 2c 20 6f 77 6e | 65 72 2c 20 67 72 6f 75 |\n", own|er, grou|
|00003190| 70 2c 20 61 5f 74 69 6d | 65 20 2b 20 34 2c 20 6e |p, a_tim|e + 4, n|
|000031a0| 61 6d 65 29 3b 0a 58 0a | 58 7d 0a 58 0a 58 0a 58 |ame);.X.|X}.X.X.X|
|000031b0| 70 72 69 6e 74 5f 70 65 | 72 6d 28 70 65 72 6d 29 |print_pe|rm(perm)|
|000031c0| 0a 58 75 6e 73 69 67 6e | 65 64 20 69 6e 74 09 70 |.Xunsign|ed int.p|
|000031d0| 65 72 6d 3b 0a 58 7b 0a | 58 0a 58 20 20 20 63 68 |erm;.X{.|X.X ch|
|000031e0| 61 72 09 73 74 72 69 6e | 67 5b 32 30 5d 3b 0a 58 |ar.strin|g[20];.X|
|000031f0| 20 20 20 28 76 6f 69 64 | 29 20 73 74 72 63 70 79 | (void|) strcpy|
|00003200| 28 73 74 72 69 6e 67 2c | 20 22 2d 2d 2d 2d 2d 2d |(string,| "------|
|00003210| 2d 2d 2d 2d 22 29 3b 0a | 58 0a 58 20 20 20 73 77 |----");.|X.X sw|
|00003220| 69 74 63 68 20 28 70 65 | 72 6d 20 26 20 53 5f 49 |itch (pe|rm & S_I|
|00003230| 46 4d 54 29 20 7b 0a 58 | 0a 58 20 20 20 63 61 73 |FMT) {.X|.X cas|
|00003240| 65 20 53 5f 49 46 44 49 | 52 3a 0a 58 20 20 20 20 |e S_IFDI|R:.X |
|00003250| 20 20 73 74 72 69 6e 67 | 5b 30 5d 20 3d 20 27 64 | string|[0] = 'd|
|00003260| 27 3b 0a 58 20 20 20 20 | 20 20 62 72 65 61 6b 3b |';.X | break;|
|00003270| 0a 58 0a 58 20 20 20 63 | 61 73 65 20 53 5f 49 46 |.X.X c|ase S_IF|
|00003280| 42 4c 4b 3a 0a 58 20 20 | 20 20 20 20 73 74 72 69 |BLK:.X | stri|
|00003290| 6e 67 5b 30 5d 20 3d 20 | 27 62 27 3b 0a 58 20 20 |ng[0] = |'b';.X |
|000032a0| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 0a 58 20 20 | brea|k;.X.X |
|000032b0| 20 63 61 73 65 20 53 5f | 49 46 43 48 52 3a 0a 58 | case S_|IFCHR:.X|
|000032c0| 20 20 20 20 20 20 73 74 | 72 69 6e 67 5b 30 5d 20 | st|ring[0] |
|000032d0| 3d 20 27 63 27 3b 0a 58 | 20 20 20 20 20 20 62 72 |= 'c';.X| br|
|000032e0| 65 61 6b 3b 0a 58 0a 58 | 20 20 20 63 61 73 65 20 |eak;.X.X| case |
|000032f0| 53 5f 49 46 49 46 4f 3a | 0a 58 20 20 20 20 20 20 |S_IFIFO:|.X |
|00003300| 73 74 72 69 6e 67 5b 30 | 5d 20 3d 20 27 70 27 3b |string[0|] = 'p';|
|00003310| 0a 58 20 20 20 20 20 20 | 62 72 65 61 6b 3b 0a 58 |.X |break;.X|
|00003320| 20 20 20 7d 0a 58 20 20 | 20 69 66 20 28 70 65 72 | }.X | if (per|
|00003330| 6d 20 26 20 53 5f 49 52 | 45 41 44 29 0a 58 20 20 |m & S_IR|EAD).X |
|00003340| 20 20 20 20 73 74 72 69 | 6e 67 5b 31 5d 20 3d 20 | stri|ng[1] = |
|00003350| 27 72 27 3b 0a 58 20 20 | 20 69 66 20 28 70 65 72 |'r';.X | if (per|
|00003360| 6d 20 26 20 53 5f 49 57 | 52 49 54 45 29 0a 58 20 |m & S_IW|RITE).X |
|00003370| 20 20 20 20 20 73 74 72 | 69 6e 67 5b 32 5d 20 3d | str|ing[2] =|
|00003380| 20 27 77 27 3b 0a 58 20 | 20 20 69 66 20 28 70 65 | 'w';.X | if (pe|
|00003390| 72 6d 20 26 20 53 5f 49 | 53 55 49 44 20 26 26 20 |rm & S_I|SUID && |
|000033a0| 70 65 72 6d 20 26 20 53 | 5f 49 45 58 45 43 29 0a |perm & S|_IEXEC).|
|000033b0| 58 20 20 20 20 20 20 73 | 74 72 69 6e 67 5b 33 5d |X s|tring[3]|
|000033c0| 20 3d 20 27 73 27 3b 0a | 58 20 20 20 65 6c 73 65 | = 's';.|X else|
|000033d0| 20 69 66 20 28 70 65 72 | 6d 20 26 20 53 5f 49 45 | if (per|m & S_IE|
|000033e0| 58 45 43 29 0a 58 20 20 | 20 20 20 20 73 74 72 69 |XEC).X | stri|
|000033f0| 6e 67 5b 33 5d 20 3d 20 | 27 78 27 3b 0a 58 20 20 |ng[3] = |'x';.X |
|00003400| 20 65 6c 73 65 20 69 66 | 20 28 70 65 72 6d 20 26 | else if| (perm &|
|00003410| 20 53 5f 49 53 55 49 44 | 29 0a 58 20 20 20 20 20 | S_ISUID|).X |
|00003420| 20 73 74 72 69 6e 67 5b | 33 5d 20 3d 20 27 53 27 | string[|3] = 'S'|
|00003430| 3b 0a 58 0a 58 20 20 20 | 69 66 20 28 70 65 72 6d |;.X.X |if (perm|
|00003440| 20 26 20 53 5f 49 52 47 | 52 50 29 0a 58 20 20 20 | & S_IRG|RP).X |
|00003450| 20 20 20 73 74 72 69 6e | 67 5b 34 5d 20 3d 20 27 | strin|g[4] = '|
|00003460| 72 27 3b 0a 58 20 20 20 | 69 66 20 28 70 65 72 6d |r';.X |if (perm|
|00003470| 20 26 20 53 5f 49 57 47 | 52 50 29 0a 58 20 20 20 | & S_IWG|RP).X |
|00003480| 20 20 20 73 74 72 69 6e | 67 5b 35 5d 20 3d 20 27 | strin|g[5] = '|
|00003490| 77 27 3b 0a 58 20 20 20 | 69 66 20 28 70 65 72 6d |w';.X |if (perm|
|000034a0| 20 26 20 53 5f 49 53 55 | 49 44 20 26 26 20 70 65 | & S_ISU|ID && pe|
|000034b0| 72 6d 20 26 20 53 5f 49 | 58 47 52 50 29 0a 58 20 |rm & S_I|XGRP).X |
|000034c0| 20 20 20 20 20 73 74 72 | 69 6e 67 5b 36 5d 20 3d | str|ing[6] =|
|000034d0| 20 27 73 27 3b 0a 58 20 | 20 20 65 6c 73 65 20 69 | 's';.X | else i|
|000034e0| 66 20 28 70 65 72 6d 20 | 26 20 53 5f 49 58 47 52 |f (perm |& S_IXGR|
|000034f0| 50 29 0a 58 20 20 20 20 | 20 20 73 74 72 69 6e 67 |P).X | string|
|00003500| 5b 36 5d 20 3d 20 27 78 | 27 3b 0a 58 20 20 20 65 |[6] = 'x|';.X e|
|00003510| 6c 73 65 20 69 66 20 28 | 70 65 72 6d 20 26 20 53 |lse if (|perm & S|
|00003520| 5f 49 53 55 49 44 29 0a | 58 20 20 20 20 20 20 73 |_ISUID).|X s|
|00003530| 74 72 69 6e 67 5b 36 5d | 20 3d 20 27 6c 27 3b 0a |tring[6]| = 'l';.|
|00003540| 58 0a 58 20 20 20 69 66 | 20 28 70 65 72 6d 20 26 |X.X if| (perm &|
|00003550| 20 53 5f 49 52 4f 54 48 | 29 0a 58 20 20 20 20 20 | S_IROTH|).X |
|00003560| 20 73 74 72 69 6e 67 5b | 37 5d 20 3d 20 27 72 27 | string[|7] = 'r'|
|00003570| 3b 0a 58 20 20 20 69 66 | 20 28 70 65 72 6d 20 26 |;.X if| (perm &|
|00003580| 20 53 5f 49 57 4f 54 48 | 29 0a 58 20 20 20 20 20 | S_IWOTH|).X |
|00003590| 20 73 74 72 69 6e 67 5b | 38 5d 20 3d 20 27 77 27 | string[|8] = 'w'|
|000035a0| 3b 0a 58 20 20 20 69 66 | 20 28 70 65 72 6d 20 26 |;.X if| (perm &|
|000035b0| 20 53 5f 49 53 56 54 58 | 20 26 26 20 70 65 72 6d | S_ISVTX| && perm|
|000035c0| 20 26 20 53 5f 49 58 4f | 54 48 29 0a 58 20 20 20 | & S_IXO|TH).X |
|000035d0| 20 20 20 73 74 72 69 6e | 67 5b 39 5d 20 3d 20 27 | strin|g[9] = '|
|000035e0| 74 27 3b 0a 58 20 20 20 | 65 6c 73 65 20 69 66 20 |t';.X |else if |
|000035f0| 28 70 65 72 6d 20 26 20 | 53 5f 49 58 4f 54 48 29 |(perm & |S_IXOTH)|
|00003600| 0a 58 20 20 20 20 20 20 | 73 74 72 69 6e 67 5b 39 |.X |string[9|
|00003610| 5d 20 3d 20 27 78 27 3b | 0a 58 20 20 20 65 6c 73 |] = 'x';|.X els|
|00003620| 65 20 69 66 20 28 70 65 | 72 6d 20 26 20 53 5f 49 |e if (pe|rm & S_I|
|00003630| 53 56 54 58 29 0a 58 20 | 20 20 20 20 20 73 74 72 |SVTX).X | str|
|00003640| 69 6e 67 5b 39 5d 20 3d | 20 27 54 27 3b 0a 58 0a |ing[9] =| 'T';.X.|
|00003650| 58 20 20 20 28 76 6f 69 | 64 29 20 70 72 69 6e 74 |X (voi|d) print|
|00003660| 66 28 22 20 25 73 22 2c | 20 73 74 72 69 6e 67 29 |f(" %s",| string)|
|00003670| 3b 0a 58 7d 0a 58 0a 58 | 23 65 6e 64 69 66 0a 58 |;.X}.X.X|#endif.X|
|00003680| 0a 45 4e 44 5f 4f 46 5f | 63 72 63 2e 63 0a 69 66 |.END_OF_|crc.c.if|
|00003690| 20 74 65 73 74 20 39 39 | 31 38 20 2d 6e 65 20 60 | test 99|18 -ne `|
|000036a0| 77 63 20 2d 63 20 3c 63 | 72 63 2e 63 60 3b 20 74 |wc -c <c|rc.c`; t|
|000036b0| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|000036c0| 72 3a 20 5c 22 63 72 63 | 2e 63 5c 22 20 75 6e 70 |r: \"crc|.c\" unp|
|000036d0| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|000036e0| 20 73 69 7a 65 21 0a 66 | 69 0a 23 20 65 6e 64 20 | size!.f|i.# end |
|000036f0| 6f 66 20 6f 76 65 72 77 | 72 69 74 69 6e 67 20 63 |of overw|riting c|
|00003700| 68 65 63 6b 0a 66 69 0a | 69 66 20 74 65 73 74 20 |heck.fi.|if test |
|00003710| 2d 66 20 63 72 63 5f 63 | 68 65 63 6b 2e 63 20 2d |-f crc_c|heck.c -|
|00003720| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|00003730| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|00003740| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 6f |shar: Wi|ll not o|
|00003750| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00003760| 6e 67 20 66 69 6c 65 20 | 5c 22 63 72 63 5f 63 68 |ng file |\"crc_ch|
|00003770| 65 63 6b 2e 63 5c 22 0a | 65 6c 73 65 0a 65 63 68 |eck.c\".|else.ech|
|00003780| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|00003790| 6e 67 20 5c 22 63 72 63 | 5f 63 68 65 63 6b 2e 63 |ng \"crc|_check.c|
|000037a0| 5c 22 20 5c 28 34 30 36 | 37 20 63 68 61 72 61 63 |\" \(406|7 charac|
|000037b0| 74 65 72 73 5c 29 0a 73 | 65 64 20 22 73 2f 5e 58 |ters\).s|ed "s/^X|
|000037c0| 2f 2f 22 20 3e 63 72 63 | 5f 63 68 65 63 6b 2e 63 |//" >crc|_check.c|
|000037d0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 63 72 63 5f 63 | <<'END_|OF_crc_c|
|000037e0| 68 65 63 6b 2e 63 27 0a | 58 0a 58 2f 2a 0a 58 20 |heck.c'.|X.X/*.X |
|000037f0| 20 20 20 54 68 69 73 20 | 70 72 6f 67 61 6d 20 77 | This |progam w|
|00003800| 69 6c 6c 20 63 6f 6d 70 | 61 72 65 20 74 77 6f 20 |ill comp|are two |
|00003810| 63 72 63 20 6c 69 73 74 | 73 20 61 6e 64 20 72 65 |crc list|s and re|
|00003820| 70 6f 72 74 20 74 68 65 | 20 64 69 66 66 65 72 65 |port the| differe|
|00003830| 6e 63 65 73 2e 0a 58 20 | 20 20 20 0a 58 20 20 20 |nces..X | .X |
|00003840| 20 42 79 20 4a 6f 6e 20 | 5a 65 65 66 66 20 28 7a | By Jon |Zeeff (z|
|00003850| 65 65 66 66 40 62 2d 74 | 65 63 68 2e 61 6e 6e 2d |eeff@b-t|ech.ann-|
|00003860| 61 72 62 6f 72 2e 6d 69 | 2e 75 73 29 0a 58 0a 58 |arbor.mi|.us).X.X|
|00003870| 20 20 20 20 50 65 72 6d | 69 73 73 69 6f 6e 20 69 | Perm|ission i|
|00003880| 73 20 67 72 61 6e 74 65 | 64 20 74 6f 20 75 73 65 |s grante|d to use|
|00003890| 20 74 68 69 73 20 69 6e | 20 61 6e 79 20 6d 61 6e | this in| any man|
|000038a0| 6e 65 72 20 70 72 6f 76 | 69 64 65 64 20 74 68 61 |ner prov|ided tha|
|000038b0| 74 20 20 20 20 0a 58 20 | 20 20 20 31 29 20 74 68 |t .X | 1) th|
|000038c0| 65 20 63 6f 70 79 72 69 | 67 68 74 20 6e 6f 74 69 |e copyri|ght noti|
|000038d0| 63 65 20 69 73 20 6c 65 | 66 74 20 69 6e 74 61 63 |ce is le|ft intac|
|000038e0| 74 2c 20 0a 58 20 20 20 | 20 32 29 20 79 6f 75 20 |t, .X | 2) you |
|000038f0| 64 6f 6e 27 74 20 68 6f | 6c 64 20 6d 65 20 72 65 |don't ho|ld me re|
|00003900| 73 70 6f 6e 73 69 62 6c | 65 20 66 6f 72 20 61 6e |sponsibl|e for an|
|00003910| 79 20 62 75 67 73 20 61 | 6e 64 20 0a 58 20 20 20 |y bugs a|nd .X |
|00003920| 20 33 29 20 79 6f 75 20 | 6d 61 69 6c 20 6d 65 20 | 3) you |mail me |
|00003930| 61 6e 79 20 69 6d 70 72 | 6f 76 65 6d 65 6e 74 73 |any impr|ovements|
|00003940| 20 74 68 61 74 20 79 6f | 75 20 6d 61 6b 65 2e 20 | that yo|u make. |
|00003950| 20 0a 58 0a 58 0a 58 20 | 20 20 20 72 65 70 6f 72 | .X.X.X | repor|
|00003960| 74 3a 0a 58 20 20 20 20 | 20 20 20 20 20 63 6f 72 |t:.X | cor|
|00003970| 72 75 70 74 09 2d 09 63 | 72 63 20 63 68 61 6e 67 |rupt.-.c|rc chang|
|00003980| 65 64 20 77 2f 6f 20 64 | 61 74 65 20 63 68 61 6e |ed w/o d|ate chan|
|00003990| 67 65 0a 58 20 20 20 20 | 20 20 20 20 20 72 65 70 |ge.X | rep|
|000039a0| 6c 61 63 65 64 09 2d 09 | 63 72 63 20 2b 20 64 61 |laced.-.|crc + da|
|000039b0| 74 65 20 63 68 61 6e 67 | 65 64 0a 58 20 20 20 20 |te chang|ed.X |
|000039c0| 20 20 20 20 20 70 65 72 | 6d 09 09 2d 09 70 65 72 | per|m..-.per|
|000039d0| 6d 69 73 73 69 6f 6e 73 | 20 63 68 61 6e 67 65 64 |missions| changed|
|000039e0| 0a 58 20 20 20 20 20 20 | 20 20 20 6f 77 6e 2f 67 |.X | own/g|
|000039f0| 72 70 09 2d 09 6f 77 6e | 65 72 20 6f 72 20 67 72 |rp.-.own|er or gr|
|00003a00| 6f 75 70 20 63 68 61 6e | 67 65 64 0a 58 09 20 72 |oup chan|ged.X. r|
|00003a10| 65 6d 6f 76 65 64 09 2d | 09 0a 58 09 20 61 64 64 |emoved.-|..X. add|
|00003a20| 65 64 09 09 2d 0a 58 0a | 58 50 72 69 6e 74 20 74 |ed..-.X.|XPrint t|
|00003a30| 68 65 20 69 6e 66 6f 20 | 66 6f 72 20 74 68 65 20 |he info |for the |
|00003a40| 6e 65 77 20 66 69 6c 65 | 20 65 78 63 65 70 74 20 |new file| except |
|00003a50| 66 6f 72 20 64 65 6c 65 | 74 65 64 2e 0a 58 0a 58 |for dele|ted..X.X|
|00003a60| 55 73 65 3a 0a 58 0a 58 | 66 69 6e 64 20 2f 20 2d |Use:.X.X|find / -|
|00003a70| 70 72 69 6e 74 20 7c 20 | 73 6f 72 74 20 7c 20 78 |print | |sort | x|
|00003a80| 61 72 67 73 20 63 72 63 | 20 2d 76 20 3e 20 63 72 |args crc| -v > cr|
|00003a90| 63 5f 66 69 6c 65 0a 58 | 0a 58 74 6f 20 67 65 6e |c_file.X|.Xto gen|
|00003aa0| 65 72 61 74 65 20 61 20 | 63 72 63 20 6c 69 73 74 |erate a |crc list|
|00003ab0| 20 28 63 72 63 2e 63 20 | 73 68 6f 75 6c 64 20 61 | (crc.c |should a|
|00003ac0| 63 63 6f 6d 70 61 6e 79 | 20 74 68 69 73 20 73 6f |ccompany| this so|
|00003ad0| 75 72 63 65 29 2e 0a 58 | 0a 58 41 73 73 75 6d 65 |urce)..X|.XAssume|
|00003ae0| 20 74 68 61 74 20 6e 6f | 20 66 69 6c 65 73 20 68 | that no| files h|
|00003af0| 61 76 65 20 74 61 62 73 | 20 6f 72 20 73 70 61 63 |ave tabs| or spac|
|00003b00| 65 73 20 69 6e 20 74 68 | 65 20 6e 61 6d 65 2e 0a |es in th|e name..|
|00003b10| 58 0a 58 2a 2f 0a 58 0a | 58 2f 2a 20 6d 61 78 20 |X.X*/.X.|X/* max |
|00003b20| 73 69 7a 65 20 6f 66 20 | 6c 69 6e 65 20 2a 2f 0a |size of |line */.|
|00003b30| 58 0a 58 23 64 65 66 69 | 6e 65 20 42 55 46 5f 53 |X.X#defi|ne BUF_S|
|00003b40| 49 5a 45 20 31 31 32 34 | 0a 58 0a 58 23 69 6e 63 |IZE 1124|.X.X#inc|
|00003b50| 6c 75 64 65 20 3c 73 74 | 64 69 6f 2e 68 3e 0a 58 |lude <st|dio.h>.X|
|00003b60| 0a 58 63 68 61 72 09 2a | 73 74 72 72 63 68 72 28 |.Xchar.*|strrchr(|
|00003b70| 29 3b 0a 58 76 6f 69 64 | 20 20 20 20 65 78 69 74 |);.Xvoid| exit|
|00003b80| 28 29 3b 0a 58 0a 58 63 | 68 61 72 09 6e 65 77 5f |();.X.Xc|har.new_|
|00003b90| 6c 69 6e 65 5b 42 55 46 | 5f 53 49 5a 45 5d 3b 0a |line[BUF|_SIZE];.|
|00003ba0| 58 63 68 61 72 09 6f 6c | 64 5f 6c 69 6e 65 5b 42 |Xchar.ol|d_line[B|
|00003bb0| 55 46 5f 53 49 5a 45 5d | 3b 0a 58 0a 58 46 49 4c |UF_SIZE]|;.X.XFIL|
|00003bc0| 45 20 2a 6e 65 77 5f 66 | 69 6c 65 3b 0a 58 46 49 |E *new_f|ile;.XFI|
|00003bd0| 4c 45 20 2a 6f 6c 64 5f | 66 69 6c 65 3b 0a 58 0a |LE *old_|file;.X.|
|00003be0| 58 6d 61 69 6e 28 61 72 | 67 63 2c 20 61 72 67 76 |Xmain(ar|gc, argv|
|00003bf0| 29 0a 58 69 6e 74 09 61 | 72 67 63 3b 0a 58 63 68 |).Xint.a|rgc;.Xch|
|00003c00| 61 72 09 2a 2a 61 72 67 | 76 3b 0a 58 7b 0a 58 20 |ar.**arg|v;.X{.X |
|00003c10| 20 20 2f 2a 0a 58 0a 58 | 20 20 20 20 20 20 20 20 | /*.X.X| |
|00003c20| 20 20 20 49 66 20 6c 69 | 6e 65 20 3d 2c 20 72 65 | If li|ne =, re|
|00003c30| 61 64 20 6e 65 77 20 6c | 69 6e 65 20 66 72 6f 6d |ad new l|ine from|
|00003c40| 20 65 61 63 68 20 66 69 | 6c 65 0a 58 20 20 20 20 | each fi|le.X |
|00003c50| 20 20 20 20 20 20 20 65 | 6c 73 65 0a 58 20 20 20 | e|lse.X |
|00003c60| 20 20 20 20 20 20 20 20 | 49 66 20 64 61 74 65 2f | |If date/|
|00003c70| 70 65 72 6d 2f 63 72 63 | 20 63 68 61 6e 67 65 2c |perm/crc| change,|
|00003c80| 20 72 65 70 6f 72 74 20 | 61 6e 64 20 72 65 61 64 | report |and read|
|00003c90| 20 6e 65 77 20 6c 69 6e | 65 20 66 72 6f 6d 20 65 | new lin|e from e|
|00003ca0| 61 63 68 20 66 69 6c 65 | 0a 58 20 20 20 20 20 20 |ach file|.X |
|00003cb0| 20 20 20 20 20 65 6c 73 | 65 0a 58 20 20 20 20 20 | els|e.X |
|00003cc0| 20 20 20 20 20 20 49 66 | 20 6f 6c 64 5f 6c 69 6e | If| old_lin|
|00003cd0| 65 20 3c 20 6e 65 77 5f | 6c 69 6e 65 2c 20 72 65 |e < new_|line, re|
|00003ce0| 70 6f 72 74 20 66 69 6c | 65 20 72 65 6d 6f 76 65 |port fil|e remove|
|00003cf0| 64 2c 20 72 65 61 64 20 | 6f 6c 64 20 6c 69 6e 65 |d, read |old line|
|00003d00| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 65 6c 73 |.X | els|
|00003d10| 65 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e.X | |
|00003d20| 20 72 65 70 6f 72 74 20 | 6e 65 77 20 6c 69 6e 65 | report |new line|
|00003d30| 20 61 73 20 61 64 64 65 | 64 0a 58 20 20 20 20 20 | as adde|d.X |
|00003d40| 20 20 20 20 20 20 20 20 | 20 72 65 61 64 20 6e 65 | | read ne|
|00003d50| 77 5f 6c 69 6e 65 0a 58 | 20 20 20 20 20 20 20 20 |w_line.X| |
|00003d60| 6c 6f 6f 70 0a 58 2a 2f | 0a 58 0a 58 20 20 20 63 |loop.X*/|.X.X c|
|00003d70| 68 61 72 09 2a 6e 65 77 | 5f 70 74 72 3b 0a 58 20 |har.*new|_ptr;.X |
|00003d80| 20 20 63 68 61 72 09 2a | 6f 6c 64 5f 70 74 72 3b | char.*|old_ptr;|
|00003d90| 0a 58 0a 58 20 20 20 69 | 66 20 28 61 72 67 63 20 |.X.X i|f (argc |
|00003da0| 21 3d 20 33 29 20 7b 0a | 58 20 20 20 20 20 20 28 |!= 3) {.|X (|
|00003db0| 76 6f 69 64 29 20 70 72 | 69 6e 74 66 28 22 77 72 |void) pr|intf("wr|
|00003dc0| 6f 6e 67 20 6e 75 6d 62 | 65 72 20 6f 66 20 61 72 |ong numb|er of ar|
|00003dd0| 67 75 6d 65 6e 74 73 5c | 6e 22 29 3b 0a 58 20 20 |guments\|n");.X |
|00003de0| 20 20 20 20 28 76 6f 69 | 64 29 20 70 72 69 6e 74 | (voi|d) print|
|00003df0| 66 28 22 63 72 63 5f 63 | 68 65 63 6b 20 6f 6c 64 |f("crc_c|heck old|
|00003e00| 5f 63 72 63 5f 66 69 6c | 65 20 6e 65 77 5f 63 72 |_crc_fil|e new_cr|
|00003e10| 63 5f 66 69 6c 65 5c 6e | 22 29 3b 0a 58 20 20 20 |c_file\n|");.X |
|00003e20| 20 20 20 65 78 69 74 28 | 31 29 3b 0a 58 20 20 20 | exit(|1);.X |
|00003e30| 7d 0a 58 20 20 20 6e 65 | 77 5f 66 69 6c 65 20 3d |}.X ne|w_file =|
|00003e40| 20 66 6f 70 65 6e 28 61 | 72 67 76 5b 32 5d 2c 20 | fopen(a|rgv[2], |
|00003e50| 22 72 22 29 3b 0a 58 20 | 20 20 6f 6c 64 5f 66 69 |"r");.X | old_fi|
|00003e60| 6c 65 20 3d 20 66 6f 70 | 65 6e 28 61 72 67 76 5b |le = fop|en(argv[|
|00003e70| 31 5d 2c 20 22 72 22 29 | 3b 0a 58 0a 58 20 20 20 |1], "r")|;.X.X |
|00003e80| 69 66 20 28 6e 65 77 5f | 66 69 6c 65 20 3d 3d 20 |if (new_|file == |
|00003e90| 4e 55 4c 4c 20 7c 7c 20 | 6f 6c 64 5f 66 69 6c 65 |NULL || |old_file|
|00003ea0| 20 3d 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 20 20 20 | == NULL|) {.X |
|00003eb0| 20 20 20 28 76 6f 69 64 | 29 20 70 72 69 6e 74 66 | (void|) printf|
|00003ec0| 28 22 63 61 6e 27 74 20 | 6f 70 65 6e 20 69 6e 70 |("can't |open inp|
|00003ed0| 75 74 20 66 69 6c 65 73 | 5c 6e 22 29 3b 0a 58 20 |ut files|\n");.X |
|00003ee0| 20 20 20 20 20 28 76 6f | 69 64 29 20 70 72 69 6e | (vo|id) prin|
|00003ef0| 74 66 28 22 63 72 63 5f | 63 68 65 63 6b 20 6f 6c |tf("crc_|check ol|
|00003f00| 64 5f 63 72 63 5f 66 69 | 6c 65 20 6e 65 77 5f 63 |d_crc_fi|le new_c|
|00003f10| 72 63 5f 66 69 6c 65 5c | 6e 22 29 3b 0a 58 20 20 |rc_file\|n");.X |
|00003f20| 20 20 20 20 65 78 69 74 | 28 31 29 3b 0a 58 20 20 | exit|(1);.X |
|00003f30| 20 7d 0a 58 0a 58 20 20 | 20 67 65 74 5f 6c 69 6e | }.X.X | get_lin|
|00003f40| 65 28 6e 65 77 5f 6c 69 | 6e 65 29 3b 0a 58 20 20 |e(new_li|ne);.X |
|00003f50| 20 67 65 74 5f 6c 69 6e | 65 28 6f 6c 64 5f 6c 69 | get_lin|e(old_li|
|00003f60| 6e 65 29 3b 0a 58 0a 58 | 20 20 20 66 6f 72 20 28 |ne);.X.X| for (|
|00003f70| 3b 20 3b 20 29 20 7b 0a | 58 0a 58 20 20 20 20 20 |; ; ) {.|X.X |
|00003f80| 20 63 68 65 63 6b 5f 65 | 6f 66 28 29 3b 0a 58 0a | check_e|of();.X.|
|00003f90| 58 20 20 20 20 20 20 2f | 2a 20 49 66 20 65 71 75 |X /|* If equ|
|00003fa0| 61 6c 2c 20 70 72 69 6e | 74 20 6e 6f 74 68 69 6e |al, prin|t nothin|
|00003fb0| 67 20 61 6e 64 20 67 65 | 74 20 6e 65 77 20 6c 69 |g and ge|t new li|
|00003fc0| 6e 65 73 20 2a 2f 0a 58 | 0a 58 20 20 20 20 20 20 |nes */.X|.X |
|00003fd0| 69 66 20 28 73 74 72 63 | 6d 70 28 6f 6c 64 5f 6c |if (strc|mp(old_l|
|00003fe0| 69 6e 65 2c 20 6e 65 77 | 5f 6c 69 6e 65 29 20 3d |ine, new|_line) =|
|00003ff0| 3d 20 30 29 20 7b 0a 58 | 20 20 20 20 20 20 20 20 |= 0) {.X| |
|00004000| 20 67 65 74 5f 6c 69 6e | 65 28 6e 65 77 5f 6c 69 | get_lin|e(new_li|
|00004010| 6e 65 29 3b 0a 58 20 20 | 20 20 20 20 20 20 20 67 |ne);.X | g|
|00004020| 65 74 5f 6c 69 6e 65 28 | 6f 6c 64 5f 6c 69 6e 65 |et_line(|old_line|
|00004030| 29 3b 0a 58 20 20 20 20 | 20 20 20 20 20 63 6f 6e |);.X | con|
|00004040| 74 69 6e 75 65 3b 0a 58 | 20 20 20 20 20 20 7d 0a |tinue;.X| }.|
|00004050| 58 0a 58 20 20 20 20 20 | 20 2f 2a 20 43 6f 6d 70 |X.X | /* Comp|
|00004060| 61 72 65 20 6a 75 73 74 | 20 74 68 65 20 66 69 6c |are just| the fil|
|00004070| 65 20 6e 61 6d 65 73 20 | 2a 2f 0a 58 0a 58 20 20 |e names |*/.X.X |
|00004080| 20 20 20 20 6e 65 77 5f | 70 74 72 20 3d 20 73 74 | new_|ptr = st|
|00004090| 72 72 63 68 72 28 6e 65 | 77 5f 6c 69 6e 65 2c 20 |rrchr(ne|w_line, |
|000040a0| 27 20 27 29 3b 0a 58 20 | 20 20 20 20 20 6f 6c 64 |' ');.X | old|
|000040b0| 5f 70 74 72 20 3d 20 73 | 74 72 72 63 68 72 28 6f |_ptr = s|trrchr(o|
|000040c0| 6c 64 5f 6c 69 6e 65 2c | 20 27 20 27 29 3b 0a 58 |ld_line,| ' ');.X|
|000040d0| 0a 58 20 20 20 20 20 20 | 69 66 20 28 6e 65 77 5f |.X |if (new_|
|000040e0| 70 74 72 20 3d 3d 20 4e | 55 4c 4c 20 7c 7c 20 6f |ptr == N|ULL || o|
|000040f0| 6c 64 5f 70 74 72 20 3d | 3d 20 4e 55 4c 4c 29 20 |ld_ptr =|= NULL) |
|00004100| 7b 0a 58 20 20 20 20 20 | 20 20 20 20 28 76 6f 69 |{.X | (voi|
|00004110| 64 29 20 70 72 69 6e 74 | 66 28 22 45 72 72 6f 72 |d) print|f("Error|
|00004120| 20 69 6e 20 69 6e 70 75 | 74 20 64 61 74 61 5c 6e | in inpu|t data\n|
|00004130| 22 29 3b 0a 58 20 20 20 | 20 20 20 20 20 20 65 78 |");.X | ex|
|00004140| 69 74 28 31 29 3b 0a 58 | 20 20 20 20 20 20 7d 0a |it(1);.X| }.|
|00004150| 58 0a 58 20 20 20 20 20 | 20 69 66 20 28 73 74 72 |X.X | if (str|
|00004160| 63 6d 70 28 6f 6c 64 5f | 70 74 72 2c 20 6e 65 77 |cmp(old_|ptr, new|
|00004170| 5f 70 74 72 29 20 3d 3d | 20 30 29 20 7b 0a 58 0a |_ptr) ==| 0) {.X.|
|00004180| 58 20 20 20 20 20 20 20 | 20 20 6e 65 77 5f 70 74 |X | new_pt|
|00004190| 72 20 3d 20 73 74 72 72 | 63 68 72 28 6e 65 77 5f |r = strr|chr(new_|
|000041a0| 6c 69 6e 65 2c 20 27 5c | 74 27 29 3b 0a 58 20 20 |line, '\|t');.X |
|000041b0| 20 20 20 20 20 20 20 6f | 6c 64 5f 70 74 72 20 3d | o|ld_ptr =|
|000041c0| 20 73 74 72 72 63 68 72 | 28 6f 6c 64 5f 6c 69 6e | strrchr|(old_lin|
|000041d0| 65 2c 20 27 5c 74 27 29 | 3b 0a 58 0a 58 20 20 20 |e, '\t')|;.X.X |
|000041e0| 20 20 20 20 20 20 69 66 | 20 28 6e 65 77 5f 70 74 | if| (new_pt|
|000041f0| 72 20 3d 3d 20 4e 55 4c | 4c 20 7c 7c 20 6f 6c 64 |r == NUL|L || old|
|00004200| 5f 70 74 72 20 3d 3d 20 | 4e 55 4c 4c 29 20 7b 0a |_ptr == |NULL) {.|
|00004210| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 28 76 6f |X | (vo|
|00004220| 69 64 29 20 70 72 69 6e | 74 66 28 22 45 72 72 6f |id) prin|tf("Erro|
|00004230| 72 20 69 6e 20 69 6e 70 | 75 74 20 64 61 74 61 5c |r in inp|ut data\|
|00004240| 6e 22 29 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |n");.X | |
|00004250| 20 20 65 78 69 74 28 31 | 29 3b 0a 58 20 20 20 20 | exit(1|);.X |
|00004260| 20 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 20 20 | }.X|.X |
|00004270| 20 20 20 2f 2a 20 63 68 | 65 63 6b 20 63 72 63 20 | /* ch|eck crc |
|00004280| 63 68 61 6e 67 65 20 2a | 2f 0a 58 0a 58 20 20 20 |change *|/.X.X |
|00004290| 20 20 20 20 20 20 69 66 | 20 28 73 74 72 6e 63 6d | if| (strncm|
|000042a0| 70 28 6e 65 77 5f 6c 69 | 6e 65 2c 20 6f 6c 64 5f |p(new_li|ne, old_|
|000042b0| 6c 69 6e 65 2c 20 34 29 | 20 21 3d 20 30 29 0a 58 |line, 4)| != 0).X|
|000042c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 66 20 28 | | if (|
|000042d0| 73 74 72 63 6d 70 28 6e | 65 77 5f 70 74 72 2c 20 |strcmp(n|ew_ptr, |
|000042e0| 6f 6c 64 5f 70 74 72 29 | 20 3d 3d 20 30 29 0a 58 |old_ptr)| == 0).X|
|000042f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (|
|00004300| 76 6f 69 64 29 20 70 72 | 69 6e 74 66 28 22 63 6f |void) pr|intf("co|
|00004310| 72 72 75 70 74 20 20 25 | 73 22 2c 20 6e 65 77 5f |rrupt %|s", new_|
|00004320| 6c 69 6e 65 20 2b 20 35 | 29 3b 0a 58 20 20 20 20 |line + 5|);.X |
|00004330| 20 20 20 20 20 20 20 20 | 65 6c 73 65 0a 58 20 20 | |else.X |
|00004340| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 76 6f | | (vo|
|00004350| 69 64 29 20 70 72 69 6e | 74 66 28 22 72 65 70 6c |id) prin|tf("repl|
|00004360| 61 63 65 64 20 25 73 22 | 2c 20 6e 65 77 5f 6c 69 |aced %s"|, new_li|
|00004370| 6e 65 20 2b 20 35 29 3b | 0a 58 0a 58 0a 58 20 20 |ne + 5);|.X.X.X |
|00004380| 20 20 20 20 20 20 20 2f | 2a 20 63 68 65 63 6b 20 | /|* check |
|00004390| 70 65 72 6d 69 73 73 69 | 6f 6e 20 63 68 65 6e 61 |permissi|on chena|
|000043a0| 67 65 20 2a 2f 0a 58 0a | 58 20 20 20 20 20 20 20 |ge */.X.|X |
|000043b0| 20 20 69 66 20 28 73 74 | 72 6e 63 6d 70 28 6e 65 | if (st|rncmp(ne|
|000043c0| 77 5f 6c 69 6e 65 20 2b | 20 35 2c 20 6f 6c 64 5f |w_line +| 5, old_|
|000043d0| 6c 69 6e 65 20 2b 20 35 | 2c 20 31 31 29 20 21 3d |line + 5|, 11) !=|
|000043e0| 20 30 29 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | 0).X | |
|000043f0| 20 28 76 6f 69 64 29 20 | 70 72 69 6e 74 66 28 22 | (void) |printf("|
|00004400| 70 65 72 6d 69 73 73 20 | 20 25 73 22 2c 20 6e 65 |permiss | %s", ne|
|00004410| 77 5f 6c 69 6e 65 20 2b | 20 35 29 3b 0a 58 0a 58 |w_line +| 5);.X.X|
|00004420| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 63 68 65 63 | | /* chec|
|00004430| 6b 20 20 6f 77 6e 65 72 | 2f 67 72 6f 75 70 20 2a |k owner|/group *|
|00004440| 2f 0a 58 0a 58 20 20 20 | 20 20 20 20 20 20 69 66 |/.X.X | if|
|00004450| 20 28 73 74 72 6e 63 6d | 70 28 6e 65 77 5f 6c 69 | (strncm|p(new_li|
|00004460| 6e 65 2b 31 36 2c 20 6f | 6c 64 5f 6c 69 6e 65 2b |ne+16, o|ld_line+|
|00004470| 31 36 2c 20 6e 65 77 5f | 70 74 72 20 2d 20 6e 65 |16, new_|ptr - ne|
|00004480| 77 5f 6c 69 6e 65 20 2d | 20 31 35 29 20 21 3d 20 |w_line -| 15) != |
|00004490| 30 29 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |0).X | |
|000044a0| 28 76 6f 69 64 29 20 70 | 72 69 6e 74 66 28 22 6f |(void) p|rintf("o|
|000044b0| 77 6e 2f 67 72 70 20 20 | 25 73 22 2c 20 6e 65 77 |wn/grp |%s", new|
|000044c0| 5f 6c 69 6e 65 20 2b 20 | 35 29 3b 0a 58 0a 58 20 |_line + |5);.X.X |
|000044d0| 20 20 20 20 20 20 20 20 | 67 65 74 5f 6c 69 6e 65 | |get_line|
|000044e0| 28 6e 65 77 5f 6c 69 6e | 65 29 3b 0a 58 20 20 20 |(new_lin|e);.X |
|000044f0| 20 20 20 20 20 20 67 65 | 74 5f 6c 69 6e 65 28 6f | ge|t_line(o|
|00004500| 6c 64 5f 6c 69 6e 65 29 | 3b 0a 58 20 20 20 20 20 |ld_line)|;.X |
|00004510| 20 20 20 20 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 20 | cont|inue;.X |
|00004520| 20 20 20 20 20 7d 0a 58 | 0a 58 0a 58 20 20 20 20 | }.X|.X.X |
|00004530| 20 20 69 66 20 28 73 74 | 72 63 6d 70 28 6f 6c 64 | if (st|rcmp(old|
|00004540| 5f 70 74 72 2c 20 6e 65 | 77 5f 70 74 72 29 20 3c |_ptr, ne|w_ptr) <|
|00004550| 20 30 29 20 7b 0a 58 20 | 20 20 20 20 20 20 20 20 | 0) {.X | |
|00004560| 28 76 6f 69 64 29 20 70 | 72 69 6e 74 66 28 22 72 |(void) p|rintf("r|
|00004570| 65 6d 6f 76 65 64 20 20 | 25 73 22 2c 20 6f 6c 64 |emoved |%s", old|
|00004580| 5f 6c 69 6e 65 20 2b 20 | 35 29 3b 0a 58 20 20 20 |_line + |5);.X |
|00004590| 20 20 20 20 20 20 67 65 | 74 5f 6c 69 6e 65 28 6f | ge|t_line(o|
|000045a0| 6c 64 5f 6c 69 6e 65 29 | 3b 0a 58 20 20 20 20 20 |ld_line)|;.X |
|000045b0| 20 20 20 20 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 20 | cont|inue;.X |
|000045c0| 20 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 20 20 | }.X|.X |
|000045d0| 28 76 6f 69 64 29 20 70 | 72 69 6e 74 66 28 22 61 |(void) p|rintf("a|
|000045e0| 64 64 65 64 20 20 20 20 | 25 73 22 2c 20 6e 65 77 |dded |%s", new|
|000045f0| 5f 6c 69 6e 65 20 2b 20 | 35 29 3b 0a 58 20 20 20 |_line + |5);.X |
|00004600| 20 20 20 67 65 74 5f 6c | 69 6e 65 28 6e 65 77 5f | get_l|ine(new_|
|00004610| 6c 69 6e 65 29 3b 0a 58 | 0a 58 20 20 20 7d 0a 58 |line);.X|.X }.X|
|00004620| 0a 58 7d 0a 58 0a 58 0a | 58 67 65 74 5f 6c 69 6e |.X}.X.X.|Xget_lin|
|00004630| 65 28 73 74 72 69 6e 67 | 29 0a 58 63 68 61 72 09 |e(string|).Xchar.|
|00004640| 2a 73 74 72 69 6e 67 3b | 0a 58 7b 0a 58 20 20 20 |*string;|.X{.X |
|00004650| 69 66 20 28 73 74 72 69 | 6e 67 20 3d 3d 20 6e 65 |if (stri|ng == ne|
|00004660| 77 5f 6c 69 6e 65 29 0a | 58 20 20 20 20 20 20 28 |w_line).|X (|
|00004670| 76 6f 69 64 29 20 66 67 | 65 74 73 28 73 74 72 69 |void) fg|ets(stri|
|00004680| 6e 67 2c 20 42 55 46 5f | 53 49 5a 45 2c 20 6e 65 |ng, BUF_|SIZE, ne|
|00004690| 77 5f 66 69 6c 65 29 3b | 0a 58 20 20 20 65 6c 73 |w_file);|.X els|
|000046a0| 65 0a 58 20 20 20 20 20 | 20 28 76 6f 69 64 29 20 |e.X | (void) |
|000046b0| 66 67 65 74 73 28 73 74 | 72 69 6e 67 2c 20 42 55 |fgets(st|ring, BU|
|000046c0| 46 5f 53 49 5a 45 2c 20 | 6f 6c 64 5f 66 69 6c 65 |F_SIZE, |old_file|
|000046d0| 29 3b 0a 58 0a 58 7d 0a | 58 0a 58 0a 58 63 68 65 |);.X.X}.|X.X.Xche|
|000046e0| 63 6b 5f 65 6f 66 28 29 | 0a 58 7b 0a 58 0a 58 20 |ck_eof()|.X{.X.X |
|000046f0| 20 20 69 66 20 28 66 65 | 6f 66 28 6e 65 77 5f 66 | if (fe|of(new_f|
|00004700| 69 6c 65 29 29 20 7b 0a | 58 0a 58 20 20 20 20 20 |ile)) {.|X.X |
|00004710| 20 77 68 69 6c 65 20 28 | 21 66 65 6f 66 28 6f 6c | while (|!feof(ol|
|00004720| 64 5f 66 69 6c 65 29 29 | 20 7b 0a 58 20 20 20 20 |d_file))| {.X |
|00004730| 20 20 20 20 20 28 76 6f | 69 64 29 20 70 72 69 6e | (vo|id) prin|
|00004740| 74 66 28 22 72 65 6d 6f | 76 65 64 20 20 25 73 22 |tf("remo|ved %s"|
|00004750| 2c 20 6f 6c 64 5f 6c 69 | 6e 65 20 2b 20 35 29 3b |, old_li|ne + 5);|
|00004760| 0a 58 20 20 20 20 20 20 | 20 20 20 28 76 6f 69 64 |.X | (void|
|00004770| 29 20 66 67 65 74 73 28 | 6f 6c 64 5f 6c 69 6e 65 |) fgets(|old_line|
|00004780| 2c 20 42 55 46 5f 53 49 | 5a 45 2c 20 6f 6c 64 5f |, BUF_SI|ZE, old_|
|00004790| 66 69 6c 65 29 3b 0a 58 | 20 20 20 20 20 20 7d 0a |file);.X| }.|
|000047a0| 58 20 20 20 20 20 20 65 | 78 69 74 28 30 29 3b 0a |X e|xit(0);.|
|000047b0| 58 20 20 20 7d 20 65 6c | 73 65 20 69 66 20 28 66 |X } el|se if (f|
|000047c0| 65 6f 66 28 6f 6c 64 5f | 66 69 6c 65 29 29 20 7b |eof(old_|file)) {|
|000047d0| 0a 58 20 20 20 20 20 20 | 77 68 69 6c 65 20 28 21 |.X |while (!|
|000047e0| 66 65 6f 66 28 6e 65 77 | 5f 66 69 6c 65 29 29 20 |feof(new|_file)) |
|000047f0| 7b 0a 58 20 20 20 20 20 | 20 20 20 20 28 76 6f 69 |{.X | (voi|
|00004800| 64 29 20 70 72 69 6e 74 | 66 28 22 61 64 64 65 64 |d) print|f("added|
|00004810| 20 20 20 20 25 73 22 2c | 20 6e 65 77 5f 6c 69 6e | %s",| new_lin|
|00004820| 65 20 2b 20 35 29 3b 0a | 58 20 20 20 20 20 20 20 |e + 5);.|X |
|00004830| 20 20 28 76 6f 69 64 29 | 20 66 67 65 74 73 28 6e | (void)| fgets(n|
|00004840| 65 77 5f 6c 69 6e 65 2c | 20 42 55 46 5f 53 49 5a |ew_line,| BUF_SIZ|
|00004850| 45 2c 20 6e 65 77 5f 66 | 69 6c 65 29 3b 0a 58 20 |E, new_f|ile);.X |
|00004860| 20 20 20 20 20 7d 0a 58 | 20 20 20 20 20 20 65 78 | }.X| ex|
|00004870| 69 74 28 30 29 3b 0a 58 | 20 20 20 7d 0a 58 0a 58 |it(0);.X| }.X.X|
|00004880| 7d 0a 58 0a 58 0a 45 4e | 44 5f 4f 46 5f 63 72 63 |}.X.X.EN|D_OF_crc|
|00004890| 5f 63 68 65 63 6b 2e 63 | 0a 69 66 20 74 65 73 74 |_check.c|.if test|
|000048a0| 20 34 30 36 37 20 2d 6e | 65 20 60 77 63 20 2d 63 | 4067 -n|e `wc -c|
|000048b0| 20 3c 63 72 63 5f 63 68 | 65 63 6b 2e 63 60 3b 20 | <crc_ch|eck.c`; |
|000048c0| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|000048d0| 61 72 3a 20 5c 22 63 72 | 63 5f 63 68 65 63 6b 2e |ar: \"cr|c_check.|
|000048e0| 63 5c 22 20 75 6e 70 61 | 63 6b 65 64 20 77 69 74 |c\" unpa|cked wit|
|000048f0| 68 20 77 72 6f 6e 67 20 | 73 69 7a 65 21 0a 66 69 |h wrong |size!.fi|
|00004900| 0a 23 20 65 6e 64 20 6f | 66 20 6f 76 65 72 77 72 |.# end o|f overwr|
|00004910| 69 74 69 6e 67 20 63 68 | 65 63 6b 0a 66 69 0a 69 |iting ch|eck.fi.i|
|00004920| 66 20 74 65 73 74 20 2d | 66 20 66 69 6e 64 5f 63 |f test -|f find_c|
|00004930| 72 63 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |rc -a "$|{1}" != |
|00004940| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|00004950| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|00004960| 6f 74 20 6f 76 65 72 2d | 77 72 69 74 65 20 65 78 |ot over-|write ex|
|00004970| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 66 69 |isting f|ile \"fi|
|00004980| 6e 64 5f 63 72 63 5c 22 | 0a 65 6c 73 65 0a 65 63 |nd_crc\"|.else.ec|
|00004990| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|000049a0| 69 6e 67 20 5c 22 66 69 | 6e 64 5f 63 72 63 5c 22 |ing \"fi|nd_crc\"|
|000049b0| 20 5c 28 35 38 20 63 68 | 61 72 61 63 74 65 72 73 | \(58 ch|aracters|
|000049c0| 5c 29 0a 73 65 64 20 22 | 73 2f 5e 58 2f 2f 22 20 |\).sed "|s/^X//" |
|000049d0| 3e 66 69 6e 64 5f 63 72 | 63 20 3c 3c 27 45 4e 44 |>find_cr|c <<'END|
|000049e0| 5f 4f 46 5f 66 69 6e 64 | 5f 63 72 63 27 0a 58 0a |_OF_find|_crc'.X.|
|000049f0| 58 66 69 6e 64 20 2f 20 | 2d 6d 6f 75 6e 74 20 2d |Xfind / |-mount -|
|00004a00| 70 72 69 6e 74 20 7c 20 | 73 6f 72 74 20 7c 20 78 |print | |sort | x|
|00004a10| 61 72 67 73 20 63 72 63 | 20 2d 76 20 3e 20 63 72 |args crc| -v > cr|
|00004a20| 63 2e 74 6d 70 20 20 0a | 58 0a 58 0a 45 4e 44 5f |c.tmp .|X.X.END_|
|00004a30| 4f 46 5f 66 69 6e 64 5f | 63 72 63 0a 69 66 20 74 |OF_find_|crc.if t|
|00004a40| 65 73 74 20 35 38 20 2d | 6e 65 20 60 77 63 20 2d |est 58 -|ne `wc -|
|00004a50| 63 20 3c 66 69 6e 64 5f | 63 72 63 60 3b 20 74 68 |c <find_|crc`; th|
|00004a60| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|00004a70| 3a 20 5c 22 66 69 6e 64 | 5f 63 72 63 5c 22 20 75 |: \"find|_crc\" u|
|00004a80| 6e 70 61 63 6b 65 64 20 | 77 69 74 68 20 77 72 6f |npacked |with wro|
|00004a90| 6e 67 20 73 69 7a 65 21 | 0a 66 69 0a 63 68 6d 6f |ng size!|.fi.chmo|
|00004aa0| 64 20 2b 78 20 66 69 6e | 64 5f 63 72 63 0a 23 20 |d +x fin|d_crc.# |
|00004ab0| 65 6e 64 20 6f 66 20 6f | 76 65 72 77 72 69 74 69 |end of o|verwriti|
|00004ac0| 6e 67 20 63 68 65 63 6b | 0a 66 69 0a 65 63 68 6f |ng check|.fi.echo|
|00004ad0| 20 73 68 61 72 3a 20 45 | 6e 64 20 6f 66 20 73 68 | shar: E|nd of sh|
|00004ae0| 65 6c 6c 20 61 72 63 68 | 69 76 65 2e 0a 65 78 69 |ell arch|ive..exi|
|00004af0| 74 20 30 0a 2d 2d 20 0a | 20 20 4a 6f 6e 20 5a 65 |t 0.-- .| Jon Ze|
|00004b00| 65 66 66 09 09 09 7a 65 | 65 66 66 40 62 2d 74 65 |eff...ze|eff@b-te|
|00004b10| 63 68 2e 61 6e 6e 2d 61 | 72 62 6f 72 2e 6d 69 2e |ch.ann-a|rbor.mi.|
|00004b20| 75 73 0a 20 20 41 6e 6e | 20 41 72 62 6f 72 2c 20 |us. Ann| Arbor, |
|00004b30| 4d 49 09 09 09 6d 61 69 | 6c 72 75 73 21 62 2d 74 |MI...mai|lrus!b-t|
|00004b40| 65 63 68 21 7a 65 65 66 | 66 0a 0a |ech!zeef|f.. |
+--------+-------------------------+-------------------------+--------+--------+