Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: Notesfiles $Revision: 1.7.0.10 $; site uiucuxc
Path: utzoo!watmath!clyde!cbosgd!ihnp4!inuxc!pur-ee!uiucdcs!uiucuxc!grayson
From: grayson@uiucuxc.CSO.UIUC.EDU
Newsgroups: net.sources
Subject: msdos make (2/2)
Message-ID: <12500026@uiucuxc>
Date: Sat, 18-Jan-86 10:05:00 EST
Article-I.D.: uiucuxc.12500026
Posted: Sat Jan 18 10:05:00 1986
Date-Received: Tue, 21-Jan-86 07:11:30 EST
Lines: 753
Nf-ID: #N:uiucuxc:12500026:000:34093
Nf-From: uiucuxc.CSO.UIUC.EDU!grayson Jan 18 09:05:00 1986
This file is part 2 of 2.
Here is the current version of MAKE for MSDOS, due to popular demand.
This version reads an init file for default rules, and handles several
cases better than the old version.
uucp: grayson@uiucuxc.UUCP
old uucp: {ihnp4,pur-ee}!uiucdcs!uiucuxc!grayson
internet: grayson@uiucuxc.cso.uiuc.edu
telex: 5101011969 UI TELCOM URUD --> Dan Grayson, Altgeld Hall.
us mail: Dan Grayson, Math Dept, Univ of Ill, Urbana 61801
phone: 217-367-6384 home 217-333-6209 office
-----Cut Here-----Cut Here-----Cut Here-----Cut Here-----
#!/bin/sh
# shar: Shell Archiver
# Run the following text with /bin/sh to create:
# make.exe.uuencoded
# make.h
# make.ini
# makefile.
# mstring.c
echo shar: extracting make.exe.uuencoded
sed 's/^X//' << 'SHAR_EOF' > make.exe.uuencoded
Xbegin 644 make.exe
XM35I( "0 !P @ $<$1P2+! ! CBDY&0 '@ $ ) B6 SH9 ".'P X!\
XM $ K "*"I8#C@J6 P
XM
XM
XM
XM
XM
XM
XM
XM
XM
XM %6+[#/ Z& 6N,T 4.B2&X/$ K@3 5#HB!N#
XMQ *X5@%0Z'X;@\0"N)P!4.AT&X/$ KCG 5#H:AN#Q *X+0)0Z& ;@\0"N%0"
XM4.A6&X/$ KA= E#H3!N#Q *XEP)0Z$(;@\0"N,H"4.@X&X/$ K@* U#H+AN#
XMQ *X%0!0Z$D:B^5=PU6+[+C0 .C>%5: /M@) G,*N'8#4.A%$8/$ L<&.@N3
XM S/ HT +HSP+HSX+HV -HYP/HYX/B88R_\>&-O\! .F? (N>-O_1XXMV!HL8
XM@#\M=5N+GC;_T>.+&(I' 9@]9@!T%#UI '0M/6X =# ]
.+=@:+ *,Z"^M(QP9 "P$ ZT#'!CX+ 0#K.,<&
XM/ L! .LP@[XR_V1U"KB< U#HHA"#Q *+GC;_T>.+=@;_,.B##X/$ HNV,O_1
XMYHF"./__AC+__X8V_XM&!#F&-O]] ^E5_X,^/@L = V#/CP+ '0&QP8\"P
XMN+(#4+BT U#HDA*#Q 2)AC#_"\!T!U#H>0"#Q +'!EX- "XO0-0_S8Z"^AE
XM$X/$!(F&,/\+P'0'4.A6 (/$ H.^,O\ =";'AC;_ "+AC+_.88V_WTUB[8V
XM_]'F_[(X_^@N!H/$ O^&-O_KX(,^7@T = Z+'EX-BU\"_S?H$@;K![B_ U#H
XMTP^#Q (SP%Z+Y5W#58OLN-@ Z$H45L>&+O\ ,>&*O\ (.^*O\ =!#_MBK_
XMZ-\4@\0"QX8J_P _W8$Z!,-@\0"B88J_PO =0/I2 *)AC#_C88P_U#HK@Z#
XMQ *+GC#_@#\ =+V /R-TN(N>*O^*!YB+V/:'QP@(=%OB[_ '4*N-0#4.A-
XM#X/$ HN&*O^)AC#_C88P_U#H; Z#Q +'AC+_ "+AB[_.88R_WP#Z7'__[8P
XM_XNV,O_1YO^R-O_H_P*#Q 3_AC+_Z]F-ABK_4.BV"H/$ HN&*O^)AC#_C88P
XM_U#HHPZ#Q *+AC#_B88H_XV&,/]0Z X.@\0"BYXP_X _/74BQX8N_P _X8P
XM_XN>*/_&!P#_MC#__[8J_^@9 H/$!.G[_L>&+O\ +@! (F&+/^+ABK_B88P
XM_XF&-/^+GC#_@#\Z=12#OBS_ G4@BD,/^*!YB+V/:'
XMQP@(=0/IJP"#OB[_9'4*N/T#4.A7#H/$ HN>,/^*!XA&_L8' /^V-/_H+
XMQ *+MB[_T>:)@C;_BYXP_XI&_H@'@SY>#0!U%HN>-/^ /RIT#8NV+O_1YHN"
XM-O^C7@W_AB[_C88P_U#H- V#Q *+GC#_@#\Z=2S_AC#_@[XN_P!U"K@M!%#H
XMY V#Q *-AC#_4.@+#8/$ HN>,/^ /P!U,>D7_HN&,/^)AC3_QX8L_P ZQ.+
XMGC#_@#\ =0JX&@10Z*H-@\0"_X8L__^&,/_I!_^+AC#_B88T_XV&,/]0Z/H,
XM@\0"BYXP_XH'B$;^Q@< QX8R_P ZQ__MC3_Z(\"@\0"4(NV,O_1YO^R-O_H
XM#0*#Q 3_AC+_BX8N_SF&,O]\UXN>,/^*1OZ(!^E?_X.^*O\ =!#_MBK_Z&P2
XM@\0"QX8J_P _W8$Z)T9@\0"QP9D!0 7HOE7<-5B^RX! #HEA&+7@2 /RIT
XM*Z%@#>L?BU[\BU\"_S?_=@3HC!>#Q 0+P'4%BT;\ZT:+7OR+!XE&_ O ==JX
XM" !0Z",-@\0"B4;^_W8$Z.+7O['1P8 (M>
XM_L='! BT;^HV -B^5=PU6+[+@" .@<$:&<#^LU_W8$BU[^_S?H'1>#Q 0+
XMP'4=BU[^_W<"Z*P1@\0"_W8&Z%L+@\0"BU[^B4<"ZT:+7OZ+1P2)1OX+P'7$
XMN 8 4.B;#(/$ HE&_O]V!.@P"X/$ HM>_HD'_W8&Z"(+@\0"BU[^B4<"BU[^
XMH9P/B4<$BT;^HYP/B^5=PU6+[+@$ .B5$%:X!@!0Z%0,@\0"B4;^B]C'!P
XMBU[^B_.!9 3]_X%G!/O_BU[^B_.+1 0E_O^+#CP+@>$! O!B4<$BUX&@#]
XM=0F+7OZ 3P0!ZR"+7@: /RMU"8M>_H!/! 3K#XM>!H _+746BU[^@$\$ O]&
XM!HU&!E#HQPJ#Q +KP/]V!NA\"H/$ HM>_HE' HM>!(M'!HE&_ O =!;K!8L'
XMB4;\BU[\@S\ =?.+1OZ)!^L)BUX$BT;^B4<&7HOE7<-5B^RX! #HT0__=@;H
XM-@"#Q *)1OZ+7@2+1P2)1OP+P'06ZP6+!XE&_(M>_(,_ '7SBT;^B0?K"8M>
XM!(M&_HE'!(OE7<-5B^RX @#HC ^X! !0Z$P+@\0"B4;^B]C'!P BU[^BT8$
XMB4<"BT;^B^5=PU6+[+@" .A@#Z&>#^L=BU[^_S?_=@3H816#Q 0+P'4%BT;^
XMZS^+7OZ+1P*)1OX+P'7_HD'BU[^
XMQT<" "+7OZAG@^)1P*+1OZCG@^+Y5W#58OLN 8 Z/@.QP:.#P ON% +4+B.
XM#U#H71.#Q 2A4@N)1OZX8@^CE _'!HX/ !JX4 M0N(X/4.@]$X/$!(M&!*.4
XM#\<&D@\ ,<&C@\ 3L<&7 L +A0"U"XC@]0Z!<3@\0$HS@+@SY<"P!U"/<&
XM. L! '0(BT8&BU8(ZRR+1OZCE _'!HX/ !JX4 M0N(X/4.CC$H/$!(L6>@\K
XMP*%X#X#V@(E&^HE6_(OE7<-5B^RX$@#H2P['1O8! ,=&^ " QT;Z #'1OP
XM@/]V!.@E!8/$ HE&_@O =0\SP%#_=@3HX0"#Q 3IUP"+7OZ+1P2)1O0+P'18
XMZU"+7O2+7P+_-^BJ_X/$ KC__[K_?U)0BU[TBU\"_S?HY_Z#Q :)1O")5O*+
XM1O:+5O@Y5O)\$W\%.4;P=@R+1O"+5O*)1O:)5OB+7O2+!XE&](-^] !UJC/
XMN@" 4E"+7OZ+7P+_-^B@_H/$!HE&^HE6_(M>_H-_!@!T((M&]HM6^#E6_'\0
XM? 4Y1OIS"?]V_NB* 8/$ K@! .LN_P9T XM&]HM6^#E6_'\,? 4Y1OIS!;@!
XM .L",\!0_W8$Z X @\0$B4;N_PYT XOE7<-5B^RX#@#H- VX+@!0_W8$Z!,3
XM@\0$B4;\_P9T PO =0/IYP"A8 V)1OX+P'4#Z=H B]B+7P*+'X _*G0#Z<,
XMB]B+7P*+!T!0_W;\Z/\2@\0$"\!T ^FJ (M&_"M&!% SP%#_=@3HMP:#Q :)
XM1OJ+7OZ+7P2+7P*+!T!0_W;ZZ-H&@\0$B4;R4.A=_H/$ HE&^/]V^KA(!%#H
XM?/N#Q 2#?O@ =!R#?@8 =18SP+H @%)0_W;RZ(3]@\0&B4;TB5;V_W;RZ"8-
XM@\0"_W;ZZ!T-@\0"@W[X '0J@WX& '4<,\"Z (!24/]V!.A0_8/$!CM6]G]1
XM? 4[1O1S2O]V_NA/ .L_BU[^BP?I'/\SP+H @%)0_W8$Z"3]@\0&@?H @'P&
XM?R(+P'<>_PYT W0$,\#K&_]V!+A*!%#H(0:#Q 10Z'$'@\0"_PYT [@! (OE
XM7<-5B^RXW #HY O'1OP (M>!(M'!HE&^NFZ L9&\ "+7OK_=P+H+@:#Q *)
XM1OZ-1OY0Z.,"@\0"BT;^B4;RC4;R4.A1!H/$ HM>^O='! $ =0VX(@90_W;R
XMZ.\+@\0$@SX^"P!T"KAB!%#HNA#I40*+1O*)1OB-1OA0Z%4&@\0"BU[X@#\
XM=!?&!P#_=O+HQ06#Q *)1NZ+7OC&!R#K#/]V\NBQ!8/$ HE&[HM&^(E&](U&
XM]%#HW@6#Q +_=N[H N#Q +'1O8^ XM>]H,_ '0/_W;N_S?H)AQ 0+P'5@
XMBU[V@S\ =0V+7OKW1P0$ '4#Z>, N&,$4/]V[N@ $8/$! O =!2X:010_W;N
XMZ.\0@\0$"\!T ^F4 (M>]( _ '0DB\.)1NR-1NQ0Z*0%@\0"BU[LQ@< _W;T
XMZ(T0Z=$ @T;V NN#N,@ 4(V&)/]0Z-<2@\0$"\!T28M>^O='! $ =2G_#B0&
XM@SXD!@!\$+ *BQXB!O\&(@:(!RKDZPZX(@90N H 4.@X"8/$!+@B!E"-AB3_
XM4.BS"H/$!,=&_ ZWFX; 10Z+L%@\0"ZVW_=O+H6@^#Q (]@ !V"KA_!%#H
XMH06#Q +_=O+H%AQ *)1OS&1O !ZT.+7OKW1P0! '4I_PXD!H,^) 8 ?!"P
XM"HL>(@;_!B(&B #Q *)1OS&1O
XM_PXD!H,^) 8 ?!"P"HL>(@;_!B(&B ^HL'B4;Z_W;^
XMZ,P)@\0"@W[Z '0#Z3W]B^5=PU6+[+@" .@#":%@#>L:BU[^BU\"_S?_=@3H
XM 0^#Q 0+P'0,BU[^BP>)1OX+P'7?BT;^B^5=PU6+[+CT ^C-"%:+7@2+!XE&
XM^+A,!%#HA 2#Q *)1OZXVP10_W;^Z,$(@\0$QT;\ #K*8 _ '0L@7[\Z -\
XM"KC_/]&_(MV_H@ BU[X@#\D=<^!?OSH WP*
XMN 0%4.C: X/$ HM>_(MV_L8 (M>^( _ '4#Z=< _T;XBU[X@#\H=0O'A@[\
XM 0#_1OCK!L>OP ,>/P (M>^( _*G0,B@>8B]CVA\<(!W0+M@S\_X8,_(B"$/R!O@S\YP-\T(NV#/S&@A#\ (.^#OP =!>+7OB /REU
XM!?]&^.L*N"P%4.@0#8/$ J&<#XE&^@O =1:-AA#\4+A1!5#HW0Q 10Z"T#
XM@\0"C880_%"+7OK_-^BX#8/$! O =2*+7OK_=P*+1OP#1OY0Z*0'@\0$_W;^
XMZ*<,@\0"B4;\Z03_BU[ZBT<$ZZ6+7@3_-^@>"(/$ O]V_NC- 8/$ HM>!(D'
XM_W;^Z <(@\0"7HOE7<-5B^RX @#H1@?&1OX ZPC_1@2*!XA&_HM>!( _ '7P
XMBD;^F(OE7<-5B^PSP.@@!^L#_T8$BUX$@#\ =?6+PXOE7<-5B^RX! #H! >+
XM7@3V1P80= /I@0"X4 ")1OY0Z+4"@\0"B4;\B]C&!P#_=OSH_0N#Q (%4 [
XM1OYV*X-&_E#_=O[_=OSH@ N#Q 2)1OP+P'44N&8%4.CM"X/$ K@! %#H" N#
XMQ +_=@2X4 !0_W;\Z'+_@\0"4.@K#8/$!@O =1F+7OR /P!T!(O#ZU__=OSH
XM*@>#Q (SP.M2_W;\Z![_@\0"/ IU@_\&9 7_=OSH-/^#Q *+V,9'_P#_=OSH
XM;0N#Q ) 4/]V_.C]"H/$!(E&_ O =12X?@50Z&H+@\0"N $ 4.B%"H/$ HM&
XM_(OE7<-5B^RX @#H% 96BT8(0%#HT@Q *)1O[_=@B+1@8#1@10_W;^Z"P&
XM@\0&BUX(BW;^Q@ BT;^7HOE7<-5B^RX @#HV 56_W8&Z/$*@\0"_W8$B_#H
XMY@J#Q (#QD!0Z(,!@\0"B4;^_W8$4.C#!8/$!/]V!O]V_NA("X/$!(M&_EZ+
XMY5W#58OLN ( Z(\%_W8$Z*D*@\0"0%#H2 Q *)1OZ#?@0 =0JXE@50Z.0
XM@\0"_W8$_W;^Z'8%@\0$BT;^B^5=PU6+[#/ Z% %@WX$ '0(BUX$@S\ =1&X
XMK050Z+$ @\0"ZP6+7@3_!XM>!(L?B@>8B]CVA\<("'7JB^5=PU6+[#/ Z!0%
XM@WX$ '0(BUX$@S\ =2*XP@50Z'4 @\0"ZQ:+7@2+'XH'F(O8]H?'" AU#XM>
XM!/\'BUX$BQ^ /P!UX(OE7<-5B^PSP.C.!.L%BUX$_P>+7@2+'XH'F(O8]H?'
XM" =UZHOE7<-5B^RX% #HJ02X"@!0C4;L4/]V!.CO!8/$!O]V!HU&[%#HZP2+
XMY5W#58OL,\#H@@2#/F0% '0JN"H&4+C8!5#HS02#Q 2X*@90_S9D!>BP_X/$
XM!+@J!E"XX050Z+$$@\0$N"H&4/]V!.BD!(/$!+@! %#HFPB+Y5W#58OLN (
XMZ# $_W8$Z.@$@\0"B4;^"\!U"KCE!5#HC_^#Q *+1OZ+Y5W#58OLN ( Z 8$
XM@WX$ '4.H?0%B48$"\!U!#/ ZW>-1@10Z)/^@\0"BUX$@#\ =0M>
XMBUX$@#\B=2G_1@2+1@2)1OZ+7OZ /P!T*( _(G0C@#]<=0F ?P$B=0/_1O[_
XM1O[KX(M&!(E&_HU&_E#H?_Z#Q *+7OZ /P!T#,8' (M&_D"C] 7K!L<&] 4
XM (M&!(OE7<-5B^RX @#H;@/'1OX /]V!.C+_8/$ HE&!%#H2O^#Q (+P'00
XM_T;^,\!0Z#K_@\0""\!U\/]V!.CL X/$ HM&_HOE7<-5B^RX!@#H*0-6_W8$
XMZ*O_@\0"B4;ZT>! 0%#HV_Z#Q *)1O['1OP! /]V!.AK_8/$ HE&!%#HZOZ#
XMQ *+7OZ)!^L=,\!0Z-K^@\0"4.A*_8/$ HM>_/]&_-'CBW;^B0"+1OHY1OQ\
XMVXO8T>.+=O[' _W8$Z&D#@\0"BT;^7HOE7<-5B^RX @#HI0*+1@2)1O[K
XM#(-&_@+_-^A$ X/$ HM>_H,_ '7L_W8$Z#,#B^5=PU6+[+@$ .AV O]V!.@^
XM_X/$ HE&_E"+V/\W,\!0Z,X#@\0&B4;\_W;^Z*7_@\0"BT;\B^5=PU6+[+@*
XM .A O]V!O]V!.CD (/$!(E&_ O = /IO "X7 !0_W8$Z D(@\0$"\!T ^FH
XM +@Z %#_=@3H]0>#Q 0+P'0#Z90 N/8%4.C_ H/$ HE&_@O =0/I@ "X^P50
XM_W;^Z$S\@\0"B4;^4.@?"(/$!(E&^O]V!+C]!5#HZ?N#Q 2)1OB#?OH =#[_
XM=OKH:?J#Q (\7'4%BT8$ZP.+1OA0_W;ZZ,'[@\0$B4;V_W8&4.A" (/$!(E&
XM_/]V]N@Y H/$ H-^_ !T%_]V_N@J H/$ O]V^.@A H/$ HM&_.L2N/\%4#/
XM4.BD!X/$!(E&^NN3B^5=PU6+[(/L E;H*0R+\ OV= ]6_W8&_W8$Z' 3@\0&
XMZP(SP%Z+Y5W#58OL@^P$5U:+=@:*1 :8J8, = ;V1 9 = :X___IV@#V1 8!
XM= : 3 8@Z^Z 3 8"@&0&[S/ B40"B_B)?O[V1 8(=0^*1 >8B]C1X_:'N@8!
XM=#"+/"M\! O_?A)7_W0$BD0'F%#HR ^#Q :)1OZ+1 1 B03'1 +_ 8M84.BP"X/$ @O =37'!M8) R3'1 1>"XI$
XM!YB+V-'CQH>Z!@''!%\+Z[BX )0Z"@!@\0"B40$"\!T!H!,!@CKFX!,!@2_
XM 0!7C48$4(I$!YA0Z$D/@\0&B4;^.7[^= /I,?^*1@0JY%Y?B^5=PU6+[%:+
XM=@2+UK5!L5JT88K<*MV*! K = \ZQ7((.L%W! +#B 1&Z^N+PEY=PUF+W"O8
XM<@H['@(&<@2+X__AZ2,$58OL5U8>!XM^!HOW,\"Y___RKD'WV8M^!(O7\Z2+
XMPEY?7<-5B^Q75AX'BWX$BW8&B]^+3@CC#*P*P'0#JN+X,L#SJHO#7E]=PU6+
XM[(/L!E=6_W8$Z+4$@\0"B_C_=@;HM0^#Q *+\/]V!E>X 0!0_W8$Z*,2@\0(
XMB4;\_W8&5N@7$(/$!#E^_'4)BUX$BD'_F.L#N/__7E^+Y5W#58OLBUX$@$_^
XM 8OE7<-5B^Q65[L$!H,_ '4I'@>X!0#H,PEU!3/ F>LD0"3^HP0&HP8&EL<$
XM 0"#Q@3'1/[^_XDV"@:+3@2,V([ Z-T'7UZ+Y5W#58OL@^P$5U:+-MX)"_9T
XM.(-^! !T,O]V!.@ !(/$ HOXZR"+'( Y/7465_]V!%/H! J#Q 8+P'4'BQR-
XM00'K"H/& H,\ '7;,\!>7XOE7<-5B^Q75K,!BTX(BT8$,]*#^0IU 9F+?@;I
XM.PM5B^RXU@#HB/Y75HO]@^]2_S;>"?]V"/]V!O]V!.A\#X/$"(E&_D!U*H,^
XMT@D"=2.+7@: /UQT&X _ '0&@'\!.G00N X&4.A+_X/$ HOP"_9U!HM&_NF'
XM +A_ %!6C88L_U#H8OZ#Q :+\,9&JP"X$P905NA?!(/$!(OP"_9TTU97Z"#^
XM@\0$5^@E X/$ HO8@'G_7'0+N!4&4%?HEP.#Q 3_=@97Z(T#@\0$_S;>"?]V
XM"%?_=@3HX@Z#Q B)1OY =9"#/M() G6)N!<&4#/ 4.@"!(/$!(OP"_9UH^ES
XM_UY?B^5=PU6+[(/L E=6BW8$OP( "_9T(H \ '0=5NBP @/G4%97Z(L,@\0&
XMB\=0N H(4%?H?0R#Q :A: @Y!M()?1.#/M() 'P,BQ[2"='CBX<>".L#N T(
XMB_!6Z'("@\0"4%97Z$P,@\0&N $ 4+@;"%!7Z#T,@\0&7E^+Y5W#OY$#BS8"
XM "OW@?X $'(#O@ 0^H[7@<2>#_MS ^E) 8'D_O\VB29R"#:))G (B\:Q!-/@
XM2#:C;@BT,,TA-J/8"3P",\!0#A^ZBQFT"]]NT2LTA-HP>T F+-BP 'A:X #7-
XM(3:)'FH(-HP&; @.'[@ );JZ<A-HL.+@OC(C;%!C +C-HSVS;_'BP++ L''_R_. NYH \KSS/ \ZH6%@>SH PKH+ F[. N!^S@+90Z&8 #0I3=&%C:R!O=F5R9FQO=PT*#0I$:79I
XM9&4@97)R;W(-"@T*1FQO871I;F<@<&]I;G0@;F]T(&QO861E9 T*L1*Z8AHR
XM[0X?NP( M$#-(18?N/\ 4.@%";$0NG0:Z^6Q';J$&NO>58OL@S[6"0!T!/\6
XMU@G_=@3HXPB+Y5W#58OL5U:+?@2+!8M= HM-!(M5!HMU"(M]"LTA5XM^!HD%
XMB5T"B4T$B54&B74(CT4*<@0S]NL(Z$L'O@$ BP6)=0Q>7UW#58OL@^P&5U:+
XM=@3_=@96Z/$/@\0$"\!T"(!D_OZ+QNL^@$S^ 8M\_H'G_O__=@;HT?N#Q *)
XM1OX+P'0C.7X&^O]&^JR(!XO'3PO =?"+1OY>7XOE
XM7<-5B^Q7'@>+?@0SP+G___*NB\% 0/?87UW#58OL@^P(5U:^(@;_=@3HUO^#
XMQ *+^%;HV J#Q *)1OY65[@! %#_=@3HQPV#Q B)1OI6_W;^Z#L+@\0$.7[Z
XM=2+_3 *#? ( ? RP"HL<_P2(!RKDZQ!6N H 4.@\^8/$!.L#N/__7E^+Y5W#
XM58OL5U8>!XM^!(O7,\"Y___RKD^+]XM^!HO?N?__\JY!]]F+_HOS\Z2+PEY?
XM7<.T.>L&M#KK K0[58OLBU8$S2'I_055B^Q7BWX$'@>+WS/ N?__\JY!]]F*
XM1@:+^_*N3S@%= (S_XO'7UW#58OL5U:+=@2+?@8>!XO?,\"Y___RKD'WV8O[
XM\Z:*1/\SR3I%_W(%= 5!ZP+WT8O!7E]=PU6+[%=6'@>+=@;HEPF #P&+=@0+
XM]G4$BS;$"#/ K K ="WHI@DZQ'7T3HO.,\"LBO#HEPDZQ'3V"O9U"4X[\74(
XM,\#K"L9$_P")-L0(B\%>7UW#58OL@^P$5U:+=@B+?@2#?@8 =2KK$E;H7XOE7<-5B^RXW #H _E6N!0*4.C_^8/$ HE&^,=&
XM^AP*BT8$B4;\QT;^ #_-MX)C4;X4/]V^#/ 4.C?"8/$"(OP0'4'@S[2"0)T
XM!8O&Z:L N!\*4.B]^8/$ HF&)/\+P'3IN'\ 4/^V)/^-AB;_4.C5^(/$!HF&
XM)/_&1J4 C4:HB4;XN#L 4/^V)/_HQ_Z#Q 2)AB3_"\!TLK@D"E"X, I0_[8D
XM_XU&J%#H>/B#Q 10Z +^@\0$4.C[_8/$!/\VW@F-1OA0_W;X,\!0Z$T)@\0(
XMB_! = /I84.B #(/$ @O ?0.____&1 8 B\=>7XOE7<-5B^R#[$)75HMV!HM^
XM! O_=1Y6Z&WX@\0"B_@+_W4.QP;2"0P QP;@"0@ ZUJ)?@0SP%"-1KY0Z&$'
XM@\0$C4:^4.BA_(/$ @4# #O&?!#'!M()(@#'!N ) 0 SP.LI,\!04+@9 %#H
XM) "#Q 8$08@%1\8%.D?&!5Q'C4:^4%?H6/>#Q 2+1@1>7XOE7<-5B^R*9@2+
XM5@:*1@C-(5W#Z)1/[KYHO^= P#^8E,_BO!2(D%ZP4#^?Y,_HO&C-J!^I$#= 4F
XMC!XV"HE_ L,FQ@8Z"@(]_O]T)8O^ _"MJ %T\HO^2#O!<[V+T /PK:@!=.(#
XMP@4" (OWB43^Z^:+1P@+P'0$CMCK$R;^#CH*=!",V#V1 W0%)HX>,@J+-^N]
XMBW<&,\#H60 [QG0-) % 0)CH30!T#?Y-_N@+ '0%EDY.ZYHSP)G#48M%_J@!
XM= ,KR$E!0;K_?R8[%C@*=@31ZG7UB\$#QG(5 \)R#??2(\(KQN@, '4(]]+1
XMZG7E,\!9PU)1Z!T =!A7B_Z+\ /RQT3^_O^)=P:+UBO72HE5_EA96L-34#/2
XM'E)24+@! % &'^@E#H/$"(/Z_Q]:6W0""]+#58OL5HMV!(I$!IBI@P!T!O9$
XM!D!T!KC__^F: /9$!@)T!H!,!B#K[H!,!@'V1 8,=2F*1 >8B]C1X_:'N@8!
XM=1JX )0Z%'V@\0"B40$"\!T!+ (ZP*P! A$!H-\! !U#(I$!YC1X 6[!HE$
XM!(M$!(D$]D0&!'0%N $ ZP.X )0_W0$BD0'F%#HQ0J#Q :)1 (+P'\5"\!T
XM!+ @ZP*P$ A$!L=$ @ Z6O__TP"BQS_!(H'*N1>B^5=PU6+[(/L E:^&@:*
XM1 :8J8, =14SP(E$ HA$!HE$!(D$QD0'_XO&ZPV+QH/&"#L&X@9UUS/ 7HOE
XM7<-5B^R+7@2#^Q1]$8/[ 'P,]H?V"4!T!;@! .L",\!=PU6+[%=6'@>+3@CC
XM+XO9BWX$B_7UW#58OL@^P$5U:+=@0S_U;HL J#Q **1 8D SP"=3SV1 8(=0^*
XM1 >8B]C1X_:'N@8!=">+!"M$!(E&_ O ?AM0_W0$BD0'F%#H/@.#Q 8[1OQT
XM!X!,!B"___^+1 2)!,=$ @ B\=>7XOE7<-R"#/ B^5=PW,&Z T N/__B^5=
XMPS+DZ $ PZ+@"0KD=2. /M@) W(-/")S#3P@<@6P!>L'D#P3=@*P$[L\"M>8
XMH]()PXK$Z_=5B^R#[ A75HLVW@GK%[@, %"X4 I0_S3H\?Z#Q 8+P'0(@\8"
XM@SP =>2#/ !T.8L\@\<,QT;^ "*!4>8B4;ZZQR*!9@]_P!U!#+ ZP**!8M>
XM_O]&_HB']@G_3OI'@W[Z '7>QP0 %Y?B^5=PU=6BTX*BT8$BU8&BWX(5QX'
XM_),*P'03@_D*=0X+TGD*L"VJ]]N#T@#WVHOWDC/2"\!T O?QD_?QDH?3!# \
XM.78"!">JB\(+PW7BB 5/K(8%B$3_3SOW*1 :8J8, = M6Z,;]@\0"0'0!
XM1X/&"#DVX@9SXXO'7E^+Y5W#CP9@"HX>T D6HH%1T$ZX'04/")T"#P)= 0\
XM('7K6!8'OH$ ZRM/*_X+_W3QB\]"6XO# \$% P E_O\KX(O\'@8?%@?SI+ @
XMJHO+'[Z! .L.B\@$!"3^*^"+_+A#(*OSI(O!JHOT%A]0B]R+_JRJ"L!T/3PB
XM=1]6_P;:":P*P'0N/")U!X!]_UQU!$^JZ^U'QD7_ .O5Z#< =-!.5D;_!MH)
XMK*H*P'0(Z"4 =?7KX:J+]$M+._-S"*V'!XE$_NORB]P+TG4"_P>))MP)_R9@
XM"CP)= (\(,-5B^Q6BW8$BD0&F*F# '0=]D0&"'07_W0$Z,/Q@\0"@&0&]S/
XMB02)1 2)1 )>B^5=PU6+[(M>!/:']@D@= ZX D(SR8O1S2%S ^G0_/:']@F
XM=0/I@0"+3@B+5@8>!S/ _%=6B_"+^N-EN I \JYU,E&+SRO*2>,0S2&< _"=
XMM)"\!T+T:Y @"Z8@JT0,TALT"\!T&EF+U^O%48O/*\K-(9P#
XM\)US!+0)ZQH+P'46]H?V"4!T"XM>!H _&G4#^.L$^;@('%ER HO&7E_I1?R+
XM3@B+5@:T0,TAOMX^L+P'7G]H?V"4!T"HO:@#\:=0/XZ];YN @Z!@%U)\=$!%X+BD0'F(O8T>/&A[H&
XM <<&U@D#),=$ @ "BT0$B02X 0#K-('^.@9U+/9$!@QU)HI$!YB+V-'C]H>Z
XM!@%U%[@ E#H*/"#Q *)1 0+P'0&@$P&".NY,\!>B^5=PU6+[%:+=@:#?@0
XM=$R!_B(&=26*1 >84.A2^H/$ @O =!96Z*CZ@\0"BD0'F(O8T>/&A[H& .L:
XM@?XZ!G4;5NB,^H/$ O]T!.BX[X/$ H!D!O/]0,\!0C4;X4(U&_E#_=@K_=@CH\@2#Q Y =0:X___ISP"X7 !05NCC X/$
XM!(OX"_]U HO^N"X 4%?H;/2#Q 0+P'08_W;XC89X_U!6_W8$Z'L+@\0(B4;Z
XMZ8D 5NB \X/$ @4% %#H%.^#Q *+^ O_=0O_=O[H]^Z#Q +KGKAT"E!65^A-
XM[H/$!%#HU_.#Q 3'!M() #_=OB-AGC_4%?_=@3H* N#Q B)1OJ#/M() '0K
XMN'D*4+@N %!7Z$X#@\0$4.@.[H/$!/]V^(V&>/]05_]V!.CV"H/$"(E&^E?H
XMCNZ#Q +_=O[HA>Z#Q *+1OI>7XOE7<-5B^R#[ 975HMV"(M>!HH'F#UA '1"
XM/7( = @]=P!T,>F& ,=&_@$ _T8&BUX&@#\K=0> 3OX(_T8&BT;^)0< /0$
XM=!H] @!T-#T$ '0TZQ#'1OX" .O0QT;^! #KR3/_]T;^" !T"('/ @"!Y_[_
XMBUX&@#]T=1"!SP! ZQ:_ 0/KWK\) >O9BUX&@#]B=02!SP" N*0!4%?_=@3H
XM*@:#Q :)1OH+P'T$,\#K0O=&_@@ = ;&1 : ZQ'W1OX& '0&QD0& NL$QD0&
XM <<&U@D#)#+ BU[ZT>.(A[H&F(E$ C/ B02)1 2*1OJ(1 >+QEY?B^5=PU6+
XM[(/L!E=6BW8$BWX*BT8&]V8(B4;ZB4;\"\!T._9%!@QU/HI%!YB+V-'C]H>Z
XM!@%U+_]- H-] @!\#(H$BQW_!8@'*N3K"U>*!)A0Z%?K@\0$]D4&('0%,\#I
XMV@!&_T[\]D4&"'42BD4'F(O8T>/VA[H& 74#Z:, @W[\ '4#Z8D BT;\.44"
XM!XM.!D& X?Z+?@0SVXS8/9$#=0.[! :+5P)/3XOWK5!7)/Z)!0/P._)U
XM 4*MJ %T!_\% 05(Z^W1ZG,#B7\".PUT+G(?/?[_=2Q'1S/ Z,WT.\9U(>B,
XM]'0L*]H?V"8!T ^@# .E)
XM]E97_(ORB_J+R.,;M VL.L1T%SP:=0?&A^() >L%B 5'XNN+QRO"7U[#@_D!
XM= > / IT[>OH]H?V"4!T&;@ 1,TA]\(@ '4*C19^"K0_S2%RU; *ZR_&!GX*
XM (T6?@JT/\TAP#8M6
XM!NN4BU8&ZY* /GX*"G79Z[I5B^R+7@2 9P;/7<-5B^R#[ Y75H-^!@!U!J'>
XM"8E&!HMV!L=&] ZQ"#Q@+_=/[HL>Z#Q ) 4;T@SP =>N+1O1 B4;VQT;\
XM$P"+7OR O_8) '4)_T[\@W[\_W_M@W[\ 'P3N( *4.AY[H/$ @-&_ 4# %&
XM]H-^$ !T$8M>!/\WZ%_N@\0"!0, 4;VBT;V!0\ 4.CJZ8/$ HE&^(M>"(D'
XM"\!U(8-^# !T"?]V#.C!Z8/$ L<&T@D, ,<&X D( +C__^DR 8M&^ 4/ "3P
XMB_B+7@J)/XMV!NL9,\!0_S17Z//H@\0$4.C![H/$!$"+^(/& H,\ '7B@W[\
XM 'Q*,\!0N(T*4%?HS>B#Q 10Z)ON@\0$B_B*1OS^P(@%1\=&] BU[T@+_V
XM"0!T!HJ']@GK K#_B 5'_T;TBT;\_T[\"\!UWL8% $?&!0"#?A = ^#QP.+
XM7@3_-U?H>>B#Q 3'1O0 (M^#D>+7@2#/P!T>8-_ @!T!\8%($?_1O2+=@2#
XMQ@*#/ !T8?\TZ%3M@\0"B4;Z T;T/7T ?BS'!M()!P#'!N )"@"+7@C_-^C"
XMZ(/$ H-^# !U ^D$__]V#.BPZ(/$ NGX_HM&^D !1O0SP%#_-%?H_N>#Q 10
XMZ,SM@\0$B_C&!2!'ZY?&!0V+7@Z*1O2(!XM&]EY?B^5=PU6+[%97!H-^" !U
XM.+]R"(M6!HM&!$AU!^A3 '(GZTB+-L((2'01._=T#8M$ HE%;H.@!>L=B]J#PP_1V[$#T^NT2,TAL[]W4) ]FAT DKV([ M$K-(7(-._=U!(D6;@B2
XMAP2+T<-5B^PR_X@^Q@J+1@8R[:D( '0"M2"(+L4*)0, /0, =06!=@8! +J:
XM"K0:S2&Y)P"+5@2T3LTAF>\L8&QPH!
XMD:D G0+BU8$N !#S2'IH "I P!T5ZD @'52]@8%"X!U2[ ""@;&"HM6!+0]
XMS2%RQY.X $3-(?;"@'4MN?__B]&X D+-(??9NIH*M#_-(0O =!: /IH*&G4/
XM]]F+T;@"0LTA,\FT0,TAM#[-(8I&!B0#"@;&"HM6!+0]S2%R.^GK!/=&!@ !
XM=0:X @#I:/_&!L<* /]V".@C!5F)3@@R[?8&Q@K_=0?W1@8" '4#@.'^BU8$
XMM#S-(7,#Z=SQ]@;&"O]U!_=&!@( =3*3M#[-(8I&!B0#"@;&"HM6!+0]S2%R
XMV/8&QPH!=13W1@@! '0-@,D!DXM6!+@!0\TAD^EM!%6+[+BD .BBY5=6,__'
XM1O0! #D^U@ET!/\6U@FX7 !0_W8$Z-+Z@\0$B_ +]G4#BW8$N"X 4%;H6NN#
XMQ 0+P'09N " 4/]V!.A@_H/$!(E&YD!U>+C__^E/ O]V!.AKZH/$ @4% %#H
XM_^6#Q *+^ O_=.&XR I0_W8$5^A!Y8/$!%#HR^J#Q 2X (!05^@;_H/$!(E&
XMYD!U,+C-"E"X+@!05^A3^H/$!%#H$^6#Q 2X (!05^CT_8/$!(E&YD!U"5?H
XME^6#Q +KBXE^!(OU@>ZB +@8 %!6_W;FZ$3Z@\0&0'4C"_]T!U?H<.6#Q +_
XM=N;H7/F#Q +'!M()" #'!N )"P#I3O^X @!0*\!04/]VYNC( H/$"(E&^HE6
XM_ O2?0@SP(E&_(E&^O=&^@\ =!F+1OJ+5ORQ!.B? P4! (/2 (E&^HE6_.L*
XML 10C4;Z4.B2 _]VYNCW^(/$ H \374&@'P!6G01@#Q:= /IN " ? %-= /I
XMKP#_3O2*1 68L0C3X"K BDP$*NT#P8E&[L=&\ N" F5)0C4;N4.@; HI$
XM"9BQ"-/@*L"*3 @J[0/!*](I1NX95O"*1 .8L0C3X"+%BDP" \$M +WV(E&
XMWK$$TV[>BT;>*4;N&5;PBD0/F+$(T^ BQ8I,#@/!B4;@BD01F+$(T^ BQ8I,
XM$ /!B4;RBD05F+$(T^ BQ8I,% /!B4;HBD07F+$(T^ BQ8I,%@/!B4;^N $
XM4(V&7O]05XU&Y%"-1OA0_W8(_W8&Z+'Y@\0.B4;B0'40"_]T!U?H".2#Q *+
XM1N+K3O]V^O]VZ/]V_O]V\O]VX/]V[O]VXO]VY(V&7O]0_W8$Z$WH@\0"0%#_
XM=@3_=O3H=@*#Q!B)1NH+_W0'5^C!XX/$ O]V^.BXXX/$ HM&ZEY?B^5=PP
XM !5B^Q65XS8BUX*L033ZP/#H](*BT8(H]0*C![6"AX'BS;4"D:_
XMX JX 2G-(;@!*;_P"LTA508>+HP6<#,NB29N,[O2"H-^! !T!K $,\GK C+
XM^+\N (LU+HDV=C,NBS9T,XEU BZ+-G(SB34'75]><@2T
XM3!XM^!(MV!HO7BTX(._YV%(O& \$[^',, _$#^4Y/_?.D
XM_.LAB\<+QM'HARZZ1)B]G1Z?.ET>MS!8H$)H@%B\)>7UW#58OL
XMBUX$_W8(_W8&_W<"_S?H102+7@2)!XE7 EW"!@!5B^R+7@3W1@@ @'1+@WX*
XM '0:,\F+T;@!0LTA2NX 0#YZSN)%@ +HP(+B]&X
XM D+-(0-&!A-6"'D/BPX "XL6 @NX $+-(>O5BU8&BTX(BD8*M$+-(7('QH?B
XM"0#K [K__^E)[56+[,8&Q0H _W8&Z%\ 68E.!HM6!#+MM#S-(7)-B]B+5@2X
XM $/-(??! 0!U!#+)ZP*Q$/=&!@! =0[W1@8 @'4*]@8%"X!U X#)@ H.Q0J
XMR0&X $3-(8O#]L* = . R4"(C_8)QH?B"0#IW.Q5B^RAU GWT(M>!"/#@>,
XMP*B =0. RP&)7@1=PS+MXP;1^M'8XOK#58OLBUX$BP>+5P*+3@;HY/^+7@2)
XM!XE7 EW"! !5B^PSTKD3 +MR"(/#!(M' @O =!..P%.[__^T2LTA ]-"6X/#
XM!.+FC@;0";O__[1*S2$#VH ^V D"=Q1T#+H&"[0)S2&X 0#K.('K@ )R+X-^
XM! !T"+C4."U]..L)N'TX+0LX!0@ !: T8(BU8.@\(/ \*Q!-/HT^H[V'<'
XMN @ ^>D1["O82X-^! !T"(M.&D%RZNL#BTX0@\$1#?@0 =1"+1A*KBT84JXM&%JN+1ABKBW8&
XMBTX(\Z2+WXMV#(M.#O.DC@;0"1Y2!A^Z@ "T<A6A^,P 40 (-^! !T! -&
XM&D! )J,L +^ (MV"HH,04'SI+]< )&Y( #SJK]< (MV"D:X 2G-(3S_= (R
XMP(K(OVP N $IS2$\_W0",L"+\XK9BOA8HR@+BTX.@WX$ (OK=$CAX."HL6# JP([0E
XMS2$?6EC_+B8+CMCSI(/'#X'G\/^+WXO'L033Z(S! \$FB0,P;@A-2!$86X@1W)A>7-O;BP@57)B86YA
XM($E,+@!-04M%('9E6YA2!B
XM92!C;W!I960@9G)E96QY(&9O&5C
XM=71E(&-O;6UA;F1S " @(" @(" @+7,@(" @(" @(" @ !\ ( A@"-
XM ), E@"; * I0"H *P L@"U +L O@## ,< $UU6UB;VP@2 H;69G971S*0!N;R!M;W)E(&UE;6]R>2 H;69G971S*0!S=')P97)M("T@
XM3E5,3"!P;VEN=&5R $Y53$P@87)G('1O('!A0
XM 07)G(&QI&!X<'F >9!ZT'K@>O![ 'R ?)!\H'RP?,!]H'ZP?L!R4
XM )$#
XM '(( (" @
XM(" @(" @*"@H*"@@(" @(" @(" @(" @(" @("!($! 0$! 0$! 0$! 0$! 0
XMA(2$A(2$A(2$A! 0$! 0$!"!@8&!@8$! 0$! 0$! 0$! 0$! 0$! 0$! 1 0
XM$! 0$(*"@H*"@@(" @(" @(" @(" @(" @(" @("$! 0$"
XM
XM
XM
XM @8&! 0$
XM 0T]-4U!%0P O8P!0051( &-O;6UA;F0N8V]M %P
XM " 6 @(8#0D,# P'"/___Q(-$@+_.T-?1DE,15])3D9/
XM #0H +F-O;0 N97AE .T-?1DE,15])3D9/
XM #M#7T9)3$5?24Y&3P
XM +F-O;0 N97AE ) *E@.@"I8#
XM !%>&5C(&YO="!A=F%I
XE;&%B;&4@;VX@1$]3(#$N> T*) &YO
X
Xend
SHAR_EOF
echo 'Orignal Sum -> 09851 25'
echo -n 'Current Sum -> '
sum make.exe.uuencoded
echo shar: extracting make.h
sed 's/^X//' << 'SHAR_EOF' > make.h
X
X#ifdef LINT_ARGS
Xint usage(void );
Xint main(int ,char * *);
Xint parse(struct _iobuf *);
Xstruct TargNode *new_target(char *);
Xint SetSymbol(char *,char *);
Xint NewShellLine(struct TargNode *,char *);
Xint LinkPreq(struct TargNode *,struct FileNode *);
Xstruct prereq_node *NewPreqNode(struct FileNode *);
Xstruct FileNode *NewFileNode(char *);
Xlong getdatetime(char *,long );
Xint make(char *);
Xint TryDefault(char *, int);
Xint build(struct TargNode *);
Xstruct TargNode *lookup_target(char *);
Xint breakout_symbols(char * *);
X#else
Xint usage();
Xint main();
Xint parse();
Xstruct TargNode *new_target();
Xint SetSymbol();
Xint NewShellLine();
Xint LinkPreq();
Xstruct prereq_node *NewPreqNode();
Xstruct FileNode *NewFileNode();
Xlong getdatetime();
Xint make();
Xint TryDefault();
Xint build();
Xstruct TargNode *lookup_target();
Xint breakout_symbols();
X#endif
SHAR_EOF
echo 'Orignal Sum -> 32975 1'
echo -n 'Current Sum -> '
sum make.h
echo shar: extracting make.ini
sed 's/^X//' << 'SHAR_EOF' > make.ini
X
X ### this is the default makefile , MAKE.INI
X
X
XBIN =g:\bin
XLIB =g:\msc
XLINKFLAGS=/STACK:4000/NOI
XCFLAGS =
XCC =msc /DLINT_ARGS
X
X
X*.o : *.c
X $CC /Fo$*.o $CFLAGS $*.c;
X*.exe : *.o
X link $*.o $LINKFLAGS;
X
SHAR_EOF
echo 'Orignal Sum -> 18981 1'
echo -n 'Current Sum -> '
sum make.ini
echo shar: extracting makefile.
sed 's/^X//' << 'SHAR_EOF' > makefile.
X ### this is the makefile for make.exe itself
X
XOBJS=make.o mstring.o path.o
XARCS=make.doc make.exe make.c make.h makefile mstring.c mstring.h path.c make.ini touch.c
XCFLAGS=/DNDEBUG
X
Xexe : make.exe touch.exe
Xall : install
Xinstall : $BIN\make.exe $BIN\touch.exe $BIN\make.ini
Xarc : make.arc
Xclean : install
X del *.o
X del make.arc
Xchkdsk :
X # use this to see how much memory remains when make is resident
X chkdsk
X
X ### lines below this one are not for the user ###
X
Xmstring.o : mstring.h
Xmake.o : make.h mstring.h
X$BIN\make.ini : make.ini
X copy make.ini $BIN
X$BIN\make.exe : make.exe
X copy make.exe $BIN
X$BIN\touch.exe : touch.exe
X copy touch.exe $BIN
Xmake.arc : $ARCS
X del make.arc
X arc u make $ARCS
Xmake.exe : $OBJS
X # the CPARMAXALLOC option gives spawned programs more space !!
X # with it and the msc v 3.00 compiler, MAKE uses only 42K
X link $OBJS /CPARMAXALLOC:1 /STACK:0x4000;
Xtouch.exe : touch.o
X link touch.o $LIB\ssetargv;
X
X
SHAR_EOF
echo 'Orignal Sum -> 49576 2'
echo -n 'Current Sum -> '
sum makefile.
echo shar: extracting mstring.c
sed 's/^X//' << 'SHAR_EOF' > mstring.c
X/* mstring.c */
X
X/* The purpose of this file is to provide subroutines for handling
X strings whose space is allocated with malloc - in this way we remove
X all limitations on length of strings */
X
X#include "mstring.h"
X#include
X#include
X#include
X#include
X#include
X#include
X
X#define DLEN 80
X
Xint linenumber = 0;
X
X char
Xlastchar(p)
X char *p;{
X char c=0;
X while (*p) c = *p++;
X return c;
X }
X
X char *
Xendptr(p)
X char *p;{
X while (*p) p++;
X return p;
X }
X
X mstring
Xmfgets (stream)
X FILE *stream;{
X mstring p; int plen;
X if (feof(stream)) return NULL;
X p = talloc(plen = DLEN);
X p[0] = '\0';
X while (1) {
X if (strlen(p) + DLEN > plen) {
X p = realloc(p, plen += DLEN);
X if (p==NULL) puts("no more memory (mfgets)"), exit(1);
X }
X if (NULL == fgets(endptr(p),DLEN,stream))
X if (*p) return p;
X else {
X free(p);
X return NULL;
X }
X if (lastchar(p) != '\n') continue;
X linenumber++;
X endptr(p)[-1] = 0;
X#if 0
X /* this next bit allows \ at end of line to force continuation */
X if (lastchar(p) == '\\') {
X endptr(p)[-1] = 0;
X continue;
X }
X#endif
X break;
X }
X p = realloc (p,strlen(p)+1) ;
X if (p==NULL) puts("no more memory (mfgets)"), exit(1);
X return p;
X }
X
X mstring
Xmsubstr(p,i,l) /* creates a string from p[i],p[i+1],...,p[i+l-1] */
X mstring p;{
X mstring q;
X q = talloc(l+1);
X strncpy(q,p+i,l);
X q[l] = '\0';
X return q;
X }
X
X mstring
Xmstrcat(p,q)
X mstring p,q;{
X mstring r = talloc (strlen(p) + strlen(q) + 1);
X strcpy(r,p);
X strcat(r,q);
X return r;
X }
X
X mstring
Xstrperm(s)
X char *s;{ /* allocate space for s, return new pointer */
X char *t = talloc(strlen(s)+1);
X if (s==NULL) error ("strperm - NULL pointer");
X strcpy(t,s);
X return t;
X }
X
Xpasspace(p)
X char **p;{
X if (p==NULL || *p==NULL) error("NULL arg to passpace");
X while (isspace (**p)) (*p)++;
X }
X
Xpassnonsp(p)
X char **p;{
X if (p==NULL || *p==NULL) error("NULL arg to passnonsp");
X while (**p && !isspace(**p)) (*p)++;
X }
X
Xpassword(p)
X char **p;{
X while (isalnum(**p)) (*p)++;
X }
X
Xfputint(i,file)
X int i; FILE *file;{
X char b[20];
X itoa(i,b,10); /* we're trying to avoid using printf here */
X fputs(b,file);
X };
X
X void
Xerror (errmsg)
X char *errmsg;{
X /* unfortunately, this assumes only one file is being used */
X if (linenumber) {
X fputs("at line ",stderr);
X fputint(linenumber,stderr);
X fputs(" : ",stderr);
X }
X fputs(errmsg,stderr);
X exit (1);
X }
X
X mstring
Xtalloc(i)
X int i;{
X char *p;
X char *malloc();
X p = malloc(i);
X if (p==NULL) error ("no more memory");
X return p;
X }
X
X char *
Xtoken(s)
X char *s;{
X char *t;
X static char *old=NULL;
X if (s == NULL && (s = old) == NULL) return NULL;
X passpace(&s);
X if (!*s) return old = NULL;
X
X if (*s == '"')
X for (t=++s; *t ; t++) {
X if (t[0] == '"') break;
X else if (t[0]=='\\' && t[1]=='"') t++;
X }
X else t = s, passnonsp(&t);
X
X if (*t) *t = '\0', old = t+1;
X else old = NULL;
X return s;
X }
X
X
Xnumtokens(s)
X char *s;{
X int n=0;
X s = strperm(s);
X if (token(s)) {
X n++;
X while (token(NULL)) n++;
X }
X free(s);
X return n;
X }
X
X mstring*
Xtokenize(s)
X char *s; {
X int argc = numtokens(s);
X char **argv = (char **) talloc ( (argc+1) * sizeof(char *) ) ;
X int i = 1 ;
X s = strperm(s);
X argv[0] = token(s) ;
X while (i 51753 5'
echo -n 'Current Sum -> '
sum mstring.c
exit 0