Newsgroups: comp.sources.unix From: spaf@cs.purdue.edu (Gene Spafford) Subject: v27i158: tripwire-1.1 - security integrity monitor, V1.1, Part12/26 References: <1.756157401.21864@gw.home.vix.com> Sender: unix-sources-moderator@gw.home.vix.com Approved: vixie@gw.home.vix.com Submitted-By: spaf@cs.purdue.edu (Gene Spafford) Posting-Number: Volume 27, Issue 158 Archive-Name: tripwire-1.1/part12 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'tripwire-1.1/contrib/encore.malloc' <<'END_OF_FILE' XFrom tomazi@kralizec.zeta.org.au Sat Nov 27 04:17:35 1993 XReturn-Path: XReceived: from arthur.cs.purdue.edu (root@arthur.cs.purdue.edu [128.10.2.1]) X by barnum.cs.purdue.edu (8.6.4/PURDUE_CS-1.3) with ESMTP X id for ; Sat, 27 Nov 1993 04:17:32 -0500 XReceived: from qrngu.socs.uts.edu.au (root@qrngu.socs.uts.EDU.AU [138.25.8.43]) X by arthur.cs.purdue.edu (8.6.4/PURDUE_CS-1.3) with SMTP X id for ; Sat, 27 Nov 1993 04:16:12 -0500 XReceived: from ultima.socs.uts.edu.au by qrngu.socs.uts.edu.au with SMTP id AA20565 X (5.65c/IDA-1.4.4 for ); Sat, 27 Nov 1993 20:14:49 +1100 XReceived: by kralizec.zeta.org.au (5.67/1.37) X id AA05366; Fri, 26 Nov 93 12:42:24 +1100 XFrom: tomazi@kralizec.zeta.org.au (Georges Tomazi) XMessage-Id: <9311260142.AA05366@kralizec.zeta.org.au> XSubject: Tripwire 1.0.3 : It works ! (Encore malloc problem) XTo: gkim XDate: Fri, 26 Nov 93 12:42:22 EST XCc: barnett@rmit.edu.au, tlorimer@mdis.co.uk XX-Mailer: ELM [version 2.3 PL11] XStatus: ORp X X X# MAIL TO: Gene Kim - Author of Tripwire X# COPY TO: Michael Barnett - First porting on Encore X Tony Lorimer - Mac Donnell Douglas Australia X (Encore distributor) X X X Hello, X XI just found and fixed our problems with tripwire: X XThe problem with was due to a bugged Xmalloc() library on the Encore Multimax systems running UMAX V release 2.4.1 Xpatchlevel 3. X XIf you try to use malloc() in the libc.a you get a memory allocation error Xwhen you go to phase 4 while reading and comparing the reference Xdatabase and the result of the scan IF your database/scan exceeds more or Xless 800 Kb. X XIf you try to use /usr/lib/libmalloc.a which is a faster implementation of Xmalloc() written by Encore you get a very strange "preen_change_count: Xillegal database record! Aborting..." at the same step as above. X XA final and successful attempt was realised by using the malloc() library Xincluded in the GNU BASH 1.13.4. I renamed the library in libgnumalloc.a Xand installed it in /usr/lib. I tested the new version building and using Xa 1738 Kb database successfully. I include in this mail the source of the XGNU malloc() library to keep you using the same version if you wish. X XNOTE: Encore UK also made a special port of that library but for compatibility Xreasons, I used the original GNU one. I HAVE NOT tested the GNU malloc() Xlibrary Encore port. X XI also made a few minor changes to the initial Encore porting by Michael Barnett Xfrom the Royal Melbourne Institute of Technology. You'll find below these Xchanges, followed by the source of the GNU malloc() library. X XAnyway, thanks very much for your help ! X XCheers, X X*** (Gene Kim says: to unpack the following library, use uudecode X*** and gunzip.) X X Georges X==== Xbegin 600 gnumalloc.tar.gz XM'XL("-0I]2P"`V=N=6UA;&QO8RYT87(`[%QM<]M&DLY73]V/F)-396F+IBW' XM+QLKEUI(@B3>4J1"4G9T=559$!R*6)$`#P-*9G[]/=T]@Q>*DN/S[N8^Q)7$ XM$CCHZ>G7I[N'.>I?7'5ZI]_\,_]HK=^^?:WI[_W7[_CO[_9?\M_\XZN7;[5^ XM\_K=F_UW^R_?O<:S-Z_VWWZCO_GCSS_]CWKRA)1PVKO4IV$O'`1=?7%YV.T< XM:?P;]H:A6Z`_F-PF6:KW6_K$C/-5E*_U_O=__EXI?90MUWER/2OT[M$>/]0G XMN3%ZF$V+NR@W^B1;I9.HP.LMW4GCMJ/Y]MT;?1Y9JX-;T])'T6*<)Y-K_'@> XMZ)>O]K_[OJ4OAX'2X:W)UUEJ=&+UTN2+I"C,1!>9CK&QCM*)GB2VR)/QJC`: XM:\?8:D$?)L8JG4UU,<.;\R0VJ35ZDL6KA4F+EL9Z'<^B]#I)KW52$/DT*W0T XMGV=W9M)6:C0S#YY$SR*KS2>S6!(SAY&=Z6F>+;"7T;GYGU62&]H%VZN+*(^N XM\V@YTZ]B8D2\XA\0JS1ITIUDN XMNV+A,D_P)"+N04??S4SJSF.+*`=_"I]CN[A(;LU\K9.4>5C9%3BXB];8]J/1 XMBVAB1%3F4VR6?,BQB:.5I:50OR)1@R(DD$]HU=+$A;8S,Y^+Y$I6["J>Z86Q XM-KHVUAU*552CY7(.W=#Z*%WCG0SB(=%%>-7DM_@(PHV$-"N8/P*-<60A;6RR XMB/($)P$Q%@*69\ME9L4N,A(:V[1UBH,RGXC17>0&AC8WL%M-^O5F`0T9EJPE XM%2TR6Y0OPY06RRAECF'UV.#&F*672<&R7)@\7HMRP47U!@Y_N,:O:9%'%C:7 XMK?(-W2NG>U(7J2F=R"&NX6(1?C=Z32]-P=Z$[`MV,2.F2"QLO88_4Y[;Y\^Q XM9!'=&&@A-\Q<>1!L06O9>&#F,!(KQV`=&;7=*NOZ*AYQB6>V9$*4)NH5;7@E XMW[%\HA7DE%N2$]R95JZL>&%;764K'4$)2?3)(9,Q.4>\$\2 XMX,38Y#H5'9&8E1,S#`%L(BS8I7VO=_?W.($+/ARHHLE/.E+24N01BY'!M3>%_S XMEGRZ1B2`O#O3>\&;F4_@4N,UGB\,[6+F5L+M$E`*'Q'(NC/*A05;-Q3*7.3, XMS,R=MP$)60[\T(X95)*DT;R%/>1(+DLC;2XX2>799!4+&QS=2;NP!R*`8#LG XMU6=I@Y9R$?\9%BQ7!><+%SUF9"]@DH(*5&@ELV7I)!$?)@&1-A%O6I4S.84H XM$4DLF&R:$79KJW_[/*S%IZ-P<#[40>]8'_5[QYU1I]\;ZI/^`+]R4=32QYWA XM:-`YO*2/>.%Y_[ASTCD*Z`$Q_[(M@,WGA\"CB(@"&#K(ND%/&IF;F$[$Z?D^DZ?'O(XC3J)T+X6\' XMJ-A`A"U)FB7['*QJ9R#NV4W!\PX?A9&9SGJ(#`X1SZ,$ XML)28]L'F0)`K/!BU0)DWY#47HUCO@O2`MQ\"A(+NZ.5H;$V*32FGD4++G6B- XM`)]TK<3F:Z&H*4DHFD_VN*VJ:)[!1B215"_[%$5+;@DP>E+&,NWFX"WX\I,%>E=(MA]>Y*ZJ&ZKV]RU XMK!?5/L2;47%\WW(BY"N'QES8PW'>TSFTCI!9N6SCRL3GC&DREW@40T<3R XMY3%JPH$HG;FW*A;@0>[MG'Y>HIS59;S83WH1LXRKC(WFN+(N(]#R1*0_!Q/,WR!54\\,MH(K48 XM8Y5FLX"Z"4PI7Z4U("K:)6/G=H-K--`B#N3D?&SM-6)4?7BE,K))""?;@BV* XM*^ZR(]&J>@D@!"-!1B1O$O-.4]239)(WGJPF[\N?#8IEA*QULQ62[!`.! XMJUH^U9;J53%Q.CH^,/4)HY\P;;-#4'T[=9;2(:@^&[ XM3H4O:<#=.0D^N@9BNHY\CH]2R10)1+2D"H^\@9'21M!G%0'>*H@RN8W(O/8H XM2T;Z-INO%L;56$6&4&J<#57`41(RPJ<1U#NFTRK&JQ4XJ[S;0@+&17Z/4@ED XM:OW=X_AAD^$:G@%')><^;211]((51(NM6W))E$L#2VJH XM0FPRD5HIV7+U&X<1!-W'P:M8]@,'.H!`6F7"N<]EI.]RZA8[$VWIVVB>3,0* XM"Y2-$56R,ZJ[.-V9*)=4X'%++<2NI;GD8K@SY)12*'Q'/(N)>+^**9Y!HG6[ XMVV/O=4+;%%/-KWU8J$NU(4#)5O\8P<4/J3=)R;[$-6O`EA$T&+CCP/E99EV) XM`BNFG&TF0&N[7#)%<=QCB7NCC-4LI*)H\32'FS]I-UKFG# XM&JG@H=1U\OQ_5U#B/\L37"97-<-A](Q1KR+2RG#-&$JD2N'&RW+@K.LS5H\1/.SEVW]+N;Y XM;9M;&+I`!>^"[V.PHL&H:[UY`]YK-?O%&X;B%$HQP_-:SC'+YIU\(FUX,=NF XMB=::JIXOV#,'W<(-#-36L^J&GZ(>X.$0CC-=Y:YE4.OFNX-5;81G%%IR;AVZ XM6.QLD>LH0S$E-TDJ6.U=6S\ZT"4N?+\E-[<)UX'2-*81R:T,P*UZ=(+KA$=J XMHY/C;QHOD;'6:;#%JS&70,D\XM+6+I,\\?*B3&-)6>X-&583AQ#TE`$RXB.B XM/A)$IEQSB[DJ\78Y%43 XMVFE561F4L;DTUWH%-'OTM2YH(G7>#K6#:"*3>P([K>;@K"PJ*B1:`S9-`U*N XM(IL$5$T"K^"4R]D<2SW(4%!1_*!3>:TZA?/;#\,:`SPUA&WBJ XMUG`G28B9\34)@M"F;/=Q&U^Y<1SE[VKLXD!..;`0$TAL58I_7NX;VSWDK`<\ XM]LT6ACS,*A["E%#'EC,5<-1?$9)`B*!#)Q4O-)2ZSE`)D6NSX^6W XMWNADHEQ$Q4K&=GB_JMOXD1_.Z_KL6RAEBZSPA&AH+UV*":++2B)6^#,-3] XM$WUT%@Q.PQ:M&X2THDZ*YALU`EC5Y]_#GT=A;Z0OPL%Y9S0"M<,K'5Q<@'AP XMV`UU-_A(;?6?C\*+D?YX%O94G\A_[("?X2B@%SH]_7'0&75ZITR0ABB#SNG9 XM2)_UN\?A@":B<8@NT=_;$S.NM?CDKFZ7!! XM[TK_M=,[;NFPPX3"GR\&X1#G5Z#=.0?'(3[L](ZZE\<\Q#D$A5Y_!#GA9.!S XMU&?1^+6>.I@!?74>#B"_WB@X['0[V)*F/B>=40];\&PH$,Z/+KL!#G$YN.@/ XM0QJBD`A!!`(?=(9_U<%0.<'^=!F4A"!=T#@/>D>LJ`U%TG'U5?^2,@;.W3VF XM!>CD/1RQ@+I=W0N/P&\PN-+#K"3\0#9PV>O2:0?A3Y:DH4WEM_@5?%`I_PIFU-?GP94,U:Z<>8#-."(Z`#JI*.1'3J5D0^2K?6\C6#O3;_L#^RBVY_2,:&34:!9H[Q XM]V%(JP=A#_)B=PJ.CBX'<"U:06^`F^$EG*W38Z4H.B][WIAM=>Z3.HXC#$LN#X0XOV7X2G/;8$E]O^33>RI"*`W@`6"JW.T8 XM,03`PRN*NCW`'9?J+-FQ2X\3)-=YMJ3VC.`AN5_A^Y=N,.YZ*"YC7N<&6=06 XM"@#4)E2.A_!?/$G/K;LS)A3U.0TFAFNE`TF!Y XM*X`N6#30?.TB5[TS[+J,J(R-74U?8J!S?9?6^!P$8N0(838EK@HGE XMVPN_F-OV)`2>+KIN`-?H=!QJ81G@`#\*`$:X-6LE)7T\7UF'TYI#/R;%-.PL XM6\TG@NQJ_3:C=DI$L`.XE/K>_#+C:4&CNR0EG6OATRT)P@"NM_T#R9/?]SV[ XMF@">`:U%"T]ZG"=FJI'U(V:8KQ,6C.G:/S*MS4NLZ_63'_A]ROH,>GZ43;EY XMM:S*\(:R#\J+4@T5"_:MKI_(%*38/D`R?N-YW=*.<&37("R=5C[+@0E!>2]JS*%]\.J>PXU/Z03F0 XM,U20<-^1JG>0+N<)KI>YF9EQC-^0F(>F:E(^(E=I?A'PY:K*NJ-3=5JWXJH' XM6F_7/D+8]35K<^M*E@?4NX1E/X9Y^?W-^].MWWAU&H>@:TUT^:'1S:7;RQ)< XMN74H%[4(#1NZNI-G*?B7&T4`]XAJR1R47#E4LX/::*_E8Q_@<+%<%7QY-\O+ XMV=L\N9%(J?SE9(X\5FY(-(:$\!#C)@^G*1#TK4!W;[]O<;1-7_WT23==]=[; XM,4H%=P4M.!SVN\`6W:LZ+CY@"W#*U\4:YOPW2T*Z>]:NGW:NLPH'>S&D? XMDNN&]S,%<79_";&JMP[JV\7/ZHRX.^BS]9*J.&[95&-:SQ_S4+[MK)5_);NO XMCT0;1>*#]X'Z4^RQRBW?1J6[+6X_[N79LJ%/[2/NR:$(X]Y!YB[Y0)_W65/Q XMLP.Y;18S?^SM8](V2#Z/P<$-MRP6)EU!8&9AGS^G*,V%LEU1LXSBE2]A(9B: XM:_(0BRXMV'R/>VN%2M+Y?F<;VLB`/)LA2[X XMTL6F:H1<7:?9J2:G'EDD4Y72E5H;Y725_HSGFLB[U-<_D#F'W+.!C5HV[:ML XMG4W6J?'N3,ENO"YWD2N=U>[L'I3$)=J"@/?"O]6,_!FB>G67'I@AR67JL5@B XM&><50N&+@C1QH38^?J3K\+G=*V=EX.0_B55]%L4W)N=0^`/)!%5PSEXV6L,' XML_3'EMX'/LN3N7P51/L/6G3-WB83^0*$_D`3=UAR5#PK;ZO*T)W[0O^N_M#_ XM[Z7__O']KW_%GZ?WDNGW^Y_[]M93 XM288,\0G-N!+"`Z$CY!(:%5(OZRFWW!M/OQ@S@TAYR?XQQ.SI/P#$GFYBYR_# XMS:\(AC[E=[J^P;L%2&\%T0](X4MQ]-.O1=%/OPY#TPE`XW$Y;T/23[\$1V\G XMS_NZ$JAY"[0AU@-M':]LG>XB=[O;.>2&/JA\!F]_#FN#PB-H^VD93VNC;;I= XMT.RUTQ?,Z*X#?$D=A\/1<6>@_T._6-G\Q3P9*YK[OP=D'E^G*[F?B&?H`>8OR+'_];/='(KEB#Y$8?45/;T@\%D#>M XMR(U__];]H.3B1&W/S.TIWZ-J9W[/S.^957MF&WMF?L_,[YF5>V9^STS)-0#: XMT]&>46I?TC<)DU]->Z944S+O];>[CL\]]20"PLYO];=_J3]5;1!^KYY\NWN$ XM$(?_GG2#TR'_=''A?G[>:>OGL?[V!SR%>UUE*#%!/DN+0T*=Z$B_O+W;:!^/Q#$%.OWW]NO;TQ:8->"V\ XM+V6C1`^U!XO[:[QNZH]*K=0?.OW4'SE-U1Z5.JL]N[WW:$-I?^C__Z?^?2SY XM'?'?J]=O]AW^>_ONW=M7C/_>O/D#__TK_KSXTQ8`V*+_OOH<#%0CN>#R?T1U XM_P!,!T2GO@[1<3GUQ7AN\^!?"N2^$L9]/8C[<@CW]0!N*WRKY/@YY/:UN.T1 XMU*;E2XC2.O3MK9S&&#C?;DC]SSWMON?OK]HLDAOSERAI+Y*B;28K;G*3^5P. XMM5MO]3DU/<\BDQ<&U?R+[$&.<<(_O0!Z3*;PA.F37\Z#;K=_]$NG-PH'O:"K XMGO)52+/E`W^/\P'*'1HVWW(DM:M61#L'SWRU<]NUJ2#8,'3HX9(777N[*RLK)^ XMF0G/6A-%*9KQ=_A/L_:QYKR1"A`0-NU/C'0@-:G;7%439S,_5G5)=F-;';Y^ XM_IR;4$?$9(H":9%-=))5U5A5Y3+&V60Z'DAMS=JGVG.IP/"3+=@LVX7 XM=2IQ5?$GVPW483M-5VN),.&]_2>O#W4Z?J=>'+U4^`U.P#^@-62MAEEK73:$ XMPC>\>^NM&3YYT[8)<.?4W5O._Y]P_K_"]C]G_]^X=_?>O7#_W]Q:GO^_UOY/ XM"Z*M.D",Y$0+9.$A+,:V"(^T5_[.Q,I8""LP@)C06%U$94#@OS=RO_Q+FUT' XM8L&NC+Q4*2P%A*5*X:L>*=5ECY1[66=Z0@XS3X=#-@"A+82JPYU%U6^W6OBH XMA0E2$`Y>J'I=BPCT;XI';"CK>"!L*FBS5.1*@,M/Z>)0JA!PN$=Z&B0Y0;U.)5Z76S5M9^Y)28N\R]'8VS XM\U5U>Y"]GY!V@GGUMGH,4_=W+6G!G&9F]GI$#*/0-4TSR+KGFS-IC=%=4H!4. XM\&,>&LZWMM;JGDX'[XH6L*:>Z'=4BY1+]$BM5340'ZSC&*C;W#-42P4ET(:P XM>Y.*\ALI!"/.$?%-FY_EP6FBW1^0-0;@N)<196`=9^17!I0OH?I<@ XM;[*"^XAKYCDA`W%TB-1KPVB90@+7`0F:%]-[/B0-KZC=+EYN_U6*""*U>/N,JTEER<(G_S'GE9893RM^NT3K&KNAB2Z9./F+@WY)-`/!/3 XM'21P*FJH'W^$Y`^EQN:\*I-/SC3L96S5FVD<:C\?O./QXF$DRS5_^-U1@?[+ XM$MB&2E4(TA2 XMW0Z_:)MW944S%GP?$-2A]FI(5AI,0@6-+LE/JR0)`-DPOP+Y0LB!%J4AA&+: XM93(`\OH`DDH_F["?/?>5L8[&B8'<9%_0([<7:(..:9'VXO2Z,G,&MV=,CR;F XMZOR\@CT*G3O*"]`%%WNI4B-4<_GYMAM)Q7S[4RH*^V(R/3XVUBWL$<*9"2,M XM5`]C,YRT0CW:!FD8A*,66EBV>&-!]J?G5)2#'5 XMSMX>FBQ:HN`"4CW'H4#`-S/;NAYO;].C3)7BWJKE"G@15+Y&Y:0+S0Q.QTPB XM"*?Q*O,]NU39-RPWG9.L1#"^T(!#@[\"2GK%OFX5\2K>V=DT[`1-$R8.]J+V[$VOQ*IZM(BU(9Z^-!(EK3P`_X8 XM%9N<7+Z0?4>EAQ=;-BU*-'7)):4QNR2%N8F-?-;_CN XM+<@W&X[T<,"&WWH4K*,_IDP\>;%J;0Q'#K9".Q/-JMDMS!#2T."F06VS[A&= XM(65B#AM%%"U;JB%Z/(#54>[::)(T5F>6D<9ZW`0:R5-NF)2#_ZP],NL7BUU[ XMQ)]."A;N8+SIF;E3-05Q%FD6_XAO*N8<`FD;,Y)8.1X[5I-I^#OZ+O67#;I< XMF:(#!#-P=AGPXDG\E;.R'3)/9]'@NBH-6XR1N&>+1.N[`PI/`]GO$@0+(]SP XMR8^8QGSZ,^*DH3ZS;HU(Z9'AL;9-L(L]S.K5M2ZC+,01+G'XX7&"TB^'E!QR%17%?R>ZL.!]'ZZCB XMNM$IJ."X>@H69(VXO!9(S:V"VJ8#B7Y`*C?HI4Q&/?+&X?[0*N"WYJ'VD1)J+UPE(,)M11R_JOGWX-67Y/]U];=36W_U6A` XM`DR^>6]Y__>5[O_VSZ9]XX#7H8=ZRD8L=(@6KX_D0!)CG40\)LPW'*M]$=\) XM7\1OPI6N]5S+K]KBUWJ?X3KA.J_U:I=SE_#YKA(^QTW"E5TDF'LR=8.OQ'IX XMX_8TK0';SU"AQ"H89UW(E1:!26%_^8&XL_]EM/]X]>H-L;$&I23*&4 XMW+>%;_$EW:ZAU'DC?(MM^\&^AG9%6ENJ$(^T_MO7AP>OCO9:SZ@MYH)O.@!J XM[-$%'_7!Y&F]VFW%F^^S!V`-W>'@N)S>--E]8SLSMP=>,Z&6.Z,V&GV76QJT XM,MY,;ZSQ)(9CZ;5*A!]3[/Y_[Y=&H*)P+RFG-'5X[TQ%?E6'CU\\-34$I+3[ XMW*O?:0._41OVE:42>6>KJV@Y5:UNJZ`6TWI^?<=KF]OLW5C#_"HP5:2)^-@I XMV3;=J](^CHVC?5NQ6-P5N^"BL:^=S-3+:._N-?ZZ1:?%OZ$G\]%TP.>[*04A XM:Q?#`7EY/F_WIUG0MM(ZQ\J#!G^=^3^[=ONOS"!`]H6W?A XMK-=TKEY80TGJ4$S'!3P63(KUH$;!##`FIL&L<;P15+;<8365JJ.S:&[C'7P@ XMD`!I-98F%>%7KNC0N-*FU]E@,N88PH2!0Y_M^CR"^?BVND:7F'1OR1>2PCNH XM!-U.S"]#XZ")&(2']\90(X=&L;G8M[VIWW\=%6N#GOSY]RR4_T=B7HK(0!QE(NC&K_`W*.AA@,LSI+!3= XM(^^V2#^T-T;-,"'?&_@)^1F9W(W97S\&QX:Y0R#8S\ITMV4FW]A1-FL6-DG7 XM,69%>(2M3YMLUL#("6OX;4Q_/E7":E[B]`4_2A6Q3=I%N.H XM&V"O'-:X[?Q2+$2#QD."5*>P'0P:MF++<539L1DURNSH=-1N+^6(G*ZD-(D%U"435-STM13FGO-9J##S_9W7J@[ XM_C`;]H4#XC&V5,BO;DI@ZUI@%6["--6SY115UFGC9;$RAKLF*=GN+E*!O=YJ XM^)"Y1OQM"0_7\%%*;C;&@-@GM+TX].&P>!7E`'P)9[JZH6<;81F#K#U!I*VL XM>-YS5^UD<@P3'*F3L8V4@#6ZG+R-H2&,@[HRI]`D.(]9F'27Y!<>90RR"YZ[ XMV\-^3X^+M@G/+F13&J$>&\'S^(EV`=MLMFM\(>';Q"J2HM);H0F]OJ\VFK6CVRC.9JM>% XMOO0S99G[KX\Q_)A,01*,M;D.TPO43#&:UB_6"LC:A0.`S>HL\D56./X)/;D+ XM-QBLWV3,)65:0J0LDMJ`4VJ);"3HO;Z^:"M=GBD5F5?!!::N6+]WN+%9*6;# XM<5"`VW-HJUFUP1B'`7)]:=!+]@+3\`)QOW`Y3A`S@5@E_+S^3GZ!%[.*,.80 XM2,(:0=N(,P/>CIT3@W^W+,E+IXJZ[U7B1HQ_V[OS&]X&FAJ1H=P4:NU#0RA. XMMTPVF>A8$LW>+(R>#I5&'%2C(9R5/WCAH*`9_YJB#U$K.[M-<46B.VK3YVDH XM>IR1@8RM@DZ$'.FZ[2%5Q)(0S27\]O6')VTX>9^27E XM$YWY]8B"-AN0//K(ISH)CTAGX2Z>Z+)QH6%&5N"5U9RJ")3+@VXY8*^K`+@< XM`&%@Y\1M24W):VN7PM-YW/>J0*>Y4">GNQ6()P_SE"+HB8F3J<&9HQ`>O!"\ XMD2"^5.!"F&@G^0PH7)DL_:5`8#A4#7'0#1I;Z2V2%N%D".2&L#A3TJI0J`FV XMA(-ONEKR]&/'S%!`*`\A&6`'(]#*5$9A.ERK](Z3F:A,$DR XM$0RKW1D);5_!=4SDK@`./8,1S`09ZW6P*!HR1U3XI1"1DJ,$)5[9CM"!+=V' XMY;OJB+I>D6EI=:_-2/E))$$'#^=LW\\Y\G=T^Z;0SZ*JYS5"IHYB"N&2/D5K XM4-U\W.U+Z)C0"'+4;W5S[CHM9[LH?#:C>U9 XM+L@#J;DVPE`?^IRPH^4GW;,B=S:Z;+J*9L=6-AX%#)&/.-KJ6G?@ XME")R='*,"W8,AQB,-RUC4V!SQ;0"E@M&N;D/ZPWY^U)]U3#)>*HVV XM6F0Q8'YHWZVMU@OKKKWUHMX>GQ1I@I\V!5^@VE3T.TD(!G:;7>V*&D'MKJS@ XM].\`@W1>"/I%$>A&1\:)\Q"VPO,K&_4FNZI^ XME[[=0C+[O>LB?:5Z6A4D`ZOAT\.G@)7-ZOL)EKEY2?K XMIS?=%9D("ZL'W)OXFWY'"_;9_L[>_LM7W@NRB737\1B(V5G'LL#3]F3#LD%DK]770B> XM)-U2\+.U3FBSP05J27(Z0!,U?4>*$J[&S&H3#X(!*52TA-[.N#[K%@5R XM_P_R-,[A6$+0R6\T+'(*;"^-HWL;O!!SX5#&+J4:$D4Z,.M...$>).:^4%J5 XMF&8E&E1+.J=$[\C!^M(_M=0B%>G,=,W-F:L<$X6NRT@U2&GD5@/A8P2)@PKU XM+1HQ!1XJ\<+KY/>`A`F6YJ(D/]&D-.=,G*50R:;J?"7'QS"+\*"6N.Z`T^J9 XM=AN6))7]Y8IU(X4\ XM1Y`!;#QMGTL0:ZCO$,O5(!KX"AA&I1M!&%!T\ XM'E`RHC(L,8*T+3W6SJ0_!<9@LC',,/Z2IH9@.EAB%J"O9WC XM:I[T1;]KT?^6JN,YA,7R6VG<^7PX1(YS)CM.GA%6UN,5?.0H>I@92;U9S^R" XM=AWK(MA=5D4!?(`(,\.$^*-2[3E_AH5<0%_>C4+PSK67BV=CCA3-9JWG#C3T XM7>M28$12Y0=B,=$+7+_ XM`^&3+'Y*!]AI:L_0N,/C^;40=6;-7O$[,586RB3ZENKHJ)09,Z#F%BI2H]>,> XMT"T,6U=[!NMYIME%:<0XR+0S-=2>#M**;HCLR1AV3-2=/,-.$I[3Q5N%@<3C XM;:+R.=!XA%Y>.2YDS]MYGW97$<2!U8P]UL]QRRW?=[QRMR;#2;LOW!F_LMV& XM)TUI89*SN6R4LNW2`U]#9IOA9W;X+.5]_('N+;!>J!)SK-ERN*:*^OE0X-1? XMBG<1K=IF\ZONSBQ$!(07.1#(E'WX=K6XY&#<2YLY#[S^ISR+NZ@W>+/S\O#) XMZT.QP,<;+;IF.$-[QQ/4?&3&'>.4G@`O.LU/3B/40JE:4D)16CZ$TB3BA4.) XMH5],#B1L5QLIVY4F=M;DD>:8=P^[D>AX$Q5:1-'33.3$;'9^&.3;SW8.]Y[O XMOSAZ&=<8MV(:8VCK*938SZK9P!/MDQIK;5O(,.^]\4II(*3&5D13ZU9K%G:/ XM\!Y6BP.RC"F=_:\OIAH'AG>EOL9NA3Y9;:F1"S0^0IM3?V_SSUS[.OT_J0<- XM+_X?^7^Z?W]KB?_X2OB/5WIG#79XW_O*Y_F"4DO@QQ+XL01^_,E<05TZH/RO XM.%MH.4O'3=\QD>R'PWZO^L`C$D#@?H(S51]X]*8=S3;KP./N_9Z4H\^O,/$4 XM^(]D1`25L&.5]@6L*B#+T2@;1#O9[@S'D_*Q1;L`ZN03(MBS]DD.Y8OJLO"5 XME;_L/#W8??/KR[VD\?XXZ[7AI-KQ7S[^Q]%^PJ>F5#7>]QZD-7TB.>V-P^.( XM54KOH\*(SR%ROM<<5!HJ,=*^,P:78"Z^:#HVWR XMQH=20POUJ8_$(=MP%(J:;H::R5"'#[%_+^>"#XFI>$P)UQY1@]$$QXPE076, XM[O='2/7;QMOT-TJ-`_+6I,;!U:YXG.FL<\AJMSM(S43T'G&%?3"I9OEU#[J# XMUI]U;V!HA;"5H%+^L.`3I]?:Y8SC+7];>8NO:2)QZ^Q^8MUBM\,^#,;I=;5/ XM&)MRIB^(TDRZWG".C:P,DNM[PO&-@-T4%Q>DV6]&JK#-;5I*FNU' XMQA"/>&,H382A/GP3H3XF/(?N'/\;SD4#-H2;79X/X7)E,M3\+3(S;IZZ884Q XMTEQHQF82:Y1:Y]#F`K/OZ[,DC?NHDD0T9LJYR8$WJVHADHFODGG$5&JL,P&? XM16Q?B*00'"=*NCHQ.YYWV=)BNQE2@7O()SX9I%'*<3+&Q;.%`3$H]/BFF2M. XM$OVK;2;5SZ1)5C]Q&NW5!$2G(I,C",I.J'SN(&;D&$V'QOKL3CU+)6:5'M[Q\JFA$%^!32BND;"YD%CGI XM@@*B:I7HGXN:37OD8LF;G(VR#8^;X&?5@'E9(V=DR_G_?N??Q-GN7IO^Y^[F XM@XU`_[.UL;&T__E:^I]R'!?6Z2P6S66IKEFJ:[YI=@,C] XM4Y)YV?P"+GA%>!0O:"NV<(TY-0\0T>1478NX7+J5CXB7E@'C&S10)*NB;C8+>F4!WKS'0I_41Y86XH])"'YM]Y^SBM+KRD&O2 XMI-8+5C]P@&4\R/#Q/W2)4?:B\G-<*_>M XMLZH0@"0BC/\8*YIE9KZ<_R\R_QI8?_W9Y?_B/QILT87 XM->A'RQ$"=K480.)2\.Q;"OT7E0IK<:DPTLUEP+]%`_X%@U&%F2O,MQQR[VZ(S?I?@A\E3`FOB6U&YL!O_+OM.8?RJF+NYMKCT XM0S7<:SN#+3DXW'VY3V:0[.U/&\0R!A.=[1D;+MDDQ`TI+VXG&5(6501K)!N/ XMAV/V$`&38^O(T>W\21N-7T#J/1VC0R=;A.]..H)*K=N^\@9J`:KF34P\)B4) XM#1L-6>J,65F2MDV;W4'-X_X>>#?SZM!I7)NDL!QQ]^P;)P7EZ#2ND5)$'OBV XMYY\-)*YS_]]H-.YME?;_Y?W/UXO_RFQY8>ROKR58V/.;WOUW1N.\KSC?!NZP XM?QN>#M33O$_;`S#]W0\G@VFA7DU'H^%X0GD?ZT`F&JZ^%!V6HL-2=/BVP,-[ XMY$Z^[*C-.GXSV8"&>^0%%CHQ+<(&!<=ISU'!208\YIQ@G-HQD5,?S*XOSQ!R XMYGQ;X]?/WEU XM\#]O"4;[>'I\#$M5.P&`I32:3AR3'\?%`=X3L)MO=!U%)S)R?;>^ONZ&O<5: XM+M"9;G-1/#9DNQ(D6_)=`94M.:\"S#ZJL"XF?+8U%NMDQHCJ5F]58UWP*\=" XM)$=`[&!\8-<(#IMVP';>'N=D\GG3C.A-7-GH$86W0O1&CO=)V<1-HU>[+I0B XM]0+Y9<6$?!(-%,PPNHUQYQ/+@6[3,YE]FAS]+$!4$9S8O"/Q.D`DP\O%0,EN XMPEFXY&/8DP<3B5C'BV!5W5Q3?QG][^#F*M$($S3LJ.AG!T:! XMT\0:2*P-<2<(U5FS9T]!-!#1\;\*8#G(=A7,0_=S"2?>F$50R6@C`W(#N27A/=F8C<2)ZH9#5'X'3#2B>,:'Q&,> XMA=F_%&'RPLD&;-XOO@*@-!&^V4?9>3X>,F+!;`ON1D]^/`O<"4@FSX_]'<0T XMR/J;&)&[>W)U83<@V@5.17"SQRTTR@%Y&OUQ34D4*";#D2(IC#SCC?2V9>JA XM?8EC\X!D@6%Y*/A/:=LQ8W/#[CDU<8@@2AN6F;!D%'-I`/4/(!8M2XD$9&Y/ XM3!)!3:#1C1T%+ZZFAF78.4>X+)Q&!I%B?K:5_Z1NWNEEYW<&TWX?:.+FQ4TO XM^(A37#F48,!$GVVVTFAU/ XM@&`Y5<@O0M1P,G,EVP)FHH:3N2O>%C0'-9PLP!M,2+%/M>7\?Z_SK_E[]QKU XM?W>W2O;_#[;N+?5_7PO_8Z.2:=\U,[TV?[%0$$NG`$N]WE*O]VU?"9I[I'Q0 XMWUE5CQ'3O9-B--S':-^%WW_"[]J_L7O+0!3@'3"^A">SEUFAH\R>Y$C@&$*< XM;?VUZWV.6&QC#[GK7'[_#@D)VQU[M>+F$#8)I/H'^XWC$J:KL[&9!C'SHD XM`$7DV;F8[`^Z0\B&TP>C84(,4*,'/5H4I-*"@T:-POA>!.T$_C?M9W0T@5G, XMB@FY(7PW&%[`Z>Y$.RKC4`7L+)$X8V2VM=&FG3BY3KJ@A*9@V!JD:J#B3G XM&Y&,90+VSO6U4MA*;C$\E]!?U7'!:(R`L8&H7.U8U?4C;,;YH1MX^([:U-)VE;V('YW[1AR2]@$ XM]"V`_D-4VMC*(7Q*"; XM%3AS=CA5GN52<%YQJ-(=^.WM!4:>@]I3.R0B[P"]LA8F2D?B XMUQ:+E@4SGT>I;%TFT7C70R*31#K,/*]=%!V9"N"8FG=S XM6)"2M]W[)Y#C0%R%0YV*@S*X<9,+^;/7%.Z]&*,\J!Q\3X\ XM@YUH,J5MQVZ5/@&ZKOH399BTVO:\46MZT.\:SJR;M>VEL-Q^829380%#2K4L25>HROSR730ICCF XM&)\9#T&8QX:HL!&82?Y$K<,@@V2=H?8!E)3BZ%(825D5J7ZO%%\*F9[/BIC, XM]"E1J,TNK%W%V]&3];7F>!U/PQ*3!6NVTRCUI$',YXBAF57*W]`F9M)A"=(2 XM[`CQFC4#$`,K^B4("G0,!F@`WL+.C\`0;(R/E+Y8 XM4AP-A+9DLK2D^&!Z]PQ2T;[-G"AD_R8\RKN<@F<$&_,"K"DL$3'SV9CZ'?`I XM0?P+@Q%YDJ.NXOWS6(^#*4WBCN/ZU%SF*JLSI(NH)``G"BYLU8Z>,WAE'A*0 XM1+7IX'+^[?R?__'JO[GX_ZW&1LG_YX.E_=]7P_]KHI"]/1*[[/,!@$LUWE*- XMMU3C_6GA>5[LT^RLW2W<^':J[@4:3.=%&IR!TC,JNY-L@CR&-BD?_Q3@]FXZ XM*:D>Z9]?1CU-O%\AQD]'4Y($3>NCX]R56RHT5B2QZM9:I9-]%'3(!R-8+R`Z X?@=%S?*I=\_PO=\#EW_)O^;?\^__Y]W]X:#-N`"(!`-9: X` Xend X X-- X Georges A. Tomazi / Internet: tomazi@kralizec.zeta.org.au / And X Sydney * Australia / tomazi@tctel.frmug.fr.net / God created X +61 2 264 6892 / tomazi@smop-oz.frmug.fr.net / Unix... X END_OF_FILE if test 24524 -ne `wc -c <'tripwire-1.1/contrib/encore.malloc'`; then echo shar: \"'tripwire-1.1/contrib/encore.malloc'\" unpacked with wrong size! fi # end of 'tripwire-1.1/contrib/encore.malloc' fi if test -f 'tripwire-1.1/src/config.pre.y' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'tripwire-1.1/src/config.pre.y'\" else echo shar: Extracting \"'tripwire-1.1/src/config.pre.y'\" \(10425 characters\) sed "s/^X//" >'tripwire-1.1/src/config.pre.y' <<'END_OF_FILE' X%token COMMENT X%token EOL X%token STRING X%token INCLUDE X%token DEFINE X%token UNDEF X%token ELSE X%token ENDIF X%token CONTENTS X%token DBASEVERSION X%token LPAREN X%token RPAREN X%token ANDAND X%token OROR X%token ECHOTHIS X%token BSLASH X%token ESCCHAR X X%{ X/* $Id: config.pre.y,v 1.15 1993/12/12 01:38:58 genek Exp $ */ X X/* X * config.y X * X * tw.config preprocessor parser for yacc. X * X * This implementation does an unfortunately large number of X * malloc()'s and free()'s to store the lexeme values. Although X * memory leaks are few, too much time is spent doing memory X * allocation. X * X * At this point, I would argue that this is not too significant, X * since we only run this routine once. X * X * Gene Kim X * Purdue University X * October 5, 1992 X */ X X#include "../include/config.h" X#include X#ifdef STRINGH X#include X#else X#include X#endif X#include X#include X#include X#include X#include X#include "../include/list.h" X#include "../include/tripwire.h" X X#define INCLUDE_STACK_SZ 16 /* max num of nested includes */ X Xint yaccdebuglevel = 0; X Xstatic int linenumber = 1; X Xstatic FILE *fp_stack[INCLUDE_STACK_SZ]; Xstatic int linenumber_stack[INCLUDE_STACK_SZ]; Xstatic char *filename_stack[INCLUDE_STACK_SZ]; Xstatic int stackpointer = 0; Xstatic int found_db_version = 0; Xstatic struct list **pp_entry_list_global = NULL; X Xstatic char currparsefile[MAXPATHLEN+1024]; X X/* prototypes */ Xstatic char *string_dequote(); Xstatic void include_push(); Xstatic FILE *include_pop(); X Xstruct comp { X char *string; X int directive; X}; X X%} X X%union { X struct comp *comp; X char *string; X int val; X} X X%left COMMENT ESCCHAR STRING X%token IFDEF IFNDEF IFHOST IFNHOST X/* X%type word words directive colines coline else X*/ X%type word X%type words directive colines coline else X%type if_expr host_expr X%left ANDAND OROR X X%start lines X%% X Xlines : lines line X | X ; X X/* we do all of the line-emitting in this production (line) */ X Xline : directive EOL X { X /* X linenumber++; X */ X X if ($1) { X fprintf(yyout, "%s\n", $1); X free($1); X } X } X | words EOL X { X /* X linenumber++; X */ X X if ($1) { X fprintf(yyout, "%s\n", $1); X free($1); X } X } X ; X X Xcolines : colines coline X { X /* If coline is null, just pass on colines. */ X if ($2 == NULL) { X $$ = $1; X } else { X /* concatenate the two terminals together */ X if ($1 == NULL) { X $$ = (char *) malloc((unsigned) strlen($2) + 1); X $$[0] = '\0'; X } X else { X $$ = (char *) malloc((unsigned) X (strlen($1) + strlen($2)) + 2); X (void) strcpy($$, $1); X (void) strcat($$, "\n"); X X /* free up the left component */ X free($1); X } X (void) strcat($$, $2); X X /* free up the right component */ X if ($2) X free($2); X } X SPDEBUG(11) printf("--(coline)--> (%s)\n", $$); X } X | X { X $$ = NULL; X } X ; X Xcoline : directive EOL { $$ = $1; /* linenumber++; */} X | words EOL { $$ = $1; /* linenumber++; */} X ; X Xelse : ELSE colines X { X $$ = $2; X } X | X { X $$ = NULL; X } X ; X Xif_expr : LPAREN if_expr RPAREN X { X $$ = $2; X } X | if_expr ANDAND if_expr X { X $$ = $1 && $3; X } X | if_expr OROR if_expr X { X $$ = $1 || $3; X } X | word X { X check_varname($1->string); X $$ = tw_mac_ifdef($1->string); X } X Xhost_expr: LPAREN host_expr RPAREN X { X $$ = $2; X } X | host_expr ANDAND host_expr X { X $$ = $1 && $3; X } X | host_expr OROR host_expr X { X $$ = $1 || $3; X } X | word X { X $$ = tw_mac_ifhost($1->string); X } X Xdirective: X DEFINE word X { X check_varname($2->string); X tw_mac_define($2->string, ""); X $$ = NULL; X } X | DEFINE word word X { X check_varname($2->string); X tw_mac_define($2->string, $3->string); $$ = NULL; X } X X | UNDEF word { X check_varname($2->string); X tw_mac_undef($2->string); $$ = NULL; } X | IFDEF if_expr X { X $1 = $2; X } X EOL colines else ENDIF X { X if ($1) { $$ = $5; } X else { $$ = $6; } X X /* X linenumber++; X */ X } X | IFNDEF if_expr X { X $1 = !$2; X } X EOL colines else ENDIF X { X if ($1) { $$ = $5; } X else { $$ = $6; } X X /* X linenumber++; X */ X } X | IFHOST host_expr X { X $1 = $2; X } X EOL colines else ENDIF X { X if ($1) { $$ = $5; } X else { $$ = $6; } X X /* X linenumber++; X */ X } X | IFNHOST host_expr X { X $1 = !$2; X } X EOL colines else ENDIF X { X if ($1) { $$ = $5; } X else { $$ = $6; } X X /* X linenumber++; X */ X } X | INCLUDE word X { X /* push a new @@include file onto the include stack */ X include_push($2->string, &yyin); X $$ = NULL; X X } X | CONTENTS word X { X char *pc = "@@contents "; X X /* record contents in list */ X list_set($2->string, "", 0, pp_entry_list_global); X X /* reconstruct and emit the entire string */ X $$ = (char *) malloc((unsigned) (strlen($2->string) + strlen(pc)) + 1); X (void) strcpy($$, pc); X (void) strcat($$, $2->string); X X /* free up the right side */ X free($2->string); X free($2); X } X | ECHOTHIS words X { X fprintf(stderr, "tw.config: echo: %s\n", $2); X $$ = NULL; X } X | DBASEVERSION word X { X int version; X X if (sscanf($2->string, "%d", &version) != 1) { X yyerror(""); X } X X /* check if the database format is too old */ X if (version != db_version_num) { X fprintf(stderr, X"error: database format %d is no longer supported!\n\tSee tw.config(5) manual page for details)\n\t'%s' (expecting version %d)!\n", X version, currparsefile, db_version_num); X exit(1); X } X X /* free up the right side */ X free($2->string); X free($2); X X /* we must see one of these productions in the file */ X found_db_version = 1; X X $$ = NULL; X } X ; X Xwords : words word X { X /* concatenate the two terminals together */ X if ($1 == NULL) { X $$ = (char *) malloc((unsigned) strlen($2->string) + 1); X $$[0] = '\0'; X } X else { X $$ = (char *) malloc((unsigned) X (strlen($1) + strlen($2->string)) + 2); X (void) strcpy($$, $1); X /* XXX: This doesn't work! X if ($2 && (!$2->directive)) X */ X if ($2) X (void) strcat($$, " "); X X /* free up the left component */ X free($1); X } X (void) strcat($$, $2->string); X X /* free up the right component */ X if ($2) { X free($2->string); X free($2); X } X X SPDEBUG(11) printf("--(words)--> (%s)\n", $$); X } X | X { X $$ = NULL; X } X ; X Xword : STRING X { X $$ = (struct comp *) malloc(sizeof(struct comp)); X $$->string = strcpy((char *) malloc((unsigned) strlen($1) + 1), $1); X $$->directive = 0; X } X ; X X X%% X X#include "lex.yy.c" X X/*ARGSUSED*/ Xyyerror(s) X char *s; X{ X fprintf(stderr, X "error: syntax error at line %d in config file\n\t'%s' !\n", X ++linenumber, currparsefile); X} X X/* X * void X * tw_macro_parse(char *filename, FILE *fpin, FILE *fpout, X * struct list **pp_entry_list) X * X * wrapper around yyparse(), initiailzing input and output data. X */ X Xvoid Xtw_macro_parse(filename, fpin, fpout, pp_entry_list) X char *filename; X FILE *fpin, *fpout; X struct list **pp_entry_list; X{ X stackpointer = 0; X X /* set up input and output pointers */ X yyin = fpin; X yyout = fpout; X X /* set up initial filename */ X strcpy( currparsefile, filename ); X X pp_entry_list_global = pp_entry_list; X X (void) yyparse(); X} X X/* counters odd behaviour of flex -- Simon Leinen */ X#ifdef yywrap X# undef yywrap X#endif X Xyywrap() X{ X /* check to see if we've reached the bottom of the @@include stack */ X if (include_pop()) { X linenumber++; X return 0; X } X X /* close up parser */ X return 1; X} X X/* X * static char * X * string_dequote(char *s) X * X * remove pairs of quoted strings. X */ X Xstatic char * Xstring_dequote(s) X char *s; X{ X char temp[1024]; X X /* do we need to do anything? */ X if (s[0] != '"') { return s; } X X (void) strncpy(temp, s+1, strlen(s) - 2); X (void) strcpy(s, temp); X X return s; X X} X X/* X * void X * include_push(char *filename, FILE **p_fp_old) X * X * return a stdio (FILE *) pointer to the opened (filename), saving X * the old (FILE *) pointer and line number on the stack. X * X * returns (NULL) when we pop back to the original file. X */ X Xstatic void Xinclude_push(filename, p_fp_old) X char *filename; X FILE **p_fp_old; X{ X static FILE *fp; X char *pc; X extern int errno; X X /* check for stack overflow */ X if (stackpointer == INCLUDE_STACK_SZ) { X fprintf(stderr, X "error: too many nested includes at line %d in file\n\t'%s' !\n", X linenumber, currparsefile); X exit(1); X } X X /* dequote the include filename */ X string_dequote(filename); X X /* save the old file pointer, filename, and linenumber on the stack */ X fp_stack[stackpointer] = *p_fp_old; X X (void) strcpy((pc = (char *) malloc((unsigned) strlen(currparsefile) + 1)), X currparsefile); X filename_stack[stackpointer] = pc; X X linenumber_stack[stackpointer++] = linenumber; X X /* try opening the file */ X if ((fp = fopen(filename, "r")) == NULL) { X if (errno == ENOENT) { X fprintf(stderr, X"error: @@include '%s': file not found at line %d in config file\n\t'%s' !\n", X filename, linenumber, currparsefile); X exit(1); X } X else { X char msg[100]; X sprintf(msg, "%s: fopen()", filename); X perror(msg); X exit(1); X } X } X X /* replace old pointer with new */ X *p_fp_old = fp; X X /* reset line number and filename */ X linenumber = 0; X strcpy( currparsefile, filename ); X} X X/* X * FILE * X * include_pop() X * X * pop the last file structure off the @@include stack. X * X * returns NULL when we've exhausted the stack. X */ X Xstatic FILE * Xinclude_pop() X{ X /* check for stack underflow */ X if (stackpointer-- == 0) X return NULL; X X /* pop off the line numbers and the stdio file pointer */ X yyin = fp_stack[stackpointer]; X linenumber = linenumber_stack[stackpointer]; X strcpy( currparsefile, filename_stack[stackpointer] ); X free(filename_stack[stackpointer]); X X return yyin; X} X Xint Xcheck_varname(pc) X char *pc; X{ X for (; *pc; pc++) { X if (!(isalnum(*pc) || (*pc == '_'))) { X fprintf(stderr, X"warning: illegal character '%c' in @@define at line %d in file\n\t'%s' !\n", X *pc, linenumber, currparsefile); X } X } X return 0; X} X END_OF_FILE if test 10425 -ne `wc -c <'tripwire-1.1/src/config.pre.y'`; then echo shar: \"'tripwire-1.1/src/config.pre.y'\" unpacked with wrong size! fi # end of 'tripwire-1.1/src/config.pre.y' fi echo shar: End of archive 12 \(of 25\). cp /dev/null ark12isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 25 archives. echo "Now read tripwire-1.1/README.kits" rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0