home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume29 / unzip / part02 < prev    next >
SHell self-extracting ARchive  |  1992-04-03  |  53.5 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 C source, ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)



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 69 6e 66 6f | 2d 7a 69 70 40 63 73 2e |om: info|-zip@cs.|
|00000030| 75 63 6c 61 2e 65 64 75 | 0a 53 75 62 6a 65 63 74 |ucla.edu|.Subject|
|00000040| 3a 20 20 76 32 39 69 30 | 33 32 3a 20 20 75 6e 7a |: v29i0|32: unz|
|00000050| 69 70 20 2d 20 49 6e 66 | 6f 2d 5a 49 50 27 73 20 |ip - Inf|o-ZIP's |
|00000060| 70 6f 72 74 61 62 6c 65 | 20 55 6e 5a 69 70 20 76 |portable| UnZip v|
|00000070| 34 2e 32 2c 20 50 61 72 | 74 30 32 2f 31 32 0a 4d |4.2, Par|t02/12.M|
|00000080| 65 73 73 61 67 65 2d 49 | 44 3a 20 3c 31 39 39 32 |essage-I|D: <1992|
|00000090| 41 70 72 33 2e 30 36 32 | 36 34 37 2e 32 38 31 33 |Apr3.062|647.2813|
|000000a0| 34 40 73 70 61 72 6b 79 | 2e 69 6d 64 2e 73 74 65 |4@sparky|.imd.ste|
|000000b0| 72 6c 69 6e 67 2e 63 6f | 6d 3e 0a 58 2d 4d 64 34 |rling.co|m>.X-Md4|
|000000c0| 2d 53 69 67 6e 61 74 75 | 72 65 3a 20 37 30 66 62 |-Signatu|re: 70fb|
|000000d0| 32 66 32 61 36 38 63 66 | 36 61 34 37 34 63 63 32 |2f2a68cf|6a474cc2|
|000000e0| 37 33 61 33 65 63 37 63 | 32 39 63 32 0a 44 61 74 |73a3ec7c|29c2.Dat|
|000000f0| 65 3a 20 46 72 69 2c 20 | 33 20 41 70 72 20 31 39 |e: Fri, |3 Apr 19|
|00000100| 39 32 20 30 36 3a 32 36 | 3a 34 37 20 47 4d 54 0a |92 06:26|:47 GMT.|
|00000110| 41 70 70 72 6f 76 65 64 | 3a 20 6b 65 6e 74 40 73 |Approved|: kent@s|
|00000120| 70 61 72 6b 79 2e 69 6d | 64 2e 73 74 65 72 6c 69 |parky.im|d.sterli|
|00000130| 6e 67 2e 63 6f 6d 0a 0a | 53 75 62 6d 69 74 74 65 |ng.com..|Submitte|
|00000140| 64 2d 62 79 3a 20 69 6e | 66 6f 2d 7a 69 70 40 63 |d-by: in|fo-zip@c|
|00000150| 73 2e 75 63 6c 61 2e 65 | 64 75 20 28 49 6e 66 6f |s.ucla.e|du (Info|
|00000160| 2d 5a 69 70 29 0a 50 6f | 73 74 69 6e 67 2d 6e 75 |-Zip).Po|sting-nu|
|00000170| 6d 62 65 72 3a 20 56 6f | 6c 75 6d 65 20 32 39 2c |mber: Vo|lume 29,|
|00000180| 20 49 73 73 75 65 20 33 | 32 0a 41 72 63 68 69 76 | Issue 3|2.Archiv|
|00000190| 65 2d 6e 61 6d 65 3a 20 | 75 6e 7a 69 70 2f 70 61 |e-name: |unzip/pa|
|000001a0| 72 74 30 32 0a 45 6e 76 | 69 72 6f 6e 6d 65 6e 74 |rt02.Env|ironment|
|000001b0| 3a 20 55 6e 69 78 2c 20 | 56 4d 53 2c 20 4f 53 2f |: Unix, |VMS, OS/|
|000001c0| 32 2c 20 4d 53 2d 44 4f | 53 2c 20 41 6d 69 67 61 |2, MS-DO|S, Amiga|
|000001d0| 2c 20 4d 61 63 69 6e 74 | 6f 73 68 0a 53 75 70 65 |, Macint|osh.Supe|
|000001e0| 72 73 65 64 65 73 3a 20 | 75 6e 7a 69 70 2c 20 56 |rsedes: |unzip, V|
|000001f0| 6f 6c 75 6d 65 20 31 39 | 2c 20 49 73 73 75 65 73 |olume 19|, Issues|
|00000200| 20 39 36 2d 31 30 31 0a | 0a 23 21 20 2f 62 69 6e | 96-101.|.#! /bin|
|00000210| 2f 73 68 0a 23 20 54 68 | 69 73 20 69 73 20 61 20 |/sh.# Th|is is a |
|00000220| 73 68 65 6c 6c 20 61 72 | 63 68 69 76 65 2e 20 20 |shell ar|chive. |
|00000230| 52 65 6d 6f 76 65 20 61 | 6e 79 74 68 69 6e 67 20 |Remove a|nything |
|00000240| 62 65 66 6f 72 65 20 74 | 68 69 73 20 6c 69 6e 65 |before t|his line|
|00000250| 2c 20 74 68 65 6e 20 66 | 65 65 64 20 69 74 0a 23 |, then f|eed it.#|
|00000260| 20 69 6e 74 6f 20 61 20 | 73 68 65 6c 6c 20 76 69 | into a |shell vi|
|00000270| 61 20 22 73 68 20 66 69 | 6c 65 22 20 6f 72 20 73 |a "sh fi|le" or s|
|00000280| 69 6d 69 6c 61 72 2e 20 | 20 54 6f 20 6f 76 65 72 |imilar. | To over|
|00000290| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 20 66 |write ex|isting f|
|000002a0| 69 6c 65 73 2c 0a 23 20 | 74 79 70 65 20 22 73 68 |iles,.# |type "sh|
|000002b0| 20 66 69 6c 65 20 2d 63 | 22 2e 0a 23 20 54 68 65 | file -c|"..# The|
|000002c0| 20 74 6f 6f 6c 20 74 68 | 61 74 20 67 65 6e 65 72 | tool th|at gener|
|000002d0| 61 74 65 64 20 74 68 69 | 73 20 61 70 70 65 61 72 |ated thi|s appear|
|000002e0| 65 64 20 69 6e 20 74 68 | 65 20 63 6f 6d 70 2e 73 |ed in th|e comp.s|
|000002f0| 6f 75 72 63 65 73 2e 75 | 6e 69 78 20 6e 65 77 73 |ources.u|nix news|
|00000300| 67 72 6f 75 70 3b 0a 23 | 20 73 65 6e 64 20 6d 61 |group;.#| send ma|
|00000310| 69 6c 20 74 6f 20 63 6f | 6d 70 2d 73 6f 75 72 63 |il to co|mp-sourc|
|00000320| 65 73 2d 75 6e 69 78 40 | 75 75 6e 65 74 2e 75 75 |es-unix@|uunet.uu|
|00000330| 2e 6e 65 74 20 69 66 20 | 79 6f 75 20 77 61 6e 74 |.net if |you want|
|00000340| 20 74 68 61 74 20 74 6f | 6f 6c 2e 0a 23 20 43 6f | that to|ol..# Co|
|00000350| 6e 74 65 6e 74 73 3a 20 | 20 7a 69 70 69 6e 66 6f |ntents: | zipinfo|
|00000360| 2e 63 0a 23 20 57 72 61 | 70 70 65 64 20 62 79 20 |.c.# Wra|pped by |
|00000370| 6b 65 6e 74 40 73 70 61 | 72 6b 79 20 6f 6e 20 4d |kent@spa|rky on M|
|00000380| 6f 6e 20 4d 61 72 20 33 | 30 20 30 31 3a 34 35 3a |on Mar 3|0 01:45:|
|00000390| 35 31 20 31 39 39 32 0a | 50 41 54 48 3d 2f 62 69 |51 1992.|PATH=/bi|
|000003a0| 6e 3a 2f 75 73 72 2f 62 | 69 6e 3a 2f 75 73 72 2f |n:/usr/b|in:/usr/|
|000003b0| 75 63 62 20 3b 20 65 78 | 70 6f 72 74 20 50 41 54 |ucb ; ex|port PAT|
|000003c0| 48 0a 65 63 68 6f 20 49 | 66 20 74 68 69 73 20 61 |H.echo I|f this a|
|000003d0| 72 63 68 69 76 65 20 69 | 73 20 63 6f 6d 70 6c 65 |rchive i|s comple|
|000003e0| 74 65 2c 20 79 6f 75 20 | 77 69 6c 6c 20 73 65 65 |te, you |will see|
|000003f0| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6d | the fol|lowing m|
|00000400| 65 73 73 61 67 65 3a 0a | 65 63 68 6f 20 27 20 20 |essage:.|echo ' |
|00000410| 20 20 20 20 20 20 20 20 | 22 73 68 61 72 3a 20 45 | |"shar: E|
|00000420| 6e 64 20 6f 66 20 61 72 | 63 68 69 76 65 20 32 20 |nd of ar|chive 2 |
|00000430| 28 6f 66 20 31 32 29 2e | 22 27 0a 69 66 20 74 65 |(of 12).|"'.if te|
|00000440| 73 74 20 2d 66 20 27 7a | 69 70 69 6e 66 6f 2e 63 |st -f 'z|ipinfo.c|
|00000450| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|00000460| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|00000470| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|00000480| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|00000490| 6e 67 20 66 69 6c 65 20 | 5c 22 27 7a 69 70 69 6e |ng file |\"'zipin|
|000004a0| 66 6f 2e 63 27 5c 22 0a | 65 6c 73 65 0a 20 20 65 |fo.c'\".|else. e|
|000004b0| 63 68 6f 20 73 68 61 72 | 3a 20 45 78 74 72 61 63 |cho shar|: Extrac|
|000004c0| 74 69 6e 67 20 5c 22 27 | 7a 69 70 69 6e 66 6f 2e |ting \"'|zipinfo.|
|000004d0| 63 27 5c 22 20 5c 28 35 | 31 35 34 31 20 63 68 61 |c'\" \(5|1541 cha|
|000004e0| 72 61 63 74 65 72 73 5c | 29 0a 20 20 73 65 64 20 |racters\|). sed |
|000004f0| 22 73 2f 5e 58 2f 2f 22 | 20 3e 27 7a 69 70 69 6e |"s/^X//"| >'zipin|
|00000500| 66 6f 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |fo.c' <<|'END_OF_|
|00000510| 46 49 4c 45 27 0a 58 2f | 2a 2d 2d 2d 2d 2d 2d 2d |FILE'.X/|*-------|
|00000520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000550| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000560| 2d 2d 2d 0a 58 0a 58 20 | 20 7a 69 70 69 6e 66 6f |---.X.X | zipinfo|
|00000570| 2e 63 0a 58 0a 58 20 20 | 54 68 69 73 20 70 72 6f |.c.X.X |This pro|
|00000580| 67 72 61 6d 20 72 65 61 | 64 73 20 61 6c 6c 20 73 |gram rea|ds all s|
|00000590| 6f 72 74 73 20 6f 66 20 | 74 6f 74 61 6c 6c 79 20 |orts of |totally |
|000005a0| 6e 69 66 74 79 20 69 6e | 66 6f 72 6d 61 74 69 6f |nifty in|formatio|
|000005b0| 6e 2c 20 69 6e 63 6c 75 | 64 69 6e 67 20 74 68 65 |n, inclu|ding the|
|000005c0| 0a 58 20 20 63 65 6e 74 | 72 61 6c 20 64 69 72 65 |.X cent|ral dire|
|000005d0| 63 74 6f 72 79 20 73 74 | 75 66 66 2c 20 66 72 6f |ctory st|uff, fro|
|000005e0| 6d 20 61 20 5a 49 50 20 | 61 72 63 68 69 76 65 20 |m a ZIP |archive |
|000005f0| 28 22 7a 69 70 66 69 6c | 65 22 20 66 6f 72 20 73 |("zipfil|e" for s|
|00000600| 68 6f 72 74 29 2e 20 20 | 49 74 0a 58 20 20 73 74 |hort). |It.X st|
|00000610| 61 72 74 65 64 20 61 73 | 20 6a 75 73 74 20 61 20 |arted as| just a |
|00000620| 74 65 73 74 62 65 64 20 | 66 6f 72 20 66 6f 6f 6c |testbed |for fool|
|00000630| 69 6e 67 20 77 69 74 68 | 20 7a 69 70 66 69 6c 65 |ing with| zipfile|
|00000640| 73 2c 20 62 75 74 20 61 | 74 20 74 68 69 73 20 70 |s, but a|t this p|
|00000650| 6f 69 6e 74 0a 58 20 20 | 69 74 27 73 20 61 63 74 |oint.X |it's act|
|00000660| 75 61 6c 6c 79 20 61 20 | 6d 6f 64 65 72 61 74 65 |ually a |moderate|
|00000670| 6c 79 20 75 73 65 66 75 | 6c 20 75 74 69 6c 69 74 |ly usefu|l utilit|
|00000680| 79 2e 20 20 49 74 20 61 | 6c 73 6f 20 62 65 63 61 |y. It a|lso beca|
|00000690| 6d 65 20 74 68 65 20 62 | 61 73 69 73 0a 58 20 20 |me the b|asis.X |
|000006a0| 66 6f 72 20 74 68 65 20 | 72 65 77 72 69 74 65 20 |for the |rewrite |
|000006b0| 6f 66 20 75 6e 7a 69 70 | 20 28 33 2e 31 36 20 2d |of unzip| (3.16 -|
|000006c0| 3e 20 34 2e 30 29 2c 20 | 75 73 69 6e 67 20 74 68 |> 4.0), |using th|
|000006d0| 65 20 63 65 6e 74 72 61 | 6c 20 64 69 72 65 63 74 |e centra|l direct|
|000006e0| 6f 72 79 20 66 6f 72 0a | 58 20 20 70 72 6f 63 65 |ory for.|X proce|
|000006f0| 73 73 69 6e 67 20 72 61 | 74 68 65 72 20 74 68 61 |ssing ra|ther tha|
|00000700| 6e 20 74 68 65 20 69 6e | 64 69 76 69 64 75 61 6c |n the in|dividual|
|00000710| 20 28 6c 6f 63 61 6c 29 | 20 66 69 6c 65 20 68 65 | (local)| file he|
|00000720| 61 64 65 72 73 2e 0a 58 | 0a 58 20 20 46 6f 72 20 |aders..X|.X For |
|00000730| 6d 79 73 65 6c 66 2c 20 | 49 20 66 69 6e 64 20 69 |myself, |I find i|
|00000740| 74 20 63 6f 6e 76 65 6e | 69 65 6e 74 20 74 6f 20 |t conven|ient to |
|00000750| 64 65 66 69 6e 65 20 61 | 6e 20 61 6c 69 61 73 20 |define a|n alias |
|00000760| 22 69 69 22 20 28 75 6e | 64 65 72 20 55 6e 69 78 |"ii" (un|der Unix|
|00000770| 20 61 6e 64 0a 58 20 20 | 56 4d 53 29 20 6f 72 20 | and.X |VMS) or |
|00000780| 74 6f 20 72 65 6e 61 6d | 65 20 74 68 65 20 65 78 |to renam|e the ex|
|00000790| 65 63 75 74 61 62 6c 65 | 20 74 6f 20 22 69 69 2e |ecutable| to "ii.|
|000007a0| 65 78 65 22 20 28 4f 53 | 2f 32 20 61 6e 64 20 44 |exe" (OS|/2 and D|
|000007b0| 4f 53 29 2e 20 20 54 68 | 69 73 20 6e 69 63 65 6c |OS). Th|is nicel|
|000007c0| 79 0a 58 20 20 63 6f 6d | 70 6c 65 6d 65 6e 74 73 |y.X com|plements|
|000007d0| 20 6d 79 20 55 6e 69 78 | 20 6c 6f 6e 67 2d 6c 69 | my Unix| long-li|
|000007e0| 73 74 69 6e 67 20 22 6c | 6c 22 20 61 6c 69 61 73 |sting "l|l" alias|
|000007f0| 20 28 6c 73 20 2d 6c 46 | 29 2c 20 73 69 6e 63 65 | (ls -lF|), since|
|00000800| 20 7a 69 70 69 6e 66 6f | 27 73 20 64 65 2d 0a 58 | zipinfo|'s de-.X|
|00000810| 20 20 66 61 75 6c 74 20 | 61 63 74 69 6f 6e 20 69 | fault |action i|
|00000820| 73 20 74 6f 20 70 72 6f | 64 75 63 65 20 61 20 55 |s to pro|duce a U|
|00000830| 6e 69 78 2d 6c 69 6b 65 | 20 6c 69 73 74 69 6e 67 |nix-like| listing|
|00000840| 20 6f 66 20 74 68 65 20 | 61 72 63 68 69 76 65 27 | of the |archive'|
|00000850| 73 20 63 6f 6e 74 65 6e | 74 73 2e 0a 58 20 20 22 |s conten|ts..X "|
|00000860| 69 69 20 7a 69 70 66 69 | 6c 65 22 20 69 73 20 65 |ii zipfi|le" is e|
|00000870| 61 73 69 65 72 20 74 6f | 20 74 79 70 65 20 74 68 |asier to| type th|
|00000880| 61 6e 20 22 7a 69 70 69 | 6e 66 6f 20 7a 69 70 66 |an "zipi|nfo zipf|
|00000890| 69 6c 65 22 2e 2e 2e 0a | 58 0a 58 20 20 41 6e 6f |ile"....|X.X Ano|
|000008a0| 74 68 65 72 20 64 61 6e | 64 79 20 70 72 6f 64 75 |ther dan|dy produ|
|000008b0| 63 74 20 66 72 6f 6d 20 | 79 6f 75 72 20 62 75 64 |ct from |your bud|
|000008c0| 64 69 65 73 20 61 74 20 | 4e 65 77 74 77 61 72 65 |dies at |Newtware|
|000008d0| 21 0a 58 0a 58 20 20 2d | 2d 2d 2d 2d 2d 2d 2d 2d |!.X.X -|--------|
|000008e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000920| 2d 0a 58 0a 58 20 20 54 | 6f 20 63 6f 6d 70 69 6c |-.X.X T|o compil|
|00000930| 65 20 28 70 61 72 74 69 | 61 6c 20 69 6e 73 74 72 |e (parti|al instr|
|00000940| 75 63 74 69 6f 6e 73 3b | 20 73 6f 6d 65 20 6f 66 |uctions;| some of|
|00000950| 20 74 68 69 73 20 73 74 | 75 66 66 20 64 6f 65 73 | this st|uff does|
|00000960| 6e 27 74 20 65 78 69 73 | 74 20 79 65 74 29 3a 0a |n't exis|t yet):.|
|00000970| 58 0a 58 20 20 20 20 20 | 75 6e 64 65 72 20 55 6e |X.X |under Un|
|00000980| 69 78 20 28 63 63 29 3a | 20 20 6d 61 6b 65 20 7a |ix (cc):| make z|
|00000990| 69 70 69 6e 66 6f 0a 58 | 0a 58 20 20 20 20 20 75 |ipinfo.X|.X u|
|000009a0| 6e 64 65 72 20 4d 53 2d | 44 4f 53 20 28 54 75 72 |nder MS-|DOS (Tur|
|000009b0| 62 6f 43 29 3a 20 20 6d | 61 6b 65 20 2d 66 4d 4b |boC): m|ake -fMK|
|000009c0| 5a 49 50 49 4e 46 2e 44 | 4f 53 20 20 20 28 65 64 |ZIPINF.D|OS (ed|
|000009d0| 69 74 20 61 70 70 72 6f | 70 72 69 61 74 65 6c 79 |it appro|priately|
|000009e0| 29 0a 58 0a 58 20 20 20 | 20 20 75 6e 64 65 72 20 |).X.X | under |
|000009f0| 4d 53 2d 44 4f 53 20 28 | 4d 53 43 29 3a 20 20 6d |MS-DOS (|MSC): m|
|00000a00| 61 6b 65 20 4d 4b 5a 49 | 50 49 4e 46 2e 44 4f 53 |ake MKZI|PINF.DOS|
|00000a10| 0a 58 20 20 20 20 20 20 | 20 28 6f 72 20 75 73 65 |.X | (or use|
|00000a20| 20 4d 61 6b 65 66 69 6c | 65 20 69 66 20 79 6f 75 | Makefil|e if you|
|00000a30| 20 68 61 76 65 20 4d 53 | 43 20 36 2e 30 3a 20 20 | have MS|C 6.0: |
|00000a40| 22 6e 6d 61 6b 65 20 7a | 69 5f 64 6f 73 22 29 0a |"nmake z|i_dos").|
|00000a50| 58 0a 58 20 20 20 20 20 | 75 6e 64 65 72 20 4f 53 |X.X |under OS|
|00000a60| 2f 32 20 28 4d 53 43 29 | 3a 20 20 6d 61 6b 65 20 |/2 (MSC)|: make |
|00000a70| 4d 4b 5a 49 50 49 4e 46 | 2e 44 4f 53 20 20 20 28 |MKZIPINF|.DOS (|
|00000a80| 65 64 69 74 20 61 70 70 | 72 6f 70 72 69 61 74 65 |edit app|ropriate|
|00000a90| 6c 79 29 0a 58 20 20 20 | 20 20 20 20 28 6f 72 20 |ly).X | (or |
|00000aa0| 75 73 65 20 4d 61 6b 65 | 66 69 6c 65 20 69 66 20 |use Make|file if |
|00000ab0| 79 6f 75 20 68 61 76 65 | 20 4d 53 43 20 36 2e 30 |you have| MSC 6.0|
|00000ac0| 3a 20 20 22 6e 6d 61 6b | 65 20 7a 69 5f 6f 73 32 |: "nmak|e zi_os2|
|00000ad0| 22 29 0a 58 0a 58 20 20 | 20 20 20 75 6e 64 65 72 |").X.X | under|
|00000ae0| 20 41 74 61 72 69 20 4f | 53 3a 20 20 62 65 61 74 | Atari O|S: beat|
|00000af0| 73 20 6d 65 2e 2e 2e 0a | 58 0a 58 20 20 20 20 20 |s me....|X.X |
|00000b00| 75 6e 64 65 72 20 56 4d | 53 3a 20 20 40 4d 41 4b |under VM|S: @MAK|
|00000b10| 45 5f 5a 49 50 49 4e 46 | 4f 20 20 20 20 20 28 73 |E_ZIPINF|O (s|
|00000b20| 65 65 20 61 6c 73 6f 20 | 56 4d 53 4e 4f 54 45 53 |ee also |VMSNOTES|
|00000b30| 29 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |).X | |
|00000b40| 20 20 20 20 5a 49 50 49 | 4e 46 4f 20 3d 3d 20 24 | ZIPI|NFO == $|
|00000b50| 44 49 53 4b 4e 41 4d 45 | 3a 5b 44 49 52 45 43 54 |DISKNAME|:[DIRECT|
|00000b60| 4f 52 59 5d 5a 49 50 49 | 4e 46 4f 2e 45 58 45 0a |ORY]ZIPI|NFO.EXE.|
|00000b70| 58 0a 58 20 20 20 20 20 | 75 6e 64 65 72 20 4d 61 |X.X |under Ma|
|00000b80| 63 69 6e 74 6f 73 68 20 | 4f 53 3a 20 20 77 68 6f |cintosh |OS: who|
|00000b90| 20 6b 6e 6f 77 73 3f 0a | 58 0a 58 20 20 2d 2d 2d | knows?.|X.X ---|
|00000ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000be0| 2d 2d 2d 2d 2d 2d 2d 0a | 58 0a 58 20 20 56 65 72 |-------.|X.X Ver|
|00000bf0| 73 69 6f 6e 3a 20 20 20 | 20 75 6e 7a 69 70 34 32 |sion: | unzip42|
|00000c00| 2e 7a 69 70 20 28 2e 74 | 61 72 2e 5a 2c 20 65 74 |.zip (.t|ar.Z, et|
|00000c10| 63 2e 29 20 66 6f 72 20 | 55 6e 69 78 2c 20 56 4d |c.) for |Unix, VM|
|00000c20| 53 2c 20 4f 53 2f 32 20 | 61 6e 64 20 4d 53 2d 44 |S, OS/2 |and MS-D|
|00000c30| 4f 53 0a 58 20 20 53 6f | 75 72 63 65 3a 20 20 20 |OS.X So|urce: |
|00000c40| 20 20 77 75 61 72 63 68 | 69 76 65 2e 77 75 73 74 | wuarch|ive.wust|
|00000c50| 6c 2e 65 64 75 20 28 31 | 32 38 2e 32 35 32 2e 31 |l.edu (1|28.252.1|
|00000c60| 33 35 2e 34 29 20 69 6e | 20 2f 6d 69 72 72 6f 72 |35.4) in| /mirror|
|00000c70| 73 2f 6d 69 73 63 2f 75 | 6e 69 78 0a 58 20 20 20 |s/misc/u|nix.X |
|00000c80| 20 20 20 20 20 20 20 20 | 20 20 20 77 73 6d 72 2d | | wsmr-|
|00000c90| 73 69 6d 74 65 6c 32 30 | 2e 61 72 6d 79 2e 6d 69 |simtel20|.army.mi|
|00000ca0| 6c 20 28 31 39 32 2e 38 | 38 2e 31 31 30 2e 32 30 |l (192.8|8.110.20|
|00000cb0| 29 20 69 6e 20 70 64 31 | 3a 5b 6d 69 73 63 2e 75 |) in pd1|:[misc.u|
|00000cc0| 6e 69 78 5d 0a 58 20 20 | 41 75 74 68 6f 72 3a 20 |nix].X |Author: |
|00000cd0| 20 20 20 20 47 72 65 67 | 20 52 6f 65 6c 6f 66 73 | Greg| Roelofs|
|00000ce0| 2c 20 72 6f 65 6c 6f 66 | 73 40 61 6d 65 6c 69 61 |, roelof|s@amelia|
|00000cf0| 2e 6e 61 73 2e 6e 61 73 | 61 2e 67 6f 76 2c 20 32 |.nas.nas|a.gov, 2|
|00000d00| 33 20 41 75 67 75 73 74 | 20 31 39 39 30 0a 58 20 |3 August| 1990.X |
|00000d10| 20 43 6f 70 79 72 69 67 | 68 74 3a 20 20 6e 6f 6e | Copyrig|ht: non|
|00000d20| 65 20 28 65 78 63 65 70 | 74 20 74 68 61 74 20 73 |e (excep|t that s|
|00000d30| 6f 6d 65 20 6f 66 20 74 | 68 65 20 66 69 6c 65 20 |ome of t|he file |
|00000d40| 69 6e 70 75 74 2f 6f 75 | 74 70 75 74 20 63 6f 64 |input/ou|tput cod|
|00000d50| 65 20 63 6f 6d 65 73 0a | 58 20 20 20 20 20 20 20 |e comes.|X |
|00000d60| 20 20 20 20 20 20 20 66 | 72 6f 6d 20 75 6e 7a 69 | f|rom unzi|
|00000d70| 70 2c 20 77 68 69 63 68 | 20 68 61 73 20 69 74 73 |p, which| has its|
|00000d80| 20 6f 77 6e 20 63 6f 70 | 79 72 69 67 68 74 73 2c | own cop|yrights,|
|00000d90| 20 73 6f 72 74 20 6f 66 | 2e 2e 2e 4d 59 20 73 74 | sort of|...MY st|
|00000da0| 75 66 66 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |uff.X | |
|00000db0| 20 20 20 69 73 20 69 6e | 20 74 68 65 20 70 75 62 | is in| the pub|
|00000dc0| 6c 69 63 20 64 6f 6d 61 | 69 6e 2c 20 68 6f 77 65 |lic doma|in, howe|
|00000dd0| 76 65 72 29 0a 58 0a 58 | 20 20 2d 2d 2d 2d 2d 2d |ver).X.X| ------|
|00000de0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000df0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e20| 2d 2d 2d 2d 2a 2f 0a 58 | 0a 58 0a 58 0a 58 0a 58 |----*/.X|.X.X.X.X|
|00000e30| 0a 58 23 64 65 66 69 6e | 65 20 5a 49 50 49 4e 46 |.X#defin|e ZIPINF|
|00000e40| 4f 0a 58 23 69 6e 63 6c | 75 64 65 20 22 75 6e 7a |O.X#incl|ude "unz|
|00000e50| 69 70 2e 68 22 0a 58 0a | 58 23 64 65 66 69 6e 65 |ip.h".X.|X#define|
|00000e60| 20 56 45 52 53 49 4f 4e | 20 20 22 76 30 2e 39 36 | VERSION| "v0.96|
|00000e70| 6b 20 42 45 54 41 20 6f | 66 20 32 30 20 4d 61 72 |k BETA o|f 20 Mar|
|00000e80| 20 39 32 22 0a 58 0a 58 | 0a 58 0a 58 0a 58 0a 58 | 92".X.X|.X.X.X.X|
|00000e90| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00000ea0| 2a 2a 2a 2a 2a 2a 2a 2f | 0a 58 2f 2a 20 20 47 6c |*******/|.X/* Gl|
|00000eb0| 6f 62 61 6c 20 56 61 72 | 69 61 62 6c 65 73 20 20 |obal Var|iables |
|00000ec0| 2a 2f 0a 58 2f 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |*/.X/***|********|
|00000ed0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0a 58 0a 58 |********|***/.X.X|
|00000ee0| 23 69 66 64 65 66 20 45 | 42 43 44 49 43 0a 58 20 |#ifdef E|BCDIC.X |
|00000ef0| 20 20 69 6e 74 20 20 61 | 66 6c 61 67 3d 31 3b 20 | int a|flag=1; |
|00000f00| 20 20 20 2f 2a 20 74 68 | 69 73 20 69 73 20 73 6f | /* th|is is so|
|00000f10| 20 79 6f 75 20 63 61 6e | 20 72 65 61 64 20 69 74 | you can| read it|
|00000f20| 20 6f 6e 20 74 68 65 20 | 73 63 72 65 65 6e 20 20 | on the |screen |
|00000f30| 2a 2f 0a 58 23 65 6c 73 | 65 20 20 20 20 20 20 20 |*/.X#els|e |
|00000f40| 20 20 20 20 20 20 20 20 | 2f 2a 20 28 62 61 73 69 | |/* (basi|
|00000f50| 63 61 6c 6c 79 2c 20 65 | 6e 74 69 72 65 20 70 72 |cally, e|ntire pr|
|00000f60| 6f 67 72 61 6d 20 69 73 | 20 22 75 6e 7a 69 70 20 |ogram is| "unzip |
|00000f70| 2d 63 22 29 20 2a 2f 0a | 58 20 20 20 69 6e 74 20 |-c") */.|X int |
|00000f80| 20 61 66 6c 61 67 3d 30 | 3b 0a 58 23 65 6e 64 69 | aflag=0|;.X#endi|
|00000f90| 66 0a 58 69 6e 74 20 6c | 66 6c 61 67 3d 32 3b 20 |f.Xint l|flag=2; |
|00000fa0| 20 20 20 20 20 20 20 2f | 2a 20 66 6f 72 20 22 6c | /|* for "l|
|00000fb0| 73 20 2d 6c 22 20 74 79 | 70 65 20 6c 69 73 74 69 |s -l" ty|pe listi|
|00000fc0| 6e 67 20 2a 2f 0a 58 0a | 58 0a 58 62 79 74 65 20 |ng */.X.|X.Xbyte |
|00000fd0| 2a 69 6e 62 75 66 2c 20 | 2a 69 6e 70 74 72 3b 20 |*inbuf, |*inptr; |
|00000fe0| 20 20 20 2f 2a 20 69 6e | 70 75 74 20 62 75 66 66 | /* in|put buff|
|00000ff0| 65 72 20 28 61 6e 79 20 | 73 69 7a 65 20 69 73 20 |er (any |size is |
|00001000| 6c 65 67 61 6c 29 20 61 | 6e 64 20 70 6f 69 6e 74 |legal) a|nd point|
|00001010| 65 72 20 2a 2f 0a 58 69 | 6e 74 20 69 6e 63 6e 74 |er */.Xi|nt incnt|
|00001020| 3b 0a 58 0a 58 69 6e 74 | 20 7a 69 70 66 64 3b 20 |;.X.Xint| zipfd; |
|00001030| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001040| 20 20 20 20 20 2f 2a 20 | 7a 69 70 66 69 6c 65 20 | /* |zipfile |
|00001050| 66 69 6c 65 20 68 61 6e | 64 6c 65 20 2a 2f 0a 58 |file han|dle */.X|
|00001060| 63 68 61 72 20 7a 69 70 | 66 6e 5b 46 49 4c 4e 41 |char zip|fn[FILNA|
|00001070| 4d 53 49 5a 5d 3b 0a 58 | 0a 58 63 68 61 72 20 6c |MSIZ];.X|.Xchar l|
|00001080| 6f 63 61 6c 5f 68 64 72 | 5f 73 69 67 5b 35 5d 20 |ocal_hdr|_sig[5] |
|00001090| 3d 20 22 5c 31 32 30 22 | 3b 20 20 20 20 2f 2a 20 |= "\120"|; /* |
|000010a0| 72 65 6d 61 69 6e 69 6e | 67 20 73 69 67 6e 61 74 |remainin|g signat|
|000010b0| 75 72 65 20 62 79 74 65 | 73 20 63 6f 6d 65 20 6c |ure byte|s come l|
|000010c0| 61 74 65 72 3a 20 20 2a | 2f 0a 58 63 68 61 72 20 |ater: *|/.Xchar |
|000010d0| 63 65 6e 74 72 61 6c 5f | 68 64 72 5f 73 69 67 5b |central_|hdr_sig[|
|000010e0| 35 5d 20 3d 20 22 5c 31 | 32 30 22 3b 20 20 2f 2a |5] = "\1|20"; /*|
|000010f0| 20 20 6d 75 73 74 20 69 | 6e 69 74 69 61 6c 69 7a | must i|nitializ|
|00001100| 65 20 61 74 20 72 75 6e | 74 69 6d 65 20 73 6f 20 |e at run|time so |
|00001110| 7a 69 70 69 6e 66 6f 20 | 2a 2f 0a 58 63 68 61 72 |zipinfo |*/.Xchar|
|00001120| 20 65 6e 64 5f 63 65 6e | 74 72 61 6c 5f 73 69 67 | end_cen|tral_sig|
|00001130| 5b 35 5d 20 3d 20 22 5c | 31 32 30 22 3b 20 20 2f |[5] = "\|120"; /|
|00001140| 2a 20 20 65 78 65 63 75 | 74 61 62 6c 65 20 77 6f |* execu|table wo|
|00001150| 6e 27 74 20 6c 6f 6f 6b | 20 6c 69 6b 65 20 61 20 |n't look| like a |
|00001160| 7a 69 70 66 69 6c 65 20 | 20 2a 2f 0a 58 0a 58 63 |zipfile | */.X.Xc|
|00001170| 64 69 72 5f 66 69 6c 65 | 5f 68 64 72 20 63 72 65 |dir_file|_hdr cre|
|00001180| 63 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f |c; | /|
|00001190| 2a 20 75 73 65 64 20 69 | 6e 20 7a 69 70 69 6e 66 |* used i|n zipinf|
|000011a0| 6f 2e 63 2c 20 6d 69 73 | 63 2e 63 20 2a 2f 0a 58 |o.c, mis|c.c */.X|
|000011b0| 6c 6f 63 61 6c 5f 66 69 | 6c 65 5f 68 64 72 20 6c |local_fi|le_hdr l|
|000011c0| 72 65 63 3b 0a 58 65 63 | 64 69 72 5f 72 65 63 20 |rec;.Xec|dir_rec |
|000011d0| 65 63 72 65 63 3b 0a 58 | 73 74 72 75 63 74 20 73 |ecrec;.X|struct s|
|000011e0| 74 61 74 20 73 74 61 74 | 62 75 66 3b 20 20 20 20 |tat stat|buf; |
|000011f0| 20 20 20 20 20 20 20 20 | 2f 2a 20 75 73 65 64 20 | |/* used |
|00001200| 62 79 20 6d 61 69 6e 28 | 29 20 2a 2f 0a 58 0a 58 |by main(|) */.X.X|
|00001210| 69 6e 74 20 70 72 6f 63 | 65 73 73 5f 61 6c 6c 5f |int proc|ess_all_|
|00001220| 66 69 6c 65 73 3b 0a 58 | 6c 6f 6e 67 69 6e 74 20 |files;.X|longint |
|00001230| 65 78 74 72 61 5f 62 79 | 74 65 73 3d 30 3b 20 20 |extra_by|tes=0; |
|00001240| 20 20 20 20 20 20 20 20 | 2f 2a 20 75 73 65 64 20 | |/* used |
|00001250| 69 6e 20 7a 69 70 69 6e | 66 6f 2e 63 2c 20 6d 69 |in zipin|fo.c, mi|
|00001260| 73 63 2e 63 20 2a 2f 0a | 58 6c 6f 6e 67 69 6e 74 |sc.c */.|Xlongint|
|00001270| 20 63 75 72 5f 7a 69 70 | 66 69 6c 65 5f 62 75 66 | cur_zip|file_buf|
|00001280| 73 74 61 72 74 3b 20 20 | 20 2f 2a 20 66 69 6e 64 |start; | /* find|
|00001290| 5f 65 6e 64 5f 63 65 6e | 74 72 61 6c 5f 64 69 72 |_end_cen|tral_dir|
|000012a0| 2c 20 72 65 61 64 62 75 | 66 20 2a 2f 0a 58 0a 58 |, readbu|f */.X.X|
|000012b0| 6d 69 6e 5f 69 6e 66 6f | 20 69 6e 66 6f 2c 20 2a |min_info| info, *|
|000012c0| 70 49 6e 66 6f 3d 28 26 | 69 6e 66 6f 29 3b 0a 58 |pInfo=(&|info);.X|
|000012d0| 0a 58 62 79 74 65 20 2a | 65 78 74 72 61 5f 66 69 |.Xbyte *|extra_fi|
|000012e0| 65 6c 64 20 3d 20 4e 55 | 4c 4c 3b 20 20 20 20 20 |eld = NU|LL; |
|000012f0| 20 20 2f 2a 20 63 75 72 | 72 65 6e 74 6c 79 20 75 | /* cur|rently u|
|00001300| 73 65 64 20 62 79 20 56 | 4d 53 20 76 65 72 73 69 |sed by V|MS versi|
|00001310| 6f 6e 20 6f 6e 6c 79 20 | 2a 2f 0a 58 0a 58 0a 58 |on only |*/.X.X.X|
|00001320| 62 79 74 65 20 2a 6f 75 | 74 62 75 66 3b 20 20 20 |byte *ou|tbuf; |
|00001330| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001340| 2f 2a 20 62 75 66 66 65 | 72 20 66 6f 72 20 72 6c |/* buffe|r for rl|
|00001350| 65 20 6c 6f 6f 6b 2d 62 | 61 63 6b 2c 20 7a 69 70 |e look-b|ack, zip|
|00001360| 66 69 6c 65 20 63 6f 6d | 6d 65 6e 74 20 2a 2f 0a |file com|ment */.|
|00001370| 58 62 79 74 65 20 2a 6f | 75 74 6f 75 74 3b 20 20 |Xbyte *o|utout; |
|00001380| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001390| 20 2f 2a 20 73 63 72 61 | 74 63 68 20 70 61 64 20 | /* scra|tch pad |
|000013a0| 66 6f 72 20 41 53 43 49 | 49 2d 6e 61 74 69 76 65 |for ASCI|I-native|
|000013b0| 20 74 72 61 6e 73 20 2a | 2f 0a 58 0a 58 63 68 61 | trans *|/.X.Xcha|
|000013c0| 72 20 66 69 6c 65 6e 61 | 6d 65 5b 46 49 4c 4e 41 |r filena|me[FILNA|
|000013d0| 4d 53 49 5a 5d 3b 0a 58 | 63 68 61 72 20 73 69 67 |MSIZ];.X|char sig|
|000013e0| 5b 35 5d 3b 0a 58 0a 58 | 0a 58 63 68 61 72 20 2a |[5];.X.X|.Xchar *|
|000013f0| 66 6e 61 6d 65 73 5b 32 | 5d 20 3d 20 7b 22 2a 22 |fnames[2|] = {"*"|
|00001400| 2c 20 4e 55 4c 4c 7d 3b | 20 20 20 20 2f 2a 20 64 |, NULL};| /* d|
|00001410| 65 66 61 75 6c 74 20 66 | 69 6c 65 6e 61 6d 65 73 |efault f|ilenames|
|00001420| 20 76 65 63 74 6f 72 20 | 2a 2f 0a 58 63 68 61 72 | vector |*/.Xchar|
|00001430| 20 2a 2a 66 6e 76 20 3d | 20 66 6e 61 6d 65 73 3b | **fnv =| fnames;|
|00001440| 0a 58 0a 58 73 74 61 74 | 69 63 20 62 79 74 65 20 |.X.Xstat|ic byte |
|00001450| 2a 68 6f 6c 64 3b 0a 58 | 73 74 61 74 69 63 20 6c |*hold;.X|static l|
|00001460| 6f 6e 67 69 6e 74 20 7a | 69 70 6c 65 6e 3b 0a 58 |ongint z|iplen;.X|
|00001470| 73 74 61 74 69 63 20 55 | 57 4f 52 44 20 68 6f 73 |static U|WORD hos|
|00001480| 74 6e 75 6d 3b 0a 58 73 | 74 61 74 69 63 20 55 57 |tnum;.Xs|tatic UW|
|00001490| 4f 52 44 20 6d 65 74 68 | 6e 75 6d 3b 0a 58 73 74 |ORD meth|num;.Xst|
|000014a0| 61 74 69 63 20 55 57 4f | 52 44 20 65 78 74 6e 75 |atic UWO|RD extnu|
|000014b0| 6d 3b 0a 58 2f 2a 0a 58 | 20 20 20 20 55 57 4f 52 |m;.X/*.X| UWOR|
|000014c0| 44 20 6a 2c 20 79 72 2c | 20 6d 6f 2c 20 64 79 2c |D j, yr,| mo, dy,|
|000014d0| 20 68 68 2c 20 6d 6d 2c | 20 6d 65 6d 62 65 72 73 | hh, mm,| members|
|000014e0| 20 3d 20 30 3b 0a 58 20 | 20 20 20 55 4c 4f 4e 47 | = 0;.X | ULONG|
|000014f0| 20 74 6f 74 5f 63 73 69 | 7a 65 20 3d 20 30 4c 2c | tot_csi|ze = 0L,|
|00001500| 20 74 6f 74 5f 75 63 73 | 69 7a 65 20 3d 20 30 4c | tot_ucs|ize = 0L|
|00001510| 3b 0a 58 20 2a 2f 0a 58 | 0a 58 0a 58 63 68 61 72 |;.X */.X|.X.Xchar|
|00001520| 20 2a 45 6e 64 53 69 67 | 4d 73 67 20 3d 20 22 5c | *EndSig|Msg = "\|
|00001530| 6e 77 61 72 6e 69 6e 67 | 3a 5c 0a 58 20 20 64 69 |nwarning|:\.X di|
|00001540| 64 6e 27 74 20 66 69 6e | 64 20 65 6e 64 2d 6f 66 |dn't fin|d end-of|
|00001550| 2d 63 65 6e 74 72 61 6c | 2d 64 69 72 20 73 69 67 |-central|-dir sig|
|00001560| 6e 61 74 75 72 65 20 61 | 74 20 65 6e 64 20 6f 66 |nature a|t end of|
|00001570| 20 63 65 6e 74 72 61 6c | 20 64 69 72 2e 5c 6e 22 | central| dir.\n"|
|00001580| 3b 0a 58 63 68 61 72 20 | 2a 43 65 6e 74 53 69 67 |;.Xchar |*CentSig|
|00001590| 4d 73 67 20 3d 0a 58 20 | 20 22 65 72 72 6f 72 3a |Msg =.X | "error:|
|000015a0| 20 20 65 78 70 65 63 74 | 65 64 20 63 65 6e 74 72 | expect|ed centr|
|000015b0| 61 6c 20 66 69 6c 65 20 | 68 65 61 64 65 72 20 73 |al file |header s|
|000015c0| 69 67 6e 61 74 75 72 65 | 20 6e 6f 74 20 66 6f 75 |ignature| not fou|
|000015d0| 6e 64 20 28 66 69 6c 65 | 20 23 25 75 29 2e 5c 6e |nd (file| #%u).\n|
|000015e0| 22 3b 0a 58 63 68 61 72 | 20 2a 53 65 65 6b 4d 73 |";.Xchar| *SeekMs|
|000015f0| 67 20 3d 0a 58 20 20 22 | 65 72 72 6f 72 3a 20 20 |g =.X "|error: |
|00001600| 61 74 74 65 6d 70 74 20 | 74 6f 20 73 65 65 6b 20 |attempt |to seek |
|00001610| 62 65 66 6f 72 65 20 62 | 65 67 69 6e 6e 69 6e 67 |before b|eginning|
|00001620| 20 6f 66 20 7a 69 70 66 | 69 6c 65 5c 6e 25 73 22 | of zipf|ile\n%s"|
|00001630| 3b 0a 58 0a 58 23 69 66 | 64 65 66 20 56 4d 53 0a |;.X.X#if|def VMS.|
|00001640| 58 63 68 61 72 20 2a 52 | 65 70 6f 72 74 4d 73 67 |Xchar *R|eportMsg|
|00001650| 20 3d 20 22 5c 0a 58 20 | 20 28 70 6c 65 61 73 65 | = "\.X | (please|
|00001660| 20 63 68 65 63 6b 20 74 | 68 61 74 20 79 6f 75 20 | check t|hat you |
|00001670| 68 61 76 65 20 74 72 61 | 6e 73 66 65 72 72 65 64 |have tra|nsferred|
|00001680| 20 6f 72 20 63 72 65 61 | 74 65 64 20 74 68 65 20 | or crea|ted the |
|00001690| 7a 69 70 66 69 6c 65 20 | 69 6e 20 74 68 65 5c 6e |zipfile |in the\n|
|000016a0| 5c 0a 58 20 20 61 70 70 | 72 6f 70 72 69 61 74 65 |\.X app|ropriate|
|000016b0| 20 42 49 4e 41 52 59 20 | 6d 6f 64 65 2d 2d 74 68 | BINARY |mode--th|
|000016c0| 69 73 20 69 6e 63 6c 75 | 64 65 73 20 66 74 70 2c |is inclu|des ftp,|
|000016d0| 20 4b 65 72 6d 69 74 2c | 20 41 4e 44 20 75 6e 7a | Kermit,| AND unz|
|000016e0| 69 70 27 64 20 7a 69 70 | 66 69 6c 65 73 29 5c 6e |ip'd zip|files)\n|
|000016f0| 22 3b 0a 58 23 65 6c 73 | 65 20 2f 2a 20 21 56 4d |";.X#els|e /* !VM|
|00001700| 53 20 2a 2f 0a 58 63 68 | 61 72 20 2a 52 65 70 6f |S */.Xch|ar *Repo|
|00001710| 72 74 4d 73 67 20 3d 20 | 22 5c 0a 58 20 20 28 70 |rtMsg = |"\.X (p|
|00001720| 6c 65 61 73 65 20 63 68 | 65 63 6b 20 74 68 61 74 |lease ch|eck that|
|00001730| 20 79 6f 75 20 68 61 76 | 65 20 74 72 61 6e 73 66 | you hav|e transf|
|00001740| 65 72 72 65 64 20 6f 72 | 20 63 72 65 61 74 65 64 |erred or| created|
|00001750| 20 74 68 65 20 7a 69 70 | 66 69 6c 65 20 69 6e 20 | the zip|file in |
|00001760| 74 68 65 5c 6e 5c 0a 58 | 20 20 61 70 70 72 6f 70 |the\n\.X| approp|
|00001770| 72 69 61 74 65 20 42 49 | 4e 41 52 59 20 6d 6f 64 |riate BI|NARY mod|
|00001780| 65 20 61 6e 64 20 74 68 | 61 74 20 79 6f 75 20 68 |e and th|at you h|
|00001790| 61 76 65 20 63 6f 6d 70 | 69 6c 65 64 20 75 6e 7a |ave comp|iled unz|
|000017a0| 69 70 20 70 72 6f 70 65 | 72 6c 79 29 5c 6e 22 3b |ip prope|rly)\n";|
|000017b0| 0a 58 23 65 6e 64 69 66 | 20 2f 2a 20 3f 56 4d 53 |.X#endif| /* ?VMS|
|000017c0| 20 2a 2f 0a 58 0a 58 0a | 58 0a 58 0a 58 0a 58 0a | */.X.X.|X.X.X.X.|
|000017d0| 58 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X/******|********|
|000017e0| 2a 2a 2a 2a 2f 0a 58 2f | 2a 20 20 4d 61 69 6e 20 |****/.X/|* Main |
|000017f0| 70 72 6f 67 72 61 6d 20 | 20 2a 2f 0a 58 2f 2a 2a |program | */.X/**|
|00001800| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001810| 2f 0a 58 0a 58 6d 61 69 | 6e 28 61 72 67 63 2c 20 |/.X.Xmai|n(argc, |
|00001820| 61 72 67 76 29 0a 58 20 | 20 20 20 69 6e 74 20 20 |argv).X | int |
|00001830| 20 20 61 72 67 63 3b 0a | 58 20 20 20 20 63 68 61 | argc;.|X cha|
|00001840| 72 20 20 20 2a 61 72 67 | 76 5b 5d 3b 0a 58 7b 0a |r *arg|v[];.X{.|
|00001850| 58 20 20 20 20 63 68 61 | 72 20 20 20 2a 73 3b 0a |X cha|r *s;.|
|00001860| 58 20 20 20 20 69 6e 74 | 20 20 20 20 63 2c 20 65 |X int| c, e|
|00001870| 72 72 6f 72 3d 46 41 4c | 53 45 3b 0a 58 0a 58 0a |rror=FAL|SE;.X.X.|
|00001880| 58 0a 58 2f 2a 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |X.X/*---|--------|
|00001890| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018d0| 0a 58 20 20 20 20 45 76 | 65 72 79 62 6f 64 79 20 |.X Ev|erybody |
|000018e0| 69 73 20 6e 6f 77 20 22 | 4e 4f 54 49 4e 54 31 36 |is now "|NOTINT16|
|000018f0| 2c 22 20 62 75 74 20 74 | 68 69 73 20 69 73 20 61 |," but t|his is a|
|00001900| 20 6e 69 63 65 20 6c 69 | 74 74 6c 65 20 70 69 65 | nice li|ttle pie|
|00001910| 63 65 20 6f 66 20 63 6f | 64 65 2c 20 73 6f 0a 58 |ce of co|de, so.X|
|00001920| 20 20 20 20 6a 75 73 74 | 20 63 6f 6d 6d 65 6e 74 | just| comment|
|00001930| 20 69 74 20 6f 75 74 20 | 66 6f 72 20 66 75 74 75 | it out |for futu|
|00001940| 72 65 20 72 65 66 65 72 | 65 6e 63 65 2e 20 3a 2d |re refer|ence. :-|
|00001950| 29 0a 58 20 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |).X ---|--------|
|00001960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000019a0| 2a 2f 0a 58 0a 58 23 69 | 66 20 30 0a 58 23 20 69 |*/.X.X#i|f 0.X# i|
|000019b0| 66 6e 64 65 66 20 4b 4e | 4f 57 5f 49 54 5f 57 4f |fndef KN|OW_IT_WO|
|000019c0| 52 4b 53 20 20 2f 2a 20 | 64 65 66 69 6e 65 20 74 |RKS /* |define t|
|000019d0| 68 69 73 20 74 6f 20 73 | 61 76 65 20 73 70 61 63 |his to s|ave spac|
|000019e0| 65 2c 20 69 66 20 74 68 | 69 6e 67 73 20 61 6c 72 |e, if th|ings alr|
|000019f0| 65 61 64 79 20 77 6f 72 | 6b 20 2a 2f 0a 58 23 20 |eady wor|k */.X# |
|00001a00| 69 66 6e 64 65 66 20 44 | 4f 53 5f 4f 53 32 20 20 |ifndef D|OS_OS2 |
|00001a10| 20 20 20 20 20 20 2f 2a | 20 61 6c 72 65 61 64 79 | /*| already|
|00001a20| 20 77 6f 72 6b 73 20 28 | 6e 6f 20 52 49 53 43 79 | works (|no RISCy|
|00001a30| 20 4f 53 2f 32 27 73 20 | 79 65 74 2e 2e 2e 29 20 | OS/2's |yet...) |
|00001a40| 2a 2f 0a 58 23 20 69 66 | 6e 64 65 66 20 4e 4f 54 |*/.X# if|ndef NOT|
|00001a50| 49 4e 54 31 36 20 20 20 | 20 20 20 20 2f 2a 20 77 |INT16 | /* w|
|00001a60| 68 6f 6c 65 20 70 6f 69 | 6e 74 20 69 73 20 74 6f |hole poi|nt is to|
|00001a70| 20 73 65 65 20 69 66 20 | 74 68 69 73 20 4e 45 45 | see if |this NEE|
|00001a80| 44 53 20 64 65 66 69 6e | 69 6e 67 20 2a 2f 0a 58 |DS defin|ing */.X|
|00001a90| 20 20 20 20 7b 0a 58 20 | 20 20 20 20 20 20 20 69 | {.X | i|
|00001aa0| 6e 74 20 65 72 72 6f 72 | 3d 30 3b 0a 58 20 20 20 |nt error|=0;.X |
|00001ab0| 20 20 20 20 20 6c 6f 6e | 67 20 74 65 73 74 73 69 | lon|g testsi|
|00001ac0| 67 3b 0a 58 20 20 20 20 | 20 20 20 20 73 74 61 74 |g;.X | stat|
|00001ad0| 69 63 20 63 68 61 72 20 | 2a 6d 61 63 68 5f 74 79 |ic char |*mach_ty|
|00001ae0| 70 65 5b 33 5d 20 3d 20 | 7b 22 62 69 67 2d 65 6e |pe[3] = |{"big-en|
|00001af0| 64 69 61 6e 22 2c 20 22 | 73 74 72 75 63 74 75 72 |dian", "|structur|
|00001b00| 65 2d 70 61 64 64 69 6e | 67 22 2c 0a 58 20 20 20 |e-paddin|g",.X |
|00001b10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001b20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001b30| 20 20 22 62 69 67 2d 65 | 6e 64 69 61 6e 20 61 6e | "big-e|ndian an|
|00001b40| 64 20 73 74 72 75 63 74 | 75 72 65 2d 70 61 64 64 |d struct|ure-padd|
|00001b50| 69 6e 67 22 7d 3b 0a 58 | 0a 58 20 20 20 20 20 20 |ing"};.X|.X |
|00001b60| 20 20 73 74 72 63 70 79 | 28 28 63 68 61 72 20 2a | strcpy|((char *|
|00001b70| 29 26 74 65 73 74 73 69 | 67 2c 22 30 31 32 22 29 |)&testsi|g,"012")|
|00001b80| 3b 0a 58 20 20 20 20 20 | 20 20 20 69 66 20 28 74 |;.X | if (t|
|00001b90| 65 73 74 73 69 67 20 21 | 3d 20 30 78 30 30 33 32 |estsig !|= 0x0032|
|00001ba0| 33 31 33 30 29 0a 58 20 | 20 20 20 20 20 20 20 20 |3130).X | |
|00001bb0| 20 20 20 65 72 72 6f 72 | 20 3d 20 31 3b 0a 58 20 | error| = 1;.X |
|00001bc0| 20 20 20 20 20 20 20 69 | 66 20 28 73 69 7a 65 6f | i|f (sizeo|
|00001bd0| 66 28 63 64 69 72 5f 66 | 69 6c 65 5f 68 64 72 29 |f(cdir_f|ile_hdr)|
|00001be0| 20 21 3d 20 43 52 45 43 | 5f 53 49 5a 45 29 0a 58 | != CREC|_SIZE).X|
|00001bf0| 20 20 20 20 20 20 20 20 | 20 20 20 20 65 72 72 6f | | erro|
|00001c00| 72 20 2b 3d 20 32 3b 0a | 58 20 20 20 20 20 20 20 |r += 2;.|X |
|00001c10| 20 69 66 20 28 65 72 72 | 6f 72 2d 2d 29 0a 58 20 | if (err|or--).X |
|00001c20| 20 20 20 20 20 20 20 20 | 20 20 20 66 70 72 69 6e | | fprin|
|00001c30| 74 66 28 73 74 64 65 72 | 72 2c 20 22 49 74 20 61 |tf(stder|r, "It a|
|00001c40| 70 70 65 61 72 73 20 74 | 68 61 74 20 79 6f 75 72 |ppears t|hat your|
|00001c50| 20 6d 61 63 68 69 6e 65 | 20 69 73 20 25 73 2e 20 | machine| is %s. |
|00001c60| 20 49 66 20 65 72 72 6f | 72 73 5c 6e 5c 0a 58 6f | If erro|rs\n\.Xo|
|00001c70| 63 63 75 72 2c 20 70 6c | 65 61 73 65 20 74 72 79 |ccur, pl|ease try|
|00001c80| 20 72 65 63 6f 6d 70 69 | 6c 69 6e 67 20 77 69 74 | recompi|ling wit|
|00001c90| 68 20 5c 22 4e 4f 54 49 | 4e 54 31 36 5c 22 20 64 |h \"NOTI|NT16\" d|
|00001ca0| 65 66 69 6e 65 64 20 28 | 72 65 61 64 20 74 68 65 |efined (|read the|
|00001cb0| 5c 6e 5c 0a 58 4d 61 6b | 65 66 69 6c 65 2c 20 6f |\n\.XMak|efile, o|
|00001cc0| 72 20 74 72 79 20 5c 22 | 6d 61 6b 65 20 7a 69 70 |r try \"|make zip|
|00001cd0| 69 6e 66 6f 5c 22 29 2e | 5c 6e 5c 6e 22 2c 20 6d |info\").|\n\n", m|
|00001ce0| 61 63 68 5f 74 79 70 65 | 5b 65 72 72 6f 72 5d 29 |ach_type|[error])|
|00001cf0| 3b 0a 58 20 20 20 20 7d | 0a 58 23 20 65 6e 64 69 |;.X }|.X# endi|
|00001d00| 66 20 2f 2a 20 21 4e 4f | 54 49 4e 54 31 36 20 2a |f /* !NO|TINT16 *|
|00001d10| 2f 0a 58 23 20 65 6e 64 | 69 66 20 2f 2a 20 21 44 |/.X# end|if /* !D|
|00001d20| 4f 53 5f 4f 53 32 20 2a | 2f 0a 58 23 20 65 6e 64 |OS_OS2 *|/.X# end|
|00001d30| 69 66 20 2f 2a 20 21 4b | 4e 4f 57 5f 49 54 5f 57 |if /* !K|NOW_IT_W|
|00001d40| 4f 52 4b 53 20 2a 2f 0a | 58 23 65 6e 64 69 66 20 |ORKS */.|X#endif |
|00001d50| 2f 2a 20 30 20 2a 2f 0a | 58 0a 58 2f 2a 2d 2d 2d |/* 0 */.|X.X/*---|
|00001d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001d80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001d90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001da0| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 58 20 20 20 20 52 69 |--------|.X Ri|
|00001db0| 70 20 74 68 72 6f 75 67 | 68 20 61 6e 79 20 63 6f |p throug|h any co|
|00001dc0| 6d 6d 61 6e 64 2d 6c 69 | 6e 65 20 6f 70 74 69 6f |mmand-li|ne optio|
|00001dd0| 6e 73 20 6c 75 72 6b 69 | 6e 67 20 61 62 6f 75 74 |ns lurki|ng about|
|00001de0| 2e 2e 2e 0a 58 20 20 2d | 2d 2d 2d 2d 2d 2d 2d 2d |....X -|--------|
|00001df0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e30| 2d 2d 2a 2f 0a 58 0a 58 | 20 20 20 20 77 68 69 6c |--*/.X.X| whil|
|00001e40| 65 20 28 2d 2d 61 72 67 | 63 20 3e 20 30 20 26 26 |e (--arg|c > 0 &&|
|00001e50| 20 28 2a 2b 2b 61 72 67 | 76 29 5b 30 5d 20 3d 3d | (*++arg|v)[0] ==|
|00001e60| 20 27 2d 27 29 20 7b 0a | 58 20 20 20 20 20 20 20 | '-') {.|X |
|00001e70| 20 73 20 3d 20 61 72 67 | 76 5b 30 5d 20 2b 20 31 | s = arg|v[0] + 1|
|00001e80| 3b 0a 58 20 20 20 20 20 | 20 20 20 77 68 69 6c 65 |;.X | while|
|00001e90| 20 28 28 63 20 3d 20 2a | 73 2b 2b 29 20 21 3d 20 | ((c = *|s++) != |
|00001ea0| 30 29 20 7b 20 20 20 20 | 2f 2a 20 22 21 3d 20 30 |0) { |/* "!= 0|
|00001eb0| 22 3a 20 20 70 72 65 76 | 65 6e 74 20 54 75 72 62 |": prev|ent Turb|
|00001ec0| 6f 20 43 20 77 61 72 6e | 69 6e 67 20 2a 2f 0a 58 |o C warn|ing */.X|
|00001ed0| 20 20 20 20 20 20 20 20 | 20 20 20 20 73 77 69 74 | | swit|
|00001ee0| 63 68 20 28 63 29 20 7b | 0a 58 20 20 20 20 20 20 |ch (c) {|.X |
|00001ef0| 20 20 20 20 20 20 20 20 | 20 20 63 61 73 65 20 28 | | case (|
|00001f00| 27 31 27 29 3a 20 20 20 | 20 2f 2a 20 6d 69 6e 69 |'1'): | /* mini|
|00001f10| 6d 75 6d 20 6c 69 73 74 | 69 6e 67 3a 20 20 6a 75 |mum list|ing: ju|
|00001f20| 73 74 20 6e 61 6d 65 73 | 20 2a 2f 0a 58 20 20 20 |st names| */.X |
|00001f30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001f40| 20 6c 66 6c 61 67 20 3d | 20 30 3b 0a 58 20 20 20 | lflag =| 0;.X |
|00001f50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001f60| 20 62 72 65 61 6b 3b 0a | 58 20 20 20 20 20 20 20 | break;.|X |
|00001f70| 20 20 20 20 20 20 20 20 | 20 63 61 73 65 20 28 27 | | case ('|
|00001f80| 6c 27 29 3a 20 20 20 20 | 2f 2a 20 64 65 66 61 75 |l'): |/* defau|
|00001f90| 6c 74 3a 20 20 22 6c 73 | 20 2d 6c 22 20 74 79 70 |lt: "ls| -l" typ|
|00001fa0| 65 20 6c 69 73 74 69 6e | 67 20 2a 2f 0a 58 20 20 |e listin|g */.X |
|00001fb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001fc0| 20 20 6c 66 6c 61 67 20 | 3d 20 32 3b 0a 58 20 20 | lflag |= 2;.X |
|00001fd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001fe0| 20 20 62 72 65 61 6b 3b | 0a 58 20 20 20 20 20 20 | break;|.X |
|00001ff0| 20 20 20 20 20 20 20 20 | 20 20 63 61 73 65 20 28 | | case (|
|00002000| 27 76 27 29 3a 20 20 20 | 20 2f 2a 20 74 75 72 62 |'v'): | /* turb|
|00002010| 6f 2d 76 65 72 62 6f 73 | 65 20 6c 69 73 74 69 6e |o-verbos|e listin|
|00002020| 67 20 2a 2f 0a 58 20 20 | 20 20 20 20 20 20 20 20 |g */.X | |
|00002030| 20 20 20 20 20 20 20 20 | 20 20 6c 66 6c 61 67 20 | | lflag |
|00002040| 3d 20 31 30 3b 0a 58 20 | 20 20 20 20 20 20 20 20 |= 10;.X | |
|00002050| 20 20 20 20 20 20 20 20 | 20 20 20 62 72 65 61 6b | | break|
|00002060| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00002070| 20 20 20 64 65 66 61 75 | 6c 74 3a 0a 58 20 20 20 | defau|lt:.X |
|00002080| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002090| 20 65 72 72 6f 72 20 3d | 20 54 52 55 45 3b 0a 58 | error =| TRUE;.X|
|000020a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000020b0| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 20 20 20 20 | brea|k;.X |
|000020c0| 20 20 20 20 20 20 20 20 | 7d 0a 58 20 20 20 20 20 | |}.X |
|000020d0| 20 20 20 7d 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 | }.X | }.X |
|000020e0| 20 69 66 20 28 28 61 72 | 67 63 2d 2d 20 3d 3d 20 | if ((ar|gc-- == |
|000020f0| 30 29 20 7c 7c 20 65 72 | 72 6f 72 29 0a 58 20 20 |0) || er|ror).X |
|00002100| 20 20 20 20 20 20 52 45 | 54 55 52 4e 28 75 73 61 | RE|TURN(usa|
|00002110| 67 65 28 65 72 72 6f 72 | 29 29 3b 0a 58 0a 58 2f |ge(error|));.X.X/|
|00002120| 2a 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |*-------|--------|
|00002130| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002140| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 58 20 20 |--------|----.X |
|00002170| 20 20 4e 6f 77 20 67 65 | 74 20 74 68 65 20 7a 69 | Now ge|t the zi|
|00002180| 70 66 69 6c 65 20 6e 61 | 6d 65 20 66 72 6f 6d 20 |pfile na|me from |
|00002190| 74 68 65 20 63 6f 6d 6d | 61 6e 64 20 6c 69 6e 65 |the comm|and line|
|000021a0| 20 61 6e 64 20 73 65 65 | 20 69 66 20 69 74 20 65 | and see| if it e|
|000021b0| 78 69 73 74 73 20 61 73 | 20 61 0a 58 20 20 20 20 |xists as| a.X |
|000021c0| 72 65 67 75 6c 61 72 20 | 28 6e 6f 6e 2d 64 69 72 |regular |(non-dir|
|000021d0| 65 63 74 6f 72 79 29 20 | 66 69 6c 65 2e 20 20 49 |ectory) |file. I|
|000021e0| 66 20 6e 6f 74 2c 20 61 | 70 70 65 6e 64 20 74 68 |f not, a|ppend th|
|000021f0| 65 20 22 2e 7a 69 70 22 | 20 73 75 66 66 69 78 2e |e ".zip"| suffix.|
|00002200| 20 20 57 65 20 64 6f 6e | 27 74 0a 58 20 20 20 20 | We don|'t.X |
|00002210| 69 6d 6d 65 64 69 61 74 | 65 6c 79 20 63 68 65 63 |immediat|ely chec|
|00002220| 6b 20 74 6f 20 73 65 65 | 20 69 66 20 74 68 69 73 |k to see| if this|
|00002230| 20 72 65 73 75 6c 74 73 | 20 69 6e 20 61 20 67 6f | results| in a go|
|00002240| 6f 64 20 6e 61 6d 65 2c | 20 62 75 74 20 77 65 20 |od name,| but we |
|00002250| 77 69 6c 6c 20 64 6f 20 | 73 6f 0a 58 20 20 20 20 |will do |so.X |
|00002260| 6c 61 74 65 72 2e 20 20 | 49 6e 20 74 68 65 20 6d |later. |In the m|
|00002270| 65 61 6e 74 69 6d 65 2c | 20 73 65 65 20 69 66 20 |eantime,| see if |
|00002280| 74 68 65 72 65 20 61 72 | 65 20 61 6e 79 20 6d 65 |there ar|e any me|
|00002290| 6d 62 65 72 20 66 69 6c | 65 73 70 65 63 73 20 6f |mber fil|especs o|
|000022a0| 6e 20 74 68 65 20 63 6f | 6d 2d 0a 58 20 20 20 20 |n the co|m-.X |
|000022b0| 6d 61 6e 64 20 6c 69 6e | 65 2c 20 61 6e 64 20 69 |mand lin|e, and i|
|000022c0| 66 20 73 6f 2c 20 73 65 | 74 20 74 68 65 20 66 69 |f so, se|t the fi|
|000022d0| 6c 65 6e 61 6d 65 20 70 | 6f 69 6e 74 65 72 20 74 |lename p|ointer t|
|000022e0| 6f 20 70 6f 69 6e 74 20 | 61 74 20 74 68 65 6d 2e |o point |at them.|
|000022f0| 0a 58 20 20 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X ----|--------|
|00002300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002310| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002320| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002330| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2a |--------|-------*|
|00002340| 2f 0a 58 0a 58 20 20 20 | 20 73 74 72 63 70 79 28 |/.X.X | strcpy(|
|00002350| 7a 69 70 66 6e 2c 20 2a | 61 72 67 76 2b 2b 29 3b |zipfn, *|argv++);|
|00002360| 0a 58 20 20 20 20 69 66 | 20 28 73 74 61 74 28 7a |.X if| (stat(z|
|00002370| 69 70 66 6e 2c 20 26 73 | 74 61 74 62 75 66 29 20 |ipfn, &s|tatbuf) |
|00002380| 7c 7c 20 28 73 74 61 74 | 62 75 66 2e 73 74 5f 6d ||| (stat|buf.st_m|
|00002390| 6f 64 65 20 26 20 53 5f | 49 46 4d 54 29 20 3d 3d |ode & S_|IFMT) ==|
|000023a0| 20 53 5f 49 46 44 49 52 | 29 0a 58 20 20 20 20 20 | S_IFDIR|).X |
|000023b0| 20 20 20 73 74 72 63 61 | 74 28 7a 69 70 66 6e 2c | strca|t(zipfn,|
|000023c0| 20 5a 53 55 46 58 29 3b | 0a 58 23 69 66 20 64 65 | ZSUFX);|.X#if de|
|000023d0| 66 69 6e 65 64 28 55 4e | 49 58 29 20 26 26 20 21 |fined(UN|IX) && !|
|000023e0| 64 65 66 69 6e 65 64 28 | 56 4d 53 29 20 20 20 2f |defined(|VMS) /|
|000023f0| 2a 20 55 6e 69 78 20 65 | 78 65 63 75 74 61 62 6c |* Unix e|xecutabl|
|00002400| 65 73 20 68 61 76 65 20 | 6e 6f 20 65 78 74 65 6e |es have |no exten|
|00002410| 73 69 6f 6e 2d 2d 20 2a | 2f 0a 58 20 20 20 20 65 |sion-- *|/.X e|
|00002420| 6c 73 65 20 69 66 20 28 | 73 74 61 74 62 75 66 2e |lse if (|statbuf.|
|00002430| 73 74 5f 6d 6f 64 65 20 | 26 20 53 5f 49 45 58 45 |st_mode |& S_IEXE|
|00002440| 43 29 20 20 2f 2a 20 6d | 69 67 68 74 20 66 69 6e |C) /* m|ight fin|
|00002450| 64 20 7a 69 70 2c 20 6e | 6f 74 20 7a 69 70 2e 7a |d zip, n|ot zip.z|
|00002460| 69 70 3b 20 65 74 63 20 | 2a 2f 0a 58 20 20 20 20 |ip; etc |*/.X |
|00002470| 20 20 20 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 | fpri|ntf(stde|
|00002480| 72 72 2c 20 22 5c 6e 6e | 6f 74 65 3a 20 20 66 69 |rr, "\nn|ote: fi|
|00002490| 6c 65 20 5b 20 25 73 20 | 5d 20 6d 61 79 20 62 65 |le [ %s |] may be|
|000024a0| 20 61 6e 20 65 78 65 63 | 75 74 61 62 6c 65 5c 6e | an exec|utable\n|
|000024b0| 5c 6e 22 2c 20 7a 69 70 | 66 6e 29 3b 0a 58 23 65 |\n", zip|fn);.X#e|
|000024c0| 6e 64 69 66 20 2f 2a 20 | 55 4e 49 58 20 26 26 20 |ndif /* |UNIX && |
|000024d0| 21 56 4d 53 20 2a 2f 0a | 58 0a 58 20 20 20 20 69 |!VMS */.|X.X i|
|000024e0| 66 20 28 73 74 61 74 28 | 7a 69 70 66 6e 2c 20 26 |f (stat(|zipfn, &|
|000024f0| 73 74 61 74 62 75 66 29 | 29 20 7b 20 20 20 20 20 |statbuf)|) { |
|00002500| 20 20 2f 2a 20 74 72 79 | 20 61 67 61 69 6e 20 2a | /* try| again *|
|00002510| 2f 0a 58 20 20 20 20 20 | 20 20 20 66 70 72 69 6e |/.X | fprin|
|00002520| 74 66 28 73 74 64 65 72 | 72 2c 20 22 65 72 72 6f |tf(stder|r, "erro|
|00002530| 72 3a 20 20 63 61 6e 27 | 74 20 66 69 6e 64 20 7a |r: can'|t find z|
|00002540| 69 70 66 69 6c 65 20 5b | 20 25 73 20 5d 5c 6e 22 |ipfile [| %s ]\n"|
|00002550| 2c 20 7a 69 70 66 6e 29 | 3b 0a 58 20 20 20 20 20 |, zipfn)|;.X |
|00002560| 20 20 20 52 45 54 55 52 | 4e 28 39 29 3b 20 20 20 | RETUR|N(9); |
|00002570| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002580| 20 20 2f 2a 20 39 3a 20 | 20 66 69 6c 65 20 6e 6f | /* 9: | file no|
|00002590| 74 20 66 6f 75 6e 64 20 | 2a 2f 0a 58 20 20 20 20 |t found |*/.X |
|000025a0| 7d 20 65 6c 73 65 0a 58 | 20 20 20 20 20 20 20 20 |} else.X| |
|000025b0| 7a 69 70 6c 65 6e 20 3d | 20 73 74 61 74 62 75 66 |ziplen =| statbuf|
|000025c0| 2e 73 74 5f 73 69 7a 65 | 3b 0a 58 0a 58 20 20 20 |.st_size|;.X.X |
|000025d0| 20 69 66 20 28 61 72 67 | 63 20 21 3d 20 30 29 20 | if (arg|c != 0) |
|000025e0| 7b 0a 58 20 20 20 20 20 | 20 20 20 66 6e 76 20 3d |{.X | fnv =|
|000025f0| 20 61 72 67 76 3b 0a 58 | 20 20 20 20 20 20 20 20 | argv;.X| |
|00002600| 70 72 6f 63 65 73 73 5f | 61 6c 6c 5f 66 69 6c 65 |process_|all_file|
|00002610| 73 20 3d 20 46 41 4c 53 | 45 3b 0a 58 20 20 20 20 |s = FALS|E;.X |
|00002620| 7d 20 65 6c 73 65 0a 58 | 20 20 20 20 20 20 20 20 |} else.X| |
|00002630| 70 72 6f 63 65 73 73 5f | 61 6c 6c 5f 66 69 6c 65 |process_|all_file|
|00002640| 73 20 3d 20 54 52 55 45 | 3b 20 20 20 20 20 20 2f |s = TRUE|; /|
|00002650| 2a 20 66 6f 72 20 73 70 | 65 65 64 20 2a 2f 0a 58 |* for sp|eed */.X|
|00002660| 0a 58 2f 2a 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X/*----|--------|
|00002670| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002680| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002690| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000026a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0a |--------|-------.|
|000026b0| 58 20 20 20 20 4f 6b 65 | 79 20 64 6f 6b 65 79 2c |X Oke|y dokey,|
|000026c0| 20 77 65 20 68 61 76 65 | 20 65 76 65 72 79 74 68 | we have| everyth|
|000026d0| 69 6e 67 20 77 65 20 6e | 65 65 64 20 74 6f 20 67 |ing we n|eed to g|
|000026e0| 65 74 20 73 74 61 72 74 | 65 64 2e 20 20 4c 65 74 |et start|ed. Let|
|000026f0| 27 73 20 72 6f 6c 6c 2e | 0a 58 20 20 2d 2d 2d 2d |'s roll.|.X ----|
|00002700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002740| 2d 2d 2d 2d 2d 2d 2d 2a | 2f 0a 58 0a 58 20 20 20 |-------*|/.X.X |
|00002750| 20 69 6e 62 75 66 20 3d | 20 28 62 79 74 65 20 2a | inbuf =| (byte *|
|00002760| 29 20 28 6d 61 6c 6c 6f | 63 28 49 4e 42 55 46 53 |) (mallo|c(INBUFS|
|00002770| 49 5a 20 2b 20 34 29 29 | 3b 20 20 20 20 2f 2a 20 |IZ + 4))|; /* |
|00002780| 34 20 65 78 74 72 61 20 | 66 6f 72 20 68 6f 6c 64 |4 extra |for hold|
|00002790| 5b 5d 20 28 62 65 6c 6f | 77 29 20 2a 2f 0a 58 20 |[] (belo|w) */.X |
|000027a0| 20 20 20 6f 75 74 62 75 | 66 20 3d 20 28 62 79 74 | outbu|f = (byt|
|000027b0| 65 20 2a 29 20 28 6d 61 | 6c 6c 6f 63 28 4f 55 54 |e *) (ma|lloc(OUT|
|000027c0| 42 55 46 53 49 5a 20 2b | 20 31 29 29 3b 20 20 2f |BUFSIZ +| 1)); /|
|000027d0| 2a 20 31 20 65 78 74 72 | 61 20 66 6f 72 20 73 74 |* 1 extr|a for st|
|000027e0| 72 69 6e 67 20 74 65 72 | 6d 69 6e 2e 20 2a 2f 0a |ring ter|min. */.|
|000027f0| 58 20 20 20 20 69 66 20 | 28 61 66 6c 61 67 29 20 |X if |(aflag) |
|00002800| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002810| 20 2f 2a 20 69 66 20 6e | 65 65 64 20 61 6e 20 61 | /* if n|eed an a|
|00002820| 73 63 65 62 63 20 73 63 | 72 61 74 63 68 2c 20 2a |scebc sc|ratch, *|
|00002830| 2f 0a 58 20 20 20 20 20 | 20 20 20 6f 75 74 6f 75 |/.X | outou|
|00002840| 74 20 3d 20 28 62 79 74 | 65 20 2a 29 20 28 6d 61 |t = (byt|e *) (ma|
|00002850| 6c 6c 6f 63 28 4f 55 54 | 42 55 46 53 49 5a 29 29 |lloc(OUT|BUFSIZ))|
|00002860| 3b 0a 58 20 20 20 20 65 | 6c 73 65 20 20 20 20 20 |;.X e|lse |
|00002870| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002880| 20 20 20 2f 2a 20 20 61 | 6c 6c 6f 63 61 74 65 20 | /* a|llocate |
|00002890| 69 74 2e 2e 2e 20 2a 2f | 0a 58 20 20 20 20 20 20 |it... */|.X |
|000028a0| 20 20 6f 75 74 6f 75 74 | 20 3d 20 6f 75 74 62 75 | outout| = outbu|
|000028b0| 66 3b 20 20 20 20 20 20 | 20 20 2f 2a 20 20 65 6c |f; | /* el|
|000028c0| 73 65 20 6a 75 73 74 20 | 70 6f 69 6e 74 20 74 6f |se just |point to|
|000028d0| 20 6f 75 74 62 75 66 20 | 2a 2f 0a 58 0a 58 20 20 | outbuf |*/.X.X |
|000028e0| 20 20 69 66 20 28 28 69 | 6e 62 75 66 20 3d 3d 20 | if ((i|nbuf == |
|000028f0| 4e 55 4c 4c 29 20 7c 7c | 20 28 6f 75 74 62 75 66 |NULL) ||| (outbuf|
|00002900| 20 3d 3d 20 4e 55 4c 4c | 29 20 7c 7c 20 28 6f 75 | == NULL|) || (ou|
|00002910| 74 6f 75 74 20 3d 3d 20 | 4e 55 4c 4c 29 29 20 7b |tout == |NULL)) {|
|00002920| 0a 58 20 20 20 20 20 20 | 20 20 66 70 72 69 6e 74 |.X | fprint|
|00002930| 66 28 73 74 64 65 72 72 | 2c 20 22 65 72 72 6f 72 |f(stderr|, "error|
|00002940| 3a 20 20 63 61 6e 27 74 | 20 61 6c 6c 6f 63 61 74 |: can't| allocat|
|00002950| 65 20 7a 69 70 69 6e 66 | 6f 20 62 75 66 66 65 72 |e zipinf|o buffer|
|00002960| 73 5c 6e 22 29 3b 0a 58 | 20 20 20 20 20 20 20 20 |s\n");.X| |
|00002970| 52 45 54 55 52 4e 28 34 | 29 3b 20 20 20 20 20 20 |RETURN(4|); |
|00002980| 20 20 20 20 20 20 20 20 | 2f 2a 20 34 2d 38 3a 20 | |/* 4-8: |
|00002990| 20 69 6e 73 75 66 66 69 | 63 69 65 6e 74 20 6d 65 | insuffi|cient me|
|000029a0| 6d 6f 72 79 20 2a 2f 0a | 58 20 20 20 20 7d 0a 58 |mory */.|X }.X|
|000029b0| 20 20 20 20 68 6f 6c 64 | 20 3d 20 26 69 6e 62 75 | hold| = &inbu|
|000029c0| 66 5b 49 4e 42 55 46 53 | 49 5a 5d 3b 20 20 20 20 |f[INBUFS|IZ]; |
|000029d0| 2f 2a 20 74 6f 20 63 68 | 65 63 6b 20 66 6f 72 20 |/* to ch|eck for |
|000029e0| 62 6f 75 6e 64 61 72 79 | 2d 73 70 61 6e 6e 69 6e |boundary|-spannin|
|000029f0| 67 20 73 69 67 6e 61 74 | 75 72 65 73 20 2a 2f 0a |g signat|ures */.|
|00002a00| 58 0a 58 20 20 20 20 52 | 45 54 55 52 4e 28 70 72 |X.X R|ETURN(pr|
|00002a10| 6f 63 65 73 73 5f 7a 69 | 70 66 69 6c 65 28 29 29 |ocess_zi|pfile())|
|00002a20| 3b 20 20 2f 2a 20 6b 65 | 65 70 20 70 61 73 73 69 |; /* ke|ep passi|
|00002a30| 6e 67 20 65 72 72 6f 72 | 73 20 62 61 63 6b 2e 2e |ng error|s back..|
|00002a40| 2e 20 2a 2f 0a 58 0a 58 | 7d 20 20 20 20 20 20 20 |. */.X.X|} |
|00002a50| 2f 2a 20 65 6e 64 20 6d | 61 69 6e 28 29 20 2a 2f |/* end m|ain() */|
|00002a60| 0a 58 0a 58 0a 58 0a 58 | 0a 58 0a 58 2f 2a 2a 2a |.X.X.X.X|.X.X/***|
|00002a70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002a80| 2a 2a 2a 2f 0a 58 2f 2a | 20 20 46 75 6e 63 74 69 |***/.X/*| Functi|
|00002a90| 6f 6e 20 75 73 61 67 65 | 28 29 20 20 2a 2f 0a 58 |on usage|() */.X|
|00002aa0| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00002ab0| 2a 2a 2a 2a 2a 2a 2a 2f | 0a 58 0a 58 69 6e 74 20 |*******/|.X.Xint |
|00002ac0| 75 73 61 67 65 28 65 72 | 72 6f 72 29 0a 58 20 20 |usage(er|ror).X |
|00002ad0| 20 20 69 6e 74 20 65 72 | 72 6f 72 3b 0a 58 7b 0a | int er|ror;.X{.|
|00002ae0| 58 20 20 20 20 46 49 4c | 45 20 2a 75 73 61 67 65 |X FIL|E *usage|
|00002af0| 66 70 3b 0a 58 0a 58 0a | 58 2f 2a 2d 2d 2d 2d 2d |fp;.X.X.|X/*-----|
|00002b00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b40| 2d 2d 2d 2d 2d 2d 0a 58 | 20 20 20 20 49 66 20 75 |------.X| If u|
|00002b50| 73 65 72 20 72 65 71 75 | 65 73 74 65 64 20 75 73 |ser requ|ested us|
|00002b60| 61 67 65 2c 20 73 65 6e | 64 20 69 74 20 74 6f 20 |age, sen|d it to |
|00002b70| 73 74 64 6f 75 74 3b 20 | 65 6c 73 65 20 73 65 6e |stdout; |else sen|
|00002b80| 64 20 74 6f 20 73 74 64 | 65 72 72 2e 0a 58 20 20 |d to std|err..X |
|00002b90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2a 2f 0a 58 0a |--------|---*/.X.|
|00002be0| 58 20 20 20 20 69 66 20 | 28 65 72 72 6f 72 29 0a |X if |(error).|
|00002bf0| 58 20 20 20 20 20 20 20 | 20 75 73 61 67 65 66 70 |X | usagefp|
|00002c00| 20 3d 20 28 46 49 4c 45 | 20 2a 29 20 73 74 64 65 | = (FILE| *) stde|
|00002c10| 72 72 3b 0a 58 20 20 20 | 20 65 6c 73 65 0a 58 20 |rr;.X | else.X |
|00002c20| 20 20 20 20 20 20 20 75 | 73 61 67 65 66 70 20 3d | u|sagefp =|
|00002c30| 20 28 46 49 4c 45 20 2a | 29 20 73 74 64 6f 75 74 | (FILE *|) stdout|
|00002c40| 3b 0a 58 0a 58 20 20 20 | 20 66 70 72 69 6e 74 66 |;.X.X | fprintf|
|00002c50| 28 75 73 61 67 65 66 70 | 2c 20 22 5c 0a 58 20 20 |(usagefp|, "\.X |
|00002c60| 20 5a 69 70 49 6e 66 6f | 3a 20 20 5a 69 70 66 69 | ZipInfo|: Zipfi|
|00002c70| 6c 65 20 49 6e 66 6f 72 | 6d 61 74 69 6f 6e 20 55 |le Infor|mation U|
|00002c80| 74 69 6c 69 74 79 20 25 | 73 5c 6e 5c 0a 58 20 20 |tility %|s\n\.X |
|00002c90| 20 28 62 72 6f 75 67 68 | 74 20 74 6f 20 79 6f 75 | (brough|t to you|
|00002ca0| 20 62 79 20 4e 65 77 74 | 77 61 72 65 2c 20 49 6e | by Newt|ware, In|
|00002cb0| 63 2e 2c 20 61 6e 64 20 | 74 68 65 20 66 69 6e 65 |c., and |the fine|
|00002cc0| 20 66 6f 6c 6b 73 20 61 | 74 20 49 6e 66 6f 2d 5a | folks a|t Info-Z|
|00002cd0| 49 50 29 5c 6e 5c 6e 5c | 0a 58 20 20 20 55 73 61 |IP)\n\n\|.X Usa|
|00002ce0| 67 65 3a 20 20 7a 69 70 | 69 6e 66 6f 20 5b 2d 31 |ge: zip|info [-1|
|00002cf0| 6c 76 5d 20 66 69 6c 65 | 5b 2e 7a 69 70 5d 20 5b |lv] file|[.zip] [|
|00002d00| 66 69 6c 65 73 70 65 63 | 2e 2e 2e 5d 5c 6e 22 2c |filespec|...]\n",|
|00002d10| 20 56 45 52 53 49 4f 4e | 29 3b 0a 58 20 20 20 20 | VERSION|);.X |
|00002d20| 66 70 72 69 6e 74 66 28 | 75 73 61 67 65 66 70 2c |fprintf(|usagefp,|
|00002d30| 20 22 5c 0a 58 20 20 20 | 20 20 2d 31 20 20 6c 69 | "\.X | -1 li|
|00002d40| 73 74 20 66 69 6c 65 6e | 61 6d 65 73 20 6f 6e 6c |st filen|ames onl|
|00002d50| 79 2c 20 6f 6e 65 20 70 | 65 72 20 6c 69 6e 65 20 |y, one p|er line |
|00002d60| 28 75 73 65 66 75 6c 20 | 66 6f 72 20 70 69 70 65 |(useful |for pipe|
|00002d70| 73 29 5c 6e 5c 0a 58 20 | 20 20 20 20 2d 6c 20 20 |s)\n\.X | -l |
|00002d80| 6c 69 73 74 20 66 69 6c | 65 73 20 69 6e 20 55 6e |list fil|es in Un|
|00002d90| 69 78 20 5c 22 6c 73 20 | 2d 6c 5c 22 20 66 6f 72 |ix \"ls |-l\" for|
|00002da0| 6d 61 74 3a 20 20 64 65 | 66 61 75 6c 74 5c 6e 5c |mat: de|fault\n\|
|00002db0| 0a 58 20 20 20 20 20 2d | 76 20 20 6c 69 73 74 20 |.X -|v list |
|00002dc0| 66 69 6c 65 73 20 69 6e | 20 76 65 72 62 6f 73 65 |files in| verbose|
|00002dd0| 2c 20 6d 75 6c 74 69 2d | 70 61 67 65 20 66 6f 72 |, multi-|page for|
|00002de0| 6d 61 74 5c 6e 22 29 3b | 0a 58 2f 2a 0a 58 20 20 |mat\n");|.X/*.X |
|00002df0| 20 20 20 2d 70 20 20 64 | 69 73 61 62 6c 65 20 61 | -p d|isable a|
|00002e00| 75 74 6f 6d 61 74 69 63 | 20 5c 22 6d 6f 72 65 5c |utomatic| \"more\|
|00002e10| 22 20 66 75 6e 63 74 69 | 6f 6e 20 28 66 6f 72 20 |" functi|on (for |
|00002e20| 70 69 70 65 73 29 20 5b | 6e 6f 74 20 69 6d 70 6c |pipes) [|not impl|
|00002e30| 65 6d 65 6e 74 65 64 5d | 5c 6e 22 29 3b 0a 58 20 |emented]|\n");.X |
|00002e40| 2a 2f 0a 58 0a 58 23 69 | 66 64 65 66 20 56 4d 53 |*/.X.X#i|fdef VMS|
|00002e50| 0a 58 20 20 20 20 66 70 | 72 69 6e 74 66 28 75 73 |.X fp|rintf(us|
|00002e60| 61 67 65 66 70 2c 20 22 | 5c 6e 52 65 6d 65 6d 62 |agefp, "|\nRememb|
|00002e70| 65 72 20 74 68 61 74 20 | 6e 6f 6e 2d 6c 6f 77 65 |er that |non-lowe|
|00002e80| 72 63 61 73 65 20 66 69 | 6c 65 73 70 65 63 73 20 |rcase fi|lespecs |
|00002e90| 6d 75 73 74 20 62 65 20 | 71 75 6f 74 65 64 5c 0a |must be |quoted\.|
|00002ea0| 58 20 69 6e 20 56 4d 53 | 20 28 65 2e 67 2e 2c 20 |X in VMS| (e.g., |
|00002eb0| 5c 22 4d 61 6b 65 66 69 | 6c 65 5c 22 29 2e 5c 6e |\"Makefi|le\").\n|
|00002ec0| 22 29 3b 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 20 |");.X#en|dif.X.X |
|00002ed0| 20 20 20 69 66 20 28 65 | 72 72 6f 72 29 0a 58 20 | if (e|rror).X |
|00002ee0| 20 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 31 30 | r|eturn 10|
|00002ef0| 3b 20 20 20 20 2f 2a 20 | 31 30 3a 20 20 62 61 64 |; /* |10: bad|
|00002f00| 20 6f 72 20 69 6c 6c 65 | 67 61 6c 20 70 61 72 61 | or ille|gal para|
|00002f10| 6d 65 74 65 72 73 20 73 | 70 65 63 69 66 69 65 64 |meters s|pecified|
|00002f20| 20 2a 2f 0a 58 20 20 20 | 20 65 6c 73 65 0a 58 20 | */.X | else.X |
|00002f30| 20 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 30 3b | r|eturn 0;|
|00002f40| 20 20 20 20 20 2f 2a 20 | 6a 75 73 74 20 77 61 6e | /* |just wan|
|00002f50| 74 65 64 20 75 73 61 67 | 65 20 73 63 72 65 65 6e |ted usag|e screen|
|00002f60| 3a 20 6e 6f 20 65 72 72 | 6f 72 20 2a 2f 0a 58 0a |: no err|or */.X.|
|00002f70| 58 7d 20 2f 2a 20 65 6e | 64 20 66 75 6e 63 74 69 |X} /* en|d functi|
|00002f80| 6f 6e 20 75 73 61 67 65 | 28 29 20 2a 2f 0a 58 0a |on usage|() */.X.|
|00002f90| 58 0a 58 0a 58 0a 58 0a | 58 2f 2a 2a 2a 2a 2a 2a |X.X.X.X.|X/******|
|00002fa0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002fb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 58 2f 2a 20 |********|**/.X/* |
|00002fc0| 20 46 75 6e 63 74 69 6f | 6e 20 70 72 6f 63 65 73 | Functio|n proces|
|00002fd0| 73 5f 7a 69 70 66 69 6c | 65 28 29 20 20 2a 2f 0a |s_zipfil|e() */.|
|00002fe0| 58 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X/******|********|
|00002ff0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003000| 2a 2a 2f 0a 58 0a 58 69 | 6e 74 20 70 72 6f 63 65 |**/.X.Xi|nt proce|
|00003010| 73 73 5f 7a 69 70 66 69 | 6c 65 28 29 20 20 20 2f |ss_zipfi|le() /|
|00003020| 2a 20 72 65 74 75 72 6e | 20 50 4b 2d 74 79 70 65 |* return| PK-type|
|00003030| 20 65 72 72 6f 72 20 63 | 6f 64 65 20 2a 2f 0a 58 | error c|ode */.X|
|00003040| 7b 0a 58 20 20 20 20 69 | 6e 74 20 65 72 72 6f 72 |{.X i|nt error|
|00003050| 3d 30 2c 20 65 72 72 6f | 72 5f 69 6e 5f 61 72 63 |=0, erro|r_in_arc|
|00003060| 68 69 76 65 3b 0a 58 20 | 20 20 20 6c 6f 6e 67 69 |hive;.X | longi|
|00003070| 6e 74 20 72 65 61 6c 5f | 65 63 72 65 63 5f 6f 66 |nt real_|ecrec_of|
|00003080| 66 73 65 74 2c 20 65 78 | 70 65 63 74 5f 65 63 72 |fset, ex|pect_ecr|
|00003090| 65 63 5f 6f 66 66 73 65 | 74 3b 0a 58 0a 58 0a 58 |ec_offse|t;.X.X.X|
|000030a0| 2f 2a 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/*------|--------|
|000030b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0a 58 20 |--------|-----.X |
|000030f0| 20 20 20 4f 70 65 6e 20 | 74 68 65 20 7a 69 70 66 | Open |the zipf|
|00003100| 69 6c 65 20 66 6f 72 20 | 72 65 61 64 69 6e 67 20 |ile for |reading |
|00003110| 61 6e 64 20 69 6e 20 42 | 49 4e 41 52 59 20 6d 6f |and in B|INARY mo|
|00003120| 64 65 20 74 6f 20 70 72 | 65 76 65 6e 74 20 43 52 |de to pr|event CR|
|00003130| 2f 4c 46 20 74 72 61 6e | 73 2d 0a 58 20 20 20 20 |/LF tran|s-.X |
|00003140| 6c 61 74 69 6f 6e 2c 20 | 77 68 69 63 68 20 77 6f |lation, |which wo|
|00003150| 75 6c 64 20 63 6f 72 72 | 75 70 74 20 74 68 65 20 |uld corr|upt the |
|00003160| 62 69 74 73 74 72 65 61 | 6d 73 2e 0a 58 20 20 2d |bitstrea|ms..X -|
|00003170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000031a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000031b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2a 2f 0a 58 0a 58 |--------|--*/.X.X|
|000031c0| 23 69 66 64 65 66 20 56 | 4d 53 0a 58 20 20 20 20 |#ifdef V|MS.X |
|000031d0| 7b 0a 58 20 20 20 20 20 | 20 20 20 69 6e 74 20 72 |{.X | int r|
|000031e0| 74 79 70 65 3b 0a 58 0a | 58 20 20 20 20 20 20 20 |type;.X.|X |
|000031f0| 20 56 4d 53 6d 75 6e 63 | 68 28 7a 69 70 66 6e 2c | VMSmunc|h(zipfn,|
|00003200| 20 47 45 54 5f 52 54 59 | 50 45 2c 20 28 63 68 61 | GET_RTY|PE, (cha|
|00003210| 72 20 2a 29 26 72 74 79 | 70 65 29 3b 0a 58 20 20 |r *)&rty|pe);.X |
|00003220| 20 20 20 20 20 20 69 66 | 20 28 72 74 79 70 65 20 | if| (rtype |
|00003230| 3d 3d 20 46 41 54 24 43 | 5f 56 41 52 49 41 42 4c |== FAT$C|_VARIABL|
|00003240| 45 29 20 7b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |E) {.X | |
|00003250| 20 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 | fprint|f(stderr|
|00003260| 2c 0a 58 20 20 20 20 20 | 22 5c 6e 20 20 20 20 20 |,.X |"\n |
|00003270| 45 72 72 6f 72 3a 20 20 | 7a 69 70 66 69 6c 65 20 |Error: |zipfile |
|00003280| 69 73 20 69 6e 20 76 61 | 72 69 61 62 6c 65 2d 6c |is in va|riable-l|
|00003290| 65 6e 67 74 68 20 72 65 | 63 6f 72 64 20 66 6f 72 |ength re|cord for|
|000032a0| 6d 61 74 2e 20 20 50 6c | 65 61 73 65 5c 6e 5c 0a |mat. Pl|ease\n\.|
|000032b0| 58 20 20 20 20 20 72 75 | 6e 20 5c 22 62 69 6c 66 |X ru|n \"bilf|
|000032c0| 20 6c 20 25 73 5c 22 20 | 74 6f 20 63 6f 6e 76 65 | l %s\" |to conve|
|000032d0| 72 74 20 74 68 65 20 7a | 69 70 66 69 6c 65 20 74 |rt the z|ipfile t|
|000032e0| 6f 20 73 74 72 65 61 6d | 2d 4c 46 5c 6e 5c 0a 58 |o stream|-LF\n\.X|
|000032f0| 20 20 20 20 20 72 65 63 | 6f 72 64 20 66 6f 72 6d | rec|ord form|
|00003300| 61 74 2e 20 20 28 42 6f | 74 68 20 62 69 6c 66 2e |at. (Bo|th bilf.|
|00003310| 63 20 61 6e 64 20 6d 61 | 6b 65 5f 62 69 6c 66 2e |c and ma|ke_bilf.|
|00003320| 63 6f 6d 20 61 72 65 20 | 69 6e 63 6c 75 64 65 64 |com are |included|
|00003330| 5c 6e 5c 0a 58 20 20 20 | 20 20 69 6e 20 74 68 65 |\n\.X | in the|
|00003340| 20 56 4d 53 20 75 6e 7a | 69 70 20 64 69 73 74 72 | VMS unz|ip distr|
|00003350| 69 62 75 74 69 6f 6e 2e | 29 5c 6e 5c 6e 22 2c 20 |ibution.|)\n\n", |
|00003360| 7a 69 70 66 6e 29 3b 0a | 58 20 20 20 20 20 20 20 |zipfn);.|X |
|00003370| 20 20 20 20 20 72 65 74 | 75 72 6e 20 32 3b 20 20 | ret|urn 2; |
|00003380| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 32 3a 20 20 | | /* 2: |
|00003390| 65 72 72 6f 72 20 69 6e | 20 7a 69 70 66 69 6c 65 |error in| zipfile|
|000033a0| 20 2a 2f 0a 58 20 20 20 | 20 20 20 20 20 7d 0a 58 | */.X | }.X|
|000033b0| 20 20 20 20 20 20 20 20 | 72 74 79 70 65 20 3d 20 | |rtype = |
|000033c0| 46 41 54 24 43 5f 53 54 | 52 45 41 4d 4c 46 3b 20 |FAT$C_ST|REAMLF; |
|000033d0| 2f 2a 20 55 6e 69 78 20 | 49 2f 4f 20 6c 6f 76 65 |/* Unix |I/O love|
|000033e0| 73 20 69 74 20 2a 2f 0a | 58 20 20 20 20 20 20 20 |s it */.|X |
|000033f0| 20 56 4d 53 6d 75 6e 63 | 68 28 7a 69 70 66 6e 2c | VMSmunc|h(zipfn,|
|00003400| 20 43 48 41 4e 47 45 5f | 52 54 59 50 45 2c 20 28 | CHANGE_|RTYPE, (|
|00003410| 63 68 61 72 20 2a 29 26 | 72 74 79 70 65 29 3b 0a |char *)&|rtype);.|
|00003420| 58 20 20 20 20 7d 0a 58 | 23 65 6e 64 69 66 0a 58 |X }.X|#endif.X|
|00003430| 0a 58 20 20 20 20 69 66 | 20 28 6f 70 65 6e 5f 69 |.X if| (open_i|
|00003440| 6e 70 75 74 5f 66 69 6c | 65 28 29 29 20 20 20 20 |nput_fil|e()) |
|00003450| 20 20 2f 2a 20 74 68 69 | 73 20 73 68 6f 75 6c 64 | /* thi|s should|
|00003460| 20 6e 65 76 65 72 20 68 | 61 70 70 65 6e 2c 20 67 | never h|appen, g|
|00003470| 69 76 65 6e 20 74 68 65 | 20 2a 2f 0a 58 20 20 20 |iven the| */.X |
|00003480| 20 20 20 20 20 72 65 74 | 75 72 6e 20 28 39 29 3b | ret|urn (9);|
|00003490| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2a 20 | | /* |
|000034a0| 20 20 73 74 61 74 28 29 | 20 74 65 73 74 20 69 6e | stat()| test in|
|000034b0| 20 6d 61 69 6e 28 29 2c | 20 62 75 74 2e 2e 2e 20 | main(),| but... |
|000034c0| 2a 2f 0a 58 0a 58 2f 2a | 2d 2d 2d 2d 2d 2d 2d 2d |*/.X.X/*|--------|
|000034d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003510| 2d 2d 2d 0a 58 20 20 20 | 20 52 65 63 6f 6e 73 74 |---.X | Reconst|
|00003520| 72 75 63 74 20 74 68 65 | 20 76 61 72 69 6f 75 73 |ruct the| various|
|00003530| 20 50 4b 20 73 69 67 6e | 61 74 75 72 65 20 73 74 | PK sign|ature st|
|00003540| 72 69 6e 67 73 3b 20 66 | 69 6e 64 20 61 6e 64 20 |rings; f|ind and |
|00003550| 70 72 6f 63 65 73 73 20 | 74 68 65 20 65 6e 64 2d |process |the end-|
|00003560| 0a 58 20 20 20 20 6f 66 | 2d 63 65 6e 74 72 61 6c |.X of|-central|
|00003570| 2d 64 69 72 65 63 74 6f | 72 79 20 68 65 61 64 65 |-directo|ry heade|
|00003580| 72 20 61 6e 64 20 74 68 | 65 20 63 65 6e 74 72 61 |r and th|e centra|
|00003590| 6c 20 64 69 72 65 63 74 | 6f 72 79 3b 20 61 6e 64 |l direct|ory; and|
|000035a0| 20 63 6c 6f 73 65 20 74 | 68 65 0a 58 20 20 20 20 | close t|he.X |
|000035b0| 7a 69 70 66 69 6c 65 2e | 0a 58 20 20 2d 2d 2d 2d |zipfile.|.X ----|
|000035c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003600| 2d 2d 2d 2d 2d 2d 2d 2a | 2f 0a 58 0a 58 20 20 20 |-------*|/.X.X |
|00003610| 20 73 74 72 63 61 74 28 | 6c 6f 63 61 6c 5f 68 64 | strcat(|local_hd|
|00003620| 72 5f 73 69 67 2c 20 4c | 4f 43 41 4c 5f 48 44 52 |r_sig, L|OCAL_HDR|
|00003630| 5f 53 49 47 29 3b 0a 58 | 20 20 20 20 73 74 72 63 |_SIG);.X| strc|
|00003640| 61 74 28 63 65 6e 74 72 | 61 6c 5f 68 64 72 5f 73 |at(centr|al_hdr_s|
|00003650| 69 67 2c 20 43 45 4e 54 | 52 41 4c 5f 48 44 52 5f |ig, CENT|RAL_HDR_|
|00003660| 53 49 47 29 3b 0a 58 20 | 20 20 20 73 74 72 63 61 |SIG);.X | strca|
|00003670| 74 28 65 6e 64 5f 63 65 | 6e 74 72 61 6c 5f 73 69 |t(end_ce|ntral_si|
|00003680| 67 2c 20 45 4e 44 5f 43 | 45 4e 54 52 41 4c 5f 53 |g, END_C|ENTRAL_S|
|00003690| 49 47 29 3b 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |IG);.X.X| if (|
|000036a0| 66 69 6e 64 5f 65 6e 64 | 5f 63 65 6e 74 72 61 6c |find_end|_central|
|000036b0| 5f 64 69 72 28 29 29 20 | 2f 2a 20 6e 6f 74 20 66 |_dir()) |/* not f|
|000036c0| 6f 75 6e 64 3b 20 6e 6f | 74 68 69 6e 67 20 74 6f |ound; no|thing to|
|000036d0| 20 64 6f 20 2a 2f 0a 58 | 20 20 20 20 20 20 20 20 | do */.X| |
|000036e0| 72 65 74 75 72 6e 20 28 | 32 29 3b 20 20 20 20 20 |return (|2); |
|000036f0| 20 20 20 20 20 20 20 20 | 2f 2a 20 32 3a 20 20 65 | |/* 2: e|
|00003700| 72 72 6f 72 20 69 6e 20 | 7a 69 70 66 69 6c 65 20 |rror in |zipfile |
|00003710| 2a 2f 0a 58 0a 58 20 20 | 20 20 72 65 61 6c 5f 65 |*/.X.X | real_e|
|00003720| 63 72 65 63 5f 6f 66 66 | 73 65 74 20 3d 20 63 75 |crec_off|set = cu|
|00003730| 72 5f 7a 69 70 66 69 6c | 65 5f 62 75 66 73 74 61 |r_zipfil|e_bufsta|
|00003740| 72 74 20 2b 20 28 69 6e | 70 74 72 2d 69 6e 62 75 |rt + (in|ptr-inbu|
|00003750| 66 29 3b 0a 58 23 69 66 | 64 65 66 20 54 45 53 54 |f);.X#if|def TEST|
|00003760| 0a 58 20 20 20 20 70 72 | 69 6e 74 66 28 22 5c 6e |.X pr|intf("\n|
|00003770| 20 20 66 6f 75 6e 64 20 | 65 6e 64 2d 6f 66 2d 63 | found |end-of-c|
|00003780| 65 6e 74 72 61 6c 2d 64 | 69 72 20 73 69 67 6e 61 |entral-d|ir signa|
|00003790| 74 75 72 65 20 61 74 20 | 6f 66 66 73 65 74 20 25 |ture at |offset %|
|000037a0| 6c 64 20 28 25 2e 38 6c | 58 68 29 5c 6e 22 2c 0a |ld (%.8l|Xh)\n",.|
|000037b0| 58 20 20 20 20 20 20 72 | 65 61 6c 5f 65 63 72 65 |X r|eal_ecre|
|000037c0| 63 5f 6f 66 66 73 65 74 | 2c 20 72 65 61 6c 5f 65 |c_offset|, real_e|
|000037d0| 63 72 65 63 5f 6f 66 66 | 73 65 74 29 3b 0a 58 20 |crec_off|set);.X |
|000037e0| 20 20 20 70 72 69 6e 74 | 66 28 22 20 20 20 20 66 | print|f(" f|
|000037f0| 72 6f 6d 20 62 65 67 69 | 6e 6e 69 6e 67 20 6f 66 |rom begi|nning of|
|00003800| 20 66 69 6c 65 3b 20 6f | 66 66 73 65 74 20 25 64 | file; o|ffset %d|
|00003810| 20 28 25 2e 34 58 68 29 | 20 77 69 74 68 69 6e 20 | (%.4Xh)| within |
|00003820| 62 6c 6f 63 6b 5c 6e 22 | 2c 0a 58 20 20 20 20 20 |block\n"|,.X |
|00003830| 20 69 6e 70 74 72 2d 69 | 6e 62 75 66 2c 20 69 6e | inptr-i|nbuf, in|
|00003840| 70 74 72 2d 69 6e 62 75 | 66 29 3b 0a 58 23 65 6e |ptr-inbu|f);.X#en|
|00003850| 64 69 66 0a 58 0a 58 20 | 20 20 20 69 66 20 28 28 |dif.X.X | if ((|
|00003860| 65 72 72 6f 72 5f 69 6e | 5f 61 72 63 68 69 76 65 |error_in|_archive|
|00003870| 20 3d 20 70 72 6f 63 65 | 73 73 5f 65 6e 64 5f 63 | = proce|ss_end_c|
|00003880| 65 6e 74 72 61 6c 5f 64 | 69 72 28 29 29 20 3e 20 |entral_d|ir()) > |
|00003890| 31 29 0a 58 20 20 20 20 | 20 20 20 20 72 65 74 75 |1).X | retu|
|000038a0| 72 6e 20 28 65 72 72 6f | 72 5f 69 6e 5f 61 72 63 |rn (erro|r_in_arc|
|000038b0| 68 69 76 65 29 3b 0a 58 | 0a 58 20 20 20 20 69 66 |hive);.X|.X if|
|000038c0| 20 28 65 63 72 65 63 2e | 6e 75 6d 62 65 72 5f 74 | (ecrec.|number_t|
|000038d0| 68 69 73 5f 64 69 73 6b | 20 3d 3d 20 65 63 72 65 |his_disk| == ecre|
|000038e0| 63 2e 6e 75 6d 5f 64 69 | 73 6b 5f 77 69 74 68 5f |c.num_di|sk_with_|
|000038f0| 73 74 61 72 74 5f 63 65 | 6e 74 72 61 6c 5f 64 69 |start_ce|ntral_di|
|00003900| 72 29 20 7b 0a 58 20 20 | 20 20 20 20 20 20 65 78 |r) {.X | ex|
|00003910| 70 65 63 74 5f 65 63 72 | 65 63 5f 6f 66 66 73 65 |pect_ecr|ec_offse|
|00003920| 74 20 3d 20 65 63 72 65 | 63 2e 6f 66 66 73 65 74 |t = ecre|c.offset|
|00003930| 5f 73 74 61 72 74 5f 63 | 65 6e 74 72 61 6c 5f 64 |_start_c|entral_d|
|00003940| 69 72 65 63 74 6f 72 79 | 20 2b 0a 58 20 20 20 20 |irectory| +.X |
|00003950| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003960| 20 20 20 20 20 20 20 20 | 20 20 65 63 72 65 63 2e | | ecrec.|
|00003970| 73 69 7a 65 5f 63 65 6e | 74 72 61 6c 5f 64 69 72 |size_cen|tral_dir|
|00003980| 65 63 74 6f 72 79 3b 0a | 58 20 20 20 20 20 20 20 |ectory;.|X |
|00003990| 20 69 66 20 28 28 65 78 | 74 72 61 5f 62 79 74 65 | if ((ex|tra_byte|
|000039a0| 73 20 3d 20 72 65 61 6c | 5f 65 63 72 65 63 5f 6f |s = real|_ecrec_o|
|000039b0| 66 66 73 65 74 20 2d 20 | 65 78 70 65 63 74 5f 65 |ffset - |expect_e|
|000039c0| 63 72 65 63 5f 6f 66 66 | 73 65 74 29 20 3c 20 30 |crec_off|set) < 0|
|000039d0| 29 20 7b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |) {.X | |
|000039e0| 20 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c | fprintf|(stderr,|
|000039f0| 20 22 5c 6e 65 72 72 6f | 72 3a 20 20 6d 69 73 73 | "\nerro|r: miss|
|00003a00| 69 6e 67 20 25 6c 64 20 | 62 79 74 65 73 20 69 6e |ing %ld |bytes in|
|00003a10| 20 7a 69 70 66 69 6c 65 | 20 28 5c 0a 58 61 74 74 | zipfile| (\.Xatt|
|00003a20| 65 6d 70 74 69 6e 67 20 | 74 6f 20 70 72 6f 63 65 |empting |to proce|
|00003a30| 73 73 20 61 6e 79 77 61 | 79 29 5c 6e 5c 6e 22 2c |ss anywa|y)\n\n",|
|00003a40| 20 2d 65 78 74 72 61 5f | 62 79 74 65 73 29 3b 0a | -extra_|bytes);.|
|00003a50| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 65 72 72 |X | err|
|00003a60| 6f 72 5f 69 6e 5f 61 72 | 63 68 69 76 65 20 3d 20 |or_in_ar|chive = |
|00003a70| 32 3b 20 20 20 20 20 20 | 20 2f 2a 20 32 3a 20 20 |2; | /* 2: |
|00003a80| 28 77 65 61 6b 29 20 65 | 72 72 6f 72 20 69 6e 20 |(weak) e|rror in |
|00003a90| 7a 69 70 66 69 6c 65 20 | 2a 2f 0a 58 20 20 20 20 |zipfile |*/.X |
|00003aa0| 20 20 20 20 7d 20 65 6c | 73 65 20 69 66 20 28 65 | } el|se if (e|
|00003ab0| 78 74 72 61 5f 62 79 74 | 65 73 20 3e 20 30 29 20 |xtra_byt|es > 0) |
|00003ac0| 7b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 69 |{.X | i|
|00003ad0| 66 20 28 28 65 63 72 65 | 63 2e 6f 66 66 73 65 74 |f ((ecre|c.offset|
|00003ae0| 5f 73 74 61 72 74 5f 63 | 65 6e 74 72 61 6c 5f 64 |_start_c|entral_d|
|00003af0| 69 72 65 63 74 6f 72 79 | 20 3d 3d 20 30 29 20 26 |irectory| == 0) &|
|00003b00| 26 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |&.X | |
|00003b10| 20 20 20 28 65 63 72 65 | 63 2e 73 69 7a 65 5f 63 | (ecre|c.size_c|
|00003b20| 65 6e 74 72 61 6c 5f 64 | 69 72 65 63 74 6f 72 79 |entral_d|irectory|
|00003b30| 20 21 3d 20 30 29 29 20 | 20 20 2f 2a 20 7a 69 70 | != 0)) | /* zip|
|00003b40| 20 31 2e 35 20 2d 67 6f | 20 62 75 67 20 2a 2f 0a | 1.5 -go| bug */.|
|00003b50| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 7b 0a 58 |X | {.X|
|00003b60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003b70| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|00003b80| 22 5c 6e 65 72 72 6f 72 | 3a 20 20 4e 55 4c 4c 20 |"\nerror|: NULL |
|00003b90| 63 65 6e 74 72 61 6c 20 | 64 69 72 65 63 74 6f 72 |central |director|
|00003ba0| 79 20 6f 66 66 73 65 74 | 20 28 5c 0a 58 61 74 74 |y offset| (\.Xatt|
|00003bb0| 65 6d 70 74 69 6e 67 20 | 74 6f 20 70 72 6f 63 65 |empting |to proce|
|00003bc0| 73 73 20 61 6e 79 77 61 | 79 29 5c 6e 5c 6e 22 29 |ss anywa|y)\n\n")|
|00003bd0| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00003be0| 20 20 20 65 72 72 6f 72 | 5f 69 6e 5f 61 72 63 68 | error|_in_arch|
|00003bf0| 69 76 65 20 3d 20 32 3b | 20 20 20 2f 2a 20 32 3a |ive = 2;| /* 2:|
|00003c00| 20 20 28 77 65 61 6b 29 | 20 65 72 72 6f 72 20 69 | (weak)| error i|
|00003c10| 6e 20 7a 69 70 66 69 6c | 65 20 2a 2f 0a 58 20 20 |n zipfil|e */.X |
|00003c20| 20 20 20 20 20 20 20 20 | 20 20 7d 20 65 6c 73 65 | | } else|
|00003c30| 20 7b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00003c40| 20 20 20 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 | fpri|ntf(stde|
|00003c50| 72 72 2c 20 22 5c 6e 77 | 61 72 6e 69 6e 67 3a 20 |rr, "\nw|arning: |
|00003c60| 20 65 78 74 72 61 20 25 | 6c 64 20 62 79 74 65 73 | extra %|ld bytes|
|00003c70| 20 61 74 20 62 65 67 69 | 6e 6e 69 6e 67 20 6f 72 | at begi|nning or|
|00003c80| 5c 0a 58 20 77 69 74 68 | 69 6e 20 7a 69 70 66 69 |\.X with|in zipfi|
|00003c90| 6c 65 5c 6e 20 20 20 20 | 20 20 20 20 20 20 28 61 |le\n | (a|
|00003ca0| 74 74 65 6d 70 74 69 6e | 67 20 74 6f 20 70 72 6f |ttemptin|g to pro|
|00003cb0| 63 65 73 73 20 61 6e 79 | 77 61 79 29 5c 6e 5c 6e |cess any|way)\n\n|
|00003cc0| 22 2c 20 65 78 74 72 61 | 5f 62 79 74 65 73 29 3b |", extra|_bytes);|
|00003cd0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00003ce0| 20 20 65 72 72 6f 72 5f | 69 6e 5f 61 72 63 68 69 | error_|in_archi|
|00003cf0| 76 65 20 3d 20 31 3b 20 | 20 20 2f 2a 20 31 3a 20 |ve = 1; | /* 1: |
|00003d00| 20 77 61 72 6e 69 6e 67 | 20 65 72 72 6f 72 20 2a | warning| error *|
|00003d10| 2f 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 7d |/.X | }|
|00003d20| 0a 58 20 20 20 20 20 20 | 20 20 7d 0a 58 20 20 20 |.X | }.X |
|00003d30| 20 20 20 20 20 4c 53 45 | 45 4b 28 20 65 63 72 65 | LSE|EK( ecre|
|00003d40| 63 2e 6f 66 66 73 65 74 | 5f 73 74 61 72 74 5f 63 |c.offset|_start_c|
|00003d50| 65 6e 74 72 61 6c 5f 64 | 69 72 65 63 74 6f 72 79 |entral_d|irectory|
|00003d60| 20 29 0a 58 20 20 20 20 | 20 20 20 20 69 66 20 28 | ).X | if (|
|00003d70| 28 65 72 72 6f 72 20 3d | 20 70 72 6f 63 65 73 73 |(error =| process|
|00003d80| 5f 63 65 6e 74 72 61 6c | 5f 64 69 72 28 29 29 20 |_central|_dir()) |
|00003d90| 3e 20 65 72 72 6f 72 5f | 69 6e 5f 61 72 63 68 69 |> error_|in_archi|
|00003da0| 76 65 29 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |ve).X | |
|00003db0| 20 65 72 72 6f 72 5f 69 | 6e 5f 61 72 63 68 69 76 | error_i|n_archiv|
|00003dc0| 65 20 3d 20 65 72 72 6f | 72 3b 20 20 20 20 2f 2a |e = erro|r; /*|
|00003dd0| 20 64 6f 6e 27 74 20 6f | 76 65 72 77 72 69 74 65 | don't o|verwrite|
|00003de0| 20 73 74 72 6f 6e 67 65 | 72 20 65 72 72 6f 72 20 | stronge|r error |
|00003df0| 2a 2f 0a 58 20 20 20 20 | 20 20 20 20 69 66 20 28 |*/.X | if (|
|00003e00| 6c 66 6c 61 67 20 3e 20 | 39 29 0a 58 20 20 20 20 |lflag > |9).X |
|00003e10| 20 20 20 20 20 20 20 20 | 70 72 69 6e 74 66 28 22 | |printf("|
|00003e20| 5c 6e 22 29 3b 0a 58 20 | 20 20 20 7d 20 65 6c 73 |\n");.X | } els|
|00003e30| 65 20 7b 0a 58 20 20 20 | 20 20 20 20 20 66 70 72 |e {.X | fpr|
|00003e40| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 5c 6e |intf(std|err, "\n|
|00003e50| 5c 0a 58 20 20 20 20 20 | 5a 69 70 66 69 6c 65 20 |\.X |Zipfile |
|00003e60| 69 73 20 70 61 72 74 20 | 6f 66 20 61 20 6d 75 6c |is part |of a mul|
|00003e70| 74 69 2d 64 69 73 6b 20 | 61 72 63 68 69 76 65 2c |ti-disk |archive,|
|00003e80| 20 61 6e 64 20 74 68 69 | 73 20 69 73 20 6e 6f 74 | and thi|s is not|
|00003e90| 20 74 68 65 20 64 69 73 | 6b 20 6f 6e 5c 0a 58 20 | the dis|k on\.X |
|00003ea0| 20 20 20 20 77 68 69 63 | 68 20 74 68 65 20 63 65 | whic|h the ce|
|00003eb0| 6e 74 72 61 6c 20 7a 69 | 70 66 69 6c 65 20 64 69 |ntral zi|pfile di|
|00003ec0| 72 65 63 74 6f 72 79 20 | 62 65 67 69 6e 73 2e 5c |rectory |begins.\|
|00003ed0| 6e 22 29 3b 0a 58 20 20 | 20 20 20 20 20 20 65 72 |n");.X | er|
|00003ee0| 72 6f 72 5f 69 6e 5f 61 | 72 63 68 69 76 65 20 3d |ror_in_a|rchive =|
|00003ef0| 20 31 31 3b 20 20 2f 2a | 20 31 31 3a 20 20 6e 6f | 11; /*| 11: no|
|00003f00| 20 66 69 6c 65 73 20 66 | 6f 75 6e 64 20 2a 2f 0a | files f|ound */.|
|00003f10| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 63 6c |X }.X|.X cl|
|00003f20| 6f 73 65 28 7a 69 70 66 | 64 29 3b 0a 58 23 69 66 |ose(zipf|d);.X#if|
|00003f30| 64 65 66 20 56 4d 53 0a | 58 20 20 20 20 56 4d 53 |def VMS.|X VMS|
|00003f40| 6d 75 6e 63 68 28 7a 69 | 70 66 6e 2c 20 52 45 53 |munch(zi|pfn, RES|
|00003f50| 54 4f 52 45 5f 52 54 59 | 50 45 2c 20 4e 55 4c 4c |TORE_RTY|PE, NULL|
|00003f60| 29 3b 0a 58 23 65 6e 64 | 69 66 0a 58 20 20 20 20 |);.X#end|if.X |
|00003f70| 72 65 74 75 72 6e 20 28 | 65 72 72 6f 72 5f 69 6e |return (|error_in|
|00003f80| 5f 61 72 63 68 69 76 65 | 29 3b 0a 58 0a 58 7d 20 |_archive|);.X.X} |
|00003f90| 20 20 20 20 20 20 2f 2a | 20 65 6e 64 20 66 75 6e | /*| end fun|
|00003fa0| 63 74 69 6f 6e 20 70 72 | 6f 63 65 73 73 5f 7a 69 |ction pr|ocess_zi|
|00003fb0| 70 66 69 6c 65 28 29 20 | 2a 2f 0a 58 0a 58 0a 58 |pfile() |*/.X.X.X|
|00003fc0| 0a 58 0a 58 0a 58 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X.X.X/*|********|
|00003fd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003fe0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2f 0a 58 2f |********|****/.X/|
|00003ff0| 2a 20 20 46 75 6e 63 74 | 69 6f 6e 20 66 69 6e 64 |* Funct|ion find|
|00004000| 5f 65 6e 64 5f 63 65 6e | 74 72 61 6c 5f 64 69 72 |_end_cen|tral_dir|
|00004010| 28 29 20 20 2a 2f 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |() */.X|/*******|
|00004020| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004030| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0a |********|******/.|
|00004040| 58 0a 58 69 6e 74 20 66 | 69 6e 64 5f 65 6e 64 5f |X.Xint f|ind_end_|
|00004050| 63 65 6e 74 72 61 6c 5f | 64 69 72 28 29 20 20 20 |central_|dir() |
|00004060| 2f 2a 20 72 65 74 75 72 | 6e 20 30 20 69 66 20 66 |/* retur|n 0 if f|
|00004070| 6f 75 6e 64 2c 20 31 20 | 6f 74 68 65 72 77 69 73 |ound, 1 |otherwis|
|00004080| 65 20 2a 2f 0a 58 7b 0a | 58 20 20 20 20 69 6e 74 |e */.X{.|X int|
|00004090| 20 20 20 20 20 20 20 69 | 2c 20 6e 75 6d 62 6c 6b | i|, numblk|
|000040a0| 73 3b 0a 58 20 20 20 20 | 6c 6f 6e 67 69 6e 74 20 |s;.X |longint |
|000040b0| 20 20 74 61 69 6c 5f 6c | 65 6e 3b 0a 58 0a 58 0a | tail_l|en;.X.X.|
|000040c0| 58 0a 58 2f 2a 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |X.X/*---|--------|
|000040d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000040e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000040f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004100| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004110| 0a 58 20 20 20 20 54 72 | 65 61 74 20 63 61 73 65 |.X Tr|eat case|
|00004120| 20 6f 66 20 73 68 6f 72 | 74 20 7a 69 70 66 69 6c | of shor|t zipfil|
|00004130| 65 20 73 65 70 61 72 61 | 74 65 6c 79 2e 0a 58 20 |e separa|tely..X |
|00004140| 20 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | -------|--------|
|00004150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2a 2f 0a 58 |--------|----*/.X|
|00004190| 0a 58 20 20 20 20 69 66 | 20 28 7a 69 70 6c 65 6e |.X if| (ziplen|
|000041a0| 20 3c 3d 20 49 4e 42 55 | 46 53 49 5a 29 20 7b 0a | <= INBU|FSIZ) {.|
|000041b0| 58 20 20 20 20 20 20 20 | 20 6c 73 65 65 6b 28 7a |X | lseek(z|
|000041c0| 69 70 66 64 2c 20 30 4c | 2c 20 53 45 45 4b 5f 53 |ipfd, 0L|, SEEK_S|
|000041d0| 45 54 29 3b 0a 58 20 20 | 20 20 20 20 20 20 69 66 |ET);.X | if|
|000041e0| 20 28 28 69 6e 63 6e 74 | 20 3d 20 72 65 61 64 28 | ((incnt| = read(|
|000041f0| 7a 69 70 66 64 2c 69 6e | 62 75 66 2c 28 75 6e 73 |zipfd,in|buf,(uns|
|00004200| 69 67 6e 65 64 20 69 6e | 74 29 7a 69 70 6c 65 6e |igned in|t)ziplen|
|00004210| 29 29 20 3d 3d 20 7a 69 | 70 6c 65 6e 29 0a 58 0a |)) == zi|plen).X.|
|00004220| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2a 20 |X | /* |
|00004230| 27 50 27 20 6d 75 73 74 | 20 62 65 20 61 74 20 6c |'P' must| be at l|
|00004240| 65 61 73 74 20 32 32 20 | 62 79 74 65 73 20 66 72 |east 22 |bytes fr|
|00004250| 6f 6d 20 65 6e 64 20 6f | 66 20 7a 69 70 66 69 6c |om end o|f zipfil|
|00004260| 65 20 2a 2f 0a 58 20 20 | 20 20 20 20 20 20 20 20 |e */.X | |
|00004270| 20 20 66 6f 72 20 28 20 | 69 6e 70 74 72 20 3d 20 | for ( |inptr = |
|00004280| 69 6e 62 75 66 2b 7a 69 | 70 6c 65 6e 2d 32 32 20 |inbuf+zi|plen-22 |
|00004290| 20 3b 20 20 69 6e 70 74 | 72 20 3e 3d 20 69 6e 62 | ; inpt|r >= inb|
|000042a0| 75 66 20 20 3b 20 20 2d | 2d 69 6e 70 74 72 20 29 |uf ; -|-inptr )|
|000042b0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000042c0| 20 20 69 66 20 28 20 28 | 61 73 63 69 69 5f 74 6f | if ( (|ascii_to|
|000042d0| 5f 6e 61 74 69 76 65 28 | 2a 69 6e 70 74 72 29 20 |_native(|*inptr) |
|000042e0| 3d 3d 20 27 50 27 29 20 | 20 26 26 0a 58 20 20 20 |== 'P') | &&.X |
|000042f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004300| 20 20 20 21 73 74 72 6e | 63 6d 70 28 69 6e 70 74 | !strn|cmp(inpt|
|00004310| 72 2c 20 65 6e 64 5f 63 | 65 6e 74 72 61 6c 5f 73 |r, end_c|entral_s|
|00004320| 69 67 2c 20 34 29 20 29 | 20 7b 0a 58 20 20 20 20 |ig, 4) )| {.X |
|00004330| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004340| 69 6e 63 6e 74 20 2d 3d | 20 69 6e 70 74 72 20 2d |incnt -=| inptr -|
|00004350| 20 69 6e 62 75 66 3b 0a | 58 20 20 20 20 20 20 20 | inbuf;.|X |
|00004360| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 72 65 74 | | ret|
|00004370| 75 72 6e 28 30 29 3b 20 | 20 2f 2a 20 66 6f 75 6e |urn(0); | /* foun|
|00004380| 64 20 69 74 21 20 2a 2f | 0a 58 20 20 20 20 20 20 |d it! */|.X |
|00004390| 20 20 20 20 20 20 20 20 | 20 20 7d 20 20 20 20 20 | | } |
|000043a0| 20 20 20 20 20 20 20 20 | 20 20 2f 2a 20 2e 2e 2e | | /* ...|
|000043b0| 6f 74 68 65 72 77 69 73 | 65 20 66 61 6c 6c 20 74 |otherwis|e fall t|
|000043c0| 68 72 6f 75 67 68 20 26 | 20 66 61 69 6c 20 2a 2f |hrough &| fail */|
|000043d0| 0a 58 0a 58 2f 2a 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X.X/*--|--------|
|000043e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000043f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004420| 2d 0a 58 20 20 20 20 5a | 69 70 66 69 6c 65 20 69 |-.X Z|ipfile i|
|00004430| 73 20 6c 6f 6e 67 65 72 | 20 74 68 61 6e 20 49 4e |s longer| than IN|
|00004440| 42 55 46 53 49 5a 3a 20 | 20 6d 61 79 20 6e 65 65 |BUFSIZ: | may nee|
|00004450| 64 20 74 6f 20 6c 6f 6f | 70 2e 20 20 53 74 61 72 |d to loo|p. Star|
|00004460| 74 20 77 69 74 68 20 73 | 68 6f 72 74 0a 58 20 20 |t with s|hort.X |
|00004470| 20 20 62 6c 6f 63 6b 20 | 61 74 20 65 6e 64 20 6f | block |at end o|
|00004480| 66 20 7a 69 70 66 69 6c | 65 20 28 69 66 20 6e 6f |f zipfil|e (if no|
|00004490| 74 20 54 4f 4f 20 73 68 | 6f 72 74 29 2e 0a 58 20 |t TOO sh|ort)..X |
|000044a0| 20 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | -------|--------|
|000044b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000044c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000044d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000044e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2a 2f 0a 58 |--------|----*/.X|
|000044f0| 0a 58 20 20 20 20 7d 20 | 65 6c 73 65 20 7b 0a 58 |.X } |else {.X|
|00004500| 20 20 20 20 20 20 20 20 | 69 66 20 28 28 74 61 69 | |if ((tai|
|00004510| 6c 5f 6c 65 6e 20 3d 20 | 7a 69 70 6c 65 6e 20 25 |l_len = |ziplen %|
|00004520| 20 49 4e 42 55 46 53 49 | 5a 29 20 3e 20 45 43 52 | INBUFSI|Z) > ECR|
|00004530| 45 43 5f 53 49 5a 45 29 | 20 7b 0a 58 20 20 20 20 |EC_SIZE)| {.X |
|00004540| 20 20 20 20 20 20 20 20 | 63 75 72 5f 7a 69 70 66 | |cur_zipf|
|00004550| 69 6c 65 5f 62 75 66 73 | 74 61 72 74 20 3d 20 6c |ile_bufs|tart = l|
|00004560| 73 65 65 6b 28 7a 69 70 | 66 64 2c 20 7a 69 70 6c |seek(zip|fd, zipl|
|00004570| 65 6e 2d 74 61 69 6c 5f | 6c 65 6e 2c 20 53 45 45 |en-tail_|len, SEE|
|00004580| 4b 5f 53 45 54 29 3b 0a | 58 20 20 20 20 20 20 20 |K_SET);.|X |
|00004590| 20 20 20 20 20 69 66 20 | 28 28 69 6e 63 6e 74 20 | if |((incnt |
|000045a0| 3d 20 72 65 61 64 28 7a | 69 70 66 64 2c 69 6e 62 |= read(z|ipfd,inb|
|000045b0| 75 66 2c 28 75 6e 73 69 | 67 6e 65 64 20 69 6e 74 |uf,(unsi|gned int|
|000045c0| 29 74 61 69 6c 5f 6c 65 | 6e 29 29 20 21 3d 20 74 |)tail_le|n)) != t|
|000045d0| 61 69 6c 5f 6c 65 6e 29 | 0a 58 20 20 20 20 20 20 |ail_len)|.X |
|000045e0| 20 20 20 20 20 20 20 20 | 20 20 67 6f 74 6f 20 66 | | goto f|
|000045f0| 61 69 6c 3b 20 20 20 20 | 20 20 2f 2a 20 73 68 75 |ail; | /* shu|
|00004600| 74 20 75 70 2c 20 69 74 | 27 73 20 65 78 70 65 64 |t up, it|'s exped|
|00004610| 69 65 6e 74 2e 20 2a 2f | 0a 58 0a 58 20 20 20 20 |ient. */|.X.X |
|00004620| 20 20 20 20 20 20 20 20 | 2f 2a 20 27 50 27 20 6d | |/* 'P' m|
|00004630| 75 73 74 20 62 65 20 61 | 74 20 6c 65 61 73 74 20 |ust be a|t least |
|00004640| 32 32 20 62 79 74 65 73 | 20 66 72 6f 6d 20 65 6e |22 bytes| from en|
|00004650| 64 20 6f 66 20 7a 69 70 | 66 69 6c 65 20 2a 2f 0a |d of zip|file */.|
|00004660| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 66 6f 72 |X | for|
|00004670| 20 28 20 69 6e 70 74 72 | 20 3d 20 69 6e 62 75 66 | ( inptr| = inbuf|
|00004680| 2b 74 61 69 6c 5f 6c 65 | 6e 2d 32 32 20 20 3b 20 |+tail_le|n-22 ; |
|00004690| 20 69 6e 70 74 72 20 3e | 3d 20 69 6e 62 75 66 20 | inptr >|= inbuf |
|000046a0| 20 3b 20 20 2d 2d 69 6e | 70 74 72 20 29 0a 58 20 | ; --in|ptr ).X |
|000046b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 69 | | i|
|000046c0| 66 20 28 20 28 61 73 63 | 69 69 5f 74 6f 5f 6e 61 |f ( (asc|ii_to_na|
|000046d0| 74 69 76 65 28 2a 69 6e | 70 74 72 29 20 3d 3d 20 |tive(*in|ptr) == |
|000046e0| 27 50 27 29 20 20 26 26 | 0a 58 20 20 20 20 20 20 |'P') &&|.X |
|000046f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004700| 21 73 74 72 6e 63 6d 70 | 28 69 6e 70 74 72 2c 20 |!strncmp|(inptr, |
|00004710| 65 6e 64 5f 63 65 6e 74 | 72 61 6c 5f 73 69 67 2c |end_cent|ral_sig,|
|00004720| 20 34 29 20 29 20 7b 0a | 58 20 20 20 20 20 20 20 | 4) ) {.|X |
|00004730| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 6e 63 | | inc|
|00004740| 6e 74 20 2d 3d 20 69 6e | 70 74 72 20 2d 20 69 6e |nt -= in|ptr - in|
|00004750| 62 75 66 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |buf;.X | |
|00004760| 20 20 20 20 20 20 20 20 | 20 20 72 65 74 75 72 6e | | return|
|00004770| 28 30 29 3b 20 20 2f 2a | 20 66 6f 75 6e 64 20 69 |(0); /*| found i|
|00004780| 74 21 20 2a 2f 0a 58 20 | 20 20 20 20 20 20 20 20 |t! */.X | |
|00004790| 20 20 20 20 20 20 20 7d | 20 20 20 20 20 20 20 20 | }| |
|000047a0| 20 20 20 20 20 20 20 2f | 2a 20 2e 2e 2e 6f 74 68 | /|* ...oth|
|000047b0| 65 72 77 69 73 65 20 73 | 65 61 72 63 68 20 6e 65 |erwise s|earch ne|
|000047c0| 78 74 20 62 6c 6f 63 6b | 20 2a 2f 0a 58 20 20 20 |xt block| */.X |
|000047d0| 20 20 20 20 20 20 20 20 | 20 73 74 72 6e 63 70 79 | | strncpy|
|000047e0| 28 68 6f 6c 64 2c 20 69 | 6e 62 75 66 2c 20 33 29 |(hold, i|nbuf, 3)|
|000047f0| 3b 20 20 20 20 2f 2a 20 | 73 69 67 20 6d 61 79 20 |; /* |sig may |
|00004800| 73 70 61 6e 20 62 6c 6f | 63 6b 20 62 6f 75 6e 64 |span blo|ck bound|
|00004810| 61 72 79 20 2a 2f 0a 58 | 0a 58 20 20 20 20 20 20 |ary */.X|.X |
|00004820| 20 20 7d 20 65 6c 73 65 | 20 7b 0a 58 20 20 20 20 | } else| {.X |
|00004830| 20 20 20 20 20 20 20 20 | 63 75 72 5f 7a 69 70 66 | |cur_zipf|
|00004840| 69 6c 65 5f 62 75 66 73 | 74 61 72 74 20 3d 20 7a |ile_bufs|tart = z|
|00004850| 69 70 6c 65 6e 20 2d 20 | 74 61 69 6c 5f 6c 65 6e |iplen - |tail_len|
|00004860| 3b 0a 58 20 20 20 20 20 | 20 20 20 7d 0a 58 0a 58 |;.X | }.X.X|
|00004870| 20 20 20 20 20 20 20 20 | 2f 2a 0a 58 20 20 20 20 | |/*.X |
|00004880| 20 20 20 20 20 2a 20 4c | 6f 6f 70 20 74 68 72 6f | * L|oop thro|
|00004890| 75 67 68 20 62 6c 6f 63 | 6b 73 20 6f 66 20 7a 69 |ugh bloc|ks of zi|
|000048a0| 70 66 69 6c 65 20 64 61 | 74 61 2c 20 73 74 61 72 |pfile da|ta, star|
|000048b0| 74 69 6e 67 20 61 74 20 | 74 68 65 20 65 6e 64 20 |ting at |the end |
|000048c0| 61 6e 64 20 67 6f 69 6e | 67 0a 58 20 20 20 20 20 |and goin|g.X |
|000048d0| 20 20 20 20 2a 20 74 6f | 77 61 72 64 20 74 68 65 | * to|ward the|
|000048e0| 20 62 65 67 69 6e 6e 69 | 6e 67 2e 20 20 4e 65 65 | beginni|ng. Nee|
|000048f0| 64 20 6f 6e 6c 79 20 63 | 68 65 63 6b 20 6c 61 73 |d only c|heck las|
|00004900| 74 20 36 35 35 35 37 20 | 62 79 74 65 73 20 6f 66 |t 65557 |bytes of|
|00004910| 20 7a 69 70 66 69 6c 65 | 3a 0a 58 20 20 20 20 20 | zipfile|:.X |
|00004920| 20 20 20 20 2a 20 63 6f | 6d 6d 65 6e 74 20 6d 61 | * co|mment ma|
|00004930| 79 20 62 65 20 75 70 20 | 74 6f 20 36 35 35 33 35 |y be up |to 65535|
|00004940| 20 62 79 74 65 73 20 6c | 6f 6e 67 2c 20 65 6e 64 | bytes l|ong, end|
|00004950| 2d 6f 66 2d 63 65 6e 74 | 72 61 6c 2d 64 69 72 65 |-of-cent|ral-dire|
|00004960| 63 74 6f 72 79 20 72 65 | 63 2d 0a 58 20 20 20 20 |ctory re|c-.X |
|00004970| 20 20 20 20 20 2a 20 6f | 72 64 20 69 73 20 31 38 | * o|rd is 18|
|00004980| 20 62 79 74 65 73 20 28 | 73 68 6f 75 6c 64 6e 27 | bytes (|shouldn'|
|00004990| 74 20 68 61 72 64 63 6f | 64 65 20 74 68 69 73 20 |t hardco|de this |
|000049a0| 6e 75 6d 62 65 72 2c 20 | 62 75 74 20 77 68 61 74 |number, |but what|
|000049b0| 20 74 68 65 20 68 65 6c | 6c 3a 0a 58 20 20 20 20 | the hel|l:.X |
|000049c0| 20 20 20 20 20 2a 20 61 | 6c 72 65 61 64 79 20 64 | * a|lready d|
|000049d0| 69 64 20 73 6f 20 61 62 | 6f 76 65 20 28 32 32 3d |id so ab|ove (22=|
|000049e0| 31 38 2b 34 29 29 2c 20 | 61 6e 64 20 73 69 67 20 |18+4)), |and sig |
|000049f0| 69 74 73 65 6c 66 20 69 | 73 20 34 20 62 79 74 65 |itself i|s 4 byte|
|00004a00| 73 2e 0a 58 20 20 20 20 | 20 20 20 20 20 2a 20 0a |s..X | * .|
|00004a10| 58 20 20 20 20 20 20 20 | 20 20 2a 20 7a 69 70 69 |X | * zipi|
|00004a20| 6e 66 6f 3a 20 20 63 68 | 65 63 6b 20 74 68 65 20 |nfo: ch|eck the |
|00004a30| 77 68 6f 6c 65 20 66 69 | 6c 65 2c 20 6a 75 73 74 |whole fi|le, just|
|00004a40| 20 69 6e 20 63 61 73 65 | 20 73 6f 6d 65 20 74 72 | in case| some tr|
|00004a50| 61 6e 73 66 65 72 20 70 | 72 6f 74 6f 63 6f 6c 0a |ansfer p|rotocol.|
|00004a60| 58 20 20 20 20 20 20 20 | 20 20 2a 20 68 61 73 20 |X | * has |
|00004a70| 61 70 70 65 6e 64 65 64 | 20 61 20 77 68 6f 6c 65 |appended| a whole|
|00004a80| 20 62 75 6e 63 68 20 6f | 66 20 67 61 72 62 61 67 | bunch o|f garbag|
|00004a90| 65 20 61 74 20 74 68 65 | 20 65 6e 64 20 6f 66 20 |e at the| end of |
|00004aa0| 74 68 65 20 61 72 63 68 | 69 76 65 2e 0a 58 20 20 |the arch|ive..X |
|00004ab0| 20 20 20 20 20 20 20 2a | 2f 0a 58 0a 58 23 69 66 | *|/.X.X#if|
|00004ac0| 6e 64 65 66 20 5a 49 50 | 49 4e 46 4f 0a 58 20 20 |ndef ZIP|INFO.X |
|00004ad0| 20 20 20 20 20 20 2f 2a | 20 20 20 20 20 20 20 20 | /*| |
|00004ae0| 20 3d 3d 61 6d 74 20 74 | 6f 20 73 65 61 72 63 68 | ==amt t|o search|
|00004af0| 3d 3d 20 20 20 3d 3d 64 | 6f 6e 65 3d 3d 20 20 20 |== ==d|one== |
|00004b00| 3d 3d 72 6f 75 6e 64 69 | 6e 67 3d 3d 20 20 20 20 |==roundi|ng== |
|00004b10| 3d 62 6c 6b 73 69 7a 3d | 20 2a 2f 0a 58 20 20 20 |=blksiz=| */.X |
|00004b20| 20 20 20 20 20 6e 75 6d | 62 6c 6b 73 20 3d 20 28 | num|blks = (|
|00004b30| 6d 69 6e 28 7a 69 70 6c | 65 6e 2c 36 35 35 35 37 |min(zipl|en,65557|
|00004b40| 29 20 2d 20 74 61 69 6c | 5f 6c 65 6e 20 2b 20 28 |) - tail|_len + (|
|00004b50| 49 4e 42 55 46 53 49 5a | 2d 31 29 29 20 2f 20 49 |INBUFSIZ|-1)) / I|
|00004b60| 4e 42 55 46 53 49 5a 3b | 0a 58 23 65 6c 73 65 0a |NBUFSIZ;|.X#else.|
|00004b70| 58 20 20 20 20 20 20 20 | 20 6e 75 6d 62 6c 6b 73 |X | numblks|
|00004b80| 20 3d 20 28 20 20 20 20 | 7a 69 70 6c 65 6e 20 20 | = ( |ziplen |
|00004b90| 20 20 20 20 20 20 2d 20 | 74 61 69 6c 5f 6c 65 6e | - |tail_len|
|00004ba0| 20 2b 20 28 49 4e 42 55 | 46 53 49 5a 2d 31 29 29 | + (INBU|FSIZ-1))|
|00004bb0| 20 2f 20 49 4e 42 55 46 | 53 49 5a 3b 0a 58 23 65 | / INBUF|SIZ;.X#e|
|00004bc0| 6e 64 69 66 0a 58 0a 58 | 20 20 20 20 20 20 20 20 |ndif.X.X| |
|00004bd0| 66 6f 72 20 28 20 69 20 | 3d 20 31 20 20 3b 20 20 |for ( i |= 1 ; |
|00004be0| 69 20 3c 3d 20 6e 75 6d | 62 6c 6b 73 20 20 3b 20 |i <= num|blks ; |
|00004bf0| 20 2b 2b 69 20 29 20 7b | 0a 58 20 20 20 20 20 20 | ++i ) {|.X |
|00004c00| 20 20 20 20 20 20 63 75 | 72 5f 7a 69 70 66 69 6c | cu|r_zipfil|
|00004c10| 65 5f 62 75 66 73 74 61 | 72 74 20 2d 3d 20 49 4e |e_bufsta|rt -= IN|
|00004c20| 42 55 46 53 49 5a 3b 0a | 58 20 20 20 20 20 20 20 |BUFSIZ;.|X |
|00004c30| 20 20 20 20 20 6c 73 65 | 65 6b 28 7a 69 70 66 64 | lse|ek(zipfd|
|00004c40| 2c 20 63 75 72 5f 7a 69 | 70 66 69 6c 65 5f 62 75 |, cur_zi|pfile_bu|
|00004c50| 66 73 74 61 72 74 2c 20 | 53 45 45 4b 5f 53 45 54 |fstart, |SEEK_SET|
|00004c60| 29 3b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.X | |
|00004c70| 69 66 20 28 28 69 6e 63 | 6e 74 20 3d 20 72 65 61 |if ((inc|nt = rea|
|00004c80| 64 28 7a 69 70 66 64 2c | 69 6e 62 75 66 2c 49 4e |d(zipfd,|inbuf,IN|
|00004c90| 42 55 46 53 49 5a 29 29 | 20 21 3d 20 49 4e 42 55 |BUFSIZ))| != INBU|
|00004ca0| 46 53 49 5a 29 0a 58 20 | 20 20 20 20 20 20 20 20 |FSIZ).X | |
|00004cb0| 20 20 20 20 20 20 20 62 | 72 65 61 6b 3b 20 20 20 | b|reak; |
|00004cc0| 20 20 20 20 20 20 20 2f | 2a 20 66 61 6c 6c 20 74 | /|* fall t|
|00004cd0| 68 72 6f 75 67 68 20 61 | 6e 64 20 66 61 69 6c 20 |hrough a|nd fail |
|00004ce0| 2a 2f 0a 58 0a 58 20 20 | 20 20 20 20 20 20 20 20 |*/.X.X | |
|00004cf0| 20 20 66 6f 72 20 28 20 | 69 6e 70 74 72 20 3d 20 | for ( |inptr = |
|00004d00| 69 6e 62 75 66 2b 49 4e | 42 55 46 53 49 5a 2d 31 |inbuf+IN|BUFSIZ-1|
|00004d10| 20 20 3b 20 20 69 6e 70 | 74 72 20 3e 3d 20 69 6e | ; inp|tr >= in|
|00004d20| 62 75 66 20 20 3b 20 20 | 2d 2d 69 6e 70 74 72 20 |buf ; |--inptr |
|00004d30| 29 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |).X | |
|00004d40| 20 20 20 69 66 20 28 20 | 28 61 73 63 69 69 5f 74 | if ( |(ascii_t|
|00004d50| 6f 5f 6e 61 74 69 76 65 | 28 2a 69 6e 70 74 72 29 |o_native|(*inptr)|
|00004d60| 20 3d 3d 20 27 50 27 29 | 20 20 26 26 0a 58 20 20 | == 'P')| &&.X |
|00004d70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004d80| 20 20 20 20 21 73 74 72 | 6e 63 6d 70 28 69 6e 70 | !str|ncmp(inp|
|00004d90| 74 72 2c 20 65 6e 64 5f | 63 65 6e 74 72 61 6c 5f |tr, end_|central_|
|00004da0| 73 69 67 2c 20 34 29 20 | 29 20 7b 0a 58 20 20 20 |sig, 4) |) {.X |
|00004db0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004dc0| 20 69 6e 63 6e 74 20 2d | 3d 20 69 6e 70 74 72 20 | incnt -|= inptr |
|00004dd0| 2d 20 69 6e 62 75 66 3b | 0a 58 20 20 20 20 20 20 |- inbuf;|.X |
|00004de0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 72 65 | | re|
|00004df0| 74 75 72 6e 28 30 29 3b | 20 20 2f 2a 20 66 6f 75 |turn(0);| /* fou|
|00004e00| 6e 64 20 69 74 21 20 2a | 2f 0a 58 20 20 20 20 20 |nd it! *|/.X |
|00004e10| 20 20 20 20 20 20 20 20 | 20 20 20 7d 0a 58 20 20 | | }.X |
|00004e20| 20 20 20 20 20 20 20 20 | 20 20 73 74 72 6e 63 70 | | strncp|
|00004e30| 79 28 68 6f 6c 64 2c 20 | 69 6e 62 75 66 2c 20 33 |y(hold, |inbuf, 3|
|00004e40| 29 3b 20 20 20 20 2f 2a | 20 73 69 67 20 6d 61 79 |); /*| sig may|
|00004e50| 20 73 70 61 6e 20 62 6c | 6f 63 6b 20 62 6f 75 6e | span bl|ock boun|
|00004e60| 64 61 72 79 20 2a 2f 0a | 58 20 20 20 20 20 20 20 |dary */.|X |
|00004e70| 20 7d 0a 58 0a 58 20 20 | 20 20 7d 20 2f 2a 20 65 | }.X.X | } /* e|
|00004e80| 6e 64 20 69 66 20 28 7a | 69 70 6c 65 6e 20 3e 20 |nd if (z|iplen > |
|00004e90| 49 4e 42 55 46 53 49 5a | 29 20 2a 2f 0a 58 0a 58 |INBUFSIZ|) */.X.X|
|00004ea0| 2f 2a 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/*------|--------|
|00004eb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ec0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ed0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ee0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0a 58 20 |--------|-----.X |
|00004ef0| 20 20 20 53 65 61 72 63 | 68 65 64 20 74 68 72 6f | Searc|hed thro|
|00004f00| 75 67 68 20 77 68 6f 6c | 65 20 72 65 67 69 6f 6e |ugh whol|e region|
|00004f10| 20 77 68 65 72 65 20 73 | 69 67 6e 61 74 75 72 65 | where s|ignature|
|00004f20| 20 73 68 6f 75 6c 64 20 | 62 65 20 77 69 74 68 6f | should |be witho|
|00004f30| 75 74 20 66 69 6e 64 69 | 6e 67 0a 58 20 20 20 20 |ut findi|ng.X |
|00004f40| 69 74 2e 20 20 50 72 69 | 6e 74 20 69 6e 66 6f 72 |it. Pri|nt infor|
|00004f50| 6d 61 74 69 6f 6e 61 6c | 20 6d 65 73 73 61 67 65 |mational| message|
|00004f60| 20 61 6e 64 20 64 69 65 | 20 61 20 68 6f 72 72 69 | and die| a horri|
|00004f70| 62 6c 65 20 64 65 61 74 | 68 2e 0a 58 20 20 2d 2d |ble deat|h..X --|
|00004f80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2a 2f 0a 58 0a 58 66 |--------|-*/.X.Xf|
|00004fd0| 61 69 6c 3a 0a 58 0a 58 | 20 20 20 20 66 70 72 69 |ail:.X.X| fpri|
|00004fe0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 5c 6e 5c |ntf(stde|rr, "\n\|
|00004ff0| 0a 58 20 20 20 20 20 45 | 6e 64 2d 6f 66 2d 63 65 |.X E|nd-of-ce|
|00005000| 6e 74 72 61 6c 2d 64 69 | 72 65 63 74 6f 72 79 20 |ntral-di|rectory |
|00005010| 73 69 67 6e 61 74 75 72 | 65 20 6e 6f 74 20 66 6f |signatur|e not fo|
|00005020| 75 6e 64 2e 20 20 45 69 | 74 68 65 72 20 74 68 69 |und. Ei|ther thi|
|00005030| 73 20 66 69 6c 65 20 69 | 73 20 6e 6f 74 5c 6e 5c |s file i|s not\n\|
|00005040| 0a 58 20 20 20 20 20 61 | 20 7a 69 70 66 69 6c 65 |.X a| zipfile|
|00005050| 2c 20 6f 72 20 69 74 20 | 63 6f 6e 73 74 69 74 75 |, or it |constitu|
|00005060| 74 65 73 20 6f 6e 65 20 | 64 69 73 6b 20 6f 66 20 |tes one |disk of |
|00005070| 61 20 6d 75 6c 74 69 2d | 70 61 72 74 20 61 72 63 |a multi-|part arc|
|00005080| 68 69 76 65 2e 20 20 49 | 6e 20 74 68 65 5c 6e 5c |hive. I|n the\n\|
|00005090| 0a 58 20 20 20 20 20 6c | 61 74 74 65 72 20 63 61 |.X l|atter ca|
|000050a0| 73 65 20 74 68 65 20 63 | 65 6e 74 72 61 6c 20 64 |se the c|entral d|
|000050b0| 69 72 65 63 74 6f 72 79 | 20 61 6e 64 20 7a 69 70 |irectory| and zip|
|000050c0| 66 69 6c 65 20 63 6f 6d | 6d 65 6e 74 20 77 69 6c |file com|ment wil|
|000050d0| 6c 20 62 65 20 66 6f 75 | 6e 64 20 6f 6e 5c 6e 5c |l be fou|nd on\n\|
|000050e0| 0a 58 20 20 20 20 20 74 | 68 65 20 6c 61 73 74 20 |.X t|he last |
|000050f0| 64 69 73 6b 28 73 29 20 | 6f 66 20 74 68 69 73 20 |disk(s) |of this |
|00005100| 61 72 63 68 69 76 65 2e | 5c 6e 22 29 3b 0a 58 20 |archive.|\n");.X |
|00005110| 20 20 20 72 65 74 75 72 | 6e 28 31 29 3b 20 20 20 | retur|n(1); |
|00005120| 20 20 20 20 20 20 20 2f | 2a 20 66 61 69 6c 65 64 | /|* failed|
|00005130| 20 2a 2f 0a 58 0a 58 7d | 20 20 20 20 20 20 20 2f | */.X.X}| /|
|00005140| 2a 20 65 6e 64 20 66 75 | 6e 63 74 69 6f 6e 20 66 |* end fu|nction f|
|00005150| 69 6e 64 5f 65 6e 64 5f | 63 65 6e 74 72 61 6c 5f |ind_end_|central_|
|00005160| 64 69 72 28 29 20 2a 2f | 0a 58 0a 58 0a 58 0a 58 |dir() */|.X.X.X.X|
|00005170| 0a 58 0a 58 2f 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X.X/***|********|
|00005180| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005190| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2f 0a 58 |********|*****/.X|
|000051a0| 2f 2a 20 20 46 75 6e 63 | 74 69 6f 6e 20 70 72 6f |/* Func|tion pro|
|000051b0| 63 65 73 73 5f 65 6e 64 | 5f 63 65 6e 74 72 61 6c |cess_end|_central|
|000051c0| 5f 64 69 72 28 29 20 20 | 2a 2f 0a 58 2f 2a 2a 2a |_dir() |*/.X/***|
|000051d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000051e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000051f0| 2a 2a 2a 2a 2a 2f 0a 58 | 0a 58 69 6e 74 20 70 72 |*****/.X|.Xint pr|
|00005200| 6f 63 65 73 73 5f 65 6e | 64 5f 63 65 6e 74 72 61 |ocess_en|d_centra|
|00005210| 6c 5f 64 69 72 28 29 20 | 20 20 2f 2a 20 72 65 74 |l_dir() | /* ret|
|00005220| 75 72 6e 20 50 4b 2d 74 | 79 70 65 20 65 72 72 6f |urn PK-t|ype erro|
|00005230| 72 20 63 6f 64 65 20 2a | 2f 0a 58 7b 0a 58 20 20 |r code *|/.X{.X |
|00005240| 20 20 65 63 5f 62 79 74 | 65 5f 72 65 63 20 20 20 | ec_byt|e_rec |
|00005250| 62 79 74 65 72 65 63 3b | 0a 58 20 20 20 20 69 6e |byterec;|.X in|
|00005260| 74 20 20 20 20 20 20 20 | 20 20 20 20 65 72 72 6f |t | erro|
|00005270| 72 3d 30 3b 0a 58 0a 58 | 0a 58 2f 2a 2d 2d 2d 2d |r=0;.X.X|.X/*----|
|00005280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000052a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000052b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000052c0| 2d 2d 2d 2d 2d 2d 0a 58 | 20 20 20 20 52 65 61 64 |------.X| Read|
|000052d0| 20 74 68 65 20 65 6e 64 | 2d 6f 66 2d 63 65 6e 74 | the end|-of-cent|
|000052e0| 72 61 6c 2d 64 69 72 65 | 63 74 6f 72 79 20 72 65 |ral-dire|ctory re|
|000052f0| 63 6f 72 64 20 61 6e 64 | 20 64 6f 20 61 6e 79 20 |cord and| do any |
|00005300| 6e 65 63 65 73 73 61 72 | 79 20 6d 61 63 68 69 6e |necessar|y machin|
|00005310| 65 2d 0a 58 20 20 20 20 | 74 79 70 65 20 63 6f 6e |e-.X |type con|
|00005320| 76 65 72 73 69 6f 6e 73 | 20 28 62 79 74 65 20 6f |versions| (byte o|
|00005330| 72 64 65 72 69 6e 67 2c | 20 73 74 72 75 63 74 75 |rdering,| structu|
|00005340| 72 65 20 70 61 64 64 69 | 6e 67 20 63 6f 6d 70 65 |re paddi|ng compe|
|00005350| 6e 73 61 74 69 6f 6e 29 | 20 62 79 0a 58 20 20 20 |nsation)| by.X |
|00005360| 20 63 6f 70 79 69 6e 67 | 20 63 68 61 72 61 63 74 | copying| charact|
|00005370| 65 72 20 61 72 72 61 79 | 20 74 6f 20 73 74 72 75 |er array| to stru|
|00005380| 63 74 2e 0a 58 20 20 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ct..X -|--------|
|00005390| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000053d0| 2d 2d 2a 2f 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |--*/.X.X| if (|
|000053e0| 72 65 61 64 62 75 66 28 | 28 63 68 61 72 20 2a 29 |readbuf(|(char *)|
|000053f0| 20 62 79 74 65 72 65 63 | 2c 20 45 43 52 45 43 5f | byterec|, ECREC_|
|00005400| 53 49 5a 45 2b 34 29 20 | 3c 3d 20 30 29 0a 58 20 |SIZE+4) |<= 0).X |
|00005410| 20 20 20 20 20 20 20 72 | 65 74 75 72 6e 20 28 35 | r|eturn (5|
|00005420| 31 29 3b 0a 58 0a 58 20 | 20 20 20 65 63 72 65 63 |1);.X.X | ecrec|
|00005430| 2e 6e 75 6d 62 65 72 5f | 74 68 69 73 5f 64 69 73 |.number_|this_dis|
|00005440| 6b 20 3d 0a 58 20 20 20 | 20 20 20 20 20 6d 61 6b |k =.X | mak|
|00005450| 65 77 6f 72 64 28 26 62 | 79 74 65 72 65 63 5b 4e |eword(&b|yterec[N|
|00005460| 55 4d 42 45 52 5f 54 48 | 49 53 5f 44 49 53 4b 5d |UMBER_TH|IS_DISK]|
|00005470| 29 3b 0a 58 20 20 20 20 | 65 63 72 65 63 2e 6e 75 |);.X |ecrec.nu|
|00005480| 6d 5f 64 69 73 6b 5f 77 | 69 74 68 5f 73 74 61 72 |m_disk_w|ith_star|
|00005490| 74 5f 63 65 6e 74 72 61 | 6c 5f 64 69 72 20 3d 0a |t_centra|l_dir =.|
|000054a0| 58 20 20 20 20 20 20 20 | 20 6d 61 6b 65 77 6f 72 |X | makewor|
|000054b0| 64 28 26 62 79 74 65 72 | 65 63 5b 4e 55 4d 5f 44 |d(&byter|ec[NUM_D|
|000054c0| 49 53 4b 5f 57 49 54 48 | 5f 53 54 41 52 54 5f 43 |ISK_WITH|_START_C|
|000054d0| 45 4e 54 52 41 4c 5f 44 | 49 52 5d 29 3b 0a 58 20 |ENTRAL_D|IR]);.X |
|000054e0| 20 20 20 65 63 72 65 63 | 2e 6e 75 6d 5f 65 6e 74 | ecrec|.num_ent|
|000054f0| 72 69 65 73 5f 63 65 6e | 74 72 6c 5f 64 69 72 5f |ries_cen|trl_dir_|
|00005500| 74 68 73 5f 64 69 73 6b | 20 3d 0a 58 20 20 20 20 |ths_disk| =.X |
|00005510| 20 20 20 20 6d 61 6b 65 | 77 6f 72 64 28 26 62 79 | make|word(&by|
|00005520| 74 65 72 65 63 5b 4e 55 | 4d 5f 45 4e 54 52 49 45 |terec[NU|M_ENTRIE|
|00005530| 53 5f 43 45 4e 54 52 4c | 5f 44 49 52 5f 54 48 53 |S_CENTRL|_DIR_THS|
|00005540| 5f 44 49 53 4b 5d 29 3b | 0a 58 20 20 20 20 65 63 |_DISK]);|.X ec|
|00005550| 72 65 63 2e 74 6f 74 61 | 6c 5f 65 6e 74 72 69 65 |rec.tota|l_entrie|
|00005560| 73 5f 63 65 6e 74 72 61 | 6c 5f 64 69 72 20 3d 0a |s_centra|l_dir =.|
|00005570| 58 20 20 20 20 20 20 20 | 20 6d 61 6b 65 77 6f 72 |X | makewor|
|00005580| 64 28 26 62 79 74 65 72 | 65 63 5b 54 4f 54 41 4c |d(&byter|ec[TOTAL|
|00005590| 5f 45 4e 54 52 49 45 53 | 5f 43 45 4e 54 52 41 4c |_ENTRIES|_CENTRAL|
|000055a0| 5f 44 49 52 5d 29 3b 0a | 58 20 20 20 20 65 63 72 |_DIR]);.|X ecr|
|000055b0| 65 63 2e 73 69 7a 65 5f | 63 65 6e 74 72 61 6c 5f |ec.size_|central_|
|000055c0| 64 69 72 65 63 74 6f 72 | 79 20 3d 0a 58 20 20 20 |director|y =.X |
|000055d0| 20 20 20 20 20 6d 61 6b | 65 6c 6f 6e 67 28 26 62 | mak|elong(&b|
|000055e0| 79 74 65 72 65 63 5b 53 | 49 5a 45 5f 43 45 4e 54 |yterec[S|IZE_CENT|
|000055f0| 52 41 4c 5f 44 49 52 45 | 43 54 4f 52 59 5d 29 3b |RAL_DIRE|CTORY]);|
|00005600| 0a 58 20 20 20 20 65 63 | 72 65 63 2e 6f 66 66 73 |.X ec|rec.offs|
|00005610| 65 74 5f 73 74 61 72 74 | 5f 63 65 6e 74 72 61 6c |et_start|_central|
|00005620| 5f 64 69 72 65 63 74 6f | 72 79 20 3d 0a 58 20 20 |_directo|ry =.X |
|00005630| 20 20 20 20 20 20 6d 61 | 6b 65 6c 6f 6e 67 28 26 | ma|kelong(&|
|00005640| 62 79 74 65 72 65 63 5b | 4f 46 46 53 45 54 5f 53 |byterec[|OFFSET_S|
|00005650| 54 41 52 54 5f 43 45 4e | 54 52 41 4c 5f 44 49 52 |TART_CEN|TRAL_DIR|
|00005660| 45 43 54 4f 52 59 5d 29 | 3b 0a 58 20 20 20 20 65 |ECTORY])|;.X e|
|00005670| 63 72 65 63 2e 7a 69 70 | 66 69 6c 65 5f 63 6f 6d |crec.zip|file_com|
|00005680| 6d 65 6e 74 5f 6c 65 6e | 67 74 68 20 3d 0a 58 20 |ment_len|gth =.X |
|00005690| 20 20 20 20 20 20 20 6d | 61 6b 65 77 6f 72 64 28 | m|akeword(|
|000056a0| 26 62 79 74 65 72 65 63 | 5b 5a 49 50 46 49 4c 45 |&byterec|[ZIPFILE|
|000056b0| 5f 43 4f 4d 4d 45 4e 54 | 5f 4c 45 4e 47 54 48 5d |_COMMENT|_LENGTH]|
|000056c0| 29 3b 0a 58 0a 58 2f 2a | 2d 2d 2d 2d 2d 2d 2d 2d |);.X.X/*|--------|
|000056d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005710| 2d 2d 2d 0a 58 20 20 20 | 20 50 72 69 6e 74 20 6f |---.X | Print o|
|00005720| 75 74 20 76 61 72 69 6f | 75 73 20 69 6e 74 65 72 |ut vario|us inter|
|00005730| 65 73 74 69 6e 67 20 74 | 68 69 6e 67 73 20 61 62 |esting t|hings ab|
|00005740| 6f 75 74 20 74 68 65 20 | 7a 69 70 66 69 6c 65 2e |out the |zipfile.|
|00005750| 0a 58 20 20 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X ----|--------|
|00005760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005770| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005780| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005790| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2a |--------|-------*|
|000057a0| 2f 0a 58 0a 58 20 20 20 | 20 69 66 20 28 6c 66 6c |/.X.X | if (lfl|
|000057b0| 61 67 20 3d 3d 20 32 29 | 20 7b 0a 58 20 20 20 20 |ag == 2)| {.X |
|000057c0| 20 20 20 20 69 66 20 28 | 70 72 6f 63 65 73 73 5f | if (|process_|
|000057d0| 61 6c 6c 5f 66 69 6c 65 | 73 29 0a 58 20 20 20 20 |all_file|s).X |
|000057e0| 20 20 20 20 20 20 20 2f | 2a 20 66 69 74 73 20 6f | /|* fits o|
|000057f0| 6e 20 6f 6e 65 20 6c 69 | 6e 65 2c 20 66 6f 72 20 |n one li|ne, for |
|00005800| 61 6e 79 74 68 69 6e 67 | 20 75 70 20 74 6f 20 31 |anything| up to 1|
|00005810| 30 47 42 20 61 6e 64 20 | 31 30 30 30 30 20 66 69 |0GB and |10000 fi|
|00005820| 6c 65 73 20 2a 2f 0a 58 | 20 20 20 20 20 20 20 20 |les */.X| |
|00005830| 20 20 20 70 72 69 6e 74 | 66 28 28 73 74 72 6c 65 | print|f((strle|
|00005840| 6e 28 7a 69 70 66 6e 29 | 3c 33 39 29 3f 20 22 41 |n(zipfn)|<39)? "A|
|00005850| 72 63 68 69 76 65 3a 20 | 20 25 73 20 20 20 25 6c |rchive: | %s %l|
|00005860| 64 20 62 79 74 65 73 20 | 20 20 25 64 20 66 69 6c |d bytes | %d fil|
|00005870| 65 25 73 5c 6e 22 0a 58 | 20 20 20 20 20 20 20 20 |e%s\n".X| |
|00005880| 20 20 20 20 20 3a 20 22 | 41 72 63 68 69 76 65 3a | : "|Archive:|
|00005890| 20 20 25 73 20 20 20 25 | 6c 64 20 20 20 25 64 5c | %s %|ld %d\|
|000058a0| 6e 22 2c 20 7a 69 70 66 | 6e 2c 20 7a 69 70 6c 65 |n", zipf|n, ziple|
|000058b0| 6e 2c 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |n,.X | |
|000058c0| 20 65 63 72 65 63 2e 74 | 6f 74 61 6c 5f 65 6e 74 | ecrec.t|otal_ent|
|000058d0| 72 69 65 73 5f 63 65 6e | 74 72 61 6c 5f 64 69 72 |ries_cen|tral_dir|
|000058e0| 2c 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |,.X | |
|000058f0| 28 65 63 72 65 63 2e 74 | 6f 74 61 6c 5f 65 6e 74 |(ecrec.t|otal_ent|
|00005900| 72 69 65 73 5f 63 65 6e | 74 72 61 6c 5f 64 69 72 |ries_cen|tral_dir|
|00005910| 3d 3d 31 29 3f 20 22 22 | 3a 22 73 22 29 3b 0a 58 |==1)? ""|:"s");.X|
|00005920| 20 20 20 20 7d 20 65 6c | 73 65 20 69 66 20 28 6c | } el|se if (l|
|00005930| 66 6c 61 67 20 3e 20 39 | 29 20 7b 20 20 20 2f 2a |flag > 9|) { /*|
|00005940| 20 76 65 72 62 6f 73 65 | 20 66 6f 72 6d 61 74 20 | verbose| format |
|00005950| 2a 2f 0a 58 20 20 20 20 | 20 20 20 20 70 72 69 6e |*/.X | prin|
|00005960| 74 66 28 22 5c 6e 45 6e | 64 2d 6f 66 2d 63 65 6e |tf("\nEn|d-of-cen|
|00005970| 74 72 61 6c 2d 64 69 72 | 65 63 74 6f 72 79 20 72 |tral-dir|ectory r|
|00005980| 65 63 6f 72 64 3a 5c 6e | 22 29 3b 0a 58 20 20 20 |ecord:\n|");.X |
|00005990| 20 20 20 20 20 70 72 69 | 6e 74 66 28 22 2d 2d 2d | pri|ntf("---|
|000059a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000059b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 5c 6e 5c 6e |--------|----\n\n|
|000059c0| 22 29 3b 0a 58 0a 58 20 | 20 20 20 20 20 20 20 69 |");.X.X | i|
|000059d0| 66 20 28 65 63 72 65 63 | 2e 6e 75 6d 62 65 72 5f |f (ecrec|.number_|
|000059e0| 74 68 69 73 5f 64 69 73 | 6b 20 3d 3d 20 30 29 20 |this_dis|k == 0) |
|000059f0| 7b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 70 |{.X | p|
|00005a00| 72 69 6e 74 66 28 22 5c | 0a 58 20 20 54 68 69 73 |rintf("\|.X This|
|00005a10| 20 7a 69 70 66 69 6c 65 | 20 63 6f 6e 73 74 69 74 | zipfile| constit|
|00005a20| 75 74 65 73 20 74 68 65 | 20 73 6f 6c 65 20 64 69 |utes the| sole di|
|00005a30| 73 6b 20 6f 66 20 61 20 | 73 69 6e 67 6c 65 2d 70 |sk of a |single-p|
|00005a40| 61 72 74 20 61 72 63 68 | 69 76 65 3b 20 69 74 73 |art arch|ive; its|
|00005a50| 5c 6e 5c 0a 58 20 20 63 | 65 6e 74 72 61 6c 20 64 |\n\.X c|entral d|
|00005a60| 69 72 65 63 74 6f 72 79 | 20 63 6f 6e 74 61 69 6e |irectory| contain|
|00005a70| 73 20 25 75 20 25 73 2e | 20 20 54 68 65 20 63 65 |s %u %s.| The ce|
|00005a80| 6e 74 72 61 6c 20 64 69 | 72 65 63 74 6f 72 79 20 |ntral di|rectory |
|00005a90| 69 73 20 25 6c 75 5c 6e | 5c 0a 58 20 20 28 25 2e |is %lu\n|\.X (%.|
|00005aa0| 38 6c 58 68 29 20 62 79 | 74 65 73 20 6c 6f 6e 67 |8lXh) by|tes long|
|00005ab0| 2c 20 61 6e 64 20 69 74 | 73 20 6f 66 66 73 65 74 |, and it|s offset|
|00005ac0| 20 69 6e 20 62 79 74 65 | 73 20 66 72 6f 6d 20 74 | in byte|s from t|
|00005ad0| 68 65 20 62 65 67 69 6e | 6e 69 6e 67 20 6f 66 5c |he begin|ning of\|
|00005ae0| 6e 5c 0a 58 20 20 74 68 | 65 20 7a 69 70 66 69 6c |n\.X th|e zipfil|
|00005af0| 65 20 69 73 20 25 6c 75 | 20 28 25 2e 38 6c 58 68 |e is %lu| (%.8lXh|
|00005b00| 29 2e 5c 6e 5c 6e 22 2c | 0a 58 20 20 20 20 20 20 |).\n\n",|.X |
|00005b10| 20 20 20 20 20 20 20 20 | 65 63 72 65 63 2e 74 6f | |ecrec.to|
|00005b20| 74 61 6c 5f 65 6e 74 72 | 69 65 73 5f 63 65 6e 74 |tal_entr|ies_cent|
|00005b30| 72 61 6c 5f 64 69 72 2c | 0a 58 20 20 20 20 20 20 |ral_dir,|.X |
|00005b40| 20 20 20 20 20 20 20 20 | 28 65 63 72 65 63 2e 74 | |(ecrec.t|
|00005b50| 6f 74 61 6c 5f 65 6e 74 | 72 69 65 73 5f 63 65 6e |otal_ent|ries_cen|
|00005b60| 74 72 61 6c 5f 64 69 72 | 20 3d 3d 20 31 29 3f 20 |tral_dir| == 1)? |
|00005b70| 22 65 6e 74 72 79 22 20 | 3a 20 22 65 6e 74 72 69 |"entry" |: "entri|
|00005b80| 65 73 22 2c 0a 58 20 20 | 20 20 20 20 20 20 20 20 |es",.X | |
|00005b90| 20 20 20 20 65 63 72 65 | 63 2e 73 69 7a 65 5f 63 | ecre|c.size_c|
|00005ba0| 65 6e 74 72 61 6c 5f 64 | 69 72 65 63 74 6f 72 79 |entral_d|irectory|
|00005bb0| 2c 20 65 63 72 65 63 2e | 73 69 7a 65 5f 63 65 6e |, ecrec.|size_cen|
|00005bc0| 74 72 61 6c 5f 64 69 72 | 65 63 74 6f 72 79 2c 0a |tral_dir|ectory,.|
|00005bd0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 65 |X | e|
|00005be0| 63 72 65 63 2e 6f 66 66 | 73 65 74 5f 73 74 61 72 |crec.off|set_star|
|00005bf0| 74 5f 63 65 6e 74 72 61 | 6c 5f 64 69 72 65 63 74 |t_centra|l_direct|
|00005c00| 6f 72 79 2c 0a 58 20 20 | 20 20 20 20 20 20 20 20 |ory,.X | |
|00005c10| 20 20 20 20 65 63 72 65 | 63 2e 6f 66 66 73 65 74 | ecre|c.offset|
|00005c20| 5f 73 74 61 72 74 5f 63 | 65 6e 74 72 61 6c 5f 64 |_start_c|entral_d|
|00005c30| 69 72 65 63 74 6f 72 79 | 29 3b 0a 58 20 20 20 20 |irectory|);.X |
|00005c40| 20 20 20 20 7d 20 65 6c | 73 65 20 7b 0a 58 20 20 | } el|se {.X |
|00005c50| 20 20 20 20 20 20 20 20 | 20 20 70 72 69 6e 74 66 | | printf|
|00005c60| 28 22 5c 0a 58 20 20 54 | 68 69 73 20 7a 69 70 66 |("\.X T|his zipf|
|00005c70| 69 6c 65 20 63 6f 6e 73 | 74 69 74 75 74 65 73 20 |ile cons|titutes |
|00005c80| 64 69 73 6b 20 25 75 20 | 6f 66 20 61 20 6d 75 6c |disk %u |of a mul|
|00005c90| 74 69 2d 70 61 72 74 20 | 61 72 63 68 69 76 65 2e |ti-part |archive.|
|00005ca0| 20 20 54 68 65 20 63 65 | 6e 74 72 61 6c 5c 6e 5c | The ce|ntral\n\|
|00005cb0| 0a 58 20 20 64 69 72 65 | 63 74 6f 72 79 20 73 74 |.X dire|ctory st|
|00005cc0| 61 72 74 73 20 6f 6e 20 | 64 69 73 6b 20 25 75 3b |arts on |disk %u;|
|00005cd0| 20 25 75 20 6f 66 20 69 | 74 73 20 65 6e 74 72 69 | %u of i|ts entri|
|00005ce0| 65 73 20 25 73 20 63 6f | 6e 74 61 69 6e 65 64 20 |es %s co|ntained |
|00005cf0| 77 69 74 68 69 6e 5c 6e | 5c 0a 58 20 20 74 68 69 |within\n|\.X thi|
|00005d00| 73 20 7a 69 70 66 69 6c | 65 2c 20 6f 75 74 20 6f |s zipfil|e, out o|
|00005d10| 66 20 61 20 74 6f 74 61 | 6c 20 6f 66 20 25 75 20 |f a tota|l of %u |
|00005d20| 25 73 2e 20 20 54 68 65 | 20 65 6e 74 69 72 65 20 |%s. The| entire |
|00005d30| 63 65 6e 74 72 61 6c 5c | 6e 5c 0a 58 20 20 64 69 |central\|n\.X di|
|00005d40| 72 65 63 74 6f 72 79 20 | 69 73 20 25 6c 75 20 28 |rectory |is %lu (|
|00005d50| 25 2e 38 6c 58 68 29 20 | 62 79 74 65 73 20 6c 6f |%.8lXh) |bytes lo|
|00005d60| 6e 67 2c 20 61 6e 64 20 | 69 74 73 20 6f 66 66 73 |ng, and |its offs|
|00005d70| 65 74 20 69 6e 20 62 79 | 74 65 73 20 66 72 6f 6d |et in by|tes from|
|00005d80| 5c 6e 5c 0a 58 20 20 74 | 68 65 20 62 65 67 69 6e |\n\.X t|he begin|
|00005d90| 6e 69 6e 67 20 6f 66 20 | 74 68 65 20 7a 69 70 66 |ning of |the zipf|
|00005da0| 69 6c 65 20 69 6e 20 77 | 68 69 63 68 20 69 74 20 |ile in w|hich it |
|00005db0| 62 65 67 69 6e 73 20 69 | 73 20 25 6c 75 20 28 25 |begins i|s %lu (%|
|00005dc0| 2e 38 6c 58 68 29 2e 5c | 6e 5c 6e 22 2c 0a 58 20 |.8lXh).\|n\n",.X |
|00005dd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 65 63 72 | | ecr|
|00005de0| 65 63 2e 6e 75 6d 62 65 | 72 5f 74 68 69 73 5f 64 |ec.numbe|r_this_d|
|00005df0| 69 73 6b 2c 0a 58 20 20 | 20 20 20 20 20 20 20 20 |isk,.X | |
|00005e00| 20 20 20 20 65 63 72 65 | 63 2e 6e 75 6d 5f 64 69 | ecre|c.num_di|
|00005e10| 73 6b 5f 77 69 74 68 5f | 73 74 61 72 74 5f 63 65 |sk_with_|start_ce|
|00005e20| 6e 74 72 61 6c 5f 64 69 | 72 2c 0a 58 20 20 20 20 |ntral_di|r,.X |
|00005e30| 20 20 20 20 20 20 20 20 | 20 20 65 63 72 65 63 2e | | ecrec.|
|00005e40| 6e 75 6d 5f 65 6e 74 72 | 69 65 73 5f 63 65 6e 74 |num_entr|ies_cent|
|00005e50| 72 6c 5f 64 69 72 5f 74 | 68 73 5f 64 69 73 6b 2c |rl_dir_t|hs_disk,|
|00005e60| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00005e70| 28 65 63 72 65 63 2e 6e | 75 6d 5f 65 6e 74 72 69 |(ecrec.n|um_entri|
|00005e80| 65 73 5f 63 65 6e 74 72 | 6c 5f 64 69 72 5f 74 68 |es_centr|l_dir_th|
|00005e90| 73 5f 64 69 73 6b 20 3d | 3d 20 31 29 3f 20 22 69 |s_disk =|= 1)? "i|
|00005ea0| 73 22 20 3a 20 22 61 72 | 65 22 2c 0a 58 20 20 20 |s" : "ar|e",.X |
|00005eb0| 20 20 20 20 20 20 20 20 | 20 20 20 65 63 72 65 63 | | ecrec|
|00005ec0| 2e 74 6f 74 61 6c 5f 65 | 6e 74 72 69 65 73 5f 63 |.total_e|ntries_c|
|00005ed0| 65 6e 74 72 61 6c 5f 64 | 69 72 2c 0a 58 20 20 20 |entral_d|ir,.X |
|00005ee0| 20 20 20 20 20 20 20 20 | 20 20 20 28 65 63 72 65 | | (ecre|
|00005ef0| 63 2e 74 6f 74 61 6c 5f | 65 6e 74 72 69 65 73 5f |c.total_|entries_|
|00005f00| 63 65 6e 74 72 61 6c 5f | 64 69 72 20 3d 3d 20 31 |central_|dir == 1|
|00005f10| 29 20 3f 20 22 65 6e 74 | 72 79 22 20 3a 20 22 65 |) ? "ent|ry" : "e|
|00005f20| 6e 74 72 69 65 73 22 2c | 0a 58 20 20 20 20 20 20 |ntries",|.X |
|00005f30| 20 20 20 20 20 20 20 20 | 65 63 72 65 63 2e 73 69 | |ecrec.si|
|00005f40| 7a 65 5f 63 65 6e 74 72 | 61 6c 5f 64 69 72 65 63 |ze_centr|al_direc|
|00005f50| 74 6f 72 79 2c 20 65 63 | 72 65 63 2e 73 69 7a 65 |tory, ec|rec.size|
|00005f60| 5f 63 65 6e 74 72 61 6c | 5f 64 69 72 65 63 74 6f |_central|_directo|
|00005f70| 72 79 2c 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |ry,.X | |
|00005f80| 20 20 20 65 63 72 65 63 | 2e 6f 66 66 73 65 74 5f | ecrec|.offset_|
|00005f90| 73 74 61 72 74 5f 63 65 | 6e 74 72 61 6c 5f 64 69 |start_ce|ntral_di|
|00005fa0| 72 65 63 74 6f 72 79 2c | 0a 58 20 20 20 20 20 20 |rectory,|.X |
|00005fb0| 20 20 20 20 20 20 20 20 | 65 63 72 65 63 2e 6f 66 | |ecrec.of|
|00005fc0| 66 73 65 74 5f 73 74 61 | 72 74 5f 63 65 6e 74 72 |fset_sta|rt_centr|
|00005fd0| 61 6c 5f 64 69 72 65 63 | 74 6f 72 79 29 3b 0a 58 |al_direc|tory);.X|
|00005fe0| 20 20 20 20 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 | |}.X.X |
|00005ff0| 20 2f 2a 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | /*-----|--------|
|00006000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006010| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006020| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006030| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0a 58 20 20 20 20 |--------|--.X |
|00006040| 20 20 20 20 47 65 74 20 | 74 68 65 20 7a 69 70 66 | Get |the zipf|
|00006050| 69 6c 65 20 63 6f 6d 6d | 65 6e 74 2c 20 69 66 20 |ile comm|ent, if |
|00006060| 61 6e 79 2c 20 61 6e 64 | 20 70 72 69 6e 74 20 69 |any, and| print i|
|00006070| 74 20 6f 75 74 2e 20 20 | 28 43 6f 6d 6d 65 6e 74 |t out. |(Comment|
|00006080| 20 6d 61 79 20 62 65 0a | 58 20 20 20 20 20 20 20 | may be.|X |
|00006090| 20 75 70 20 74 6f 20 36 | 34 4b 42 20 6c 6f 6e 67 | up to 6|4KB long|
|000060a0| 2e 20 20 4d 61 79 20 74 | 68 65 20 66 6c 65 61 73 |. May t|he fleas|
|000060b0| 20 6f 66 20 61 20 74 68 | 6f 75 73 61 6e 64 20 63 | of a th|ousand c|
|000060c0| 61 6d 65 6c 73 20 69 6e | 66 65 73 74 20 74 68 65 |amels in|fest the|
|000060d0| 20 61 72 6d 2d 0a 58 20 | 20 20 20 20 20 20 20 70 | arm-.X | p|
|000060e0| 69 74 73 20 6f 66 20 61 | 6e 79 6f 6e 65 20 77 68 |its of a|nyone wh|
|000060f0| 6f 20 61 63 74 75 61 6c | 6c 79 20 74 61 6b 65 73 |o actual|ly takes|
|00006100| 20 61 64 76 61 6e 74 61 | 67 65 20 6f 66 20 74 68 | advanta|ge of th|
|00006110| 69 73 20 66 61 63 74 2e | 29 0a 58 20 20 20 20 20 |is fact.|).X |
|00006120| 20 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | -------|--------|
|00006130| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006140| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006160| 2d 2d 2d 2d 2d 2d 2d 2d | 2a 2f 0a 58 0a 58 20 20 |--------|*/.X.X |
|00006170| 20 20 20 20 20 20 69 66 | 20 28 21 65 63 72 65 63 | if| (!ecrec|
|00006180| 2e 7a 69 70 66 69 6c 65 | 5f 63 6f 6d 6d 65 6e 74 |.zipfile|_comment|
|00006190| 5f 6c 65 6e 67 74 68 29 | 0a 58 20 20 20 20 20 20 |_length)|.X |
|000061a0| 20 20 20 20 20 20 70 72 | 69 6e 74 66 28 22 20 20 | pr|intf(" |
|000061b0| 54 68 65 72 65 20 69 73 | 20 6e 6f 20 7a 69 70 66 |There is| no zipf|
|000061c0| 69 6c 65 20 63 6f 6d 6d | 65 6e 74 2e 5c 6e 22 29 |ile comm|ent.\n")|
|000061d0| 3b 0a 58 20 20 20 20 20 | 20 20 20 65 6c 73 65 20 |;.X | else |
|000061e0| 7b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 70 |{.X | p|
|000061f0| 72 69 6e 74 66 28 22 20 | 20 54 68 65 20 7a 69 70 |rintf(" | The zip|
|00006200| 66 69 6c 65 20 63 6f 6d | 6d 65 6e 74 20 69 73 20 |file com|ment is |
|00006210| 25 75 20 62 79 74 65 73 | 20 6c 6f 6e 67 20 61 6e |%u bytes| long an|
|00006220| 64 20 63 6f 6e 74 61 69 | 6e 73 20 74 68 65 20 66 |d contai|ns the f|
|00006230| 6f 6c 6c 6f 77 69 6e 67 | 20 74 65 78 74 3a 5c 6e |ollowing| text:\n|
|00006240| 5c 6e 22 2c 0a 58 20 20 | 20 20 20 20 20 20 20 20 |\n",.X | |
|00006250| 20 20 20 20 65 63 72 65 | 63 2e 7a 69 70 66 69 6c | ecre|c.zipfil|
|00006260| 65 5f 63 6f 6d 6d 65 6e | 74 5f 6c 65 6e 67 74 68 |e_commen|t_length|
|00006270| 20 29 3b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | );.X | |
|00006280| 20 70 72 69 6e 74 66 28 | 22 3d 3d 3d 3d 3d 3d 3d | printf(|"=======|
|00006290| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000062a0| 3d 20 7a 69 70 66 69 6c | 65 20 63 6f 6d 6d 65 6e |= zipfil|e commen|
|000062b0| 74 20 62 65 67 69 6e 73 | 20 3d 3d 3d 3d 3d 3d 3d |t begins| =======|
|000062c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000062d0| 3d 3d 3d 5c 6e 22 29 3b | 0a 58 20 20 20 20 20 20 |===\n");|.X |
|000062e0| 20 20 20 20 20 20 69 66 | 20 28 64 6f 5f 73 74 72 | if| (do_str|
|000062f0| 69 6e 67 28 65 63 72 65 | 63 2e 7a 69 70 66 69 6c |ing(ecre|c.zipfil|
|00006300| 65 5f 63 6f 6d 6d 65 6e | 74 5f 6c 65 6e 67 74 68 |e_commen|t_length|
|00006310| 2c 20 44 49 53 50 4c 41 | 59 29 29 0a 58 20 20 20 |, DISPLA|Y)).X |
|00006320| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 65 72 72 | | err|
|00006330| 6f 72 20 3d 20 31 3b 20 | 20 20 20 20 20 20 20 20 |or = 1; | |
|00006340| 20 2f 2a 20 31 3a 20 20 | 77 61 72 6e 69 6e 67 20 | /* 1: |warning |
|00006350| 65 72 72 6f 72 20 2a 2f | 0a 58 20 20 20 20 20 20 |error */|.X |
|00006360| 20 20 20 20 20 20 70 72 | 69 6e 74 66 28 22 5c 6e | pr|intf("\n|
|00006370| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00006380| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 20 7a 69 70 66 69 6c |========|= zipfil|
|00006390| 65 20 63 6f 6d 6d 65 6e | 74 20 65 6e 64 73 20 3d |e commen|t ends =|
|000063a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000063b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 5c 6e 22 29 3b 0a |========|==\n");.|
|000063c0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 |X | if |
|000063d0| 28 65 72 72 6f 72 29 0a | 58 20 20 20 20 20 20 20 |(error).|X |
|000063e0| 20 20 20 20 20 20 20 20 | 20 70 72 69 6e 74 66 28 | | printf(|
|000063f0| 22 5c 6e 20 20 54 68 65 | 20 7a 69 70 66 69 6c 65 |"\n The| zipfile|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.