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)A&#Q 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%A&#Q *)1OS&1O !ZT.+7OKW1P0! '4I_PXD!H,^) 8 ?!"P XM"HL>(@;_!B(&B #Q *)1OS&1O XM_PXD!H,^) 8 ?!"P"HL>(@;_!B(&B 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#HW0&#Q 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 D6![Z *R8,](F@#[8"0-R95". XM!BP ,\"+R/?1B_CRKB8X!77Y@\<#B\CWT8OW)HH%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@2T3LTA

F>\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