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: emake
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 72 73 | 61 6c 7a 40 70 69 6e 65 |From: rs|alz@pine|
|00000010| 61 70 70 6c 65 2e 62 62 | 6e 2e 63 6f 6d 0a 4e 65 |apple.bb|n.com.Ne|
|00000020| 77 73 67 72 6f 75 70 73 | 3a 20 63 6f 6d 70 2e 73 |wsgroups|: comp.s|
|00000030| 6f 75 72 63 65 73 2e 6d | 69 73 63 0a 53 75 62 6a |ources.m|isc.Subj|
|00000040| 65 63 74 3a 20 76 30 32 | 69 30 34 34 3a 20 65 6d |ect: v02|i044: em|
|00000050| 61 6b 65 20 2d 20 22 70 | 72 65 2d 70 72 6f 63 65 |ake - "p|re-proce|
|00000060| 73 73 6f 72 22 20 66 6f | 72 20 6d 61 6b 65 66 69 |ssor" fo|r makefi|
|00000070| 6c 65 73 0a 4d 65 73 73 | 61 67 65 2d 49 44 3a 20 |les.Mess|age-ID: |
|00000080| 3c 37 31 39 32 40 6e 63 | 6f 61 73 74 2e 55 55 43 |<7192@nc|oast.UUC|
|00000090| 50 3e 0a 44 61 74 65 3a | 20 36 20 46 65 62 20 38 |P>.Date:| 6 Feb 8|
|000000a0| 38 20 30 31 3a 32 34 3a | 31 30 20 47 4d 54 0a 41 |8 01:24:|10 GMT.A|
|000000b0| 70 70 72 6f 76 65 64 3a | 20 61 6c 6c 62 65 72 79 |pproved:| allbery|
|000000c0| 40 6e 63 6f 61 73 74 2e | 55 55 43 50 0a 0a 43 6f |@ncoast.|UUCP..Co|
|000000d0| 6d 70 2e 73 6f 75 72 63 | 65 73 2e 6d 69 73 63 3a |mp.sourc|es.misc:|
|000000e0| 20 56 6f 6c 75 6d 65 20 | 32 2c 20 49 73 73 75 65 | Volume |2, Issue|
|000000f0| 20 34 34 0a 53 75 62 6d | 69 74 74 65 64 2d 42 79 | 44.Subm|itted-By|
|00000100| 3a 20 22 52 69 63 68 20 | 24 61 6c 7a 22 20 3c 72 |: "Rich |$alz" <r|
|00000110| 73 61 6c 7a 40 70 69 6e | 65 61 70 70 6c 65 2e 62 |salz@pin|eapple.b|
|00000120| 62 6e 2e 43 4f 4d 3e 0a | 41 72 63 68 69 76 65 2d |bn.COM>.|Archive-|
|00000130| 4e 61 6d 65 3a 20 65 6d | 61 6b 65 0a 0a 5b 43 72 |Name: em|ake..[Cr|
|00000140| 6f 73 73 2d 70 6f 6c 6c | 69 6e 61 74 69 6f 6e 3f |oss-poll|ination?|
|00000150| 20 20 3b 2d 29 20 20 2b | 2b 62 73 61 5d 0a 0a 4f | ;-) +|+bsa]..O|
|00000160| 6e 65 20 65 61 73 79 20 | 77 61 79 20 74 6f 20 68 |ne easy |way to h|
|00000170| 61 76 65 20 73 74 61 6e | 64 61 72 64 20 6d 61 6b |ave stan|dard mak|
|00000180| 65 20 61 70 70 65 61 72 | 20 74 6f 20 62 65 20 6d |e appear| to be m|
|00000190| 6f 72 65 20 70 6f 77 65 | 72 66 75 6c 2c 20 69 73 |ore powe|rful, is|
|000001a0| 20 74 6f 20 75 73 65 0a | 6d 34 20 6f 72 20 74 68 | to use.|m4 or th|
|000001b0| 65 20 43 20 70 72 65 70 | 72 6f 63 65 73 73 6f 72 |e C prep|rocessor|
|000001c0| 20 73 6f 20 79 6f 75 20 | 63 61 6e 20 64 65 66 69 | so you |can defi|
|000001d0| 6e 65 20 70 61 72 61 6d | 65 74 65 72 69 7a 65 64 |ne param|eterized|
|000001e0| 20 6d 61 63 72 6f 73 20 | 66 6f 72 20 74 68 69 6e | macros |for thin|
|000001f0| 67 73 0a 6c 69 6b 65 20 | 73 69 6d 70 6c 65 20 70 |gs.like |simple p|
|00000200| 72 6f 67 72 61 6d 73 2c | 20 61 6e 64 20 74 68 65 |rograms,| and the|
|00000210| 20 6c 69 6b 65 2e 20 20 | 4f 75 72 20 70 72 6f 6a | like. |Our proj|
|00000220| 65 63 74 20 75 73 65 64 | 20 74 6f 20 64 6f 20 74 |ect used| to do t|
|00000230| 68 69 73 2c 20 61 6e 64 | 20 49 0a 6e 6f 74 69 63 |his, and| I.notic|
|00000240| 65 20 74 68 61 74 20 74 | 68 65 20 58 20 73 6f 66 |e that t|he X sof|
|00000250| 74 77 61 72 65 20 75 73 | 65 73 20 73 6f 6d 65 74 |tware us|es somet|
|00000260| 68 69 6e 67 20 63 61 6c | 6c 65 64 20 22 69 6d 61 |hing cal|led "ima|
|00000270| 6b 65 22 20 77 68 69 63 | 68 20 64 6f 65 73 20 74 |ke" whic|h does t|
|00000280| 68 69 73 0a 74 6f 6f 2e | 0a 57 65 20 75 73 65 64 |his.too.|.We used|
|00000290| 20 74 6f 20 75 73 65 20 | 73 68 65 6c 6c 20 73 63 | to use |shell sc|
|000002a0| 72 69 70 74 73 2c 20 74 | 68 65 6e 20 49 20 77 72 |ripts, t|hen I wr|
|000002b0| 6f 74 65 20 74 68 69 73 | 2e 20 20 28 54 68 65 6e |ote this|. (Then|
|000002c0| 20 77 65 20 72 65 77 72 | 6f 74 65 20 61 6c 6c 20 | we rewr|ote all |
|000002d0| 6f 75 72 0a 4d 61 6b 65 | 66 69 6c 65 73 20 73 6f |our.Make|files so|
|000002e0| 20 77 65 20 64 6f 6e 27 | 74 20 6e 65 65 64 20 74 | we don'|t need t|
|000002f0| 68 69 73 20 61 74 20 61 | 6c 6c 2e 29 20 20 49 74 |his at a|ll.) It|
|00000300| 20 62 61 73 69 63 61 6c | 6c 79 20 72 75 6e 73 20 | basical|ly runs |
|00000310| 63 70 70 20 6f 76 65 72 | 20 61 0a 66 69 6c 65 20 |cpp over| a.file |
|00000320| 6e 61 6d 65 64 20 44 6d | 61 6b 65 66 69 6c 65 20 |named Dm|akefile |
|00000330| 74 6f 20 63 72 65 61 74 | 65 20 73 6f 6d 65 74 68 |to creat|e someth|
|00000340| 69 6e 67 20 63 61 6c 6c | 65 64 20 4d 61 6b 65 41 |ing call|ed MakeA|
|00000350| 75 74 6f 2c 20 69 74 20 | 74 68 65 6e 20 69 6e 76 |uto, it |then inv|
|00000360| 6f 6b 65 73 0a 6d 61 6b | 65 20 6f 6e 20 74 68 61 |okes.mak|e on tha|
|00000370| 74 2e 20 20 49 66 20 4d | 61 6b 65 41 75 74 6f 20 |t. If M|akeAuto |
|00000380| 69 73 20 6d 6f 72 65 20 | 72 65 63 65 6e 74 20 74 |is more |recent t|
|00000390| 68 65 6e 20 44 6d 61 6b | 65 66 69 6c 65 2c 20 79 |hen Dmak|efile, y|
|000003a0| 6f 75 20 73 61 76 65 20 | 74 68 65 20 63 70 70 0a |ou save |the cpp.|
|000003b0| 6f 76 65 72 68 65 61 64 | 20 28 74 68 69 73 20 69 |overhead| (this i|
|000003c0| 73 20 74 68 65 20 62 69 | 67 20 70 72 6f 62 6c 65 |s the bi|g proble|
|000003d0| 6d 20 77 69 74 68 20 69 | 6d 61 6b 65 29 2e 20 20 |m with i|make). |
|000003e0| 41 20 2d 44 20 6f 70 74 | 69 6f 6e 20 61 6c 73 6f |A -D opt|ion also|
|000003f0| 20 66 6f 72 63 65 73 20 | 61 0a 72 65 62 75 69 6c | forces |a.rebuil|
|00000400| 64 2e 0a 0a 54 68 69 73 | 20 6c 65 74 73 20 79 6f |d...This| lets yo|
|00000410| 75 20 64 6f 20 63 75 74 | 65 20 74 68 69 6e 67 73 |u do cut|e things|
|00000420| 20 6c 69 6b 65 20 70 75 | 74 20 23 69 66 64 65 66 | like pu|t #ifdef|
|00000430| 27 73 20 69 6e 20 79 6f | 75 72 20 4d 61 6b 65 66 |'s in yo|ur Makef|
|00000440| 69 6c 65 20 66 6f 72 0a | 64 69 66 66 65 72 65 6e |ile for.|differen|
|00000450| 74 20 75 6e 69 63 65 73 | 2e 20 20 4e 69 63 65 2e |t unices|. Nice.|
|00000460| 20 20 49 74 20 64 6f 65 | 73 6e 27 74 20 72 65 61 | It doe|sn't rea|
|00000470| 6c 6c 79 20 68 61 6e 64 | 6c 65 20 6d 75 6c 74 69 |lly hand|le multi|
|00000480| 2d 6c 69 6e 65 20 23 64 | 65 66 69 6e 65 27 73 20 |-line #d|efine's |
|00000490| 61 73 0a 74 68 65 20 58 | 20 69 6d 61 6b 65 20 64 |as.the X| imake d|
|000004a0| 6f 65 73 2c 20 62 75 74 | 20 79 6f 75 20 63 6f 75 |oes, but| you cou|
|000004b0| 6c 64 20 70 72 6f 62 61 | 62 6c 79 20 73 6c 69 70 |ld proba|bly slip|
|000004c0| 20 74 68 61 74 20 69 6e | 20 62 79 20 70 75 74 74 | that in| by putt|
|000004d0| 69 6e 67 20 69 6e 20 61 | 0a 66 69 6c 74 65 72 20 |ing in a|.filter |
|000004e0| 70 61 73 73 20 74 6f 20 | 74 72 61 6e 73 6c 61 74 |pass to |translat|
|000004f0| 65 20 40 40 20 69 6e 74 | 6f 20 5c 6e 2e 0a 0a 4b |e @@ int|o \n...K|
|00000500| 6e 6f 77 6e 20 74 6f 20 | 77 6f 72 6b 20 6f 6e 20 |nown to |work on |
|00000510| 42 53 44 20 64 65 72 69 | 76 61 74 69 76 65 73 2c |BSD deri|vatives,|
|00000520| 20 73 68 6f 75 6c 64 20 | 74 61 6b 65 20 66 69 76 | should |take fiv|
|00000530| 65 20 6f 72 20 73 6f 20 | 6d 69 6e 75 74 65 73 20 |e or so |minutes |
|00000540| 74 6f 20 70 6f 72 74 0a | 74 6f 20 6f 74 68 65 72 |to port.|to other|
|00000550| 73 20 28 65 2e 67 2e 2c | 20 6e 6f 20 73 79 73 2f |s (e.g.,| no sys/|
|00000560| 66 69 6c 65 2e 68 2c 20 | 6f 72 20 75 73 69 6e 67 |file.h, |or using|
|00000570| 20 63 63 20 2d 45 20 69 | 6e 73 74 65 61 64 20 6f | cc -E i|nstead o|
|00000580| 66 20 2f 6c 69 62 2f 63 | 70 70 2e 29 0a 0a 48 6f |f /lib/c|pp.)..Ho|
|00000590| 70 65 20 6f 74 68 65 72 | 73 20 66 69 6e 64 20 69 |pe other|s find i|
|000005a0| 74 20 75 73 65 66 75 6c | 2e 0a 09 2f 72 24 0a 0a |t useful|.../r$..|
|000005b0| 23 21 20 2f 62 69 6e 2f | 73 68 0a 23 20 54 68 69 |#! /bin/|sh.# Thi|
|000005c0| 73 20 69 73 20 61 20 73 | 68 65 6c 6c 20 61 72 63 |s is a s|hell arc|
|000005d0| 68 69 76 65 2e 20 20 52 | 65 6d 6f 76 65 20 61 6e |hive. R|emove an|
|000005e0| 79 74 68 69 6e 67 20 62 | 65 66 6f 72 65 20 74 68 |ything b|efore th|
|000005f0| 69 73 20 6c 69 6e 65 2c | 20 74 68 65 6e 20 75 6e |is line,| then un|
|00000600| 70 61 63 6b 0a 23 20 69 | 74 20 62 79 20 73 61 76 |pack.# i|t by sav|
|00000610| 69 6e 67 20 69 74 20 69 | 6e 74 6f 20 61 20 66 69 |ing it i|nto a fi|
|00000620| 6c 65 20 61 6e 64 20 74 | 79 70 69 6e 67 20 22 73 |le and t|yping "s|
|00000630| 68 20 66 69 6c 65 22 2e | 20 20 54 6f 20 6f 76 65 |h file".| To ove|
|00000640| 72 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 0a |rwrite e|xisting.|
|00000650| 23 20 66 69 6c 65 73 2c | 20 74 79 70 65 20 22 73 |# files,| type "s|
|00000660| 68 20 66 69 6c 65 20 2d | 63 22 2e 20 20 59 6f 75 |h file -|c". You|
|00000670| 20 63 61 6e 20 61 6c 73 | 6f 20 66 65 65 64 20 74 | can als|o feed t|
|00000680| 68 69 73 20 61 73 20 73 | 74 61 6e 64 61 72 64 20 |his as s|tandard |
|00000690| 69 6e 70 75 74 20 76 69 | 61 0a 23 20 75 6e 73 68 |input vi|a.# unsh|
|000006a0| 61 72 2c 20 6f 72 20 62 | 79 20 74 79 70 69 6e 67 |ar, or b|y typing|
|000006b0| 20 22 73 68 20 3c 66 69 | 6c 65 22 2c 20 65 2e 67 | "sh <fi|le", e.g|
|000006c0| 0a 50 41 54 48 3d 2f 62 | 69 6e 3a 2f 75 73 72 2f |.PATH=/b|in:/usr/|
|000006d0| 62 69 6e 3a 20 3b 20 65 | 78 70 6f 72 74 20 50 41 |bin: ; e|xport PA|
|000006e0| 54 48 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 65 |TH.if te|st -f 'e|
|000006f0| 6d 61 6b 65 2e 63 27 20 | 2d 61 20 22 24 7b 31 7d |make.c' |-a "${1}|
|00000700| 22 20 21 3d 20 22 2d 63 | 22 20 3b 20 74 68 65 6e |" != "-c|" ; then|
|00000710| 20 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 57 | . echo| shar: W|
|00000720| 69 6c 6c 20 6e 6f 74 20 | 63 6c 6f 62 62 65 72 20 |ill not |clobber |
|00000730| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 5c 22 |existing| file \"|
|00000740| 27 65 6d 61 6b 65 2e 63 | 27 5c 22 0a 65 6c 73 65 |'emake.c|'\".else|
|00000750| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 45 78 74 72 |.echo sh|ar: Extr|
|00000760| 61 63 74 69 6e 67 20 5c | 22 27 65 6d 61 6b 65 2e |acting \|"'emake.|
|00000770| 63 27 5c 22 20 5c 28 35 | 35 38 35 20 63 68 61 72 |c'\" \(5|585 char|
|00000780| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00000790| 5e 58 2f 2f 22 20 3e 27 | 65 6d 61 6b 65 2e 63 27 |^X//" >'|emake.c'|
|000007a0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|000007b0| 0a 58 2f 2a 0a 58 2a 2a | 20 20 45 4d 41 4b 45 0a |.X/*.X**| EMAKE.|
|000007c0| 58 2a 2a 20 20 52 75 6e | 20 2f 6c 69 62 2f 63 70 |X** Run| /lib/cp|
|000007d0| 70 20 6f 76 65 72 20 44 | 6d 61 6b 65 66 69 6c 65 |p over D|makefile|
|000007e0| 20 28 69 66 20 6e 65 63 | 65 73 73 61 72 79 29 2c | (if nec|essary),|
|000007f0| 20 74 68 65 6e 20 63 61 | 6c 6c 20 6d 61 6b 65 2e | then ca|ll make.|
|00000800| 0a 58 2a 2a 20 20 54 68 | 65 72 65 20 69 73 20 61 |.X** Th|ere is a|
|00000810| 20 70 72 6f 6c 6f 67 20 | 66 69 6c 65 2c 20 74 68 | prolog |file, th|
|00000820| 65 20 44 6d 61 6b 65 66 | 69 6c 65 2c 20 61 6e 64 |e Dmakef|ile, and|
|00000830| 20 74 68 65 20 65 70 69 | 6c 6f 67 20 66 69 6c 65 | the epi|log file|
|00000840| 3b 0a 58 2a 2a 20 20 73 | 65 65 20 74 68 65 20 4c |;.X** s|ee the L|
|00000850| 69 73 74 20 76 61 72 69 | 61 62 6c 65 20 74 6f 20 |ist vari|able to |
|00000860| 73 65 74 20 74 68 65 73 | 65 2e 0a 58 2a 2a 0a 58 |set thes|e..X**.X|
|00000870| 2a 2a 20 20 54 68 69 73 | 20 63 72 65 61 74 65 73 |** This| creates|
|00000880| 20 61 20 6d 61 6b 65 66 | 69 6c 65 20 63 61 6c 6c | a makef|ile call|
|00000890| 65 64 20 4d 61 6b 65 41 | 75 74 6f 2c 20 73 6f 20 |ed MakeA|uto, so |
|000008a0| 79 6f 75 20 64 6f 6e 27 | 74 20 68 61 76 65 20 74 |you don'|t have t|
|000008b0| 6f 0a 58 2a 2a 20 20 73 | 70 65 6e 64 20 61 6c 6c |o.X** s|pend all|
|000008c0| 20 74 68 61 74 20 73 69 | 6c 6c 79 20 74 69 6d 65 | that si|lly time|
|000008d0| 20 69 6e 20 63 70 70 20 | 69 66 20 74 68 65 20 44 | in cpp |if the D|
|000008e0| 6d 61 6b 65 66 69 6c 65 | 20 68 61 73 6e 27 74 20 |makefile| hasn't |
|000008f0| 63 68 61 6e 67 65 64 2e | 0a 58 2a 2f 0a 58 23 69 |changed.|.X*/.X#i|
|00000900| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|00000910| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 65 72 72 6e |.X#inclu|de <errn|
|00000920| 6f 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |o.h>.X#i|nclude <|
|00000930| 73 79 73 2f 74 79 70 65 | 73 2e 68 3e 0a 58 23 69 |sys/type|s.h>.X#i|
|00000940| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 73 74 61 74 |nclude <|sys/stat|
|00000950| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |.h>.X#in|clude <s|
|00000960| 79 73 2f 66 69 6c 65 2e | 68 3e 0a 58 0a 58 23 69 |ys/file.|h>.X.X#i|
|00000970| 66 64 65 66 09 57 41 49 | 54 5f 55 4e 49 4f 4e 0a |fdef.WAI|T_UNION.|
|00000980| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 77 |X#includ|e <sys/w|
|00000990| 61 69 74 2e 68 3e 0a 58 | 23 64 65 66 69 6e 65 20 |ait.h>.X|#define |
|000009a0| 57 41 49 54 56 41 4c 55 | 45 28 57 29 09 09 28 28 |WAITVALU|E(W)..((|
|000009b0| 57 29 2e 77 5f 72 65 74 | 63 6f 64 65 29 0a 58 74 |W).w_ret|code).Xt|
|000009c0| 79 70 65 64 65 66 20 75 | 6e 69 6f 6e 20 77 61 69 |ypedef u|nion wai|
|000009d0| 74 20 57 41 49 54 45 52 | 3b 0a 58 23 65 6c 73 65 |t WAITER|;.X#else|
|000009e0| 0a 58 23 64 65 66 69 6e | 65 20 57 41 49 54 56 41 |.X#defin|e WAITVA|
|000009f0| 4c 55 45 28 57 29 09 09 | 28 28 57 29 20 3e 3e 20 |LUE(W)..|((W) >> |
|00000a00| 38 29 0a 58 74 79 70 65 | 64 65 66 20 69 6e 74 20 |8).Xtype|def int |
|00000a10| 57 41 49 54 45 52 3b 0a | 58 23 65 6e 64 69 66 09 |WAITER;.|X#endif.|
|00000a20| 2f 2a 20 57 41 49 54 5f | 55 4e 49 4f 4e 20 2a 2f |/* WAIT_|UNION */|
|00000a30| 0a 58 0a 58 0a 58 2f 2a | 0a 58 2a 2a 20 20 48 61 |.X.X.X/*|.X** Ha|
|00000a40| 6e 64 79 20 73 68 6f 72 | 74 68 61 6e 64 73 2e 0a |ndy shor|thands..|
|00000a50| 58 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 53 54 44 |X*/.X#de|fine STD|
|00000a60| 4f 55 54 09 09 31 0a 58 | 23 64 65 66 69 6e 65 20 |OUT..1.X|#define |
|00000a70| 53 54 44 45 52 52 09 09 | 32 0a 58 23 64 65 66 69 |STDERR..|2.X#defi|
|00000a80| 6e 65 20 57 48 49 54 45 | 28 63 29 09 28 28 63 29 |ne WHITE|(c).((c)|
|00000a90| 20 3d 3d 20 27 20 27 20 | 7c 7c 20 28 63 29 20 3d | == ' ' ||| (c) =|
|00000aa0| 3d 20 27 5c 74 27 29 0a | 58 23 64 65 66 69 6e 65 |= '\t').|X#define|
|00000ab0| 20 57 52 49 54 45 28 73 | 29 09 28 76 6f 69 64 29 | WRITE(s|).(void)|
|00000ac0| 77 72 69 74 65 28 53 54 | 44 45 52 52 2c 20 73 2c |write(ST|DERR, s,|
|00000ad0| 20 73 69 7a 65 6f 66 20 | 73 20 2d 20 31 29 3b 0a | sizeof |s - 1);.|
|00000ae0| 58 0a 58 0a 58 2f 2a 0a | 58 2a 2a 20 20 44 61 74 |X.X.X/*.|X** Dat|
|00000af0| 61 74 79 70 65 20 61 6e | 64 20 76 61 72 69 61 62 |atype an|d variab|
|00000b00| 6c 65 20 74 6f 20 68 6f | 6c 64 20 74 68 65 20 6c |le to ho|ld the l|
|00000b10| 69 73 74 20 6f 66 20 43 | 50 50 20 64 69 72 65 63 |ist of C|PP direc|
|00000b20| 74 69 76 65 73 20 74 68 | 61 74 20 77 65 20 73 68 |tives th|at we sh|
|00000b30| 6f 75 6c 64 0a 58 2a 2a | 20 20 70 61 73 73 20 74 |ould.X**| pass t|
|00000b40| 68 72 6f 75 67 68 20 28 | 6d 61 6b 65 27 73 20 63 |hrough (|make's c|
|00000b50| 6f 6d 6d 65 6e 74 20 63 | 68 61 72 61 63 74 65 72 |omment c|haracter|
|00000b60| 20 69 73 20 27 23 27 2c | 20 77 68 69 63 68 20 63 | is '#',| which c|
|00000b70| 6c 61 73 68 65 73 29 2e | 0a 58 2a 2f 0a 58 74 79 |lashes).|.X*/.Xty|
|00000b80| 70 65 64 65 66 20 73 74 | 72 75 63 74 20 7b 0a 58 |pedef st|ruct {.X|
|00000b90| 20 20 20 20 63 68 61 72 | 09 56 61 6c 75 65 5b 38 | char|.Value[8|
|00000ba0| 5d 3b 0a 58 20 20 20 20 | 69 6e 74 09 09 4c 65 6e |];.X |int..Len|
|00000bb0| 67 74 68 3b 0a 58 7d 20 | 41 4c 49 53 54 3b 0a 58 |gth;.X} |ALIST;.X|
|00000bc0| 0a 58 41 4c 49 53 54 09 | 20 20 44 69 72 65 63 74 |.XALIST.| Direct|
|00000bd0| 69 76 65 73 5b 5d 20 3d | 20 7b 0a 58 20 20 20 20 |ives[] =| {.X |
|00000be0| 7b 20 22 69 6e 63 6c 75 | 64 65 22 2c 20 37 20 7d |{ "inclu|de", 7 }|
|00000bf0| 2c 09 7b 20 22 64 65 66 | 69 6e 65 22 2c 20 36 20 |,.{ "def|ine", 6 |
|00000c00| 7d 2c 09 7b 20 22 69 66 | 6e 64 65 66 22 2c 20 36 |},.{ "if|ndef", 6|
|00000c10| 20 7d 2c 0a 58 20 20 20 | 20 7b 20 22 69 66 64 65 | },.X | { "ifde|
|00000c20| 66 22 2c 20 35 20 7d 2c | 09 7b 20 22 75 6e 64 65 |f", 5 },|.{ "unde|
|00000c30| 66 22 2c 20 35 20 7d 2c | 09 09 7b 20 22 65 6e 64 |f", 5 },|..{ "end|
|00000c40| 69 66 22 2c 20 35 20 7d | 2c 0a 58 20 20 20 20 7b |if", 5 }|,.X {|
|00000c50| 20 22 65 6c 73 65 22 2c | 20 34 20 7d 2c 09 7b 20 | "else",| 4 },.{ |
|00000c60| 22 6c 69 6e 65 22 2c 20 | 34 20 7d 2c 09 09 7b 20 |"line", |4 },..{ |
|00000c70| 22 69 66 22 2c 20 32 7d | 2c 0a 58 20 20 20 20 7b |"if", 2}|,.X {|
|00000c80| 20 22 22 2c 20 2d 31 20 | 7d 0a 58 7d 3b 0a 58 0a | "", -1 |}.X};.X.|
|00000c90| 58 2f 2a 20 4f 74 68 65 | 72 20 67 6c 6f 62 61 6c |X/* Othe|r global|
|00000ca0| 73 2e 20 2a 2f 0a 58 63 | 68 61 72 09 20 20 54 65 |s. */.Xc|har. Te|
|00000cb0| 6d 70 49 6e 70 75 74 5b | 5d 20 20 3d 20 22 4d 61 |mpInput[|] = "Ma|
|00000cc0| 6b 65 49 58 58 58 58 58 | 58 22 3b 09 2f 2a 20 43 |keIXXXXX|X";./* C|
|00000cd0| 50 50 20 69 6e 70 75 74 | 20 66 69 6c 65 09 09 2a |PP input| file..*|
|00000ce0| 2f 0a 58 63 68 61 72 09 | 20 20 54 65 6d 70 4f 75 |/.Xchar.| TempOu|
|00000cf0| 74 70 75 74 5b 5d 20 3d | 20 22 4d 61 6b 65 4f 58 |tput[] =| "MakeOX|
|00000d00| 58 58 58 58 58 22 3b 09 | 2f 2a 20 43 50 50 20 6f |XXXXX";.|/* CPP o|
|00000d10| 75 74 70 75 74 20 66 69 | 6c 65 09 09 2a 2f 0a 58 |utput fi|le..*/.X|
|00000d20| 63 68 61 72 09 20 20 44 | 4d 41 4b 45 46 49 4c 45 |char. D|MAKEFILE|
|00000d30| 5b 5d 20 3d 20 22 44 6d | 61 6b 65 66 69 6c 65 22 |[] = "Dm|akefile"|
|00000d40| 3b 09 2f 2a 20 45 6d 61 | 6b 65 27 73 20 6d 61 6b |;./* Ema|ke's mak|
|00000d50| 65 66 69 6c 65 09 09 2a | 2f 0a 58 63 68 61 72 09 |efile..*|/.Xchar.|
|00000d60| 20 20 4d 41 4b 45 46 49 | 4c 45 5b 5d 20 3d 20 22 | MAKEFI|LE[] = "|
|00000d70| 4d 61 6b 65 41 75 74 6f | 22 3b 09 2f 2a 20 47 65 |MakeAuto|";./* Ge|
|00000d80| 6e 65 72 61 74 65 64 20 | 6d 61 6b 65 66 69 6c 65 |nerated |makefile|
|00000d90| 09 09 2a 2f 0a 58 63 68 | 61 72 09 20 2a 4c 69 73 |..*/.Xch|ar. *Lis|
|00000da0| 74 5b 5d 20 3d 20 7b 09 | 09 09 2f 2a 20 53 6f 75 |t[] = {.|../* Sou|
|00000db0| 72 63 65 73 20 66 6f 72 | 20 65 6d 61 6b 65 09 09 |rces for| emake..|
|00000dc0| 2a 2f 0a 58 20 20 20 20 | 22 2f 75 73 72 2f 63 72 |*/.X |"/usr/cr|
|00000dd0| 6f 6e 75 73 2f 63 6c 69 | 62 2f 64 6d 61 6b 65 64 |onus/cli|b/dmaked|
|00000de0| 65 66 73 22 2c 20 44 4d | 41 4b 45 46 49 4c 45 2c |efs", DM|AKEFILE,|
|00000df0| 20 22 2f 75 73 72 2f 63 | 72 6f 6e 75 73 2f 63 6c | "/usr/c|ronus/cl|
|00000e00| 69 62 2f 64 74 61 72 67 | 65 74 73 22 2c 20 4e 55 |ib/dtarg|ets", NU|
|00000e10| 4c 4c 0a 58 7d 3b 0a 58 | 0a 58 2f 2a 20 4c 69 6e |LL.X};.X|.X/* Lin|
|00000e20| 6b 65 64 20 69 6e 20 6c | 61 74 65 72 2e 20 2a 2f |ked in l|ater. */|
|00000e30| 0a 58 65 78 74 65 72 6e | 20 69 6e 74 09 20 65 72 |.Xextern| int. er|
|00000e40| 72 6e 6f 3b 0a 58 65 78 | 74 65 72 6e 20 63 68 61 |rno;.Xex|tern cha|
|00000e50| 72 09 2a 6d 6b 74 65 6d | 70 28 29 3b 0a 58 65 78 |r.*mktem|p();.Xex|
|00000e60| 74 65 72 6e 20 63 68 61 | 72 09 2a 6d 61 6c 6c 6f |tern cha|r.*mallo|
|00000e70| 63 28 29 3b 0a 58 0c 0a | 58 0a 58 2f 2a 0a 58 2a |c();.X..|X.X/*.X*|
|00000e80| 2a 20 20 50 72 69 6e 74 | 20 65 72 72 6f 72 20 6d |* Print| error m|
|00000e90| 65 73 73 61 67 65 2c 20 | 63 6c 65 61 6e 20 75 70 |essage, |clean up|
|00000ea0| 2c 20 61 6e 64 20 64 69 | 65 2e 0a 58 2a 2f 0a 58 |, and di|e..X*/.X|
|00000eb0| 76 6f 69 64 0a 58 51 75 | 69 74 28 73 29 0a 58 20 |void.XQu|it(s).X |
|00000ec0| 20 20 20 63 68 61 72 09 | 2a 73 3b 0a 58 7b 0a 58 | char.|*s;.X{.X|
|00000ed0| 20 20 20 20 70 65 72 72 | 6f 72 28 73 29 3b 0a 58 | perr|or(s);.X|
|00000ee0| 23 69 66 6e 64 65 66 09 | 44 45 42 55 47 0a 58 20 |#ifndef.|DEBUG.X |
|00000ef0| 20 20 20 69 66 20 28 28 | 75 6e 6c 69 6e 6b 28 54 | if ((|unlink(T|
|00000f00| 65 6d 70 49 6e 70 75 74 | 29 20 3c 20 30 20 26 26 |empInput|) < 0 &&|
|00000f10| 20 65 72 72 6e 6f 20 21 | 3d 20 45 4e 4f 45 4e 54 | errno !|= ENOENT|
|00000f20| 29 0a 58 20 20 20 20 20 | 7c 7c 20 28 75 6e 6c 69 |).X ||| (unli|
|00000f30| 6e 6b 28 54 65 6d 70 4f | 75 74 70 75 74 29 20 3c |nk(TempO|utput) <|
|00000f40| 20 30 20 26 26 20 65 72 | 72 6e 6f 20 21 3d 20 45 | 0 && er|rno != E|
|00000f50| 4e 4f 45 4e 54 29 29 0a | 58 09 70 65 72 72 6f 72 |NOENT)).|X.perror|
|00000f60| 28 22 45 72 72 6f 72 20 | 69 6e 20 51 55 49 54 20 |("Error |in QUIT |
|00000f70| 63 6c 65 61 6e 75 70 22 | 29 3b 0a 58 23 65 6e 64 |cleanup"|);.X#end|
|00000f80| 69 66 09 2f 2a 20 44 45 | 42 55 47 20 2a 2f 0a 58 |if./* DE|BUG */.X|
|00000f90| 20 20 20 20 5f 65 78 69 | 74 28 31 29 3b 0a 58 7d | _exi|t(1);.X}|
|00000fa0| 0a 58 0a 58 0a 58 2f 2a | 0a 58 2a 2a 20 20 50 72 |.X.X.X/*|.X** Pr|
|00000fb0| 65 2d 70 72 6f 63 65 73 | 73 20 74 68 65 20 69 6e |e-proces|s the in|
|00000fc0| 70 75 74 20 66 69 6c 65 | 73 2c 20 62 75 69 6c 64 |put file|s, build|
|00000fd0| 69 6e 67 20 74 68 65 20 | 6d 61 6b 65 20 63 6f 6e |ing the |make con|
|00000fe0| 74 72 6f 6c 20 66 69 6c | 65 2e 0a 58 2a 2f 0a 58 |trol fil|e..X*/.X|
|00000ff0| 76 6f 69 64 0a 58 50 72 | 65 70 61 72 65 28 43 61 |void.XPr|epare(Ca|
|00001000| 72 67 76 29 0a 58 20 20 | 20 20 63 68 61 72 09 09 |rgv).X | char..|
|00001010| 2a 2a 43 61 72 67 76 3b | 0a 58 7b 0a 58 20 20 20 |**Cargv;|.X{.X |
|00001020| 20 72 65 67 69 73 74 65 | 72 20 41 4c 49 53 54 09 | registe|r ALIST.|
|00001030| 20 2a 44 3b 0a 58 20 20 | 20 20 72 65 67 69 73 74 | *D;.X | regist|
|00001040| 65 72 20 46 49 4c 45 09 | 20 2a 46 3b 0a 58 20 20 |er FILE.| *F;.X |
|00001050| 20 20 72 65 67 69 73 74 | 65 72 20 46 49 4c 45 09 | regist|er FILE.|
|00001060| 20 2a 49 6e 3b 0a 58 20 | 20 20 20 72 65 67 69 73 | *In;.X | regis|
|00001070| 74 65 72 20 63 68 61 72 | 09 20 2a 70 3b 0a 58 20 |ter char|. *p;.X |
|00001080| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 09 | regis|ter int.|
|00001090| 20 20 69 3b 0a 58 20 20 | 20 20 72 65 67 69 73 74 | i;.X | regist|
|000010a0| 65 72 20 69 6e 74 09 20 | 20 6a 3b 0a 58 20 20 20 |er int. | j;.X |
|000010b0| 20 57 41 49 54 45 52 09 | 09 20 20 57 3b 0a 58 20 | WAITER.|. W;.X |
|000010c0| 20 20 20 63 68 61 72 09 | 09 2a 2a 4e 61 6d 65 3b | char.|.**Name;|
|000010d0| 0a 58 20 20 20 20 63 68 | 61 72 09 09 20 20 62 75 |.X ch|ar.. bu|
|000010e0| 66 66 5b 42 55 46 53 49 | 5a 5d 3b 0a 58 0a 58 20 |ff[BUFSI|Z];.X.X |
|000010f0| 20 20 20 2f 2a 20 43 72 | 65 61 74 65 20 74 65 6d | /* Cr|eate tem|
|00001100| 70 66 69 6c 65 20 66 6f | 72 20 43 50 50 20 69 6e |pfile fo|r CPP in|
|00001110| 70 75 74 2e 20 2a 2f 0a | 58 20 20 20 20 69 66 20 |put. */.|X if |
|00001120| 28 28 46 20 3d 20 66 6f | 70 65 6e 28 54 65 6d 70 |((F = fo|pen(Temp|
|00001130| 49 6e 70 75 74 2c 20 22 | 77 22 29 29 20 3d 3d 20 |Input, "|w")) == |
|00001140| 4e 55 4c 4c 29 0a 58 09 | 51 75 69 74 28 54 65 6d |NULL).X.|Quit(Tem|
|00001150| 70 49 6e 70 75 74 29 3b | 0a 58 0a 58 20 20 20 20 |pInput);|.X.X |
|00001160| 2f 2a 20 57 72 69 74 65 | 20 65 61 63 68 20 69 6e |/* Write| each in|
|00001170| 70 75 74 20 66 69 6c 65 | 20 74 6f 20 74 68 65 20 |put file| to the |
|00001180| 74 65 6d 70 6f 72 61 72 | 79 20 6f 75 74 70 75 74 |temporar|y output|
|00001190| 2e 20 2a 2f 0a 58 20 20 | 20 20 66 6f 72 20 28 4e |. */.X | for (N|
|000011a0| 61 6d 65 20 3d 20 4c 69 | 73 74 3b 20 2a 4e 61 6d |ame = Li|st; *Nam|
|000011b0| 65 3b 20 4e 61 6d 65 2b | 2b 29 20 7b 0a 58 09 69 |e; Name+|+) {.X.i|
|000011c0| 66 20 28 28 49 6e 20 3d | 20 66 6f 70 65 6e 28 2a |f ((In =| fopen(*|
|000011d0| 4e 61 6d 65 2c 20 22 72 | 22 29 29 20 3d 3d 20 4e |Name, "r|")) == N|
|000011e0| 55 4c 4c 29 0a 58 09 20 | 20 20 20 51 75 69 74 28 |ULL).X. | Quit(|
|000011f0| 2a 4e 61 6d 65 29 3b 0a | 58 0a 58 09 2f 2a 20 52 |*Name);.|X.X./* R|
|00001200| 65 61 64 20 69 6e 70 75 | 74 2c 20 65 6c 69 64 69 |ead inpu|t, elidi|
|00001210| 6e 67 20 23 66 6f 6f 20 | 6c 69 6e 65 73 20 69 66 |ng #foo |lines if|
|00001220| 20 66 6f 6f 20 69 73 20 | 6e 6f 74 20 61 20 63 70 | foo is |not a cp|
|00001230| 70 20 64 69 72 65 63 74 | 69 76 65 2e 20 2a 2f 0a |p direct|ive. */.|
|00001240| 58 09 77 68 69 6c 65 20 | 28 66 67 65 74 73 28 62 |X.while |(fgets(b|
|00001250| 75 66 66 2c 20 73 69 7a | 65 6f 66 20 62 75 66 66 |uff, siz|eof buff|
|00001260| 2c 20 49 6e 29 29 0a 58 | 09 20 20 20 20 69 66 20 |, In)).X|. if |
|00001270| 28 62 75 66 66 5b 30 5d | 20 21 3d 20 27 23 27 29 |(buff[0]| != '#')|
|00001280| 0a 58 09 09 28 76 6f 69 | 64 29 66 70 75 74 73 28 |.X..(voi|d)fputs(|
|00001290| 62 75 66 66 2c 20 46 29 | 3b 0a 58 09 20 20 20 20 |buff, F)|;.X. |
|000012a0| 65 6c 73 65 20 7b 0a 58 | 09 09 66 6f 72 20 28 70 |else {.X|..for (p|
|000012b0| 20 3d 20 26 62 75 66 66 | 5b 31 5d 3b 20 2a 70 20 | = &buff|[1]; *p |
|000012c0| 26 26 20 57 48 49 54 45 | 28 2a 70 29 3b 20 70 2b |&& WHITE|(*p); p+|
|000012d0| 2b 29 0a 58 09 09 20 20 | 20 20 70 2b 2b 3b 0a 58 |+).X.. | p++;.X|
|000012e0| 09 09 66 6f 72 20 28 69 | 20 3d 20 73 74 72 6c 65 |..for (i| = strle|
|000012f0| 6e 28 70 29 2c 20 44 20 | 3d 20 44 69 72 65 63 74 |n(p), D |= Direct|
|00001300| 69 76 65 73 3b 20 44 2d | 3e 4c 65 6e 67 74 68 20 |ives; D-|>Length |
|00001310| 3e 3d 20 30 3b 20 44 2b | 2b 29 0a 58 09 09 20 20 |>= 0; D+|+).X.. |
|00001320| 20 20 69 66 20 28 69 20 | 3e 20 44 2d 3e 4c 65 6e | if (i |> D->Len|
|00001330| 67 74 68 0a 58 09 09 20 | 20 20 20 20 26 26 20 73 |gth.X.. | && s|
|00001340| 74 72 6e 63 6d 70 28 70 | 2c 20 44 2d 3e 56 61 6c |trncmp(p|, D->Val|
|00001350| 75 65 2c 20 44 2d 3e 4c | 65 6e 67 74 68 29 20 3d |ue, D->L|ength) =|
|00001360| 3d 20 30 0a 58 09 09 20 | 20 20 20 20 26 26 20 57 |= 0.X.. | && W|
|00001370| 48 49 54 45 28 70 5b 44 | 2d 3e 4c 65 6e 67 74 68 |HITE(p[D|->Length|
|00001380| 5d 29 29 20 7b 0a 58 09 | 09 09 28 76 6f 69 64 29 |])) {.X.|..(void)|
|00001390| 66 70 75 74 73 28 62 75 | 66 66 2c 20 46 29 3b 0a |fputs(bu|ff, F);.|
|000013a0| 58 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 09 20 20 |X...brea|k;.X.. |
|000013b0| 20 20 7d 0a 58 09 20 20 | 20 20 7d 0a 58 0a 58 09 | }.X. | }.X.X.|
|000013c0| 28 76 6f 69 64 29 66 63 | 6c 6f 73 65 28 49 6e 29 |(void)fc|lose(In)|
|000013d0| 3b 0a 58 20 20 20 20 7d | 0a 58 20 20 20 20 28 76 |;.X }|.X (v|
|000013e0| 6f 69 64 29 66 63 6c 6f | 73 65 28 46 29 3b 0a 58 |oid)fclo|se(F);.X|
|000013f0| 0a 58 20 20 20 20 2f 2a | 20 43 72 65 61 74 65 20 |.X /*| Create |
|00001400| 61 20 66 69 6c 65 20 74 | 6f 20 68 6f 6c 64 20 74 |a file t|o hold t|
|00001410| 68 65 20 63 70 70 20 6f | 75 74 70 75 74 2e 20 2a |he cpp o|utput. *|
|00001420| 2f 0a 58 20 20 20 20 69 | 20 3d 20 6f 70 65 6e 28 |/.X i| = open(|
|00001430| 54 65 6d 70 4f 75 74 70 | 75 74 2c 20 4f 5f 57 52 |TempOutp|ut, O_WR|
|00001440| 4f 4e 4c 59 20 7c 20 4f | 5f 54 52 55 4e 43 20 7c |ONLY | O|_TRUNC ||
|00001450| 20 4f 5f 43 52 45 41 54 | 2c 20 30 36 36 36 29 3b | O_CREAT|, 0666);|
|00001460| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 43 61 6c 6c 20 |.X.X |/* Call |
|00001470| 74 68 65 20 70 72 65 2d | 70 72 6f 63 65 73 73 6f |the pre-|processo|
|00001480| 72 2e 20 2a 2f 0a 58 20 | 20 20 20 69 66 20 28 28 |r. */.X | if ((|
|00001490| 6a 20 3d 20 20 66 6f 72 | 6b 28 29 29 20 3d 3d 20 |j = for|k()) == |
|000014a0| 30 29 20 7b 0a 58 09 2f | 2a 20 49 20 74 72 69 65 |0) {.X./|* I trie|
|000014b0| 64 20 74 6f 20 75 73 65 | 20 64 75 70 28 29 20 61 |d to use| dup() a|
|000014c0| 6e 64 20 64 75 70 32 28 | 29 2c 20 62 75 74 20 74 |nd dup2(|), but t|
|000014d0| 68 65 79 20 64 69 64 6e | 27 74 20 77 6f 72 6b 2e |hey didn|'t work.|
|000014e0| 2e 2e 20 2a 2f 0a 58 09 | 69 66 20 28 63 6c 6f 73 |.. */.X.|if (clos|
|000014f0| 65 28 53 54 44 4f 55 54 | 29 20 3c 20 30 20 7c 7c |e(STDOUT|) < 0 |||
|00001500| 20 64 75 70 28 69 29 20 | 21 3d 20 53 54 44 4f 55 | dup(i) |!= STDOU|
|00001510| 54 29 0a 58 09 20 20 20 | 20 70 65 72 72 6f 72 28 |T).X. | perror(|
|00001520| 22 45 72 72 6f 72 20 69 | 6e 20 43 50 50 20 72 65 |"Error i|n CPP re|
|00001530| 64 69 72 65 63 74 69 6f | 6e 22 29 3b 0a 58 09 65 |directio|n");.X.e|
|00001540| 78 65 63 76 28 43 61 72 | 67 76 5b 30 5d 2c 20 43 |xecv(Car|gv[0], C|
|00001550| 61 72 67 76 29 3b 0a 58 | 09 70 65 72 72 6f 72 28 |argv);.X|.perror(|
|00001560| 43 61 72 67 76 5b 30 5d | 29 3b 0a 58 09 5f 65 78 |Cargv[0]|);.X._ex|
|00001570| 69 74 28 31 29 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |it(1);.X| }.X.|
|00001580| 58 20 20 20 20 2f 2a 20 | 57 61 69 74 20 66 6f 72 |X /* |Wait for|
|00001590| 20 69 74 2e 20 2a 2f 0a | 58 20 20 20 20 77 68 69 | it. */.|X whi|
|000015a0| 6c 65 20 28 77 61 69 74 | 28 26 57 29 20 21 3d 20 |le (wait|(&W) != |
|000015b0| 6a 29 0a 58 09 3b 0a 58 | 20 20 20 20 69 66 20 28 |j).X.;.X| if (|
|000015c0| 57 41 49 54 56 41 4c 28 | 57 29 29 0a 58 09 51 75 |WAITVAL(|W)).X.Qu|
|000015d0| 69 74 28 22 43 50 50 20 | 66 61 69 6c 75 72 65 22 |it("CPP |failure"|
|000015e0| 29 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 43 6f 70 |);.X.X | /* Cop|
|000015f0| 79 20 63 70 70 20 6f 75 | 74 70 75 74 20 74 6f 20 |y cpp ou|tput to |
|00001600| 4d 41 4b 45 46 49 4c 45 | 2c 20 65 6c 69 64 69 6e |MAKEFILE|, elidin|
|00001610| 67 20 61 6c 6c 20 22 23 | 22 20 6c 69 6e 65 73 2e |g all "#|" lines.|
|00001620| 20 2a 2f 0a 58 20 20 20 | 20 28 76 6f 69 64 29 63 | */.X | (void)c|
|00001630| 6c 6f 73 65 28 69 29 3b | 0a 58 20 20 20 20 69 66 |lose(i);|.X if|
|00001640| 20 28 28 49 6e 20 3d 20 | 66 6f 70 65 6e 28 54 65 | ((In = |fopen(Te|
|00001650| 6d 70 4f 75 74 70 75 74 | 2c 20 22 72 22 29 29 20 |mpOutput|, "r")) |
|00001660| 3d 3d 20 4e 55 4c 4c 0a | 58 20 20 20 20 20 7c 7c |== NULL.|X |||
|00001670| 20 28 46 20 3d 20 66 6f | 70 65 6e 28 4d 41 4b 45 | (F = fo|pen(MAKE|
|00001680| 46 49 4c 45 2c 20 22 77 | 22 29 29 20 3d 3d 20 4e |FILE, "w|")) == N|
|00001690| 55 4c 4c 29 0a 58 09 51 | 75 69 74 28 22 53 63 61 |ULL).X.Q|uit("Sca|
|000016a0| 6e 6e 69 6e 67 20 63 70 | 70 20 6f 75 74 70 75 74 |nning cp|p output|
|000016b0| 22 29 3b 0a 58 20 20 20 | 20 28 76 6f 69 64 29 66 |");.X | (void)f|
|000016c0| 70 75 74 73 28 22 23 23 | 20 48 41 4e 44 53 20 4f |puts("##| HANDS O|
|000016d0| 46 46 20 54 48 49 53 20 | 46 49 4c 45 2d 2d 49 54 |FF THIS |FILE--IT|
|000016e0| 20 57 41 53 20 41 55 54 | 4f 4d 41 54 49 43 41 4c | WAS AUT|OMATICAL|
|000016f0| 4c 59 20 43 52 45 41 54 | 45 44 21 21 5c 6e 22 2c |LY CREAT|ED!!\n",|
|00001700| 20 46 29 3b 0a 58 20 20 | 20 20 77 68 69 6c 65 20 | F);.X | while |
|00001710| 28 66 67 65 74 73 28 62 | 75 66 66 2c 20 73 69 7a |(fgets(b|uff, siz|
|00001720| 65 6f 66 20 62 75 66 66 | 2c 20 49 6e 29 29 0a 58 |eof buff|, In)).X|
|00001730| 09 69 66 20 28 62 75 66 | 66 5b 30 5d 20 21 3d 20 |.if (buf|f[0] != |
|00001740| 27 23 27 29 0a 58 09 20 | 20 20 20 66 6f 72 20 28 |'#').X. | for (|
|00001750| 70 20 3d 20 62 75 66 66 | 3b 20 2a 70 20 26 26 20 |p = buff|; *p && |
|00001760| 2a 70 20 21 3d 20 27 5c | 6e 27 3b 20 70 2b 2b 29 |*p != '\|n'; p++)|
|00001770| 0a 58 09 09 69 66 20 28 | 21 57 48 49 54 45 28 2a |.X..if (|!WHITE(*|
|00001780| 70 29 29 20 7b 0a 58 09 | 09 20 20 20 20 28 76 6f |p)) {.X.|. (vo|
|00001790| 69 64 29 66 70 75 74 73 | 28 62 75 66 66 2c 20 46 |id)fputs|(buff, F|
|000017a0| 29 3b 0a 58 09 09 20 20 | 20 20 62 72 65 61 6b 3b |);.X.. | break;|
|000017b0| 0a 58 09 09 7d 0a 58 20 | 20 20 20 28 76 6f 69 64 |.X..}.X | (void|
|000017c0| 29 66 63 6c 6f 73 65 28 | 49 6e 29 3b 0a 58 20 20 |)fclose(|In);.X |
|000017d0| 20 20 28 76 6f 69 64 29 | 66 63 6c 6f 73 65 28 46 | (void)|fclose(F|
|000017e0| 29 3b 0a 58 20 20 20 20 | 69 66 20 28 75 6e 6c 69 |);.X |if (unli|
|000017f0| 6e 6b 28 54 65 6d 70 49 | 6e 70 75 74 29 20 3c 20 |nk(TempI|nput) < |
|00001800| 30 20 7c 7c 20 75 6e 6c | 69 6e 6b 28 54 65 6d 70 |0 || unl|ink(Temp|
|00001810| 4f 75 74 70 75 74 29 20 | 3c 20 30 29 0a 58 09 70 |Output) |< 0).X.p|
|00001820| 65 72 72 6f 72 28 22 45 | 72 72 6f 72 20 69 6e 20 |error("E|rror in |
|00001830| 63 6c 65 61 6e 69 6e 67 | 20 75 70 20 74 65 6d 70 |cleaning| up temp|
|00001840| 20 66 69 6c 65 73 22 29 | 3b 0a 58 7d 0a 58 0a 58 | files")|;.X}.X.X|
|00001850| 0a 58 6d 61 69 6e 28 61 | 63 2c 20 61 76 29 0a 58 |.Xmain(a|c, av).X|
|00001860| 20 20 20 20 69 6e 74 09 | 09 09 20 20 61 63 3b 0a | int.|.. ac;.|
|00001870| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |X reg|ister ch|
|00001880| 61 72 09 20 2a 61 76 5b | 5d 3b 0a 58 7b 0a 58 20 |ar. *av[|];.X{.X |
|00001890| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|000018a0| 09 2a 2a 4d 61 72 67 76 | 3b 0a 58 20 20 20 20 72 |.**Margv|;.X r|
|000018b0| 65 67 69 73 74 65 72 20 | 63 68 61 72 09 2a 2a 43 |egister |char.**C|
|000018c0| 61 72 67 76 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |argv;.X | regis|
|000018d0| 74 65 72 20 63 68 61 72 | 09 20 2a 70 3b 0a 58 20 |ter char|. *p;.X |
|000018e0| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 09 | regis|ter int.|
|000018f0| 20 20 4d 63 6f 75 6e 74 | 3b 0a 58 20 20 20 20 72 | Mcount|;.X r|
|00001900| 65 67 69 73 74 65 72 20 | 69 6e 74 09 20 20 43 63 |egister |int. Cc|
|00001910| 6f 75 6e 74 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |ount;.X | regis|
|00001920| 74 65 72 20 69 6e 74 09 | 20 20 46 6f 72 63 65 3b |ter int.| Force;|
|00001930| 0a 58 20 20 20 20 73 74 | 72 75 63 74 20 73 74 61 |.X st|ruct sta|
|00001940| 74 09 09 20 20 53 62 31 | 3b 0a 58 20 20 20 20 73 |t.. Sb1|;.X s|
|00001950| 74 72 75 63 74 20 73 74 | 61 74 09 09 20 20 53 62 |truct st|at.. Sb|
|00001960| 32 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 49 73 20 |2;.X.X | /* Is |
|00001970| 69 74 20 61 6c 6c 20 74 | 68 65 72 65 3f 20 2a 2f |it all t|here? */|
|00001980| 0a 58 20 20 20 20 69 66 | 20 28 73 74 61 74 28 44 |.X if| (stat(D|
|00001990| 4d 41 4b 45 46 49 4c 45 | 2c 20 26 53 62 31 29 20 |MAKEFILE|, &Sb1) |
|000019a0| 3c 20 30 29 0a 58 09 51 | 75 69 74 28 22 52 65 71 |< 0).X.Q|uit("Req|
|000019b0| 75 69 72 65 64 20 66 69 | 6c 65 20 44 6d 61 6b 65 |uired fi|le Dmake|
|000019c0| 66 69 6c 65 20 69 73 20 | 6d 69 73 73 69 6e 67 22 |file is |missing"|
|000019d0| 29 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 49 73 20 |);.X.X | /* Is |
|000019e0| 44 6d 61 6b 65 66 69 6c | 65 20 6e 65 77 65 72 20 |Dmakefil|e newer |
|000019f0| 74 68 61 6e 20 4d 61 6b | 65 46 69 6c 65 3f 20 2a |than Mak|eFile? *|
|00001a00| 2f 0a 58 20 20 20 20 46 | 6f 72 63 65 20 3d 20 73 |/.X F|orce = s|
|00001a10| 74 61 74 28 4d 41 4b 45 | 46 49 4c 45 2c 20 26 53 |tat(MAKE|FILE, &S|
|00001a20| 62 32 29 20 3c 20 30 20 | 7c 7c 20 53 62 31 2e 73 |b2) < 0 ||| Sb1.s|
|00001a30| 74 5f 6d 74 69 6d 65 20 | 3e 3d 20 53 62 32 2e 73 |t_mtime |>= Sb2.s|
|00001a40| 74 5f 6d 74 69 6d 65 3b | 0a 58 0a 58 20 20 20 20 |t_mtime;|.X.X |
|00001a50| 2f 2a 20 42 75 69 6c 64 | 20 61 72 67 75 6d 65 6e |/* Build| argumen|
|00001a60| 74 20 6c 69 73 74 20 73 | 74 75 62 73 2e 20 2a 2f |t list s|tubs. */|
|00001a70| 0a 58 20 20 20 20 4d 61 | 72 67 76 20 3d 20 28 63 |.X Ma|rgv = (c|
|00001a80| 68 61 72 20 2a 2a 29 6d | 61 6c 6c 6f 63 28 28 75 |har **)m|alloc((u|
|00001a90| 6e 73 69 67 6e 65 64 20 | 69 6e 74 29 28 61 63 20 |nsigned |int)(ac |
|00001aa0| 2b 20 34 29 20 2a 20 73 | 69 7a 65 6f 66 20 28 63 |+ 4) * s|izeof (c|
|00001ab0| 68 61 72 20 2a 29 29 3b | 0a 58 20 20 20 20 4d 61 |har *));|.X Ma|
|00001ac0| 72 67 76 5b 30 5d 20 3d | 20 22 6d 61 6b 65 22 3b |rgv[0] =| "make";|
|00001ad0| 0a 58 20 20 20 20 4d 61 | 72 67 76 5b 31 5d 20 3d |.X Ma|rgv[1] =|
|00001ae0| 20 22 2d 66 22 3b 0a 58 | 20 20 20 20 4d 61 72 67 | "-f";.X| Marg|
|00001af0| 76 5b 32 5d 20 3d 20 4d | 41 4b 45 46 49 4c 45 3b |v[2] = M|AKEFILE;|
|00001b00| 0a 58 20 20 20 20 43 61 | 72 67 76 20 3d 20 28 63 |.X Ca|rgv = (c|
|00001b10| 68 61 72 20 2a 2a 29 6d | 61 6c 6c 6f 63 28 28 75 |har **)m|alloc((u|
|00001b20| 6e 73 69 67 6e 65 64 20 | 69 6e 74 29 28 61 63 20 |nsigned |int)(ac |
|00001b30| 2b 20 33 29 20 2a 20 73 | 69 7a 65 6f 66 20 28 63 |+ 3) * s|izeof (c|
|00001b40| 68 61 72 20 2a 29 29 3b | 0a 58 20 20 20 20 43 61 |har *));|.X Ca|
|00001b50| 72 67 76 5b 30 5d 20 3d | 20 22 2f 6c 69 62 2f 63 |rgv[0] =| "/lib/c|
|00001b60| 70 70 22 3b 0a 58 20 20 | 20 20 43 61 72 67 76 5b |pp";.X | Cargv[|
|00001b70| 31 5d 20 3d 20 22 2d 49 | 2f 75 73 72 2f 63 72 6f |1] = "-I|/usr/cro|
|00001b80| 6e 75 73 2f 69 6e 63 6c | 75 64 65 22 3b 0a 58 0a |nus/incl|ude";.X.|
|00001b90| 58 20 20 20 20 2f 2a 20 | 43 72 65 61 74 65 20 73 |X /* |Create s|
|00001ba0| 70 6f 6f 6c 20 66 69 6c | 65 73 2e 20 2a 2f 0a 58 |pool fil|es. */.X|
|00001bb0| 20 20 20 20 28 76 6f 69 | 64 29 6d 6b 74 65 6d 70 | (voi|d)mktemp|
|00001bc0| 28 54 65 6d 70 49 6e 70 | 75 74 29 3b 0a 58 20 20 |(TempInp|ut);.X |
|00001bd0| 20 20 28 76 6f 69 64 29 | 6d 6b 74 65 6d 70 28 54 | (void)|mktemp(T|
|00001be0| 65 6d 70 4f 75 74 70 75 | 74 29 3b 0a 58 0a 58 20 |empOutpu|t);.X.X |
|00001bf0| 20 20 20 2f 2a 20 53 63 | 61 6e 20 61 72 67 20 6c | /* Sc|an arg l|
|00001c00| 69 73 74 2c 20 6d 6f 76 | 69 6e 67 20 22 2d 44 78 |ist, mov|ing "-Dx|
|00001c10| 78 78 22 20 74 6f 20 63 | 70 70 2c 20 61 6c 6c 20 |xx" to c|pp, all |
|00001c20| 6f 74 68 65 72 20 73 74 | 75 66 66 20 74 6f 20 6d |other st|uff to m|
|00001c30| 61 6b 65 2e 20 2a 2f 0a | 58 20 20 20 20 66 6f 72 |ake. */.|X for|
|00001c40| 20 28 4d 63 6f 75 6e 74 | 20 3d 20 33 2c 20 43 63 | (Mcount| = 3, Cc|
|00001c50| 6f 75 6e 74 20 3d 20 32 | 3b 20 70 20 3d 20 2a 2b |ount = 2|; p = *+|
|00001c60| 2b 61 76 3b 20 29 0a 58 | 09 69 66 20 28 70 5b 30 |+av; ).X|.if (p[0|
|00001c70| 5d 20 3d 3d 20 27 2d 27 | 20 26 26 20 70 5b 31 5d |] == '-'| && p[1]|
|00001c80| 20 3d 3d 20 27 44 27 29 | 20 7b 0a 58 09 20 20 20 | == 'D')| {.X. |
|00001c90| 20 46 6f 72 63 65 2b 2b | 3b 0a 58 09 20 20 20 20 | Force++|;.X. |
|00001ca0| 43 61 72 67 76 5b 43 63 | 6f 75 6e 74 2b 2b 5d 20 |Cargv[Cc|ount++] |
|00001cb0| 3d 20 70 3b 0a 58 09 7d | 0a 58 09 65 6c 73 65 0a |= p;.X.}|.X.else.|
|00001cc0| 58 09 20 20 20 20 4d 61 | 72 67 76 5b 4d 63 6f 75 |X. Ma|rgv[Mcou|
|00001cd0| 6e 74 2b 2b 5d 20 3d 20 | 70 3b 0a 58 20 20 20 20 |nt++] = |p;.X |
|00001ce0| 43 61 72 67 76 5b 43 63 | 6f 75 6e 74 2b 2b 5d 20 |Cargv[Cc|ount++] |
|00001cf0| 3d 20 54 65 6d 70 49 6e | 70 75 74 3b 0a 58 20 20 |= TempIn|put;.X |
|00001d00| 20 20 43 61 72 67 76 5b | 43 63 6f 75 6e 74 5d 20 | Cargv[|Ccount] |
|00001d10| 3d 20 4e 55 4c 4c 3b 0a | 58 20 20 20 20 4d 61 72 |= NULL;.|X Mar|
|00001d20| 67 76 5b 4d 63 6f 75 6e | 74 5d 20 3d 20 4e 55 4c |gv[Mcoun|t] = NUL|
|00001d30| 4c 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 52 65 62 |L;.X.X | /* Reb|
|00001d40| 75 69 6c 64 20 4d 41 4b | 45 46 49 4c 45 20 69 66 |uild MAK|EFILE if|
|00001d50| 20 6e 65 63 65 73 73 61 | 72 79 2e 20 2a 2f 0a 58 | necessa|ry. */.X|
|00001d60| 20 20 20 20 69 66 20 28 | 46 6f 72 63 65 29 20 7b | if (|Force) {|
|00001d70| 0a 58 09 73 74 61 74 69 | 63 20 63 68 61 72 09 52 |.X.stati|c char.R|
|00001d80| 45 42 55 49 4c 44 5b 5d | 20 3d 20 22 52 65 62 75 |EBUILD[]| = "Rebu|
|00001d90| 69 6c 64 69 6e 67 2e 2e | 2e 22 3b 0a 58 09 73 74 |ilding..|.";.X.st|
|00001da0| 61 74 69 63 20 63 68 61 | 72 09 44 4f 4e 45 5b 5d |atic cha|r.DONE[]|
|00001db0| 20 3d 20 22 20 20 64 6f | 6e 65 5c 6e 22 3b 0a 58 | = " do|ne\n";.X|
|00001dc0| 0a 58 09 57 52 49 54 45 | 28 52 45 42 55 49 4c 44 |.X.WRITE|(REBUILD|
|00001dd0| 29 3b 0a 58 09 50 72 65 | 70 61 72 65 28 43 61 72 |);.X.Pre|pare(Car|
|00001de0| 67 76 29 3b 0a 58 09 57 | 52 49 54 45 28 44 4f 4e |gv);.X.W|RITE(DON|
|00001df0| 45 29 3b 0a 58 20 20 20 | 20 7d 0a 58 0a 58 20 20 |E);.X | }.X.X |
|00001e00| 20 20 2f 2a 20 4e 6f 77 | 20 68 61 76 65 20 6d 61 | /* Now| have ma|
|00001e10| 6b 65 20 64 6f 20 74 68 | 65 20 72 65 61 6c 20 77 |ke do th|e real w|
|00001e20| 6f 72 6b 2e 20 2a 2f 0a | 58 20 20 20 20 28 76 6f |ork. */.|X (vo|
|00001e30| 69 64 29 65 78 65 63 76 | 70 28 4d 61 72 67 76 5b |id)execv|p(Margv[|
|00001e40| 30 5d 2c 20 4d 61 72 67 | 76 29 3b 0a 58 20 20 20 |0], Marg|v);.X |
|00001e50| 20 51 75 69 74 28 4d 61 | 72 67 76 5b 30 5d 29 3b | Quit(Ma|rgv[0]);|
|00001e60| 0a 58 7d 0a 45 4e 44 5f | 4f 46 5f 46 49 4c 45 0a |.X}.END_|OF_FILE.|
|00001e70| 69 66 20 74 65 73 74 20 | 35 35 38 35 20 2d 6e 65 |if test |5585 -ne|
|00001e80| 20 60 77 63 20 2d 63 20 | 3c 27 65 6d 61 6b 65 2e | `wc -c |<'emake.|
|00001e90| 63 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |c'`; the|n. ec|
|00001ea0| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 65 6d 61 6b |ho shar:| \"'emak|
|00001eb0| 65 2e 63 27 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |e.c'\" u|npacked |
|00001ec0| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00001ed0| 0a 66 69 0a 23 20 65 6e | 64 20 6f 66 20 27 65 6d |.fi.# en|d of 'em|
|00001ee0| 61 6b 65 2e 63 27 0a 66 | 69 0a 65 63 68 6f 20 73 |ake.c'.f|i.echo s|
|00001ef0| 68 61 72 3a 20 45 6e 64 | 20 6f 66 20 73 68 65 6c |har: End| of shel|
|00001f00| 6c 20 61 72 63 68 69 76 | 65 2e 0a 65 78 69 74 20 |l archiv|e..exit |
|00001f10| 30 0a | |0. | |
+--------+-------------------------+-------------------------+--------+--------+