home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: proto
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news text
| default
| |
99%
| file
| C source text
| default
| |
98%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| dexmagic
| PrintFox/Pagefox WEAK
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/news
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 78 61 | 6e 74 68 21 6d 63 6e 63 |Path: xa|nth!mcnc|
|00000010| 21 72 75 74 67 65 72 73 | 21 63 6d 63 6c 32 21 68 |!rutgers|!cmcl2!h|
|00000020| 75 73 63 36 21 6e 65 63 | 6e 74 63 21 6e 63 6f 61 |usc6!nec|ntc!ncoa|
|00000030| 73 74 21 61 6c 6c 62 65 | 72 79 0a 46 72 6f 6d 3a |st!allbe|ry.From:|
|00000040| 20 64 63 77 40 64 6f 63 | 2e 69 63 2e 61 63 2e 75 | dcw@doc|.ic.ac.u|
|00000050| 6b 20 28 44 75 6e 63 61 | 6e 20 57 68 69 74 65 29 |k (Dunca|n White)|
|00000060| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|00000070| 70 2e 73 6f 75 72 63 65 | 73 2e 6d 69 73 63 0a 53 |p.source|s.misc.S|
|00000080| 75 62 6a 65 63 74 3a 20 | 76 30 33 69 30 34 35 3a |ubject: |v03i045:|
|00000090| 20 41 4e 53 49 20 70 72 | 6f 74 6f 74 79 70 65 73 | ANSI pr|ototypes|
|000000a0| 20 62 75 69 6c 64 65 72 | 20 66 6f 72 20 43 2e 0a | builder| for C..|
|000000b0| 4d 65 73 73 61 67 65 2d | 49 44 3a 20 3c 38 38 30 |Message-|ID: <880|
|000000c0| 36 30 37 32 30 33 33 2e | 61 61 30 35 30 32 34 40 |6072033.|aa05024@|
|000000d0| 74 67 6f 75 6c 64 2e 64 | 6f 63 2e 69 63 2e 61 63 |tgould.d|oc.ic.ac|
|000000e0| 2e 75 6b 3e 0a 44 61 74 | 65 3a 20 31 32 20 4a 75 |.uk>.Dat|e: 12 Ju|
|000000f0| 6e 20 38 38 20 32 31 3a | 32 38 3a 34 34 20 47 4d |n 88 21:|28:44 GM|
|00000100| 54 0a 53 65 6e 64 65 72 | 3a 20 61 6c 6c 62 65 72 |T.Sender|: allber|
|00000110| 79 40 6e 63 6f 61 73 74 | 2e 55 55 43 50 0a 52 65 |y@ncoast|.UUCP.Re|
|00000120| 70 6c 79 2d 54 6f 3a 20 | 64 63 77 40 64 6f 63 2e |ply-To: |dcw@doc.|
|00000130| 69 63 2e 61 63 2e 75 6b | 20 28 44 75 6e 63 61 6e |ic.ac.uk| (Duncan|
|00000140| 20 57 68 69 74 65 29 0a | 4c 69 6e 65 73 3a 20 37 | White).|Lines: 7|
|00000150| 31 37 0a 41 70 70 72 6f | 76 65 64 3a 20 61 6c 6c |17.Appro|ved: all|
|00000160| 62 65 72 79 40 6e 63 6f | 61 73 74 2e 55 55 43 50 |bery@nco|ast.UUCP|
|00000170| 0a 0a 63 6f 6d 70 2e 73 | 6f 75 72 63 65 73 2e 6d |..comp.s|ources.m|
|00000180| 69 73 63 3a 20 56 6f 6c | 75 6d 65 20 33 2c 20 49 |isc: Vol|ume 3, I|
|00000190| 73 73 75 65 20 34 35 0a | 53 75 62 6d 69 74 74 65 |ssue 45.|Submitte|
|000001a0| 64 2d 42 79 3a 20 22 44 | 75 6e 63 61 6e 20 57 68 |d-By: "D|uncan Wh|
|000001b0| 69 74 65 22 20 3c 64 63 | 77 40 64 6f 63 2e 69 63 |ite" <dc|w@doc.ic|
|000001c0| 2e 61 63 2e 75 6b 3e 0a | 41 72 63 68 69 76 65 2d |.ac.uk>.|Archive-|
|000001d0| 4e 61 6d 65 3a 20 70 72 | 6f 74 6f 0a 0a 09 41 20 |Name: pr|oto...A |
|000001e0| 63 6f 75 70 6c 65 20 6f | 66 20 6d 6f 6e 74 68 73 |couple o|f months|
|000001f0| 20 61 67 6f 2c 20 49 20 | 6d 65 6e 74 69 6f 6e 65 | ago, I |mentione|
|00000200| 64 20 6f 6e 20 74 68 65 | 20 6e 65 77 73 20 74 68 |d on the| news th|
|00000210| 61 74 20 49 20 68 61 64 | 0a 09 77 72 69 74 74 65 |at I had|..writte|
|00000220| 6e 20 61 20 70 72 6f 74 | 6f 74 79 70 65 20 62 75 |n a prot|otype bu|
|00000230| 69 6c 64 65 72 20 66 6f | 72 20 43 2e 20 20 53 65 |ilder fo|r C. Se|
|00000240| 76 65 72 61 6c 20 70 65 | 6f 70 6c 65 20 6d 61 69 |veral pe|ople mai|
|00000250| 6c 65 64 0a 09 6d 65 20 | 72 65 71 75 65 73 74 69 |led..me |requesti|
|00000260| 6e 67 20 69 74 2c 20 62 | 75 74 20 49 20 6e 65 76 |ng it, b|ut I nev|
|00000270| 65 72 20 67 6f 74 20 61 | 72 6f 75 6e 64 20 74 6f |er got a|round to|
|00000280| 20 73 65 6e 64 69 6e 67 | 20 69 74 20 74 6f 0a 09 | sending| it to..|
|00000290| 74 68 65 6d 2e 0a 0a 09 | 41 20 63 6f 75 70 6c 65 |them....|A couple|
|000002a0| 20 6f 66 20 64 61 79 73 | 20 61 67 6f 2c 20 49 20 | of days| ago, I |
|000002b0| 6d 6f 64 69 66 69 65 64 | 20 74 68 65 20 73 6f 75 |modified| the sou|
|000002c0| 72 63 65 20 74 6f 20 61 | 6c 6c 6f 77 20 74 68 65 |rce to a|llow the|
|000002d0| 20 75 73 65 72 0a 09 74 | 6f 20 70 72 69 6e 74 20 | user..t|o print |
|000002e0| 6f 75 74 20 61 20 70 72 | 65 74 74 79 20 70 72 69 |out a pr|etty pri|
|000002f0| 6e 74 65 64 20 66 6f 72 | 6d 20 6f 66 20 74 68 65 |nted for|m of the|
|00000300| 20 66 75 6e 63 74 69 6f | 6e 73 20 72 65 63 6f 67 | functio|ns recog|
|00000310| 6e 69 73 65 64 2c 0a 09 | 77 68 69 63 68 20 73 65 |nised,..|which se|
|00000320| 65 6d 73 20 6c 69 6b 65 | 20 61 20 75 73 65 66 75 |ems like| a usefu|
|00000330| 6c 20 6f 70 74 69 6f 6e | 20 74 6f 20 68 61 76 65 |l option| to have|
|00000340| 21 0a 0a 09 41 6e 79 77 | 61 79 2c 20 49 20 77 6f |!...Anyw|ay, I wo|
|00000350| 6e 64 65 72 65 64 20 69 | 66 20 79 6f 75 27 64 20 |ndered i|f you'd |
|00000360| 6c 69 6b 65 20 74 6f 20 | 70 6f 73 74 20 74 68 65 |like to |post the|
|00000370| 20 73 6f 75 72 63 65 20 | 69 6e 74 6f 0a 09 63 6f | source |into..co|
|00000380| 6d 70 2e 73 6f 75 72 63 | 65 73 2e 6d 69 73 63 20 |mp.sourc|es.misc |
|00000390| 2e 2e 2e 2e 20 20 74 68 | 65 20 63 6f 64 65 20 73 |.... th|e code s|
|000003a0| 68 6f 75 6c 64 20 72 75 | 6e 20 6f 6e 20 61 6c 6d |hould ru|n on alm|
|000003b0| 6f 73 74 20 61 6e 79 0a | 09 6d 61 63 68 69 6e 65 |ost any.|.machine|
|000003c0| 2e 2e 2e 20 69 74 20 63 | 65 72 74 61 69 6e 6c 79 |... it c|ertainly|
|000003d0| 20 63 6f 6d 70 69 6c 65 | 73 20 61 6e 64 20 72 75 | compile|s and ru|
|000003e0| 6e 73 20 66 69 6e 65 20 | 6f 6e 20 61 6e 20 41 74 |ns fine |on an At|
|000003f0| 61 72 69 20 53 54 0a 09 | 77 69 74 68 20 4c 61 74 |ari ST..|with Lat|
|00000400| 74 69 63 65 20 43 20 33 | 2e 30 34 2c 20 6f 6e 20 |tice C 3|.04, on |
|00000410| 61 20 50 43 20 77 69 74 | 68 20 4d 69 63 72 6f 73 |a PC wit|h Micros|
|00000420| 6f 66 74 20 34 2e 30 2c | 20 61 6e 64 20 42 53 44 |oft 4.0,| and BSD|
|00000430| 34 2e 32 0a 09 61 6e 64 | 20 34 2e 33 20 55 6e 69 |4.2..and| 4.3 Uni|
|00000440| 78 20 77 69 74 68 20 73 | 74 61 6e 64 61 72 64 20 |x with s|tandard |
|00000450| 55 6e 69 78 20 43 2e 0a | 0a 09 5b 4f 66 20 63 6f |Unix C..|..[Of co|
|00000460| 75 72 73 65 2c 20 6f 6e | 20 73 74 61 6e 64 61 72 |urse, on| standar|
|00000470| 64 20 55 6e 69 78 20 63 | 6f 6d 70 69 6c 65 72 73 |d Unix c|ompilers|
|00000480| 2c 20 69 74 20 69 73 20 | 61 20 72 61 74 68 65 72 |, it is |a rather|
|00000490| 0a 09 70 6f 69 6e 74 6c | 65 73 73 20 3a 20 62 75 |..pointl|ess : bu|
|000004a0| 74 20 49 20 64 65 76 65 | 6c 6f 70 20 6f 6e 20 55 |t I deve|lop on U|
|000004b0| 6e 69 78 20 61 6e 64 20 | 74 68 65 20 53 54 2c 20 |nix and |the ST, |
|000004c0| 73 6f 20 61 70 70 72 65 | 63 69 61 74 65 0a 09 74 |so appre|ciate..t|
|000004d0| 68 65 20 61 62 69 6c 69 | 74 79 20 74 6f 20 70 72 |he abili|ty to pr|
|000004e0| 6f 74 6f 74 79 70 65 20 | 6f 6e 20 65 69 74 68 65 |ototype |on eithe|
|000004f0| 72 20 6d 61 63 68 69 6e | 65 2e 2e 2e 5d 0a 0a 09 |r machin|e...]...|
|00000500| 09 44 75 6e 63 61 6e 20 | 57 68 69 74 65 0a 0a 2d |.Duncan |White..-|
|00000510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000520| 20 43 75 74 20 68 65 72 | 65 20 2d 2d 2d 2d 2d 2d | Cut her|e ------|
|00000530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000540| 2d 20 43 75 74 20 68 65 | 72 65 20 2d 2d 2d 2d 2d |- Cut he|re -----|
|00000550| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 23 21 20 2f 62 69 6e |--------|.#! /bin|
|00000560| 2f 73 68 0a 23 20 54 68 | 69 73 20 69 73 20 61 20 |/sh.# Th|is is a |
|00000570| 73 68 65 6c 6c 20 61 72 | 63 68 69 76 65 2c 20 6d |shell ar|chive, m|
|00000580| 65 61 6e 69 6e 67 3a 0a | 23 20 31 2e 20 52 65 6d |eaning:.|# 1. Rem|
|00000590| 6f 76 65 20 65 76 65 72 | 79 74 68 69 6e 67 20 61 |ove ever|ything a|
|000005a0| 62 6f 76 65 20 74 68 65 | 20 23 21 20 2f 62 69 6e |bove the| #! /bin|
|000005b0| 2f 73 68 20 6c 69 6e 65 | 2e 0a 23 20 32 2e 20 53 |/sh line|..# 2. S|
|000005c0| 61 76 65 20 74 68 65 20 | 72 65 73 75 6c 74 69 6e |ave the |resultin|
|000005d0| 67 20 74 65 78 74 20 69 | 6e 20 61 20 66 69 6c 65 |g text i|n a file|
|000005e0| 2e 0a 23 20 33 2e 20 45 | 78 65 63 75 74 65 20 74 |..# 3. E|xecute t|
|000005f0| 68 65 20 66 69 6c 65 20 | 77 69 74 68 20 2f 62 69 |he file |with /bi|
|00000600| 6e 2f 73 68 20 28 6e 6f | 74 20 63 73 68 29 20 74 |n/sh (no|t csh) t|
|00000610| 6f 20 63 72 65 61 74 65 | 20 74 68 65 20 66 69 6c |o create| the fil|
|00000620| 65 73 3a 0a 23 09 4d 61 | 6b 65 66 69 6c 65 0a 23 |es:.#.Ma|kefile.#|
|00000630| 09 64 63 77 2e 68 0a 23 | 09 64 63 77 6f 73 2e 68 |.dcw.h.#|.dcwos.h|
|00000640| 0a 23 09 70 72 6f 74 6f | 2e 31 0a 23 09 70 72 6f |.#.proto|.1.#.pro|
|00000650| 74 6f 2e 63 0a 23 09 74 | 65 73 74 70 72 6f 74 6f |to.c.#.t|estproto|
|00000660| 0a 23 20 54 68 69 73 20 | 61 72 63 68 69 76 65 20 |.# This |archive |
|00000670| 63 72 65 61 74 65 64 3a | 20 54 75 65 20 4a 75 6e |created:| Tue Jun|
|00000680| 20 20 37 20 32 30 3a 32 | 36 3a 35 35 20 31 39 38 | 7 20:2|6:55 198|
|00000690| 38 0a 65 78 70 6f 72 74 | 20 50 41 54 48 3b 20 50 |8.export| PATH; P|
|000006a0| 41 54 48 3d 2f 62 69 6e | 3a 24 50 41 54 48 0a 65 |ATH=/bin|:$PATH.e|
|000006b0| 63 68 6f 20 73 68 61 72 | 3a 20 65 78 74 72 61 63 |cho shar|: extrac|
|000006c0| 74 69 6e 67 20 22 27 4d | 61 6b 65 66 69 6c 65 27 |ting "'M|akefile'|
|000006d0| 22 20 27 28 36 32 20 63 | 68 61 72 61 63 74 65 72 |" '(62 c|haracter|
|000006e0| 73 29 27 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |s)'.if t|est -f '|
|000006f0| 4d 61 6b 65 66 69 6c 65 | 27 0a 74 68 65 6e 0a 09 |Makefile|'.then..|
|00000700| 65 63 68 6f 20 73 68 61 | 72 3a 20 77 69 6c 6c 20 |echo sha|r: will |
|00000710| 6e 6f 74 20 6f 76 65 72 | 2d 77 72 69 74 65 20 65 |not over|-write e|
|00000720| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 22 27 4d |xisting |file "'M|
|00000730| 61 6b 65 66 69 6c 65 27 | 22 0a 65 6c 73 65 0a 63 |akefile'|".else.c|
|00000740| 61 74 20 3c 3c 20 5c 53 | 48 41 52 5f 45 4f 46 20 |at << \S|HAR_EOF |
|00000750| 3e 20 27 4d 61 6b 65 66 | 69 6c 65 27 0a 70 72 6f |> 'Makef|ile'.pro|
|00000760| 74 6f 3a 09 70 72 6f 74 | 6f 2e 63 0a 09 63 63 20 |to:.prot|o.c..cc |
|00000770| 2d 6f 20 70 72 6f 74 6f | 20 70 72 6f 74 6f 2e 63 |-o proto| proto.c|
|00000780| 0a 0a 63 6c 65 61 6e 3a | 0a 09 2f 62 69 6e 2f 72 |..clean:|../bin/r|
|00000790| 6d 20 2d 66 20 70 72 6f | 74 6f 0a 53 48 41 52 5f |m -f pro|to.SHAR_|
|000007a0| 45 4f 46 0a 69 66 20 74 | 65 73 74 20 36 32 20 2d |EOF.if t|est 62 -|
|000007b0| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 4d 61 |ne "`wc |-c < 'Ma|
|000007c0| 6b 65 66 69 6c 65 27 60 | 22 0a 74 68 65 6e 0a 09 |kefile'`|".then..|
|000007d0| 65 63 68 6f 20 73 68 61 | 72 3a 20 65 72 72 6f 72 |echo sha|r: error|
|000007e0| 20 74 72 61 6e 73 6d 69 | 74 74 69 6e 67 20 22 27 | transmi|tting "'|
|000007f0| 4d 61 6b 65 66 69 6c 65 | 27 22 20 27 28 73 68 6f |Makefile|'" '(sho|
|00000800| 75 6c 64 20 68 61 76 65 | 20 62 65 65 6e 20 36 32 |uld have| been 62|
|00000810| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 66 69 | charact|ers)'.fi|
|00000820| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00000830| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 65 |rwriting| check.e|
|00000840| 63 68 6f 20 73 68 61 72 | 3a 20 65 78 74 72 61 63 |cho shar|: extrac|
|00000850| 74 69 6e 67 20 22 27 64 | 63 77 2e 68 27 22 20 27 |ting "'d|cw.h'" '|
|00000860| 28 31 33 30 36 20 63 68 | 61 72 61 63 74 65 72 73 |(1306 ch|aracters|
|00000870| 29 27 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 64 |)'.if te|st -f 'd|
|00000880| 63 77 2e 68 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |cw.h'.th|en..echo|
|00000890| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|000008a0| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000008b0| 69 6e 67 20 66 69 6c 65 | 20 22 27 64 63 77 2e 68 |ing file| "'dcw.h|
|000008c0| 27 22 0a 65 6c 73 65 0a | 63 61 74 20 3c 3c 20 5c |'".else.|cat << \|
|000008d0| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 64 63 77 2e |SHAR_EOF| > 'dcw.|
|000008e0| 68 27 0a 2f 2a 0a 20 2a | 09 4d 79 20 73 74 61 6e |h'./*. *|.My stan|
|000008f0| 64 61 72 64 20 69 6e 63 | 6c 75 64 65 20 66 69 6c |dard inc|lude fil|
|00000900| 65 0a 20 2a 0a 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 20 |e. *. **|******* |
|00000910| 48 69 73 74 6f 72 79 3a | 0a 20 2a 0a 20 2a 09 56 |History:|. *. *.V|
|00000920| 65 72 73 69 6f 6e 09 57 | 68 6f 09 44 61 74 65 09 |ersion.W|ho.Date.|
|00000930| 09 43 6f 6d 6d 65 6e 74 | 73 0a 20 2a 09 3d 3d 3d |.Comment|s. *.===|
|00000940| 3d 3d 3d 3d 09 3d 3d 3d | 09 3d 3d 3d 3d 09 09 3d |====.===|.====..=|
|00000950| 3d 3d 3d 3d 3d 3d 3d 0a | 20 2a 09 31 2e 33 2e 33 |=======.| *.1.3.3|
|00000960| 09 64 63 77 09 36 74 68 | 20 4a 75 6e 65 20 31 39 |.dcw.6th| June 19|
|00000970| 38 38 09 4d 61 64 65 20 | 42 4f 4f 4c 20 26 20 42 |88.Made |BOOL & B|
|00000980| 4f 4f 4c 45 41 4e 20 63 | 68 61 72 2c 20 6e 6f 74 |OOLEAN c|har, not|
|00000990| 20 69 6e 74 21 21 0a 20 | 2a 09 31 2e 33 2e 32 09 | int!!. |*.1.3.2.|
|000009a0| 64 63 77 09 32 36 74 68 | 20 41 70 72 20 31 39 38 |dcw.26th| Apr 198|
|000009b0| 38 09 41 64 64 65 64 20 | 4e 4f 43 5f 41 4c 4c 4f |8.Added |NOC_ALLO|
|000009c0| 43 2c 20 4e 4f 43 5f 4e | 45 57 2c 20 6d 61 64 65 |C, NOC_N|EW, made|
|000009d0| 0a 20 2a 09 09 09 09 09 | 43 4f 50 59 4f 46 20 63 |. *.....|COPYOF c|
|000009e0| 61 6c 6c 20 4e 4f 43 5f | 41 4c 4c 4f 43 20 21 21 |all NOC_|ALLOC !!|
|000009f0| 21 0a 20 2a 09 31 2e 33 | 2e 31 09 64 63 77 09 32 |!. *.1.3|.1.dcw.2|
|00000a00| 6e 64 20 4d 61 72 20 31 | 39 38 38 09 43 68 61 6e |nd Mar 1|988.Chan|
|00000a10| 67 65 64 20 6e 61 6d 65 | 20 74 6f 20 64 63 77 2e |ged name| to dcw.|
|00000a20| 68 20 61 6e 64 20 64 63 | 77 6f 73 2e 68 0a 20 2a |h and dc|wos.h. *|
|00000a30| 09 09 09 09 09 69 6e 63 | 6c 75 64 65 64 20 73 74 |.....inc|luded st|
|00000a40| 72 69 6e 67 73 2e 68 20 | 61 6e 64 20 63 74 79 70 |rings.h |and ctyp|
|00000a50| 65 2e 68 0a 20 2a 09 09 | 09 09 09 61 64 64 65 64 |e.h. *..|...added|
|00000a60| 20 65 78 74 65 72 6e 20 | 63 61 6c 6c 6f 63 28 29 | extern |calloc()|
|00000a70| 20 64 65 63 6c 6e 0a 20 | 2a 09 31 2e 33 09 64 63 | decln. |*.1.3.dc|
|00000a80| 77 09 39 74 68 20 53 65 | 70 20 31 39 38 37 09 49 |w.9th Se|p 1987.I|
|00000a90| 6e 63 6c 75 64 65 64 20 | 6f 73 2e 68 0a 20 2a 09 |ncluded |os.h. *.|
|00000aa0| 31 2e 32 09 64 63 77 09 | 31 39 74 68 20 4a 75 6c |1.2.dcw.|19th Jul|
|00000ab0| 79 20 31 39 38 37 09 4d | 61 64 65 20 65 78 74 65 |y 1987.M|ade exte|
|00000ac0| 72 6e 61 6c 20 27 65 78 | 74 65 72 6e 27 20 5b 77 |rnal 'ex|tern' [w|
|00000ad0| 61 73 20 6e 75 6c 6c 5d | 0a 20 2a 09 09 09 09 09 |as null]|. *.....|
|00000ae0| 61 6e 64 20 61 64 64 65 | 64 20 62 72 61 63 6b 65 |and adde|d bracke|
|00000af0| 74 73 20 69 6e 20 73 74 | 72 65 71 0a 20 2a 09 31 |ts in st|req. *.1|
|00000b00| 2e 31 09 64 63 77 09 32 | 6e 64 20 4a 75 6c 79 20 |.1.dcw.2|nd July |
|00000b10| 31 39 38 37 09 41 64 64 | 65 64 20 42 4f 4f 4c 45 |1987.Add|ed BOOLE|
|00000b20| 41 4e 20 61 73 20 77 65 | 6c 6c 20 61 73 20 42 4f |AN as we|ll as BO|
|00000b30| 4f 4c 20 21 0a 20 2a 09 | 31 2e 30 09 64 63 77 09 |OL !. *.|1.0.dcw.|
|00000b40| 31 30 74 68 20 4a 75 6e | 65 20 31 39 38 37 09 57 |10th Jun|e 1987.W|
|00000b50| 72 6f 74 65 20 69 74 2e | 0a 20 2a 2f 0a 0a 0a 23 |rote it.|. */...#|
|00000b60| 69 6e 63 6c 75 64 65 20 | 3c 73 74 64 69 6f 2e 68 |include |<stdio.h|
|00000b70| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 72 69 |>.#inclu|de <stri|
|00000b80| 6e 67 73 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |ngs.h>.#|include |
|00000b90| 3c 63 74 79 70 65 2e 68 | 3e 0a 23 69 6e 63 6c 75 |<ctype.h|>.#inclu|
|00000ba0| 64 65 20 22 64 63 77 6f | 73 2e 68 22 0a 0a 65 78 |de "dcwo|s.h"..ex|
|00000bb0| 74 65 72 6e 20 63 68 61 | 72 20 2a 63 61 6c 6c 6f |tern cha|r *callo|
|00000bc0| 63 28 29 2c 20 6d 61 6c | 6c 6f 63 28 29 3b 0a 0a |c(), mal|loc();..|
|00000bd0| 23 64 65 66 69 6e 65 20 | 41 53 53 45 52 54 28 78 |#define |ASSERT(x|
|00000be0| 2c 79 29 20 69 66 28 21 | 28 78 29 29 7b 70 72 69 |,y) if(!|(x)){pri|
|00000bf0| 6e 74 66 20 79 3b 65 78 | 69 74 28 31 29 3b 7d 0a |ntf y;ex|it(1);}.|
|00000c00| 23 64 65 66 69 6e 65 20 | 41 42 4f 52 54 28 79 29 |#define |ABORT(y)|
|00000c10| 20 20 20 20 41 53 53 45 | 52 54 28 46 41 4c 53 45 | ASSE|RT(FALSE|
|00000c20| 2c 79 29 0a 23 64 65 66 | 69 6e 65 20 46 4f 52 57 |,y).#def|ine FORW|
|00000c30| 41 52 44 0a 23 64 65 66 | 69 6e 65 20 45 58 54 45 |ARD.#def|ine EXTE|
|00000c40| 52 4e 41 4c 20 20 20 20 | 65 78 74 65 72 6e 0a 0a |RNAL |extern..|
|00000c50| 23 64 65 66 69 6e 65 20 | 41 4c 4c 4f 43 28 6e 2c |#define |ALLOC(n,|
|00000c60| 74 29 20 28 74 20 2a 29 | 63 61 6c 6c 6f 63 28 28 |t) (t *)|calloc((|
|00000c70| 6e 29 2c 73 69 7a 65 6f | 66 28 74 29 29 0a 23 64 |n),sizeo|f(t)).#d|
|00000c80| 65 66 69 6e 65 20 4e 45 | 57 28 74 29 20 20 20 20 |efine NE|W(t) |
|00000c90| 20 41 4c 4c 4f 43 28 31 | 2c 74 29 0a 0a 2f 2a 20 | ALLOC(1|,t)../* |
|00000ca0| 6d 61 6b 65 20 63 6f 70 | 79 20 6f 66 20 6f 6c 64 |make cop|y of old|
|00000cb0| 20 73 74 72 69 6e 67 20 | 69 6e 74 6f 20 6e 65 77 | string |into new|
|00000cc0| 3a 20 77 61 73 20 41 4c | 4c 4f 43 20 6e 6f 74 20 |: was AL|LOC not |
|00000cd0| 4e 4f 43 5f 41 4c 4c 4f | 43 20 2a 2f 0a 23 64 65 |NOC_ALLO|C */.#de|
|00000ce0| 66 69 6e 65 20 43 4f 50 | 59 4f 46 28 6e 65 77 2c |fine COP|YOF(new,|
|00000cf0| 6f 6c 64 29 20 20 7b 6e | 65 77 3d 4e 4f 43 5f 41 |old) {n|ew=NOC_A|
|00000d00| 4c 4c 4f 43 28 31 2b 73 | 74 72 6c 65 6e 28 6f 6c |LLOC(1+s|trlen(ol|
|00000d10| 64 29 2c 63 68 61 72 29 | 3b 73 74 72 63 70 79 28 |d),char)|;strcpy(|
|00000d20| 6e 65 77 2c 6f 6c 64 29 | 3b 7d 0a 0a 23 64 65 66 |new,old)|;}..#def|
|00000d30| 69 6e 65 20 4e 4f 43 5f | 41 4c 4c 4f 43 28 6e 2c |ine NOC_|ALLOC(n,|
|00000d40| 74 29 20 28 74 20 2a 29 | 6d 61 6c 6c 6f 63 28 28 |t) (t *)|malloc((|
|00000d50| 6e 29 2a 73 69 7a 65 6f | 66 28 74 29 29 0a 23 64 |n)*sizeo|f(t)).#d|
|00000d60| 65 66 69 6e 65 20 4e 4f | 43 5f 4e 45 57 28 74 29 |efine NO|C_NEW(t)|
|00000d70| 20 20 20 20 20 4e 4f 43 | 5f 41 4c 4c 4f 43 28 31 | NOC|_ALLOC(1|
|00000d80| 2c 74 29 0a 0a 23 64 65 | 66 69 6e 65 20 73 74 72 |,t)..#de|fine str|
|00000d90| 65 71 28 78 2c 79 29 20 | 20 28 73 74 72 63 6d 70 |eq(x,y) | (strcmp|
|00000da0| 28 28 78 29 2c 28 79 29 | 29 3d 3d 30 29 0a 0a 23 |((x),(y)|)==0)..#|
|00000db0| 64 65 66 69 6e 65 20 42 | 4f 4f 4c 20 20 20 20 63 |define B|OOL c|
|00000dc0| 68 61 72 0a 23 64 65 66 | 69 6e 65 20 42 4f 4f 4c |har.#def|ine BOOL|
|00000dd0| 45 41 4e 20 63 68 61 72 | 0a 23 64 65 66 69 6e 65 |EAN char|.#define|
|00000de0| 20 54 52 55 45 20 20 20 | 20 31 0a 23 64 65 66 69 | TRUE | 1.#defi|
|00000df0| 6e 65 20 46 41 4c 53 45 | 20 20 20 30 0a 53 48 41 |ne FALSE| 0.SHA|
|00000e00| 52 5f 45 4f 46 0a 69 66 | 20 74 65 73 74 20 31 33 |R_EOF.if| test 13|
|00000e10| 30 36 20 2d 6e 65 20 22 | 60 77 63 20 2d 63 20 3c |06 -ne "|`wc -c <|
|00000e20| 20 27 64 63 77 2e 68 27 | 60 22 0a 74 68 65 6e 0a | 'dcw.h'|`".then.|
|00000e30| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 65 72 72 6f |.echo sh|ar: erro|
|00000e40| 72 20 74 72 61 6e 73 6d | 69 74 74 69 6e 67 20 22 |r transm|itting "|
|00000e50| 27 64 63 77 2e 68 27 22 | 20 27 28 73 68 6f 75 6c |'dcw.h'"| '(shoul|
|00000e60| 64 20 68 61 76 65 20 62 | 65 65 6e 20 31 33 30 36 |d have b|een 1306|
|00000e70| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 66 69 | charact|ers)'.fi|
|00000e80| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00000e90| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 65 |rwriting| check.e|
|00000ea0| 63 68 6f 20 73 68 61 72 | 3a 20 65 78 74 72 61 63 |cho shar|: extrac|
|00000eb0| 74 69 6e 67 20 22 27 64 | 63 77 6f 73 2e 68 27 22 |ting "'d|cwos.h'"|
|00000ec0| 20 27 28 32 37 39 20 63 | 68 61 72 61 63 74 65 72 | '(279 c|haracter|
|00000ed0| 73 29 27 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |s)'.if t|est -f '|
|00000ee0| 64 63 77 6f 73 2e 68 27 | 0a 74 68 65 6e 0a 09 65 |dcwos.h'|.then..e|
|00000ef0| 63 68 6f 20 73 68 61 72 | 3a 20 77 69 6c 6c 20 6e |cho shar|: will n|
|00000f00| 6f 74 20 6f 76 65 72 2d | 77 72 69 74 65 20 65 78 |ot over-|write ex|
|00000f10| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 22 27 64 63 |isting f|ile "'dc|
|00000f20| 77 6f 73 2e 68 27 22 0a | 65 6c 73 65 0a 63 61 74 |wos.h'".|else.cat|
|00000f30| 20 3c 3c 20 5c 53 48 41 | 52 5f 45 4f 46 20 3e 20 | << \SHA|R_EOF > |
|00000f40| 27 64 63 77 6f 73 2e 68 | 27 0a 2f 2a 0a 20 2a 20 |'dcwos.h|'./*. * |
|00000f50| 41 6c 74 65 72 20 74 68 | 69 73 20 74 6f 20 73 68 |Alter th|is to sh|
|00000f60| 6f 77 20 77 68 69 63 68 | 20 6f 2f 73 20 79 6f 75 |ow which| o/s you|
|00000f70| 20 68 61 76 65 0a 20 2a | 2f 0a 0a 23 64 65 66 69 | have. *|/..#defi|
|00000f80| 6e 65 20 55 4e 49 58 0a | 23 75 6e 64 65 66 20 41 |ne UNIX.|#undef A|
|00000f90| 54 41 52 49 53 54 0a 23 | 75 6e 64 65 66 20 4d 53 |TARIST.#|undef MS|
|00000fa0| 44 4f 53 0a 0a 2f 2a 0a | 20 2a 20 41 6c 74 65 72 |DOS../*.| * Alter|
|00000fb0| 20 74 68 69 73 20 74 6f | 20 73 68 6f 77 20 77 68 | this to| show wh|
|00000fc0| 69 63 68 20 63 6f 6d 70 | 69 6c 65 72 20 79 6f 75 |ich comp|iler you|
|00000fd0| 20 68 61 76 65 3a 0a 20 | 2a 2f 0a 0a 23 64 65 66 | have:. |*/..#def|
|00000fe0| 69 6e 65 20 55 4e 49 58 | 43 0a 23 75 6e 64 65 66 |ine UNIX|C.#undef|
|00000ff0| 20 4c 41 54 54 49 43 45 | 33 30 34 0a 23 75 6e 64 | LATTICE|304.#und|
|00001000| 65 66 20 4d 49 43 52 4f | 53 4f 46 54 34 0a 0a 2f |ef MICRO|SOFT4../|
|00001010| 2a 0a 20 2a 20 44 65 66 | 69 6e 65 20 74 68 69 73 |*. * Def|ine this|
|00001020| 20 6f 6e 6c 79 20 69 66 | 20 79 6f 75 72 20 63 6f | only if| your co|
|00001030| 6d 70 69 6c 65 72 20 73 | 75 70 70 6f 72 74 73 20 |mpiler s|upports |
|00001040| 70 72 6f 74 6f 74 79 70 | 65 73 0a 20 2a 2f 0a 0a |prototyp|es. */..|
|00001050| 23 75 6e 64 65 66 20 48 | 41 53 50 52 4f 54 4f 53 |#undef H|ASPROTOS|
|00001060| 0a 53 48 41 52 5f 45 4f | 46 0a 69 66 20 74 65 73 |.SHAR_EO|F.if tes|
|00001070| 74 20 32 37 39 20 2d 6e | 65 20 22 60 77 63 20 2d |t 279 -n|e "`wc -|
|00001080| 63 20 3c 20 27 64 63 77 | 6f 73 2e 68 27 60 22 0a |c < 'dcw|os.h'`".|
|00001090| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|000010a0| 20 65 72 72 6f 72 20 74 | 72 61 6e 73 6d 69 74 74 | error t|ransmitt|
|000010b0| 69 6e 67 20 22 27 64 63 | 77 6f 73 2e 68 27 22 20 |ing "'dc|wos.h'" |
|000010c0| 27 28 73 68 6f 75 6c 64 | 20 68 61 76 65 20 62 65 |'(should| have be|
|000010d0| 65 6e 20 32 37 39 20 63 | 68 61 72 61 63 74 65 72 |en 279 c|haracter|
|000010e0| 73 29 27 0a 66 69 0a 66 | 69 20 23 20 65 6e 64 20 |s)'.fi.f|i # end |
|000010f0| 6f 66 20 6f 76 65 72 77 | 72 69 74 69 6e 67 20 63 |of overw|riting c|
|00001100| 68 65 63 6b 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |heck.ech|o shar: |
|00001110| 65 78 74 72 61 63 74 69 | 6e 67 20 22 27 70 72 6f |extracti|ng "'pro|
|00001120| 74 6f 2e 31 27 22 20 27 | 28 31 34 38 39 20 63 68 |to.1'" '|(1489 ch|
|00001130| 61 72 61 63 74 65 72 73 | 29 27 0a 69 66 20 74 65 |aracters|)'.if te|
|00001140| 73 74 20 2d 66 20 27 70 | 72 6f 74 6f 2e 31 27 0a |st -f 'p|roto.1'.|
|00001150| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|00001160| 20 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | will no|t over-w|
|00001170| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00001180| 6c 65 20 22 27 70 72 6f | 74 6f 2e 31 27 22 0a 65 |le "'pro|to.1'".e|
|00001190| 6c 73 65 0a 63 61 74 20 | 3c 3c 20 5c 53 48 41 52 |lse.cat |<< \SHAR|
|000011a0| 5f 45 4f 46 20 3e 20 27 | 70 72 6f 74 6f 2e 31 27 |_EOF > '|proto.1'|
|000011b0| 0a 2e 45 56 0a 2e 54 31 | 20 70 72 6f 74 6f 20 31 |..EV..T1| proto 1|
|000011c0| 20 22 32 2f 36 2f 38 38 | 22 0a 2e 53 48 20 4e 41 | "2/6/88|"..SH NA|
|000011d0| 4d 45 0a 70 72 6f 74 6f | 20 5c 2d 20 62 75 69 6c |ME.proto| \- buil|
|000011e0| 64 20 41 4e 53 49 20 73 | 74 79 6c 65 20 70 72 6f |d ANSI s|tyle pro|
|000011f0| 74 6f 74 79 70 65 73 20 | 66 72 6f 6d 20 43 20 73 |totypes |from C s|
|00001200| 6f 75 72 63 65 20 63 6f | 64 65 2e 0a 2e 53 48 20 |ource co|de...SH |
|00001210| 53 59 4e 54 41 58 0a 2e | 42 20 70 72 6f 74 6f 0a |SYNTAX..|B proto.|
|00001220| 5b 5c 66 42 5c 2d 66 5c | 66 50 5d 20 20 5c 66 49 |[\fB\-f\|fP] \fI|
|00001230| 69 6e 70 75 74 66 69 6c | 65 5c 66 50 20 5b 5c 66 |inputfil|e\fP [\f|
|00001240| 49 6f 75 74 70 75 74 66 | 69 6c 65 5c 66 70 5d 0a |Ioutputf|ile\fp].|
|00001250| 2e 53 48 20 44 45 53 43 | 52 49 50 54 49 4f 4e 0a |.SH DESC|RIPTION.|
|00001260| 2e 49 20 50 72 6f 74 6f | 0a 62 75 69 6c 64 73 20 |.I Proto|.builds |
|00001270| 61 20 6c 69 73 74 20 6f | 66 20 41 4e 53 49 2d 73 |a list o|f ANSI-s|
|00001280| 74 79 6c 65 20 65 78 74 | 65 72 6e 61 6c 20 64 65 |tyle ext|ernal de|
|00001290| 63 6c 61 72 61 74 69 6f | 6e 73 20 5b 5c 66 49 70 |claratio|ns [\fIp|
|000012a0| 72 6f 74 6f 74 79 70 65 | 73 5c 66 50 5d 20 66 6f |rototype|s\fP] fo|
|000012b0| 72 20 61 6c 6c 0a 74 68 | 65 20 66 75 6e 63 74 69 |r all.th|e functi|
|000012c0| 6f 6e 73 20 69 6e 20 61 | 20 67 69 76 65 6e 20 43 |ons in a| given C|
|000012d0| 20 73 6f 75 72 63 65 20 | 66 69 6c 65 2e 0a 49 74 | source |file..It|
|000012e0| 20 70 72 6f 64 75 63 65 | 73 20 74 68 69 73 20 6c | produce|s this l|
|000012f0| 69 73 74 20 69 6e 20 74 | 77 6f 20 66 6f 72 6d 73 |ist in t|wo forms|
|00001300| 3a 0a 2e 6e 66 0a 09 23 | 69 66 64 65 66 20 48 41 |:..nf..#|ifdef HA|
|00001310| 53 50 52 4f 54 4f 53 0a | 09 3c 6e 69 63 65 20 65 |SPROTOS.|.<nice e|
|00001320| 78 74 65 72 6e 61 6c 20 | 70 72 6f 74 6f 74 79 70 |xternal |prototyp|
|00001330| 65 20 64 65 63 6c 61 72 | 61 74 69 6f 6e 73 3e 0a |e declar|ations>.|
|00001340| 09 23 65 6c 73 65 0a 09 | 3c 6f 6c 64 20 69 6b 6b |.#else..|<old ikk|
|00001350| 79 20 65 78 74 65 72 6e | 61 6c 20 64 65 63 6c 61 |y extern|al decla|
|00001360| 72 61 74 69 6f 6e 73 20 | 66 6f 72 20 55 4e 49 58 |rations |for UNIX|
|00001370| 20 43 20 63 6f 6d 70 69 | 6c 65 72 73 3e 0a 09 23 | C compi|lers>..#|
|00001380| 65 6e 64 69 66 0a 2e 66 | 69 0a 2e 50 50 0a 59 6f |endif..f|i..PP.Yo|
|00001390| 75 20 63 61 6e 20 74 68 | 65 6e 20 69 6e 63 6f 72 |u can th|en incor|
|000013a0| 70 6f 72 61 74 65 20 74 | 68 65 20 66 69 6c 65 20 |porate t|he file |
|000013b0| 67 65 6e 65 72 61 74 65 | 64 20 69 6e 74 6f 20 79 |generate|d into y|
|000013c0| 6f 75 72 20 2e 68 20 66 | 69 6c 65 73 2e 0a 4d 61 |our .h f|iles..Ma|
|000013d0| 6b 65 20 73 75 72 65 20 | 79 6f 75 20 23 64 65 66 |ke sure |you #def|
|000013e0| 69 6e 65 20 48 41 53 50 | 52 4f 54 4f 53 20 69 66 |ine HASP|ROTOS if|
|000013f0| 66 20 79 6f 75 72 20 63 | 6f 6d 70 69 6c 65 72 20 |f your c|ompiler |
|00001400| 73 75 70 70 6f 72 74 73 | 0a 70 72 6f 74 6f 74 79 |supports|.prototy|
|00001410| 70 65 73 3a 20 6f 74 68 | 65 72 77 69 73 65 20 79 |pes: oth|erwise y|
|00001420| 6f 75 27 6c 6c 20 6c 6f | 73 65 20 61 6c 6c 20 74 |ou'll lo|se all t|
|00001430| 68 65 20 61 64 76 61 6e | 74 61 67 65 73 2e 0a 2e |he advan|tages...|
|00001440| 50 50 0a 49 66 20 79 6f | 75 20 6f 6d 69 74 20 74 |PP.If yo|u omit t|
|00001450| 68 65 20 6f 75 74 70 75 | 74 20 66 69 6c 65 20 66 |he outpu|t file f|
|00001460| 72 6f 6d 20 74 68 65 20 | 63 6f 6d 6d 61 6e 64 20 |rom the |command |
|00001470| 6c 69 6e 65 2c 0a 74 68 | 65 20 73 74 61 6e 64 61 |line,.th|e standa|
|00001480| 72 64 20 6f 75 74 70 75 | 74 20 77 69 6c 6c 20 62 |rd outpu|t will b|
|00001490| 65 20 75 73 65 64 2e 0a | 2e 53 48 20 4f 50 54 49 |e used..|.SH OPTI|
|000014a0| 4f 4e 53 0a 54 68 65 20 | 6f 6e 6c 79 20 6f 70 74 |ONS.The |only opt|
|000014b0| 69 6f 6e 20 74 68 69 73 | 20 70 72 6f 67 72 61 6d |ion this| program|
|000014c0| 20 61 63 63 65 70 74 73 | 20 69 73 20 5c 66 42 2d | accepts| is \fB-|
|000014d0| 66 5c 66 50 2c 0a 77 68 | 69 63 68 20 63 61 75 73 |f\fP,.wh|ich caus|
|000014e0| 65 73 20 69 74 20 74 6f | 20 70 6c 61 63 65 20 61 |es it to| place a|
|000014f0| 20 70 72 65 74 74 79 2d | 70 72 69 6e 74 65 64 20 | pretty-|printed |
|00001500| 66 6f 72 6d 20 6f 66 20 | 74 68 65 0a 6f 72 69 67 |form of |the.orig|
|00001510| 69 6e 61 6c 20 66 75 6e | 63 74 69 6f 6e 20 64 65 |inal fun|ction de|
|00001520| 63 6c 61 72 61 74 69 6f | 6e 73 20 69 6e 20 74 68 |claratio|ns in th|
|00001530| 65 20 6f 75 74 70 75 74 | 20 66 69 6c 65 2c 0a 72 |e output| file,.r|
|00001540| 61 74 68 65 72 20 74 68 | 61 6e 20 74 68 65 20 70 |ather th|an the p|
|00001550| 72 6f 74 6f 74 79 70 65 | 73 2e 0a 2e 53 48 20 50 |rototype|s...SH P|
|00001560| 4f 52 54 41 42 49 4c 49 | 54 59 0a 54 68 69 73 20 |ORTABILI|TY.This |
|00001570| 70 72 6f 67 72 61 6d 20 | 73 68 6f 75 6c 64 20 77 |program |should w|
|00001580| 6f 72 6b 20 66 69 6e 65 | 20 6f 6e 20 61 6e 79 20 |ork fine| on any |
|00001590| 73 79 73 74 65 6d 20 77 | 69 74 68 20 61 20 43 20 |system w|ith a C |
|000015a0| 63 6f 6d 70 69 6c 65 72 | 2e 0a 49 66 20 69 74 20 |compiler|..If it |
|000015b0| 64 6f 65 73 6e 27 74 2c | 20 70 6c 65 61 73 65 20 |doesn't,| please |
|000015c0| 6c 65 74 20 6d 65 20 6b | 6e 6f 77 21 0a 2e 53 48 |let me k|now!..SH|
|000015d0| 20 41 55 54 48 4f 52 0a | 44 75 6e 63 61 6e 20 57 | AUTHOR.|Duncan W|
|000015e0| 68 69 74 65 2c 0a 44 65 | 70 74 20 4f 66 20 43 6f |hite,.De|pt Of Co|
|000015f0| 6d 70 75 74 69 6e 67 2c | 0a 49 6d 70 65 72 69 61 |mputing,|.Imperia|
|00001600| 6c 20 43 6f 6c 6c 65 67 | 65 2c 0a 4c 6f 6e 64 6f |l Colleg|e,.Londo|
|00001610| 6e 2c 0a 45 6e 67 6c 61 | 6e 64 2e 0a 2e 53 48 20 |n,.Engla|nd...SH |
|00001620| 4c 49 4d 49 54 41 54 49 | 4f 4e 53 0a 54 68 65 20 |LIMITATI|ONS.The |
|00001630| 67 72 61 6d 6d 61 72 20 | 75 73 65 64 20 66 6f 72 |grammar |used for|
|00001640| 20 70 61 72 73 69 6e 67 | 20 69 73 20 69 6e 63 6f | parsing| is inco|
|00001650| 6d 70 6c 65 74 65 2e 0a | 49 6e 20 70 61 72 74 69 |mplete..|In parti|
|00001660| 63 75 6c 61 72 2c 20 61 | 72 72 61 79 20 70 61 72 |cular, a|rray par|
|00001670| 61 6d 65 74 65 72 73 2c | 20 66 75 6e 63 74 69 6f |ameters,| functio|
|00001680| 6e 20 70 61 72 61 6d 65 | 74 65 72 73 2c 20 61 6e |n parame|ters, an|
|00001690| 64 20 73 74 72 75 63 74 | 75 72 65 20 70 61 72 61 |d struct|ure para|
|000016a0| 6d 65 74 65 72 73 0a 6e | 6f 74 20 64 69 73 67 75 |meters.n|ot disgu|
|000016b0| 69 73 65 64 20 62 79 20 | 5c 66 49 23 64 65 66 69 |ised by |\fI#defi|
|000016c0| 6e 65 27 73 5c 66 50 20 | 6f 72 20 5c 66 49 74 79 |ne's\fP |or \fIty|
|000016d0| 70 65 64 65 66 27 73 5c | 66 50 20 77 69 6c 6c 20 |pedef's\|fP will |
|000016e0| 6e 6f 74 20 62 65 20 72 | 65 63 6f 67 6e 69 73 65 |not be r|ecognise|
|000016f0| 64 2e 0a 2e 50 50 0a 49 | 6e 20 61 64 64 69 74 69 |d...PP.I|n additi|
|00001700| 6f 6e 2c 20 74 68 65 20 | 65 6e 74 69 72 65 20 66 |on, the |entire f|
|00001710| 75 6e 63 74 69 6f 6e 20 | 64 65 63 6c 61 72 61 74 |unction |declarat|
|00001720| 69 6f 6e 2c 20 69 6e 63 | 6c 75 64 69 6e 67 20 74 |ion, inc|luding t|
|00001730| 68 65 20 74 79 70 65 73 | 20 6f 66 20 74 68 65 0a |he types| of the.|
|00001740| 70 61 72 61 6d 65 74 65 | 72 73 2c 20 6d 75 73 74 |paramete|rs, must|
|00001750| 20 72 65 73 69 64 65 20 | 6f 6e 20 61 20 73 69 6e | reside |on a sin|
|00001760| 67 6c 65 20 6c 69 6e 65 | 20 66 6f 72 20 69 74 20 |gle line| for it |
|00001770| 74 6f 20 62 65 20 72 65 | 63 6f 67 6e 69 73 65 64 |to be re|cognised|
|00001780| 2e 0a 53 48 41 52 5f 45 | 4f 46 0a 69 66 20 74 65 |..SHAR_E|OF.if te|
|00001790| 73 74 20 31 34 38 39 20 | 2d 6e 65 20 22 60 77 63 |st 1489 |-ne "`wc|
|000017a0| 20 2d 63 20 3c 20 27 70 | 72 6f 74 6f 2e 31 27 60 | -c < 'p|roto.1'`|
|000017b0| 22 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |".then..|echo sha|
|000017c0| 72 3a 20 65 72 72 6f 72 | 20 74 72 61 6e 73 6d 69 |r: error| transmi|
|000017d0| 74 74 69 6e 67 20 22 27 | 70 72 6f 74 6f 2e 31 27 |tting "'|proto.1'|
|000017e0| 22 20 27 28 73 68 6f 75 | 6c 64 20 68 61 76 65 20 |" '(shou|ld have |
|000017f0| 62 65 65 6e 20 31 34 38 | 39 20 63 68 61 72 61 63 |been 148|9 charac|
|00001800| 74 65 72 73 29 27 0a 66 | 69 0a 66 69 20 23 20 65 |ters)'.f|i.fi # e|
|00001810| 6e 64 20 6f 66 20 6f 76 | 65 72 77 72 69 74 69 6e |nd of ov|erwritin|
|00001820| 67 20 63 68 65 63 6b 0a | 65 63 68 6f 20 73 68 61 |g check.|echo sha|
|00001830| 72 3a 20 65 78 74 72 61 | 63 74 69 6e 67 20 22 27 |r: extra|cting "'|
|00001840| 70 72 6f 74 6f 2e 63 27 | 22 20 27 28 31 30 33 33 |proto.c'|" '(1033|
|00001850| 32 20 63 68 61 72 61 63 | 74 65 72 73 29 27 0a 69 |2 charac|ters)'.i|
|00001860| 66 20 74 65 73 74 20 2d | 66 20 27 70 72 6f 74 6f |f test -|f 'proto|
|00001870| 2e 63 27 0a 74 68 65 6e | 0a 09 65 63 68 6f 20 73 |.c'.then|..echo s|
|00001880| 68 61 72 3a 20 77 69 6c | 6c 20 6e 6f 74 20 6f 76 |har: wil|l not ov|
|00001890| 65 72 2d 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |er-write| existin|
|000018a0| 67 20 66 69 6c 65 20 22 | 27 70 72 6f 74 6f 2e 63 |g file "|'proto.c|
|000018b0| 27 22 0a 65 6c 73 65 0a | 63 61 74 20 3c 3c 20 5c |'".else.|cat << \|
|000018c0| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 70 72 6f 74 |SHAR_EOF| > 'prot|
|000018d0| 6f 2e 63 27 0a 2f 2a 0a | 20 2a 09 09 09 50 72 6f |o.c'./*.| *...Pro|
|000018e0| 74 6f 74 79 70 65 73 20 | 62 75 69 6c 64 65 72 2e |totypes |builder.|
|000018f0| 2e 2e 0a 20 2a 09 09 09 | 3d 3d 3d 3d 3d 3d 3d 3d |... *...|========|
|00001900| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 0a 20 2a |========|=====. *|
|00001910| 0a 20 2a 09 09 43 6f 70 | 79 72 69 67 68 74 20 28 |. *..Cop|yright (|
|00001920| 43 29 20 44 75 6e 63 61 | 6e 20 57 68 69 74 65 2c |C) Dunca|n White,|
|00001930| 20 31 39 38 37 20 26 20 | 31 39 38 38 2e 0a 20 2a | 1987 & |1988.. *|
|00001940| 0a 20 2a 2a 2a 2a 2a 2a | 20 52 65 73 74 72 69 63 |. ******| Restric|
|00001950| 74 69 6f 6e 73 20 6f 6e | 20 75 73 65 0a 20 2a 0a |tions on| use. *.|
|00001960| 20 2a 09 41 6e 79 6f 6e | 65 20 6d 61 79 20 75 73 | *.Anyon|e may us|
|00001970| 65 2c 20 61 64 61 70 74 | 20 61 6e 64 20 65 78 74 |e, adapt| and ext|
|00001980| 65 6e 64 20 74 68 69 73 | 20 70 72 6f 67 72 61 6d |end this| program|
|00001990| 20 69 6e 20 61 6e 79 20 | 77 61 79 20 74 68 65 79 | in any |way they|
|000019a0| 20 6c 69 6b 65 2c 0a 20 | 2a 09 73 75 62 6a 65 63 | like,. |*.subjec|
|000019b0| 74 20 74 6f 20 74 68 65 | 20 66 6f 6c 6c 6f 77 69 |t to the| followi|
|000019c0| 6e 67 3a 0a 20 2a 0a 20 | 2a 09 31 29 2e 09 6d 79 |ng:. *. |*.1)..my|
|000019d0| 20 6e 61 6d 65 20 69 73 | 20 6e 6f 74 20 72 65 6d | name is| not rem|
|000019e0| 6f 76 65 64 2e 0a 20 2a | 09 32 29 2e 09 79 6f 75 |oved.. *|.2)..you|
|000019f0| 72 20 6e 61 6d 65 20 69 | 73 20 61 70 70 65 6e 64 |r name i|s append|
|00001a00| 65 64 20 69 66 20 79 6f | 75 20 63 68 61 6e 67 65 |ed if yo|u change|
|00001a10| 20 69 74 2c 20 64 65 74 | 61 69 6c 69 6e 67 20 74 | it, det|ailing t|
|00001a20| 68 65 20 63 68 61 6e 67 | 65 73 0a 20 2a 09 09 79 |he chang|es. *..y|
|00001a30| 6f 75 20 6d 61 64 65 2e | 0a 20 2a 09 33 29 2e 09 |ou made.|. *.3)..|
|00001a40| 79 6f 75 20 64 6f 6e 27 | 74 20 6d 61 6b 65 20 61 |you don'|t make a|
|00001a50| 6e 79 20 6d 6f 6e 65 79 | 20 6f 75 74 20 6f 66 20 |ny money| out of |
|00001a60| 69 74 20 77 69 74 68 6f | 75 74 20 63 6f 6e 73 75 |it witho|ut consu|
|00001a70| 6c 74 69 6e 67 20 6d 65 | 2e 0a 20 2a 09 34 29 2e |lting me|.. *.4).|
|00001a80| 09 79 6f 75 20 64 6f 6e | 27 74 20 61 74 74 65 6d |.you don|'t attem|
|00001a90| 70 74 20 74 6f 20 61 6c | 74 65 72 20 74 68 69 73 |pt to al|ter this|
|00001aa0| 20 27 72 65 73 74 72 69 | 63 74 69 6f 6e 73 20 6f | 'restri|ctions o|
|00001ab0| 6e 20 75 73 65 27 20 73 | 65 63 74 69 6f 6e 2e 0a |n use' s|ection..|
|00001ac0| 20 2a 0a 20 2a 09 49 6e | 20 6f 74 68 65 72 20 77 | *. *.In| other w|
|00001ad0| 6f 72 64 73 2c 20 73 68 | 61 72 65 20 26 20 65 6e |ords, sh|are & en|
|00001ae0| 6a 6f 79 2e 2e 2e 0a 20 | 2a 0a 20 2a 2a 2a 2a 2a |joy.... |*. *****|
|00001af0| 2a 20 50 75 72 70 6f 73 | 65 0a 20 2a 0a 20 2a 09 |* Purpos|e. *. *.|
|00001b00| 54 68 69 73 20 70 72 6f | 67 72 61 6d 20 61 74 74 |This pro|gram att|
|00001b10| 65 6d 70 74 73 20 74 6f | 20 62 75 69 6c 64 20 61 |empts to| build a|
|00001b20| 20 66 69 6c 65 20 6f 66 | 20 65 78 74 65 72 6e 61 | file of| externa|
|00001b30| 6c 20 64 65 63 6c 61 72 | 61 74 69 6f 6e 73 0a 20 |l declar|ations. |
|00001b40| 2a 09 5b 70 72 6f 74 6f | 74 79 70 65 73 5d 20 66 |*.[proto|types] f|
|00001b50| 6f 72 20 61 6c 6c 20 74 | 68 65 20 66 75 6e 63 74 |or all t|he funct|
|00001b60| 69 6f 6e 73 20 64 65 63 | 6c 61 72 65 64 20 69 6e |ions dec|lared in|
|00001b70| 20 61 20 67 69 76 65 6e | 20 43 20 66 69 6c 65 2e | a given| C file.|
|00001b80| 0a 20 2a 09 49 74 20 70 | 72 6f 64 75 63 65 73 20 |. *.It p|roduces |
|00001b90| 74 68 69 73 20 6c 69 73 | 74 20 69 6e 20 74 77 6f |this lis|t in two|
|00001ba0| 20 66 6f 72 6d 73 3a 0a | 20 2a 0a 20 2a 09 23 69 | forms:.| *. *.#i|
|00001bb0| 66 64 65 66 20 48 41 53 | 50 52 4f 54 4f 53 0a 20 |fdef HAS|PROTOS. |
|00001bc0| 2a 09 3c 6e 69 63 65 20 | 65 78 74 65 72 6e 61 6c |*.<nice |external|
|00001bd0| 20 70 72 6f 74 6f 74 79 | 70 65 20 64 65 63 6c 61 | prototy|pe decla|
|00001be0| 72 61 74 69 6f 6e 73 3e | 0a 20 2a 09 23 65 6c 73 |rations>|. *.#els|
|00001bf0| 65 0a 20 2a 09 3c 6f 6c | 64 20 69 6b 6b 79 20 65 |e. *.<ol|d ikky e|
|00001c00| 78 74 65 72 6e 61 6c 20 | 64 65 63 6c 61 72 61 74 |xternal |declarat|
|00001c10| 69 6f 6e 73 20 66 6f 72 | 20 55 4e 49 58 20 43 20 |ions for| UNIX C |
|00001c20| 63 6f 6d 70 69 6c 65 72 | 73 3e 0a 20 2a 09 23 65 |compiler|s>. *.#e|
|00001c30| 6e 64 69 66 0a 20 2a 0a | 20 2a 09 59 6f 75 20 63 |ndif. *.| *.You c|
|00001c40| 61 6e 20 74 68 65 6e 20 | 69 6e 63 6f 72 70 6f 72 |an then |incorpor|
|00001c50| 61 74 65 20 74 68 65 20 | 66 69 6c 65 20 67 65 6e |ate the |file gen|
|00001c60| 65 72 61 74 65 64 20 69 | 6e 74 6f 20 79 6f 75 72 |erated i|nto your|
|00001c70| 20 2e 68 20 66 69 6c 65 | 73 2e 0a 20 2a 09 4d 61 | .h file|s.. *.Ma|
|00001c80| 6b 65 20 73 75 72 65 20 | 79 6f 75 20 23 64 65 66 |ke sure |you #def|
|00001c90| 69 6e 65 20 48 41 53 50 | 52 4f 54 4f 53 20 69 66 |ine HASP|ROTOS if|
|00001ca0| 66 20 79 6f 75 72 20 63 | 6f 6d 70 69 6c 65 72 20 |f your c|ompiler |
|00001cb0| 73 75 70 70 6f 72 74 73 | 0a 20 2a 09 70 72 6f 74 |supports|. *.prot|
|00001cc0| 6f 74 79 70 65 73 3a 20 | 6f 74 68 65 72 77 69 73 |otypes: |otherwis|
|00001cd0| 65 20 79 6f 75 27 6c 6c | 20 6c 6f 73 65 20 61 6c |e you'll| lose al|
|00001ce0| 6c 20 74 68 65 20 61 64 | 76 61 6e 74 61 67 65 73 |l the ad|vantages|
|00001cf0| 2e 0a 20 2a 0a 20 2a 09 | 41 6c 74 65 72 6e 61 74 |.. *. *.|Alternat|
|00001d00| 69 76 65 6c 79 2c 20 69 | 66 20 79 6f 75 20 67 69 |ively, i|f you gi|
|00001d10| 76 65 20 74 68 65 20 2d | 66 20 5b 66 75 6e 63 74 |ve the -|f [funct|
|00001d20| 69 6f 6e 5d 20 6f 70 74 | 69 6f 6e 2c 20 74 68 65 |ion] opt|ion, the|
|00001d30| 20 70 72 6f 67 72 61 6d | 20 77 69 6c 6c 0a 20 2a | program| will. *|
|00001d40| 09 69 6e 73 74 65 61 64 | 20 70 72 6f 64 75 63 65 |.instead| produce|
|00001d50| 20 61 20 70 72 65 74 74 | 79 20 70 72 69 6e 74 65 | a prett|y printe|
|00001d60| 64 20 74 65 78 74 20 66 | 6f 72 6d 20 6f 66 20 74 |d text f|orm of t|
|00001d70| 68 65 20 66 75 6e 63 74 | 69 6f 6e 0a 20 2a 09 64 |he funct|ion. *.d|
|00001d80| 65 63 6c 61 72 61 74 69 | 6f 6e 73 20 69 74 20 70 |eclarati|ons it p|
|00001d90| 61 72 73 65 73 2e 0a 20 | 2a 0a 20 2a 2a 2a 2a 2a |arses.. |*. *****|
|00001da0| 2a 20 48 6f 77 20 64 6f | 65 73 20 69 74 20 64 6f |* How do|es it do|
|00001db0| 20 69 74 3a 0a 20 2a 0a | 20 2a 09 54 68 65 20 70 | it:. *.| *.The p|
|00001dc0| 72 6f 67 72 61 6d 20 70 | 61 72 73 65 73 20 45 41 |rogram p|arses EA|
|00001dd0| 43 48 20 4c 49 4e 45 20 | 6f 66 20 61 20 43 20 73 |CH LINE |of a C s|
|00001de0| 6f 75 72 63 65 20 66 69 | 6c 65 20 74 6f 20 73 65 |ource fi|le to se|
|00001df0| 65 20 77 68 65 74 68 65 | 72 20 69 74 0a 20 2a 09 |e whethe|r it. *.|
|00001e00| 73 61 74 69 73 66 69 65 | 73 20 74 68 65 20 67 72 |satisfie|s the gr|
|00001e10| 61 6d 6d 61 72 20 73 68 | 6f 77 6e 20 62 65 6c 6f |ammar sh|own belo|
|00001e20| 77 2e 20 49 66 20 69 74 | 20 64 6f 65 73 2c 20 74 |w. If it| does, t|
|00001e30| 68 65 20 61 70 70 72 6f | 70 72 69 61 74 65 0a 20 |he appro|priate. |
|00001e40| 2a 09 64 65 63 6c 61 72 | 61 74 69 6f 6e 73 20 69 |*.declar|ations i|
|00001e50| 73 20 62 75 6e 67 65 64 | 20 6f 75 74 20 6f 6e 74 |s bunged| out ont|
|00001e60| 6f 20 74 68 65 20 6f 75 | 74 70 75 74 20 73 74 72 |o the ou|tput str|
|00001e70| 65 61 6d 2e 0a 20 2a 0a | 20 2a 09 55 6e 66 6f 72 |eam.. *.| *.Unfor|
|00001e80| 74 75 6e 61 74 65 6c 79 | 2c 20 74 68 69 73 20 69 |tunately|, this i|
|00001e90| 6d 70 6c 69 65 73 20 74 | 68 61 74 20 61 6e 20 65 |mplies t|hat an e|
|00001ea0| 6e 74 69 72 65 20 66 75 | 6e 63 74 69 6f 6e 20 64 |ntire fu|nction d|
|00001eb0| 65 63 6c 61 72 61 74 69 | 6f 6e 0a 20 2a 09 6d 75 |eclarati|on. *.mu|
|00001ec0| 73 74 20 62 65 20 6f 6e | 20 61 20 73 69 6e 67 6c |st be on| a singl|
|00001ed0| 65 20 6c 69 6e 65 2e 2e | 2e 2e 20 73 6f 72 72 79 |e line..|.. sorry|
|00001ee0| 20 74 6f 20 61 6c 6c 20 | 74 68 6f 73 65 20 77 68 | to all |those wh|
|00001ef0| 6f 20 64 6f 6e 27 74 20 | 75 73 65 20 74 68 69 73 |o don't |use this|
|00001f00| 0a 20 2a 09 63 6f 6e 76 | 65 6e 74 69 6f 6e 3a 20 |. *.conv|ention: |
|00001f10| 49 20 64 69 64 6e 27 74 | 20 66 65 65 6c 20 75 70 |I didn't| feel up|
|00001f20| 20 74 6f 20 77 72 69 74 | 69 6e 67 20 61 20 66 75 | to writ|ing a fu|
|00001f30| 6c 6c 20 43 20 70 61 72 | 73 65 72 2c 20 6f 72 20 |ll C par|ser, or |
|00001f40| 61 0a 20 2a 09 62 61 63 | 6b 74 72 61 63 6b 69 6e |a. *.bac|ktrackin|
|00001f50| 67 20 70 61 72 73 65 72 | 21 0a 20 2a 0a 20 2a 2a |g parser|!. *. **|
|00001f60| 2a 2a 2a 2a 20 54 68 65 | 20 47 72 61 6d 6d 61 72 |**** The| Grammar|
|00001f70| 0a 20 2a 0a 20 2a 09 54 | 68 65 20 67 72 61 6d 6d |. *. *.T|he gramm|
|00001f80| 61 72 20 69 73 20 72 65 | 73 74 72 69 63 74 65 64 |ar is re|stricted|
|00001f90| 3b 20 69 6e 20 70 61 72 | 74 69 63 75 6c 61 72 2c |; in par|ticular,|
|00001fa0| 20 69 74 20 6f 6d 69 74 | 73 3a 0a 20 2a 0a 20 2a | it omit|s:. *. *|
|00001fb0| 09 31 29 2e 09 66 75 6e | 63 74 69 6f 6e 20 70 61 |.1)..fun|ction pa|
|00001fc0| 72 61 6d 65 74 65 72 73 | 20 28 75 73 65 20 74 79 |rameters| (use ty|
|00001fd0| 70 65 64 65 66 21 29 2c | 0a 20 2a 09 32 29 2e 09 |pedef!),|. *.2)..|
|00001fe0| 61 72 72 61 79 20 70 61 | 72 61 6d 65 74 65 72 73 |array pa|rameters|
|00001ff0| 20 28 49 20 75 73 65 20 | 70 6f 69 6e 74 65 72 73 | (I use |pointers|
|00002000| 20 69 6e 73 74 65 61 64 | 29 2c 0a 20 2a 09 33 29 | instead|),. *.3)|
|00002010| 2e 09 61 6e 64 20 73 74 | 72 75 63 74 20 70 61 72 |..and st|ruct par|
|00002020| 61 6d 65 74 65 72 73 20 | 6e 6f 74 20 63 6f 6e 63 |ameters |not conc|
|00002030| 65 61 6c 65 64 20 62 79 | 20 23 64 65 66 69 6e 65 |ealed by| #define|
|00002040| 27 73 20 6f 72 20 74 79 | 70 65 64 65 66 27 73 2e |'s or ty|pedef's.|
|00002050| 0a 20 2a 0a 20 2a 09 66 | 75 6e 63 74 69 6f 6e 5f |. *. *.f|unction_|
|00002060| 64 65 63 6c 61 72 61 74 | 69 6f 6e 09 3d 20 5b 20 |declarat|ion.= [ |
|00002070| 73 74 61 72 72 65 64 5f | 69 64 20 5d 20 69 64 20 |starred_|id ] id |
|00002080| 27 28 27 20 69 64 6c 69 | 73 74 20 27 29 27 20 74 |'(' idli|st ')' t|
|00002090| 73 6c 69 73 74 0a 20 2a | 09 69 64 6c 69 73 74 09 |slist. *|.idlist.|
|000020a0| 09 09 3d 20 65 6d 70 74 | 79 20 7c 20 69 64 20 6c |..= empt|y | id l|
|000020b0| 69 73 74 7b 20 27 2c 27 | 20 69 64 20 7d 0a 20 2a |ist{ ','| id }. *|
|000020c0| 09 74 73 6c 69 73 74 09 | 09 09 3d 20 6c 69 73 74 |.tslist.|..= list|
|000020d0| 7b 20 74 79 70 65 73 70 | 65 63 20 7d 20 28 20 45 |{ typesp|ec } ( E|
|000020e0| 4f 4c 20 7c 20 27 7b 27 | 20 29 0a 20 2a 09 74 79 |OL | '{'| ). *.ty|
|000020f0| 70 65 73 70 65 63 09 09 | 3d 20 69 64 20 73 74 61 |pespec..|= id sta|
|00002100| 72 72 65 64 5f 69 64 20 | 6c 69 73 74 7b 20 27 2c |rred_id |list{ ',|
|00002110| 27 20 73 74 61 72 72 65 | 64 5f 69 64 20 7d 20 27 |' starre|d_id } '|
|00002120| 3b 27 0a 20 2a 09 73 74 | 61 72 72 65 64 5f 69 64 |;'. *.st|arred_id|
|00002130| 09 09 3d 20 7b 27 2a 27 | 7d 20 69 64 0a 20 2a 0a |..= {'*'|} id. *.|
|00002140| 20 2a 2a 2a 2a 2a 2a 2a | 20 48 69 73 74 6f 72 79 | *******| History|
|00002150| 0a 20 2a 0a 20 2a 09 56 | 65 72 73 69 6f 6e 09 57 |. *. *.V|ersion.W|
|00002160| 68 6f 09 44 61 74 65 09 | 09 43 6f 6d 6d 65 6e 74 |ho.Date.|.Comment|
|00002170| 73 0a 20 2a 09 3d 3d 3d | 3d 3d 3d 3d 09 3d 3d 3d |s. *.===|====.===|
|00002180| 09 3d 3d 3d 3d 09 09 3d | 3d 3d 3d 3d 3d 3d 3d 0a |.====..=|=======.|
|00002190| 20 2a 09 31 2e 30 09 64 | 63 77 09 31 36 74 68 20 | *.1.0.d|cw.16th |
|000021a0| 41 75 67 20 31 39 38 37 | 09 57 72 6f 74 65 20 69 |Aug 1987|.Wrote i|
|000021b0| 74 0a 20 2a 09 31 2e 31 | 09 64 63 77 09 33 30 74 |t. *.1.1|.dcw.30t|
|000021c0| 68 20 41 75 67 20 31 39 | 38 37 09 43 6f 72 72 65 |h Aug 19|87.Corre|
|000021d0| 63 74 65 64 20 73 70 61 | 63 65 73 20 62 75 67 20 |cted spa|ces bug |
|000021e0| 26 0a 20 2a 09 09 09 09 | 09 61 64 64 65 64 20 23 |&. *....|.added #|
|000021f0| 69 66 64 65 66 20 4c 41 | 54 54 49 43 45 20 23 65 |ifdef LA|TTICE #e|
|00002200| 6c 73 65 0a 20 2a 09 31 | 2e 32 09 64 63 77 09 39 |lse. *.1|.2.dcw.9|
|00002210| 74 68 20 53 65 70 20 31 | 39 38 37 09 55 73 65 64 |th Sep 1|987.Used|
|00002220| 20 64 63 77 6f 73 2e 68 | 20 74 6f 20 64 65 74 65 | dcwos.h| to dete|
|00002230| 72 6d 69 6e 65 20 48 41 | 53 50 52 4f 54 4f 53 0a |rmine HA|SPROTOS.|
|00002240| 20 2a 09 31 2e 33 09 64 | 63 77 09 32 35 74 68 20 | *.1.3.d|cw.25th |
|00002250| 46 65 62 20 31 39 38 38 | 09 41 64 64 65 64 20 73 |Feb 1988|.Added s|
|00002260| 74 61 72 72 65 64 20 69 | 64 20 66 6f 72 20 72 65 |tarred i|d for re|
|00002270| 74 75 72 6e 20 74 79 70 | 65 0a 20 2a 09 58 4e 58 |turn typ|e. *.XNX|
|00002280| 31 2e 34 09 64 63 77 09 | 35 74 68 20 41 70 72 69 |1.4.dcw.|5th Apri|
|00002290| 6c 20 31 39 38 38 09 50 | 6f 72 74 65 64 20 74 6f |l 1988.P|orted to|
|000022a0| 20 58 65 6e 69 78 0a 20 | 2a 09 09 09 09 09 6d 61 | Xenix. |*.....ma|
|000022b0| 64 65 20 69 74 20 61 63 | 63 65 70 74 20 64 65 63 |de it ac|cept dec|
|000022c0| 6c 6e 73 20 65 67 2e 20 | 74 68 69 6e 67 79 28 29 |lns eg. |thingy()|
|000022d0| 20 7b 2e 2e 0a 20 2a 09 | 09 09 09 09 61 6c 74 65 | {... *.|....alte|
|000022e0| 72 65 64 20 61 72 67 7b | 63 2c 76 7d 20 69 6e 74 |red arg{|c,v} int|
|000022f0| 65 72 66 61 63 65 2e 0a | 20 2a 09 42 53 44 31 2e |erface..| *.BSD1.|
|00002300| 34 09 64 63 77 09 37 74 | 68 20 41 70 72 69 6c 20 |4.dcw.7t|h April |
|00002310| 31 39 38 38 09 52 65 76 | 65 72 73 65 20 70 6f 72 |1988.Rev|erse por|
|00002320| 74 65 64 20 74 6f 20 42 | 53 44 0a 20 2a 09 31 2e |ted to B|SD. *.1.|
|00002330| 35 09 64 63 77 09 37 74 | 68 20 41 70 72 69 6c 20 |5.dcw.7t|h April |
|00002340| 31 39 38 38 09 4d 61 64 | 65 20 69 66 20 61 6e 64 |1988.Mad|e if and|
|00002350| 20 77 68 69 6c 65 20 73 | 70 65 63 69 61 6c 20 63 | while s|pecial c|
|00002360| 61 73 65 73 20 69 6e 0a | 20 2a 09 09 09 09 09 67 |ases in.| *.....g|
|00002370| 65 74 5f 74 6f 6b 65 6e | 0a 20 2a 09 32 2e 30 09 |et_token|. *.2.0.|
|00002380| 64 63 77 09 32 6e 64 20 | 4a 75 6c 79 20 31 39 38 |dcw.2nd |July 198|
|00002390| 38 09 4d 61 64 65 20 72 | 65 61 64 79 20 66 6f 72 |8.Made r|eady for|
|000023a0| 20 72 65 6c 65 61 73 69 | 6e 67 20 74 6f 20 6e 65 | releasi|ng to ne|
|000023b0| 77 73 2e 2e 2e 0a 20 2a | 2f 0a 0a 0a 23 69 6e 63 |ws.... *|/...#inc|
|000023c0| 6c 75 64 65 20 22 64 63 | 77 2e 68 22 0a 0a 0a 2f |lude "dc|w.h".../|
|000023d0| 2a 20 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |* ------|--------|
|000023e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 20 44 61 74 61 20 74 |--------|- Data t|
|000023f0| 79 70 65 73 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ypes ---|--------|
|00002400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 20 2a |--------|------ *|
|00002410| 2f 0a 0a 0a 23 64 65 66 | 69 6e 65 20 49 44 5f 4c |/...#def|ine ID_L|
|00002420| 45 4e 09 09 35 30 0a 23 | 64 65 66 69 6e 65 20 4c |EN..50.#|define L|
|00002430| 49 4e 45 5f 4c 45 4e 09 | 31 30 32 34 0a 0a 0a 23 |INE_LEN.|1024...#|
|00002440| 64 65 66 69 6e 65 20 46 | 44 45 43 4c 09 09 73 74 |define F|DECL..st|
|00002450| 72 75 63 74 20 61 6e 6f | 6e 31 0a 23 64 65 66 69 |ruct ano|n1.#defi|
|00002460| 6e 65 20 45 4c 5f 49 44 | 4c 49 53 54 09 73 74 72 |ne EL_ID|LIST.str|
|00002470| 75 63 74 20 61 6e 6f 6e | 32 0a 23 64 65 66 69 6e |uct anon|2.#defin|
|00002480| 65 20 45 4c 5f 54 53 4c | 49 53 54 09 73 74 72 75 |e EL_TSL|IST.stru|
|00002490| 63 74 20 61 6e 6f 6e 33 | 0a 0a 23 64 65 66 69 6e |ct anon3|..#defin|
|000024a0| 65 20 49 44 4c 49 53 54 | 09 45 4c 5f 49 44 4c 49 |e IDLIST|.EL_IDLI|
|000024b0| 53 54 20 2a 0a 23 64 65 | 66 69 6e 65 20 54 53 4c |ST *.#de|fine TSL|
|000024c0| 49 53 54 09 45 4c 5f 54 | 53 4c 49 53 54 20 2a 0a |IST.EL_T|SLIST *.|
|000024d0| 0a 46 44 45 43 4c 20 7b | 0a 09 63 68 61 72 09 66 |.FDECL {|..char.f|
|000024e0| 74 79 70 65 5b 49 44 5f | 4c 45 4e 5d 3b 0a 09 63 |type[ID_|LEN];..c|
|000024f0| 68 61 72 09 66 6e 61 6d | 65 5b 49 44 5f 4c 45 4e |har.fnam|e[ID_LEN|
|00002500| 5d 3b 0a 09 49 44 4c 49 | 53 54 09 66 6f 72 6d 61 |];..IDLI|ST.forma|
|00002510| 6c 73 3b 0a 09 54 53 4c | 49 53 54 09 66 74 79 70 |ls;..TSL|IST.ftyp|
|00002520| 65 73 3b 0a 7d 3b 0a 0a | 45 4c 5f 49 44 4c 49 53 |es;.};..|EL_IDLIS|
|00002530| 54 20 7b 0a 09 63 68 61 | 72 09 69 64 5b 49 44 5f |T {..cha|r.id[ID_|
|00002540| 4c 45 4e 5d 3b 0a 09 49 | 44 4c 49 53 54 09 6e 65 |LEN];..I|DLIST.ne|
|00002550| 78 74 3b 0a 7d 3b 0a 0a | 45 4c 5f 54 53 4c 49 53 |xt;.};..|EL_TSLIS|
|00002560| 54 20 7b 0a 09 63 68 61 | 72 09 74 79 70 65 5b 49 |T {..cha|r.type[I|
|00002570| 44 5f 4c 45 4e 5d 3b 0a | 09 63 68 61 72 09 76 61 |D_LEN];.|.char.va|
|00002580| 72 5b 49 44 5f 4c 45 4e | 5d 3b 0a 09 54 53 4c 49 |r[ID_LEN|];..TSLI|
|00002590| 53 54 09 6e 65 78 74 3b | 0a 7d 3b 0a 0a 0a 2f 2a |ST.next;|.};.../*|
|000025a0| 20 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | -------|--------|
|000025b0| 2d 2d 2d 2d 2d 2d 20 46 | 6f 72 77 61 72 64 20 64 |------ F|orward d|
|000025c0| 65 63 6c 6e 73 20 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |eclns --|--------|
|000025d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 20 2a 2f |--------|----- */|
|000025e0| 0a 2f 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |./* | |
|000025f0| 47 75 65 73 73 20 77 68 | 61 74 20 67 65 6e 65 72 |Guess wh|at gener|
|00002600| 61 74 65 64 20 74 68 65 | 73 65 20 74 68 65 6e 20 |ated the|se then |
|00002610| 3f 3f 3f 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |??? | |
|00002620| 20 2a 2f 0a 0a 0a 23 69 | 66 64 65 66 20 48 41 53 | */...#i|fdef HAS|
|00002630| 50 52 4f 54 4f 53 0a 65 | 78 74 65 72 6e 20 76 6f |PROTOS.e|xtern vo|
|00002640| 69 64 20 6d 61 69 6e 28 | 20 69 6e 74 20 2c 20 63 |id main(| int , c|
|00002650| 68 61 72 20 2a 2a 20 29 | 3b 0a 65 78 74 65 72 6e |har ** )|;.extern|
|00002660| 20 76 6f 69 64 20 75 73 | 61 67 65 28 20 42 4f 4f | void us|age( BOO|
|00002670| 4c 20 29 3b 0a 65 78 74 | 65 72 6e 20 76 6f 69 64 |L );.ext|ern void|
|00002680| 20 6f 75 74 5f 65 78 74 | 65 72 6e 28 20 46 49 4c | out_ext|ern( FIL|
|00002690| 45 20 2a 20 2c 20 46 44 | 45 43 4c 20 2a 20 2c 20 |E * , FD|ECL * , |
|000026a0| 42 4f 4f 4c 20 29 3b 0a | 65 78 74 65 72 6e 20 76 |BOOL );.|extern v|
|000026b0| 6f 69 64 20 70 72 69 6e | 74 5f 66 64 65 63 6c 28 |oid prin|t_fdecl(|
|000026c0| 20 46 49 4c 45 20 2a 20 | 2c 20 46 44 45 43 4c 20 | FILE * |, FDECL |
|000026d0| 2a 20 29 3b 0a 65 78 74 | 65 72 6e 20 76 6f 69 64 |* );.ext|ern void|
|000026e0| 20 70 72 6f 74 6f 74 79 | 70 65 28 20 46 49 4c 45 | prototy|pe( FILE|
|000026f0| 20 2a 20 2c 20 46 44 45 | 43 4c 20 2a 20 2c 20 63 | * , FDE|CL * , c|
|00002700| 68 61 72 20 2a 20 29 3b | 0a 65 78 74 65 72 6e 20 |har * );|.extern |
|00002710| 69 6e 74 20 72 65 61 64 | 6c 69 6e 65 28 20 46 49 |int read|line( FI|
|00002720| 4c 45 20 2a 20 2c 20 63 | 68 61 72 20 2a 20 29 3b |LE * , c|har * );|
|00002730| 0a 65 78 74 65 72 6e 20 | 76 6f 69 64 20 67 65 74 |.extern |void get|
|00002740| 5f 74 6f 6b 65 6e 28 20 | 76 6f 69 64 20 29 3b 0a |_token( |void );.|
|00002750| 65 78 74 65 72 6e 20 42 | 4f 4f 4c 20 70 61 72 73 |extern B|OOL pars|
|00002760| 65 5f 66 75 6e 63 74 69 | 6f 6e 5f 64 65 63 6c 6e |e_functi|on_decln|
|00002770| 28 20 63 68 61 72 20 2a | 20 2c 20 46 44 45 43 4c |( char *| , FDECL|
|00002780| 20 2a 20 29 3b 0a 65 78 | 74 65 72 6e 20 42 4f 4f | * );.ex|tern BOO|
|00002790| 4c 20 70 61 72 73 65 5f | 6c 69 73 74 5f 69 64 28 |L parse_|list_id(|
|000027a0| 20 49 44 4c 49 53 54 20 | 2a 20 29 3b 0a 65 78 74 | IDLIST |* );.ext|
|000027b0| 65 72 6e 20 42 4f 4f 4c | 20 70 61 72 73 65 5f 72 |ern BOOL| parse_r|
|000027c0| 65 73 74 6f 66 5f 69 64 | 73 28 20 49 44 4c 49 53 |estof_id|s( IDLIS|
|000027d0| 54 20 2a 20 29 3b 0a 65 | 78 74 65 72 6e 20 42 4f |T * );.e|xtern BO|
|000027e0| 4f 4c 20 70 61 72 73 65 | 5f 6c 69 73 74 5f 74 73 |OL parse|_list_ts|
|000027f0| 28 20 54 53 4c 49 53 54 | 20 2a 20 29 3b 0a 65 78 |( TSLIST| * );.ex|
|00002800| 74 65 72 6e 20 42 4f 4f | 4c 20 70 61 72 73 65 5f |tern BOO|L parse_|
|00002810| 74 79 70 65 73 70 65 63 | 28 20 54 53 4c 49 53 54 |typespec|( TSLIST|
|00002820| 20 2a 20 29 3b 0a 65 78 | 74 65 72 6e 20 42 4f 4f | * );.ex|tern BOO|
|00002830| 4c 20 70 61 72 73 65 5f | 73 74 61 72 72 65 64 5f |L parse_|starred_|
|00002840| 69 64 28 20 63 68 61 72 | 20 2a 20 2c 20 63 68 61 |id( char| * , cha|
|00002850| 72 20 2a 20 29 3b 0a 23 | 65 6c 73 65 0a 65 78 74 |r * );.#|else.ext|
|00002860| 65 72 6e 20 76 6f 69 64 | 20 6d 61 69 6e 28 29 3b |ern void| main();|
|00002870| 0a 65 78 74 65 72 6e 20 | 76 6f 69 64 20 75 73 61 |.extern |void usa|
|00002880| 67 65 28 29 3b 0a 65 78 | 74 65 72 6e 20 76 6f 69 |ge();.ex|tern voi|
|00002890| 64 20 6f 75 74 5f 65 78 | 74 65 72 6e 28 29 3b 0a |d out_ex|tern();.|
|000028a0| 65 78 74 65 72 6e 20 76 | 6f 69 64 20 70 72 69 6e |extern v|oid prin|
|000028b0| 74 5f 66 64 65 63 6c 28 | 29 3b 0a 65 78 74 65 72 |t_fdecl(|);.exter|
|000028c0| 6e 20 76 6f 69 64 20 70 | 72 6f 74 6f 74 79 70 65 |n void p|rototype|
|000028d0| 28 29 3b 0a 65 78 74 65 | 72 6e 20 69 6e 74 20 72 |();.exte|rn int r|
|000028e0| 65 61 64 6c 69 6e 65 28 | 29 3b 0a 65 78 74 65 72 |eadline(|);.exter|
|000028f0| 6e 20 76 6f 69 64 20 67 | 65 74 5f 74 6f 6b 65 6e |n void g|et_token|
|00002900| 28 29 3b 0a 65 78 74 65 | 72 6e 20 42 4f 4f 4c 20 |();.exte|rn BOOL |
|00002910| 70 61 72 73 65 5f 66 75 | 6e 63 74 69 6f 6e 5f 64 |parse_fu|nction_d|
|00002920| 65 63 6c 6e 28 29 3b 0a | 65 78 74 65 72 6e 20 42 |ecln();.|extern B|
|00002930| 4f 4f 4c 20 70 61 72 73 | 65 5f 6c 69 73 74 5f 69 |OOL pars|e_list_i|
|00002940| 64 28 29 3b 0a 65 78 74 | 65 72 6e 20 42 4f 4f 4c |d();.ext|ern BOOL|
|00002950| 20 70 61 72 73 65 5f 72 | 65 73 74 6f 66 5f 69 64 | parse_r|estof_id|
|00002960| 73 28 29 3b 0a 65 78 74 | 65 72 6e 20 42 4f 4f 4c |s();.ext|ern BOOL|
|00002970| 20 70 61 72 73 65 5f 6c | 69 73 74 5f 74 73 28 29 | parse_l|ist_ts()|
|00002980| 3b 0a 65 78 74 65 72 6e | 20 42 4f 4f 4c 20 70 61 |;.extern| BOOL pa|
|00002990| 72 73 65 5f 74 79 70 65 | 73 70 65 63 28 29 3b 0a |rse_type|spec();.|
|000029a0| 65 78 74 65 72 6e 20 42 | 4f 4f 4c 20 70 61 72 73 |extern B|OOL pars|
|000029b0| 65 5f 73 74 61 72 72 65 | 64 5f 69 64 28 29 3b 0a |e_starre|d_id();.|
|000029c0| 23 65 6e 64 69 66 0a 0a | 0a 2f 2a 20 2d 2d 2d 2d |#endif..|./* ----|
|000029d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000029e0| 2d 2d 20 4d 61 69 6e 20 | 70 72 6f 67 72 61 6d 20 |-- Main |program |
|000029f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002a00| 2d 2d 2d 2d 2d 2d 2d 2d | 20 2a 2f 0a 0a 0a 76 6f |--------| */...vo|
|00002a10| 69 64 20 6d 61 69 6e 28 | 20 61 72 67 63 2c 20 61 |id main(| argc, a|
|00002a20| 72 67 76 20 29 20 69 6e | 74 20 61 72 67 63 3b 20 |rgv ) in|t argc; |
|00002a30| 63 68 61 72 20 2a 2a 61 | 72 67 76 3b 0a 7b 0a 09 |char **a|rgv;.{..|
|00002a40| 46 49 4c 45 09 2a 69 6e | 2c 2a 6f 75 74 3b 0a 09 |FILE.*in|,*out;..|
|00002a50| 46 44 45 43 4c 09 66 3b | 0a 09 63 68 61 72 09 6c |FDECL.f;|..char.l|
|00002a60| 69 6e 65 5b 4c 49 4e 45 | 5f 4c 45 4e 5d 3b 0a 09 |ine[LINE|_LEN];..|
|00002a70| 42 4f 4f 4c 09 6f 72 69 | 67 6f 6e 6c 79 3b 0a 0a |BOOL.ori|gonly;..|
|00002a80| 09 75 73 61 67 65 28 20 | 61 72 67 63 3e 31 20 26 |.usage( |argc>1 &|
|00002a90| 26 20 61 72 67 63 3c 3d | 34 20 29 3b 0a 0a 09 6f |& argc<=|4 );...o|
|00002aa0| 72 69 67 6f 6e 6c 79 20 | 3d 20 28 20 73 74 72 63 |rigonly |= ( strc|
|00002ab0| 6d 70 28 20 61 72 67 76 | 5b 31 5d 2c 20 22 2d 66 |mp( argv|[1], "-f|
|00002ac0| 22 20 29 20 3d 3d 20 30 | 20 29 3b 0a 09 69 66 28 |" ) == 0| );..if(|
|00002ad0| 20 6f 72 69 67 6f 6e 6c | 79 29 20 7b 0a 09 09 69 | origonl|y) {...i|
|00002ae0| 6e 74 20 69 3b 0a 0a 09 | 09 66 6f 72 28 20 69 3d |nt i;...|.for( i=|
|00002af0| 32 3b 20 69 3c 61 72 67 | 63 3b 20 69 2b 2b 20 29 |2; i<arg|c; i++ )|
|00002b00| 20 61 72 67 76 5b 69 2d | 31 5d 20 3d 20 61 72 67 | argv[i-|1] = arg|
|00002b10| 76 5b 69 5d 3b 0a 09 09 | 61 72 67 63 2d 2d 3b 0a |v[i];...|argc--;.|
|00002b20| 09 7d 0a 0a 09 75 73 61 | 67 65 28 20 61 72 67 63 |.}...usa|ge( argc|
|00002b30| 20 3e 20 31 20 29 3b 09 | 2f 2a 20 73 74 69 6c 6c | > 1 );.|/* still|
|00002b40| 20 61 74 20 6c 65 61 73 | 74 20 6f 6e 65 20 61 72 | at leas|t one ar|
|00002b50| 67 75 6d 65 6e 74 20 6c | 65 66 74 20 2a 2f 0a 0a |gument l|eft */..|
|00002b60| 09 69 6e 20 3d 20 66 6f | 70 65 6e 28 20 61 72 67 |.in = fo|pen( arg|
|00002b70| 76 5b 31 5d 2c 20 22 72 | 22 20 29 3b 0a 09 41 53 |v[1], "r|" );..AS|
|00002b80| 53 45 52 54 28 20 69 6e | 20 21 3d 20 4e 55 4c 4c |SERT( in| != NULL|
|00002b90| 2c 20 28 22 43 61 6e 27 | 74 20 6f 70 65 6e 20 27 |, ("Can'|t open '|
|00002ba0| 25 73 27 5c 6e 22 2c 61 | 72 67 76 5b 31 5d 29 20 |%s'\n",a|rgv[1]) |
|00002bb0| 29 3b 0a 0a 09 69 66 28 | 20 61 72 67 63 20 3d 3d |);...if(| argc ==|
|00002bc0| 20 32 20 29 20 7b 0a 09 | 09 6f 75 74 20 3d 20 73 | 2 ) {..|.out = s|
|00002bd0| 74 64 6f 75 74 3b 0a 09 | 7d 20 65 6c 73 65 20 7b |tdout;..|} else {|
|00002be0| 0a 09 09 6f 75 74 20 3d | 20 66 6f 70 65 6e 28 20 |...out =| fopen( |
|00002bf0| 61 72 67 76 5b 32 5d 2c | 20 22 77 22 20 29 3b 0a |argv[2],| "w" );.|
|00002c00| 09 09 41 53 53 45 52 54 | 28 20 6f 75 74 20 21 3d |..ASSERT|( out !=|
|00002c10| 20 4e 55 4c 4c 2c 20 28 | 22 43 61 6e 27 74 20 63 | NULL, (|"Can't c|
|00002c20| 72 65 61 74 65 20 27 25 | 73 27 5c 6e 22 2c 61 72 |reate '%|s'\n",ar|
|00002c30| 67 76 5b 32 5d 29 20 29 | 3b 0a 09 7d 0a 0a 09 69 |gv[2]) )|;..}...i|
|00002c40| 66 28 20 6f 72 69 67 6f | 6e 6c 79 20 29 20 7b 0a |f( origo|nly ) {.|
|00002c50| 09 09 77 68 69 6c 65 28 | 20 72 65 61 64 6c 69 6e |..while(| readlin|
|00002c60| 65 28 20 69 6e 2c 20 6c | 69 6e 65 20 29 20 21 3d |e( in, l|ine ) !=|
|00002c70| 20 45 4f 46 20 29 20 7b | 0a 09 09 09 69 66 28 20 | EOF ) {|....if( |
|00002c80| 70 61 72 73 65 5f 66 75 | 6e 63 74 69 6f 6e 5f 64 |parse_fu|nction_d|
|00002c90| 65 63 6c 6e 28 20 6c 69 | 6e 65 2c 20 26 66 20 29 |ecln( li|ne, &f )|
|00002ca0| 20 29 20 7b 0a 09 09 09 | 09 70 72 69 6e 74 5f 66 | ) {....|.print_f|
|00002cb0| 64 65 63 6c 28 20 6f 75 | 74 2c 20 26 66 20 29 3b |decl( ou|t, &f );|
|00002cc0| 0a 09 09 09 7d 0a 09 09 | 7d 0a 09 7d 20 65 6c 73 |....}...|}..} els|
|00002cd0| 65 20 7b 0a 09 09 66 70 | 72 69 6e 74 66 28 20 6f |e {...fp|rintf( o|
|00002ce0| 75 74 2c 20 22 23 69 66 | 64 65 66 20 48 41 53 50 |ut, "#if|def HASP|
|00002cf0| 52 4f 54 4f 53 5c 6e 22 | 20 29 3b 0a 09 09 77 68 |ROTOS\n"| );...wh|
|00002d00| 69 6c 65 28 20 72 65 61 | 64 6c 69 6e 65 28 20 69 |ile( rea|dline( i|
|00002d10| 6e 2c 20 6c 69 6e 65 20 | 29 20 21 3d 20 45 4f 46 |n, line |) != EOF|
|00002d20| 20 29 20 7b 0a 09 09 09 | 69 66 28 20 70 61 72 73 | ) {....|if( pars|
|00002d30| 65 5f 66 75 6e 63 74 69 | 6f 6e 5f 64 65 63 6c 6e |e_functi|on_decln|
|00002d40| 28 20 6c 69 6e 65 2c 20 | 26 66 20 29 20 29 20 7b |( line, |&f ) ) {|
|00002d50| 0a 09 09 09 09 6f 75 74 | 5f 65 78 74 65 72 6e 28 |.....out|_extern(|
|00002d60| 20 6f 75 74 2c 20 26 66 | 2c 20 54 52 55 45 20 29 | out, &f|, TRUE )|
|00002d70| 3b 0a 09 09 09 7d 0a 09 | 09 7d 0a 09 09 66 70 72 |;....}..|.}...fpr|
|00002d80| 69 6e 74 66 28 20 6f 75 | 74 2c 20 22 23 65 6c 73 |intf( ou|t, "#els|
|00002d90| 65 5c 6e 22 20 29 3b 0a | 09 09 66 73 65 65 6b 28 |e\n" );.|..fseek(|
|00002da0| 20 69 6e 2c 20 30 4c 2c | 20 30 20 29 3b 0a 09 09 | in, 0L,| 0 );...|
|00002db0| 77 68 69 6c 65 28 20 72 | 65 61 64 6c 69 6e 65 28 |while( r|eadline(|
|00002dc0| 20 69 6e 2c 20 6c 69 6e | 65 20 29 20 21 3d 20 45 | in, lin|e ) != E|
|00002dd0| 4f 46 20 29 20 7b 0a 09 | 09 09 69 66 28 20 70 61 |OF ) {..|..if( pa|
|00002de0| 72 73 65 5f 66 75 6e 63 | 74 69 6f 6e 5f 64 65 63 |rse_func|tion_dec|
|00002df0| 6c 6e 28 20 6c 69 6e 65 | 2c 20 26 66 20 29 20 29 |ln( line|, &f ) )|
|00002e00| 20 7b 0a 09 09 09 09 6f | 75 74 5f 65 78 74 65 72 | {.....o|ut_exter|
|00002e10| 6e 28 20 6f 75 74 2c 20 | 26 66 2c 20 46 41 4c 53 |n( out, |&f, FALS|
|00002e20| 45 20 29 3b 0a 09 09 09 | 7d 0a 09 09 7d 0a 09 09 |E );....|}...}...|
|00002e30| 66 70 72 69 6e 74 66 28 | 20 6f 75 74 2c 20 22 23 |fprintf(| out, "#|
|00002e40| 65 6e 64 69 66 5c 6e 22 | 20 29 3b 0a 09 7d 0a 09 |endif\n"| );..}..|
|00002e50| 66 63 6c 6f 73 65 28 20 | 69 6e 20 29 3b 0a 09 66 |fclose( |in );..f|
|00002e60| 63 6c 6f 73 65 28 20 6f | 75 74 20 29 3b 0a 09 65 |close( o|ut );..e|
|00002e70| 78 69 74 28 20 30 20 29 | 3b 0a 7d 0a 0a 0a 76 6f |xit( 0 )|;.}...vo|
|00002e80| 69 64 20 75 73 61 67 65 | 28 62 29 20 42 4f 4f 4c |id usage|(b) BOOL|
|00002e90| 20 62 3b 0a 7b 0a 09 41 | 53 53 45 52 54 28 20 62 | b;.{..A|SSERT( b|
|00002ea0| 2c 20 28 22 55 73 61 67 | 65 3a 20 70 72 6f 74 6f |, ("Usag|e: proto|
|00002eb0| 20 5b 2d 66 5d 20 69 6e | 66 69 6c 65 20 5b 6f 75 | [-f] in|file [ou|
|00002ec0| 74 66 69 6c 65 5d 5c 6e | 22 29 20 29 3b 0a 7d 0a |tfile]\n|") );.}.|
|00002ed0| 0a 0a 76 6f 69 64 20 6f | 75 74 5f 65 78 74 65 72 |..void o|ut_exter|
|00002ee0| 6e 28 20 6f 75 74 2c 20 | 66 2c 20 62 20 29 20 46 |n( out, |f, b ) F|
|00002ef0| 49 4c 45 20 2a 6f 75 74 | 3b 20 46 44 45 43 4c 20 |ILE *out|; FDECL |
|00002f00| 2a 66 3b 20 42 4f 4f 4c | 20 62 3b 0a 7b 0a 09 49 |*f; BOOL| b;.{..I|
|00002f10| 44 4c 49 53 54 20 20 69 | 3b 0a 0a 09 66 70 72 69 |DLIST i|;...fpri|
|00002f20| 6e 74 66 28 20 6f 75 74 | 2c 20 22 65 78 74 65 72 |ntf( out|, "exter|
|00002f30| 6e 20 25 73 20 25 73 28 | 22 2c 20 66 2d 3e 66 74 |n %s %s(|", f->ft|
|00002f40| 79 70 65 2c 20 66 2d 3e | 66 6e 61 6d 65 20 29 3b |ype, f->|fname );|
|00002f50| 0a 09 69 66 28 20 62 20 | 29 20 7b 0a 09 09 69 66 |..if( b |) {...if|
|00002f60| 28 20 66 2d 3e 66 6f 72 | 6d 61 6c 73 20 29 20 7b |( f->for|mals ) {|
|00002f70| 0a 09 09 09 70 72 6f 74 | 6f 74 79 70 65 28 20 6f |....prot|otype( o|
|00002f80| 75 74 2c 20 66 2c 20 66 | 2d 3e 66 6f 72 6d 61 6c |ut, f, f|->formal|
|00002f90| 73 2d 3e 69 64 20 29 3b | 0a 09 09 09 66 6f 72 28 |s->id );|....for(|
|00002fa0| 20 69 3d 66 2d 3e 66 6f | 72 6d 61 6c 73 2d 3e 6e | i=f->fo|rmals->n|
|00002fb0| 65 78 74 3b 20 69 3b 20 | 69 3d 69 2d 3e 6e 65 78 |ext; i; |i=i->nex|
|00002fc0| 74 20 29 20 7b 0a 09 09 | 09 09 66 70 72 69 6e 74 |t ) {...|..fprint|
|00002fd0| 66 28 20 6f 75 74 2c 20 | 22 2c 22 20 29 3b 0a 09 |f( out, |"," );..|
|00002fe0| 09 09 09 70 72 6f 74 6f | 74 79 70 65 28 20 6f 75 |...proto|type( ou|
|00002ff0| 74 2c 20 66 2c 20 69 2d | 3e 69 64 20 29 3b 0a 09 |t, f, i-|>id );..|
|00003000| 09 09 7d 0a 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |..}...} |else {..|
|00003010| 09 09 66 70 72 69 6e 74 | 66 28 20 6f 75 74 2c 20 |..fprint|f( out, |
|00003020| 22 20 76 6f 69 64 20 22 | 20 29 3b 0a 09 09 7d 0a |" void "| );...}.|
|00003030| 09 7d 0a 09 66 70 72 69 | 6e 74 66 28 20 6f 75 74 |.}..fpri|ntf( out|
|00003040| 2c 20 22 29 3b 5c 6e 22 | 20 29 3b 0a 7d 0a 0a 0a |, ");\n"| );.}...|
|00003050| 2f 2a 20 70 72 69 6e 74 | 20 74 68 65 20 6f 72 69 |/* print| the ori|
|00003060| 67 69 6e 61 6c 20 66 6f | 72 6d 20 6f 66 20 74 68 |ginal fo|rm of th|
|00003070| 65 20 66 75 6e 63 74 69 | 6f 6e 20 64 65 63 6c 61 |e functi|on decla|
|00003080| 72 61 74 69 6f 6e 20 2a | 2f 0a 0a 76 6f 69 64 20 |ration *|/..void |
|00003090| 70 72 69 6e 74 5f 66 64 | 65 63 6c 28 20 6f 75 74 |print_fd|ecl( out|
|000030a0| 2c 20 66 20 29 20 46 49 | 4c 45 20 2a 6f 75 74 3b |, f ) FI|LE *out;|
|000030b0| 20 46 44 45 43 4c 20 2a | 66 3b 0a 7b 0a 09 49 44 | FDECL *|f;.{..ID|
|000030c0| 4c 49 53 54 20 69 3b 0a | 09 54 53 4c 49 53 54 20 |LIST i;.|.TSLIST |
|000030d0| 74 3b 0a 0a 09 66 70 72 | 69 6e 74 66 28 20 6f 75 |t;...fpr|intf( ou|
|000030e0| 74 2c 20 22 25 73 20 25 | 73 28 22 2c 20 66 2d 3e |t, "%s %|s(", f->|
|000030f0| 66 74 79 70 65 2c 20 66 | 2d 3e 66 6e 61 6d 65 20 |ftype, f|->fname |
|00003100| 29 3b 0a 09 69 66 28 20 | 66 2d 3e 66 6f 72 6d 61 |);..if( |f->forma|
|00003110| 6c 73 20 29 20 7b 0a 09 | 09 66 70 72 69 6e 74 66 |ls ) {..|.fprintf|
|00003120| 28 20 6f 75 74 2c 20 22 | 25 73 22 2c 20 66 2d 3e |( out, "|%s", f->|
|00003130| 66 6f 72 6d 61 6c 73 2d | 3e 69 64 20 29 3b 0a 09 |formals-|>id );..|
|00003140| 09 66 6f 72 28 20 69 3d | 66 2d 3e 66 6f 72 6d 61 |.for( i=|f->forma|
|00003150| 6c 73 2d 3e 6e 65 78 74 | 3b 20 69 3b 20 69 3d 69 |ls->next|; i; i=i|
|00003160| 2d 3e 6e 65 78 74 20 29 | 20 7b 0a 09 09 09 66 70 |->next )| {....fp|
|00003170| 72 69 6e 74 66 28 20 6f | 75 74 2c 20 22 2c 20 25 |rintf( o|ut, ", %|
|00003180| 73 22 2c 20 69 2d 3e 69 | 64 20 29 3b 0a 09 09 7d |s", i->i|d );...}|
|00003190| 0a 09 7d 0a 09 66 70 72 | 69 6e 74 66 28 20 6f 75 |..}..fpr|intf( ou|
|000031a0| 74 2c 20 22 29 22 20 29 | 3b 0a 09 66 6f 72 28 20 |t, ")" )|;..for( |
|000031b0| 74 3d 66 2d 3e 66 74 79 | 70 65 73 3b 20 74 3b 20 |t=f->fty|pes; t; |
|000031c0| 74 3d 74 2d 3e 6e 65 78 | 74 20 29 20 7b 0a 09 09 |t=t->nex|t ) {...|
|000031d0| 66 70 72 69 6e 74 66 28 | 20 6f 75 74 2c 20 22 20 |fprintf(| out, " |
|000031e0| 25 73 20 25 73 3b 22 2c | 20 74 2d 3e 74 79 70 65 |%s %s;",| t->type|
|000031f0| 2c 20 74 2d 3e 76 61 72 | 20 29 3b 0a 09 7d 0a 09 |, t->var| );..}..|
|00003200| 66 70 72 69 6e 74 66 28 | 20 6f 75 74 2c 20 22 20 |fprintf(| out, " |
|00003210| 5c 6e 22 20 29 3b 0a 7d | 0a 0a 0a 76 6f 69 64 20 |\n" );.}|...void |
|00003220| 70 72 6f 74 6f 74 79 70 | 65 28 20 6f 75 74 2c 20 |prototyp|e( out, |
|00003230| 66 2c 20 6e 61 6d 65 20 | 29 20 46 49 4c 45 20 2a |f, name |) FILE *|
|00003240| 6f 75 74 3b 20 46 44 45 | 43 4c 20 2a 66 3b 20 63 |out; FDE|CL *f; c|
|00003250| 68 61 72 20 2a 6e 61 6d | 65 3b 0a 7b 0a 09 54 53 |har *nam|e;.{..TS|
|00003260| 4c 49 53 54 20 74 3b 0a | 0a 09 66 6f 72 28 20 74 |LIST t;.|..for( t|
|00003270| 3d 66 2d 3e 66 74 79 70 | 65 73 3b 20 74 3b 20 74 |=f->ftyp|es; t; t|
|00003280| 3d 74 2d 3e 6e 65 78 74 | 20 29 20 7b 0a 09 09 69 |=t->next| ) {...i|
|00003290| 66 28 20 73 74 72 65 71 | 28 20 6e 61 6d 65 2c 20 |f( streq|( name, |
|000032a0| 74 2d 3e 76 61 72 20 29 | 20 29 20 7b 0a 09 09 09 |t->var )| ) {....|
|000032b0| 66 70 72 69 6e 74 66 28 | 20 6f 75 74 2c 20 22 20 |fprintf(| out, " |
|000032c0| 25 73 20 22 2c 20 74 2d | 3e 74 79 70 65 20 29 3b |%s ", t-|>type );|
|000032d0| 0a 09 09 09 72 65 74 75 | 72 6e 3b 0a 09 09 7d 0a |....retu|rn;...}.|
|000032e0| 09 7d 0a 09 66 70 72 69 | 6e 74 66 28 20 73 74 64 |.}..fpri|ntf( std|
|000032f0| 65 72 72 2c 20 22 77 61 | 72 6e 69 6e 67 3a 20 25 |err, "wa|rning: %|
|00003300| 73 20 68 61 73 20 75 6e | 64 65 63 6c 61 72 65 64 |s has un|declared|
|00003310| 20 66 6f 72 6d 61 6c 20 | 27 25 73 27 20 3d 3e 20 | formal |'%s' => |
|00003320| 69 6e 74 65 67 65 72 5c | 6e 22 2c 0a 09 09 66 2d |integer\|n",...f-|
|00003330| 3e 66 6e 61 6d 65 2c 20 | 6e 61 6d 65 20 29 3b 0a |>fname, |name );.|
|00003340| 66 70 72 69 6e 74 66 28 | 20 6f 75 74 2c 20 22 20 |fprintf(| out, " |
|00003350| 69 6e 74 22 20 29 3b 0a | 7d 0a 0a 0a 69 6e 74 20 |int" );.|}...int |
|00003360| 72 65 61 64 6c 69 6e 65 | 28 20 66 2c 20 6c 69 6e |readline|( f, lin|
|00003370| 65 20 29 20 46 49 4c 45 | 20 2a 66 3b 20 63 68 61 |e ) FILE| *f; cha|
|00003380| 72 20 2a 6c 69 6e 65 3b | 0a 7b 0a 09 69 6e 74 20 |r *line;|.{..int |
|00003390| 63 3b 0a 09 63 68 61 72 | 20 2a 70 20 3d 20 6c 69 |c;..char| *p = li|
|000033a0| 6e 65 3b 0a 0a 09 63 3d | 67 65 74 63 28 66 29 3b |ne;...c=|getc(f);|
|000033b0| 0a 09 69 66 28 20 63 3d | 3d 45 4f 46 20 29 20 72 |..if( c=|=EOF ) r|
|000033c0| 65 74 75 72 6e 20 63 3b | 0a 09 75 6e 67 65 74 63 |eturn c;|..ungetc|
|000033d0| 28 20 63 2c 20 66 20 29 | 3b 0a 09 77 68 69 6c 65 |( c, f )|;..while|
|000033e0| 28 20 28 63 3d 67 65 74 | 63 28 66 29 29 20 21 3d |( (c=get|c(f)) !=|
|000033f0| 20 27 5c 6e 27 20 29 20 | 2a 70 2b 2b 20 3d 20 63 | '\n' ) |*p++ = c|
|00003400| 3b 0a 09 2a 70 20 3d 20 | 27 5c 30 27 3b 0a 09 72 |;..*p = |'\0';..r|
|00003410| 65 74 75 72 6e 20 70 2d | 6c 69 6e 65 3b 0a 7d 0a |eturn p-|line;.}.|
|00003420| 0a 0a 2f 2a 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |../* ---|--------|
|00003430| 2d 2d 2d 2d 2d 2d 20 4c | 65 78 65 72 20 72 6f 75 |------ L|exer rou|
|00003440| 74 69 6e 65 73 20 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |tines --|--------|
|00003450| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 20 2a 2f 0a |--------|---- */.|
|00003460| 0a 0a 63 68 61 72 20 2a | 6c 65 78 5f 6c 69 6e 65 |..char *|lex_line|
|00003470| 3b 0a 63 68 61 72 20 74 | 6f 6b 73 74 72 5b 31 30 |;.char t|okstr[10|
|00003480| 30 5d 3b 0a 65 6e 75 6d | 20 74 6f 6b 65 6e 5f 74 |0];.enum| token_t|
|00003490| 79 70 65 20 7b 0a 09 74 | 49 44 2c 20 74 53 54 41 |ype {..t|ID, tSTA|
|000034a0| 52 2c 20 74 53 45 4d 49 | 2c 20 74 43 4f 4d 4d 41 |R, tSEMI|, tCOMMA|
|000034b0| 2c 20 74 4f 50 45 4e 2c | 20 74 43 4c 4f 53 45 2c |, tOPEN,| tCLOSE,|
|000034c0| 20 74 45 4f 4c 2c 20 74 | 42 52 41 43 45 2c 20 74 | tEOL, t|BRACE, t|
|000034d0| 45 52 52 0a 7d 20 74 6f | 6b 65 6e 3b 0a 0a 0a 76 |ERR.} to|ken;...v|
|000034e0| 6f 69 64 20 67 65 74 5f | 74 6f 6b 65 6e 28 29 0a |oid get_|token().|
|000034f0| 7b 0a 09 63 68 61 72 20 | 2a 73 20 3d 20 74 6f 6b |{..char |*s = tok|
|00003500| 73 74 72 3b 0a 09 63 68 | 61 72 20 63 3b 0a 0a 09 |str;..ch|ar c;...|
|00003510| 77 68 69 6c 65 28 20 2a | 6c 65 78 5f 6c 69 6e 65 |while( *|lex_line|
|00003520| 20 3d 3d 20 27 20 27 20 | 7c 7c 20 2a 6c 65 78 5f | == ' ' ||| *lex_|
|00003530| 6c 69 6e 65 20 3d 3d 20 | 27 5c 74 27 20 29 20 6c |line == |'\t' ) l|
|00003540| 65 78 5f 6c 69 6e 65 2b | 2b 3b 0a 09 63 20 3d 20 |ex_line+|+;..c = |
|00003550| 2a 6c 65 78 5f 6c 69 6e | 65 2b 2b 3b 0a 09 2a 73 |*lex_lin|e++;..*s|
|00003560| 2b 2b 20 3d 20 63 3b 0a | 09 2a 73 20 3d 20 27 5c |++ = c;.|.*s = '\|
|00003570| 30 27 3b 0a 0a 09 73 77 | 69 74 63 68 28 20 63 20 |0';...sw|itch( c |
|00003580| 29 20 7b 0a 09 63 61 73 | 65 20 27 5c 30 27 20 3a |) {..cas|e '\0' :|
|00003590| 20 74 6f 6b 65 6e 20 3d | 20 74 45 4f 4c 20 20 20 | token =| tEOL |
|000035a0| 20 20 20 3b 20 62 72 65 | 61 6b 3b 0a 09 63 61 73 | ; bre|ak;..cas|
|000035b0| 65 20 27 2c 27 20 20 3a | 20 74 6f 6b 65 6e 20 3d |e ',' :| token =|
|000035c0| 20 74 43 4f 4d 4d 41 20 | 20 20 20 3b 20 62 72 65 | tCOMMA | ; bre|
|000035d0| 61 6b 3b 0a 09 63 61 73 | 65 20 27 3b 27 20 20 3a |ak;..cas|e ';' :|
|000035e0| 20 74 6f 6b 65 6e 20 3d | 20 74 53 45 4d 49 20 20 | token =| tSEMI |
|000035f0| 20 20 20 3b 20 62 72 65 | 61 6b 3b 0a 09 63 61 73 | ; bre|ak;..cas|
|00003600| 65 20 27 2a 27 20 20 3a | 20 74 6f 6b 65 6e 20 3d |e '*' :| token =|
|00003610| 20 74 53 54 41 52 20 20 | 20 20 20 3b 20 62 72 65 | tSTAR | ; bre|
|00003620| 61 6b 3b 0a 09 63 61 73 | 65 20 27 28 27 20 20 3a |ak;..cas|e '(' :|
|00003630| 20 74 6f 6b 65 6e 20 3d | 20 74 4f 50 45 4e 20 20 | token =| tOPEN |
|00003640| 20 20 20 3b 20 62 72 65 | 61 6b 3b 0a 09 63 61 73 | ; bre|ak;..cas|
|00003650| 65 20 27 7b 27 20 20 3a | 20 74 6f 6b 65 6e 20 3d |e '{' :| token =|
|00003660| 20 74 42 52 41 43 45 3b | 20 62 72 65 61 6b 3b 0a | tBRACE;| break;.|
|00003670| 09 63 61 73 65 20 27 29 | 27 20 20 3a 20 74 6f 6b |.case ')|' : tok|
|00003680| 65 6e 20 3d 20 74 43 4c | 4f 53 45 20 20 20 20 3b |en = tCL|OSE ;|
|00003690| 20 62 72 65 61 6b 3b 0a | 09 64 65 66 61 75 6c 74 | break;.|.default|
|000036a0| 20 20 20 3a 0a 09 09 69 | 66 28 20 21 69 73 61 6c | :...i|f( !isal|
|000036b0| 70 68 61 28 20 63 20 29 | 20 29 20 7b 0a 09 09 09 |pha( c )| ) {....|
|000036c0| 74 6f 6b 65 6e 20 3d 20 | 74 45 52 52 3b 0a 09 09 |token = |tERR;...|
|000036d0| 7d 20 65 6c 73 65 20 7b | 0a 09 09 09 77 68 69 6c |} else {|....whil|
|000036e0| 65 28 20 28 63 20 3d 20 | 2a 6c 65 78 5f 6c 69 6e |e( (c = |*lex_lin|
|000036f0| 65 29 3d 3d 27 5f 27 7c | 7c 69 73 61 6c 6e 75 6d |e)=='_'|||isalnum|
|00003700| 28 63 29 20 29 20 7b 0a | 09 09 09 09 2a 73 2b 2b |(c) ) {.|....*s++|
|00003710| 20 3d 20 63 3b 20 6c 65 | 78 5f 6c 69 6e 65 2b 2b | = c; le|x_line++|
|00003720| 3b 0a 09 09 09 7d 0a 09 | 09 09 2a 73 20 3d 20 27 |;....}..|..*s = '|
|00003730| 5c 30 27 3b 0a 09 09 09 | 69 66 28 20 73 74 72 63 |\0';....|if( strc|
|00003740| 6d 70 28 74 6f 6b 73 74 | 72 2c 22 69 66 22 29 20 |mp(tokst|r,"if") |
|00003750| 3d 3d 20 30 0a 09 09 09 | 7c 7c 20 20 73 74 72 63 |== 0....||| strc|
|00003760| 6d 70 28 74 6f 6b 73 74 | 72 2c 22 77 68 69 6c 65 |mp(tokst|r,"while|
|00003770| 22 29 20 3d 3d 20 30 0a | 09 09 09 7c 7c 20 20 73 |") == 0.|...|| s|
|00003780| 74 72 63 6d 70 28 74 6f | 6b 73 74 72 2c 22 73 77 |trcmp(to|kstr,"sw|
|00003790| 69 74 63 68 22 29 20 3d | 3d 20 30 0a 09 09 09 29 |itch") =|= 0....)|
|000037a0| 20 7b 0a 09 09 09 09 74 | 6f 6b 65 6e 20 3d 20 74 | {.....t|oken = t|
|000037b0| 45 52 52 3b 0a 09 09 09 | 7d 20 65 6c 73 65 20 7b |ERR;....|} else {|
|000037c0| 0a 09 09 09 09 74 6f 6b | 65 6e 20 3d 20 74 49 44 |.....tok|en = tID|
|000037d0| 3b 0a 09 09 09 7d 0a 09 | 09 7d 0a 09 7d 0a 7d 0a |;....}..|.}..}.}.|
|000037e0| 0a 0a 2f 2a 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |../* ---|--------|
|000037f0| 2d 2d 2d 2d 2d 2d 2d 2d | 20 50 61 72 73 65 72 20 |--------| Parser |
|00003800| 72 6f 75 74 69 6e 65 73 | 20 2d 2d 2d 2d 2d 2d 2d |routines| -------|
|00003810| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 20 2a 2f 0a |--------|---- */.|
|00003820| 0a 0a 42 4f 4f 4c 20 70 | 61 72 73 65 5f 66 75 6e |..BOOL p|arse_fun|
|00003830| 63 74 69 6f 6e 5f 64 65 | 63 6c 6e 28 20 6c 69 6e |ction_de|cln( lin|
|00003840| 65 2c 20 66 20 29 20 63 | 68 61 72 20 2a 6c 69 6e |e, f ) c|har *lin|
|00003850| 65 3b 20 46 44 45 43 4c | 20 2a 66 3b 0a 7b 0a 09 |e; FDECL| *f;.{..|
|00003860| 63 68 61 72 20 73 74 61 | 72 73 20 20 20 5b 49 44 |char sta|rs [ID|
|00003870| 5f 4c 45 4e 5d 3b 0a 09 | 63 68 61 72 20 62 61 73 |_LEN];..|char bas|
|00003880| 65 74 79 70 65 5b 49 44 | 5f 4c 45 4e 5d 3b 0a 0a |etype[ID|_LEN];..|
|00003890| 09 6c 65 78 5f 6c 69 6e | 65 20 3d 20 6c 69 6e 65 |.lex_lin|e = line|
|000038a0| 3b 0a 09 67 65 74 5f 74 | 6f 6b 65 6e 28 29 3b 0a |;..get_t|oken();.|
|000038b0| 09 69 66 28 20 74 6f 6b | 65 6e 20 21 3d 20 74 49 |.if( tok|en != tI|
|000038c0| 44 20 29 20 72 65 74 75 | 72 6e 20 46 41 4c 53 45 |D ) retu|rn FALSE|
|000038d0| 3b 0a 0a 09 73 74 72 63 | 70 79 28 20 62 61 73 65 |;...strc|py( base|
|000038e0| 74 79 70 65 2c 20 74 6f | 6b 73 74 72 20 29 3b 0a |type, to|kstr );.|
|000038f0| 09 67 65 74 5f 74 6f 6b | 65 6e 28 29 3b 0a 09 69 |.get_tok|en();..i|
|00003900| 66 28 20 74 6f 6b 65 6e | 20 3d 3d 20 74 4f 50 45 |f( token| == tOPE|
|00003910| 4e 20 29 20 7b 0a 09 09 | 73 74 72 63 70 79 28 20 |N ) {...|strcpy( |
|00003920| 66 2d 3e 66 6e 61 6d 65 | 2c 20 62 61 73 65 74 79 |f->fname|, basety|
|00003930| 70 65 20 29 3b 0a 09 09 | 73 74 72 63 70 79 28 20 |pe );...|strcpy( |
|00003940| 66 2d 3e 66 74 79 70 65 | 2c 20 22 69 6e 74 22 20 |f->ftype|, "int" |
|00003950| 29 3b 0a 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 69 |);..} el|se {...i|
|00003960| 66 28 20 21 20 70 61 72 | 73 65 5f 73 74 61 72 72 |f( ! par|se_starr|
|00003970| 65 64 5f 69 64 28 20 73 | 74 61 72 73 2c 20 66 2d |ed_id( s|tars, f-|
|00003980| 3e 66 6e 61 6d 65 20 29 | 20 29 20 72 65 74 75 72 |>fname )| ) retur|
|00003990| 6e 20 46 41 4c 53 45 3b | 0a 0a 09 09 69 66 28 20 |n FALSE;|....if( |
|000039a0| 2a 73 74 61 72 73 20 3d | 3d 20 27 5c 30 27 20 29 |*stars =|= '\0' )|
|000039b0| 20 7b 0a 09 09 09 73 74 | 72 63 70 79 28 20 66 2d | {....st|rcpy( f-|
|000039c0| 3e 66 74 79 70 65 2c 20 | 62 61 73 65 74 79 70 65 |>ftype, |basetype|
|000039d0| 20 29 3b 0a 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 | );...} |else {..|
|000039e0| 09 09 73 70 72 69 6e 74 | 66 28 20 66 2d 3e 66 74 |..sprint|f( f->ft|
|000039f0| 79 70 65 2c 20 22 25 73 | 20 25 73 22 2c 20 62 61 |ype, "%s| %s", ba|
|00003a00| 73 65 74 79 70 65 2c 20 | 73 74 61 72 73 20 29 3b |setype, |stars );|
|00003a10| 0a 09 09 7d 0a 09 09 69 | 66 28 20 74 6f 6b 65 6e |...}...i|f( token|
|00003a20| 20 21 3d 20 74 4f 50 45 | 4e 20 29 20 72 65 74 75 | != tOPE|N ) retu|
|00003a30| 72 6e 20 46 41 4c 53 45 | 3b 0a 09 7d 0a 09 67 65 |rn FALSE|;..}..ge|
|00003a40| 74 5f 74 6f 6b 65 6e 28 | 29 3b 0a 09 69 66 28 20 |t_token(|);..if( |
|00003a50| 21 20 70 61 72 73 65 5f | 6c 69 73 74 5f 69 64 28 |! parse_|list_id(|
|00003a60| 20 26 28 66 2d 3e 66 6f | 72 6d 61 6c 73 29 20 29 | &(f->fo|rmals) )|
|00003a70| 20 7c 7c 20 74 6f 6b 65 | 6e 20 21 3d 20 74 43 4c | || toke|n != tCL|
|00003a80| 4f 53 45 20 29 0a 09 09 | 72 65 74 75 72 6e 20 46 |OSE )...|return F|
|00003a90| 41 4c 53 45 3b 0a 09 67 | 65 74 5f 74 6f 6b 65 6e |ALSE;..g|et_token|
|00003aa0| 28 29 3b 0a 09 72 65 74 | 75 72 6e 20 70 61 72 73 |();..ret|urn pars|
|00003ab0| 65 5f 6c 69 73 74 5f 74 | 73 28 20 26 28 66 2d 3e |e_list_t|s( &(f->|
|00003ac0| 66 74 79 70 65 73 29 20 | 29 3b 0a 7d 0a 0a 0a 2f |ftypes) |);.}.../|
|00003ad0| 2a 20 61 74 74 65 6d 70 | 74 20 74 6f 20 70 61 72 |* attemp|t to par|
|00003ae0| 73 65 20 61 6e 20 69 64 | 4c 49 53 54 20 5b 70 6f |se an id|LIST [po|
|00003af0| 73 73 69 62 6c 79 20 65 | 6d 70 74 79 5d 20 2a 2f |ssibly e|mpty] */|
|00003b00| 0a 0a 42 4f 4f 4c 20 70 | 61 72 73 65 5f 6c 69 73 |..BOOL p|arse_lis|
|00003b10| 74 5f 69 64 28 20 69 70 | 20 29 20 49 44 4c 49 53 |t_id( ip| ) IDLIS|
|00003b20| 54 20 2a 69 70 3b 0a 7b | 0a 09 2a 69 70 20 3d 20 |T *ip;.{|..*ip = |
|00003b30| 4e 55 4c 4c 3b 0a 09 69 | 66 28 20 74 6f 6b 65 6e |NULL;..i|f( token|
|00003b40| 20 21 3d 20 74 49 44 20 | 29 20 72 65 74 75 72 6e | != tID |) return|
|00003b50| 20 54 52 55 45 3b 0a 09 | 2a 69 70 20 3d 20 4e 45 | TRUE;..|*ip = NE|
|00003b60| 57 28 20 45 4c 5f 49 44 | 4c 49 53 54 20 29 3b 0a |W( EL_ID|LIST );.|
|00003b70| 09 73 74 72 63 70 79 28 | 20 28 2a 69 70 29 2d 3e |.strcpy(| (*ip)->|
|00003b80| 69 64 2c 20 74 6f 6b 73 | 74 72 20 29 3b 0a 09 67 |id, toks|tr );..g|
|00003b90| 65 74 5f 74 6f 6b 65 6e | 28 29 3b 0a 09 72 65 74 |et_token|();..ret|
|00003ba0| 75 72 6e 20 70 61 72 73 | 65 5f 72 65 73 74 6f 66 |urn pars|e_restof|
|00003bb0| 5f 69 64 73 28 20 26 28 | 28 2a 69 70 29 2d 3e 6e |_ids( &(|(*ip)->n|
|00003bc0| 65 78 74 29 20 29 3b 0a | 7d 0a 0a 0a 42 4f 4f 4c |ext) );.|}...BOOL|
|00003bd0| 20 70 61 72 73 65 5f 72 | 65 73 74 6f 66 5f 69 64 | parse_r|estof_id|
|00003be0| 73 28 20 69 70 20 29 20 | 49 44 4c 49 53 54 20 2a |s( ip ) |IDLIST *|
|00003bf0| 69 70 3b 0a 7b 0a 09 2a | 69 70 20 3d 20 4e 55 4c |ip;.{..*|ip = NUL|
|00003c00| 4c 3b 0a 09 69 66 28 20 | 74 6f 6b 65 6e 20 21 3d |L;..if( |token !=|
|00003c10| 20 74 43 4f 4d 4d 41 20 | 29 20 72 65 74 75 72 6e | tCOMMA |) return|
|00003c20| 20 54 52 55 45 3b 0a 0a | 09 67 65 74 5f 74 6f 6b | TRUE;..|.get_tok|
|00003c30| 65 6e 28 29 3b 0a 09 69 | 66 28 20 74 6f 6b 65 6e |en();..i|f( token|
|00003c40| 20 21 3d 20 74 49 44 20 | 29 20 72 65 74 75 72 6e | != tID |) return|
|00003c50| 20 46 41 4c 53 45 3b 0a | 0a 09 2a 69 70 20 3d 20 | FALSE;.|..*ip = |
|00003c60| 4e 45 57 28 20 45 4c 5f | 49 44 4c 49 53 54 20 29 |NEW( EL_|IDLIST )|
|00003c70| 3b 0a 09 73 74 72 63 70 | 79 28 20 28 2a 69 70 29 |;..strcp|y( (*ip)|
|00003c80| 2d 3e 69 64 2c 20 74 6f | 6b 73 74 72 20 29 3b 0a |->id, to|kstr );.|
|00003c90| 09 67 65 74 5f 74 6f 6b | 65 6e 28 29 3b 0a 09 72 |.get_tok|en();..r|
|00003ca0| 65 74 75 72 6e 20 70 61 | 72 73 65 5f 72 65 73 74 |eturn pa|rse_rest|
|00003cb0| 6f 66 5f 69 64 73 28 20 | 26 28 28 2a 69 70 29 2d |of_ids( |&((*ip)-|
|00003cc0| 3e 6e 65 78 74 29 20 29 | 3b 0a 7d 0a 0a 0a 2f 2a |>next) )|;.}.../*|
|00003cd0| 0a 20 2a 20 61 74 74 65 | 6d 70 74 20 74 6f 20 70 |. * atte|mpt to p|
|00003ce0| 61 72 73 65 20 61 20 6c | 69 73 74 20 6f 66 20 74 |arse a l|ist of t|
|00003cf0| 79 70 65 73 70 65 63 73 | 20 5b 70 6f 73 73 69 62 |ypespecs| [possib|
|00003d00| 6c 79 20 65 6d 70 74 79 | 5d 0a 20 2a 20 66 6f 6c |ly empty|]. * fol|
|00003d10| 6c 6f 77 65 64 20 62 79 | 20 74 45 4f 4c 20 6f 72 |lowed by| tEOL or|
|00003d20| 20 74 42 52 41 43 45 0a | 20 2a 2f 0a 0a 42 4f 4f | tBRACE.| */..BOO|
|00003d30| 4c 20 70 61 72 73 65 5f | 6c 69 73 74 5f 74 73 28 |L parse_|list_ts(|
|00003d40| 20 74 70 20 29 20 54 53 | 4c 49 53 54 20 2a 74 70 | tp ) TS|LIST *tp|
|00003d50| 3b 0a 7b 0a 09 54 53 4c | 49 53 54 20 74 3b 0a 0a |;.{..TSL|IST t;..|
|00003d60| 09 66 6f 72 28 3b 3b 29 | 20 7b 0a 09 09 2a 74 70 |.for(;;)| {...*tp|
|00003d70| 20 3d 20 4e 55 4c 4c 3b | 0a 09 09 69 66 28 20 74 | = NULL;|...if( t|
|00003d80| 6f 6b 65 6e 3d 3d 74 45 | 4f 4c 20 7c 7c 20 74 6f |oken==tE|OL || to|
|00003d90| 6b 65 6e 3d 3d 74 42 52 | 41 43 45 20 29 20 72 65 |ken==tBR|ACE ) re|
|00003da0| 74 75 72 6e 20 54 52 55 | 45 3b 0a 0a 09 09 69 66 |turn TRU|E;....if|
|00003db0| 28 20 21 20 70 61 72 73 | 65 5f 74 79 70 65 73 70 |( ! pars|e_typesp|
|00003dc0| 65 63 28 20 74 70 20 29 | 20 29 20 72 65 74 75 72 |ec( tp )| ) retur|
|00003dd0| 6e 20 46 41 4c 53 45 3b | 0a 09 09 66 6f 72 28 20 |n FALSE;|...for( |
|00003de0| 74 20 3d 20 2a 74 70 3b | 20 74 2d 3e 6e 65 78 74 |t = *tp;| t->next|
|00003df0| 3b 20 74 3d 74 2d 3e 6e | 65 78 74 20 29 3b 0a 09 |; t=t->n|ext );..|
|00003e00| 09 74 70 20 3d 20 26 28 | 74 2d 3e 6e 65 78 74 29 |.tp = &(|t->next)|
|00003e10| 3b 0a 09 7d 0a 09 2f 2a | 4e 4f 54 52 45 41 43 48 |;..}../*|NOTREACH|
|00003e20| 45 44 2a 2f 0a 7d 0a 0a | 0a 42 4f 4f 4c 20 70 61 |ED*/.}..|.BOOL pa|
|00003e30| 72 73 65 5f 74 79 70 65 | 73 70 65 63 28 20 74 70 |rse_type|spec( tp|
|00003e40| 20 29 20 54 53 4c 49 53 | 54 20 2a 74 70 3b 0a 7b | ) TSLIS|T *tp;.{|
|00003e50| 0a 09 63 68 61 72 20 62 | 61 73 65 74 79 70 65 5b |..char b|asetype[|
|00003e60| 49 44 5f 4c 45 4e 5d 3b | 0a 09 63 68 61 72 20 73 |ID_LEN];|..char s|
|00003e70| 74 61 72 73 20 20 20 5b | 49 44 5f 4c 45 4e 5d 3b |tars [|ID_LEN];|
|00003e80| 0a 0a 09 69 66 28 20 74 | 6f 6b 65 6e 20 21 3d 20 |...if( t|oken != |
|00003e90| 74 49 44 20 29 20 72 65 | 74 75 72 6e 20 46 41 4c |tID ) re|turn FAL|
|00003ea0| 53 45 3b 0a 09 73 74 72 | 63 70 79 28 20 62 61 73 |SE;..str|cpy( bas|
|00003eb0| 65 74 79 70 65 2c 20 74 | 6f 6b 73 74 72 20 29 3b |etype, t|okstr );|
|00003ec0| 0a 0a 09 66 6f 72 28 3b | 3b 29 20 7b 0a 09 09 67 |...for(;|;) {...g|
|00003ed0| 65 74 5f 74 6f 6b 65 6e | 28 29 3b 0a 09 09 2a 74 |et_token|();...*t|
|00003ee0| 70 20 3d 20 4e 45 57 28 | 20 45 4c 5f 54 53 4c 49 |p = NEW(| EL_TSLI|
|00003ef0| 53 54 20 29 3b 0a 09 09 | 69 66 28 20 21 20 70 61 |ST );...|if( ! pa|
|00003f00| 72 73 65 5f 73 74 61 72 | 72 65 64 5f 69 64 28 20 |rse_star|red_id( |
|00003f10| 73 74 61 72 73 2c 20 28 | 2a 74 70 29 2d 3e 76 61 |stars, (|*tp)->va|
|00003f20| 72 20 29 20 29 20 72 65 | 74 75 72 6e 20 46 41 4c |r ) ) re|turn FAL|
|00003f30| 53 45 3b 0a 0a 09 09 69 | 66 28 20 2a 73 74 61 72 |SE;....i|f( *star|
|00003f40| 73 20 3d 3d 20 27 5c 30 | 27 20 29 20 7b 0a 09 09 |s == '\0|' ) {...|
|00003f50| 09 73 74 72 63 70 79 28 | 20 28 2a 74 70 29 2d 3e |.strcpy(| (*tp)->|
|00003f60| 74 79 70 65 2c 20 62 61 | 73 65 74 79 70 65 20 29 |type, ba|setype )|
|00003f70| 3b 0a 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |;...} el|se {....|
|00003f80| 73 70 72 69 6e 74 66 28 | 20 28 2a 74 70 29 2d 3e |sprintf(| (*tp)->|
|00003f90| 74 79 70 65 2c 20 22 25 | 73 20 25 73 22 2c 20 62 |type, "%|s %s", b|
|00003fa0| 61 73 65 74 79 70 65 2c | 20 73 74 61 72 73 20 29 |asetype,| stars )|
|00003fb0| 3b 0a 09 09 7d 0a 0a 09 | 09 69 66 28 20 74 6f 6b |;...}...|.if( tok|
|00003fc0| 65 6e 20 3d 3d 20 74 53 | 45 4d 49 20 29 20 7b 0a |en == tS|EMI ) {.|
|00003fd0| 09 09 09 67 65 74 5f 74 | 6f 6b 65 6e 28 29 3b 0a |...get_t|oken();.|
|00003fe0| 09 09 09 72 65 74 75 72 | 6e 20 54 52 55 45 3b 0a |...retur|n TRUE;.|
|00003ff0| 09 09 7d 0a 09 09 69 66 | 28 20 74 6f 6b 65 6e 20 |..}...if|( token |
|00004000| 21 3d 20 74 43 4f 4d 4d | 41 20 29 20 72 65 74 75 |!= tCOMM|A ) retu|
|00004010| 72 6e 20 46 41 4c 53 45 | 3b 0a 09 09 74 70 20 3d |rn FALSE|;...tp =|
|00004020| 20 26 28 28 2a 74 70 29 | 2d 3e 6e 65 78 74 29 3b | &((*tp)|->next);|
|00004030| 0a 09 7d 0a 09 2f 2a 4e | 4f 54 52 45 41 43 48 45 |..}../*N|OTREACHE|
|00004040| 44 2a 2f 0a 7d 0a 0a 0a | 42 4f 4f 4c 20 70 61 72 |D*/.}...|BOOL par|
|00004050| 73 65 5f 73 74 61 72 72 | 65 64 5f 69 64 28 20 73 |se_starr|ed_id( s|
|00004060| 74 61 72 73 2c 20 69 64 | 20 29 20 63 68 61 72 20 |tars, id| ) char |
|00004070| 2a 73 74 61 72 73 2c 20 | 2a 69 64 3b 0a 7b 0a 09 |*stars, |*id;.{..|
|00004080| 42 4f 4f 4c 20 6f 6b 3b | 0a 0a 09 77 68 69 6c 65 |BOOL ok;|...while|
|00004090| 28 20 74 6f 6b 65 6e 20 | 3d 3d 20 74 53 54 41 52 |( token |== tSTAR|
|000040a0| 20 29 20 7b 0a 09 09 2a | 73 74 61 72 73 2b 2b 20 | ) {...*|stars++ |
|000040b0| 3d 20 27 2a 27 3b 0a 09 | 09 67 65 74 5f 74 6f 6b |= '*';..|.get_tok|
|000040c0| 65 6e 28 29 3b 0a 09 7d | 0a 09 2a 73 74 61 72 73 |en();..}|..*stars|
|000040d0| 20 3d 20 27 5c 30 27 3b | 0a 09 6f 6b 20 3d 20 74 | = '\0';|..ok = t|
|000040e0| 6f 6b 65 6e 20 3d 3d 20 | 74 49 44 3b 0a 09 69 66 |oken == |tID;..if|
|000040f0| 28 20 6f 6b 20 29 20 7b | 0a 09 09 73 74 72 63 70 |( ok ) {|...strcp|
|00004100| 79 28 20 69 64 2c 20 74 | 6f 6b 73 74 72 20 29 3b |y( id, t|okstr );|
|00004110| 0a 09 09 67 65 74 5f 74 | 6f 6b 65 6e 28 29 3b 0a |...get_t|oken();.|
|00004120| 09 7d 0a 09 72 65 74 75 | 72 6e 20 6f 6b 3b 0a 7d |.}..retu|rn ok;.}|
|00004130| 0a 53 48 41 52 5f 45 4f | 46 0a 69 66 20 74 65 73 |.SHAR_EO|F.if tes|
|00004140| 74 20 31 30 33 33 32 20 | 2d 6e 65 20 22 60 77 63 |t 10332 |-ne "`wc|
|00004150| 20 2d 63 20 3c 20 27 70 | 72 6f 74 6f 2e 63 27 60 | -c < 'p|roto.c'`|
|00004160| 22 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |".then..|echo sha|
|00004170| 72 3a 20 65 72 72 6f 72 | 20 74 72 61 6e 73 6d 69 |r: error| transmi|
|00004180| 74 74 69 6e 67 20 22 27 | 70 72 6f 74 6f 2e 63 27 |tting "'|proto.c'|
|00004190| 22 20 27 28 73 68 6f 75 | 6c 64 20 68 61 76 65 20 |" '(shou|ld have |
|000041a0| 62 65 65 6e 20 31 30 33 | 33 32 20 63 68 61 72 61 |been 103|32 chara|
|000041b0| 63 74 65 72 73 29 27 0a | 66 69 0a 66 69 20 23 20 |cters)'.|fi.fi # |
|000041c0| 65 6e 64 20 6f 66 20 6f | 76 65 72 77 72 69 74 69 |end of o|verwriti|
|000041d0| 6e 67 20 63 68 65 63 6b | 0a 65 63 68 6f 20 73 68 |ng check|.echo sh|
|000041e0| 61 72 3a 20 65 78 74 72 | 61 63 74 69 6e 67 20 22 |ar: extr|acting "|
|000041f0| 27 74 65 73 74 70 72 6f | 74 6f 27 22 20 27 28 31 |'testpro|to'" '(1|
|00004200| 33 34 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |34 chara|cters)'.|
|00004210| 69 66 20 74 65 73 74 20 | 2d 66 20 27 74 65 73 74 |if test |-f 'test|
|00004220| 70 72 6f 74 6f 27 0a 74 | 68 65 6e 0a 09 65 63 68 |proto'.t|hen..ech|
|00004230| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00004240| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00004250| 74 69 6e 67 20 66 69 6c | 65 20 22 27 74 65 73 74 |ting fil|e "'test|
|00004260| 70 72 6f 74 6f 27 22 0a | 65 6c 73 65 0a 63 61 74 |proto'".|else.cat|
|00004270| 20 3c 3c 20 5c 53 48 41 | 52 5f 45 4f 46 20 3e 20 | << \SHA|R_EOF > |
|00004280| 27 74 65 73 74 70 72 6f | 74 6f 27 0a 69 6e 74 20 |'testpro|to'.int |
|00004290| 78 28 29 0a 63 68 61 72 | 20 2a 78 28 7a 7a 29 20 |x().char| *x(zz) |
|000042a0| 69 6e 74 20 7a 7a 3b 0a | 63 68 61 72 20 2a 78 32 |int zz;.|char *x2|
|000042b0| 28 28 7a 7a 29 20 69 6e | 74 20 7a 7a 3b 0a 63 68 |((zz) in|t zz;.ch|
|000042c0| 61 72 20 2a 78 5f 5f 5f | 5f 33 32 79 28 7a 7a 29 |ar *x___|_32y(zz)|
|000042d0| 20 69 6e 74 20 7a 7a 3b | 0a 68 65 6c 6c 6c 6f 28 | int zz;|.helllo(|
|000042e0| 29 3b 0a 77 69 62 62 6c | 65 77 6f 62 62 6c 65 20 |);.wibbl|ewobble |
|000042f0| 2a 2a 2a 2a 65 65 6b 28 | 78 2c 79 2c 7a 29 20 63 |****eek(|x,y,z) c|
|00004300| 68 61 72 20 2a 2a 7a 3b | 20 69 6e 74 20 78 3b 20 |har **z;| int x; |
|00004310| 7b 0a 53 48 41 52 5f 45 | 4f 46 0a 69 66 20 74 65 |{.SHAR_E|OF.if te|
|00004320| 73 74 20 31 33 34 20 2d | 6e 65 20 22 60 77 63 20 |st 134 -|ne "`wc |
|00004330| 2d 63 20 3c 20 27 74 65 | 73 74 70 72 6f 74 6f 27 |-c < 'te|stproto'|
|00004340| 60 22 0a 74 68 65 6e 0a | 09 65 63 68 6f 20 73 68 |`".then.|.echo sh|
|00004350| 61 72 3a 20 65 72 72 6f | 72 20 74 72 61 6e 73 6d |ar: erro|r transm|
|00004360| 69 74 74 69 6e 67 20 22 | 27 74 65 73 74 70 72 6f |itting "|'testpro|
|00004370| 74 6f 27 22 20 27 28 73 | 68 6f 75 6c 64 20 68 61 |to'" '(s|hould ha|
|00004380| 76 65 20 62 65 65 6e 20 | 31 33 34 20 63 68 61 72 |ve been |134 char|
|00004390| 61 63 74 65 72 73 29 27 | 0a 66 69 0a 66 69 20 23 |acters)'|.fi.fi #|
|000043a0| 20 65 6e 64 20 6f 66 20 | 6f 76 65 72 77 72 69 74 | end of |overwrit|
|000043b0| 69 6e 67 20 63 68 65 63 | 6b 0a 23 09 45 6e 64 20 |ing chec|k.#.End |
|000043c0| 6f 66 20 73 68 65 6c 6c | 20 61 72 63 68 69 76 65 |of shell| archive|
|000043d0| 0a 65 78 69 74 20 30 0a | 0a 2d 2d 2d 2d 2d 2d 2d |.exit 0.|.-------|
|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 2d 2d 2d 2d 0a 44 75 | 6e 63 61 6e 20 57 68 69 |-----.Du|ncan Whi|
|00004430| 74 65 2c 20 20 20 20 20 | 20 20 20 20 20 20 7c 20 |te, | | |
|00004440| 20 20 20 20 20 20 46 6c | 79 69 6e 67 20 69 73 20 | Fl|ying is |
|00004450| 74 68 65 20 61 72 74 20 | 6f 66 20 61 69 6d 69 6e |the art |of aimin|
|00004460| 67 20 6f 6e 65 73 65 6c | 66 0a 44 65 70 74 2e 20 |g onesel|f.Dept. |
|00004470| 4f 66 20 43 6f 6d 70 75 | 74 69 6e 67 2c 20 20 20 |Of Compu|ting, |
|00004480| 20 20 7c 20 20 20 20 20 | 20 20 61 74 20 74 68 65 | | | at the|
|00004490| 20 67 72 6f 75 6e 64 20 | 61 6e 64 20 6d 69 73 73 | ground |and miss|
|000044a0| 69 6e 67 2e 0a 49 6d 70 | 65 72 69 61 6c 20 43 6f |ing..Imp|erial Co|
|000044b0| 6c 6c 65 67 65 2c 20 20 | 20 20 20 20 20 7c 20 20 |llege, | | |
|000044c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2d 2d 20 | | -- |
|000044d0| 44 6f 75 67 6c 61 73 20 | 41 64 61 6d 73 2c 20 53 |Douglas |Adams, S|
|000044e0| 6f 20 4c 6f 6e 67 20 61 | 6e 64 20 54 68 61 6e 6b |o Long a|nd Thank|
|000044f0| 73 0a 4c 6f 6e 64 6f 6e | 20 53 57 37 2c 20 45 6e |s.London| SW7, En|
|00004500| 67 6c 61 6e 64 20 20 20 | 20 20 7c 20 20 20 20 20 |gland | | |
|00004510| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 66 6f 72 | | for|
|00004520| 20 61 6c 6c 20 74 68 65 | 20 66 69 73 68 2e 0a | all the| fish.. |
+--------+-------------------------+-------------------------+--------+--------+