[comp.os.minix] Bug report and fix - ast

nfs@notecnirp.Princeton.EDU (Norbert Schlenker) (02/28/90)

While trying to install the ps(1) included in Andy's recent 1.5.3
postings, I discovered a problem with ast(1).

Ast uses <stdio> and fopens the executable with a mode of "a".  It
then proceeds to append a symbol table consisting of a number of
nlist structures to the executable.  Finally, it fseeks to the
beginning of the executable and rewrites its header.

ANSI specifies that files opened with a mode of "a..." must have all
writes directed to the end of the file.  Consequently, ast's method
of rewriting its header will break on any ANSI system.

I use my own stdio package, which takes advantage of the fact that
v1.5+ supports the O_APPEND flag on an open().  (I believe that Earl
Chew's package uses this flag as well.)  On my system therefore, the
header "rewrite" is appended to the executable, which is a bad thing.
Furthermore, the symbol table is not detectable by any standard
utility (ps and file(1) come to mind immediately).

The enclosed version of ast.c fixes this problem and has a few other
minor code cleanups.  This is the complete program (the cdiff was
larger), compressed (13 bits) and uue'd.  After unpacking, the crc is:

02510   5336 ast.c

Norbert

-----------------------------------------------------------------------
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 ast.c.Z
M'YV-+U2 "#.'#H@6 \F0 3$G3QLQ;]B H!-&#)LR+A(D"%*'#IHW<G2 ())Fz
MS!H0=L*X 6&E3)F5*EXH4# BC9LQ;.J0*0."1\,Y+^CD@5-FC@LT/FC:Q*F3y
M)X\P+MYT/)JTYLV<.WN.$4J4JM*K37N:&>.&#ANO5IEFY5''39J"9- NQ>H4x
M;IHW7A4$!#%E*4^//*%*-6@FS440-D$T2>(D"1809-X4!>'FC<$Q;\J&2:PRw
M#T.'$"52M%B&A0(0 N_PK#/G+QJ>#1]&G%CQ,!PY;\C4&5-FX9TT'B>^/C@'v
MQ!LX=.ZN?&-FX!PV<4^KD Y"2IDP"V.'IDT:\<HV9=J S,,"A)SP;^SPQ-P&u
MCN$R<D"<>0D_#)W>(-A4+,-FCFG4#(%D$&#Y[=??0&XLA-U"P$WTAG"!1=41t
M"(5=Y()TU%WQVDJ%N1$&&VQX!MAY(+ W61CF72<100@N!%UYJH'01AB>?3C's
M@_/101V*VLTVVF&)$2C8A!66UB((,8ZA$H4@Y2C<6R#<]L89<H31QH6H22>3r
M7@(%41 (6YBAWQES= %FD69NT2,;:&((H)AAD*F#= FT@$<"D5%F693GM2:'q
M>OF]H:1$:\Y!9PM8)'!;4? !RH:@'WXFVX%EX,$;<DS&Y]$;K2'Y4:<>@E><p
M&&6<81.="?P6W E)G&!<?"<PX2I"FW8:!HGLN7=1?/.Y4=]]T66)6IVI;JBGo
MI-L5B5AQB[965GEK2F@0E 3-40=XP:I [!W&5D;A>\ORR>BS TD;;K77]H:En
MMBT4^Y)QOGY[6*@\0=GL2W24UV ;K!E$*H0@5%K&&!W5QE.1ZQ*K1K_P'CRFm
MC#2"\.^]9:V[Y0@[=<A3$%\\4045&HDP)!TBT)2Q33Q-D4430CS!Q!=&),%$l
M$0F($.U@(B2P%V::V53<FMP=%I/)96@, A.,%?'%S$X<0042"<A PTP8%XTRk
M"%<\(<73,T\Q10(QZ"P0&R@7QS-%B7D+]- *%"3';@8)/ 8(KV$'WPX:[57Wj
M3O'99,:#S)4[F+P\L6V307A\ ><9>.<MT.+%T?$@008-?3@(6"@^Y@XSC8'&i
MK:C-H?A[Y:GPQN@7-;X7O<4%7F1QK.$G1HU?#AWSS*$K3D;IIYM!ANJ/@[O3h
M'&/(D09R(+7>7*T'OU><Y651)L<7A38N-F77DAI?X(4FM--"0WL.NAAUF&$&g
M?%L@[8323#N-1!=X[YP9VFX41W:\W(,VF[)LMS5'&F?P%8.BEZ,OI"0G94!!f
M"N+W.)#<X58+.9E;DI,9U&QI1C9!P:W.,(;R;- .*5# Y38X!LZ)+SXJ4,$'e
M.;>'TPQ$#F>PPPI6P#D0(*8Y*% A#.T @A#T  0H."%J4@ ")U2!"4P @0E,d
M@!H=QA $/?CA"5IP B*V, %.Y.$*?A@#SB4@#3A,X0>A*$4\5%$!&DG<XJ (c
M@BZBD3^= B,0Q;A#,H+@!%@XHT8RMT8N>A&./+EB LQPF\.9 05P@8\<RB,"b
MPUSD#)%:G$A:4((Q<,$-(BA=%A>(Q@14"C@H:$$,.)F /J#Q@S.L(0A,:4,Ya
MYG",/@2B$%5 1",BT8IH[!VX?IA%+Z*2ABYDY0WG",L?!O%S**SE$9F RP2(z
M3EF\7.$I=YC*8+K0E5GLH3%GJ<Q;@N"*A#1>60Z92#DL$@0BJ,(<XE0&D5 .y
M3"W8 QY8@(4^I E-8%H3FBXI E)^D@ZA'*4JA>E*71XFBK)$YA"+N$PB&I0Gx
M/^28QZB@2E>BH'<+^>'?B.*&BZ+.2"+K)Q$1BH+;%6&AMF3F-]$83D,BD@Y\w
M.Z<(E.2&$QCD..\JP1SX69Z'^A,/H!0E)VTH3#.TI@QK\*CORL,QE34!"D^8v
M @KV!I\4E&<*12C"$KZ 52H,=9B(_*@=CPDZ6C+4F\_<)5]6UK*7F;2B. RKu
M[]BXT9?(E73HE(-(QVI2E#9TI8,LY#A?&E-&TM2FQN$H"'3*4X9\]*=!%:@Ut
M;>B&Z77OAS!0962^0%4Y*%"5E/NL"\?RJ-8HE0Q?/<]F.RM:&_X3!3#@I"D5s
M$-H0MM"&;H,;9<CVI35QSH7< A<*S)"C.:" ?.:#3WG4Q[XB-.UIT-(=$6-)r
MUF2>E9EH="4=JE2_O\FA#5^X7P*1>[YSFF!-T_UAUK:&A*Y-(80:6:=ZPHNRq
MTY;GO/IC@VQGLEV5S,&[X!7O<<M77FCE-X2S)._=VK9=W;J!MY7SK0)NRQ!5p
M>0Z(DGN4:CRK @7+(06XM*&(2T00GIP@#"?0@4:N5Y$;Y>0^R)K-T)R9WQ;Xo
MP W4PTFUV.B$+P1!"%/PHAC.$X8UJ'+$2NK4">J0XA7OI2T2Q,_:9$+C2=D8n
MQ\33SQR*\\,>5\$)1#""D(EL9!<BN<1WI$.3'3>12AEDRFA<TY5SK&4N%_$+m
M5"@"%BB*QB%?I\PCMF&234R&-5^/#/;A47XM&.<:WYC..^[R%X@0!"H$8<Q_l
M/K*(!WU',1AZ+V+8<HPE,F,Y/SK+D;XSD(/<9S)KVH89"T,=V$ '%;,Y,SQQk
M71KD\"4ZW.%!XGT>E<]#ASK(H:/KY5H1O/95@N+P+76  U$X[&$0-]K*I]:Qj
MJ/GPPR%\0<]\OB8./;R%&)@IEJYR%1_X(#$"H\\&YY;B'9O9TL&64Z:.+%4Di
MP05@^_ 3L@ 5ZD!=:&H<'[ .$)5/&>A@P \A?,#)C<\*0""#KQ:07A O+P@Fh
M?@,#8QO']$KMPHW=T=A:;R]YN X:RO,W* ]DU(R>K7S+0%]?#7=WHPYA7U7@g
M.\[E=BN[?4N$\\M"<0,Q!(AT-):U71PF>AO<(+[>HP8%\QF[4HT/6_>HYTROf
M+<# 3 AEE;K97? O=/WK=HR5'A- ;)+#%8AFN(/Q[I/T24$K#7HH W->^C:@e
M/UCH5FTCRU&KS3;26[!T("=,%6E8E2!6[L#A"6,QV=/'_A&H 9<L45U86>KEd
M=P[5G*W_ "A A3/\X ETFTW.@&"%JD#U;F#<A%TX^@#B!_45C=X<T #&?$D,c
M.'/XK0U1S\;,CA8D0-Q][XN_ X;PW@P&X4$;;=!\Y4-_XS^D03/% 'PV%I#[b
M=##NZ[>[>E(2WYC$YX'TM0\"=H,_^'$F?^RKN7D;MOW8*$#]?A7P?> ?L_6@a
MXSE%UTHX=&$^($4PX"I+5")HT!-2E -5E"+%AG\7AA GD(!?Y4H&*$5!H(!,z
M=&$\($5&$('WMQ+'=!!WU($;UT8F9W0G>(!WA&)*]($-&()W9 8D.'+'EE Hy
M>&*N,G$QT((V5&^)1UB,AT[Y!DD2H2S]1@?_IDJO)7 *,%L79R6IMUTQ "W;x
M57$*<!ZF4A#PP8!EY399&#I;.(#><1E241;"ERFRM(8&@5G-AQEM$7T@@ -Sw
M"(<SU$S81(9I=TD1Z&=%YD7C)P<R,$-L5(@Q0'^K!%R\=QA!!(<]<8?-5(B'v
M.'%2Q 4)Z$5T6!:,:$JSM5K7P3<*-'NM%#T]-Q,$"$0WQT8XU5$/51Y/\ 52u
M0 1/X 1,D 4@-HFQ!5A$J'B%A4XZ)1)T"!UZ<E,<U5@^=7F1U6PN2&1D<'/Wt
MU5EWEW=[]W-Q@P<#LXNQ]#_6J'A]EXW;>'CB5(3WQDC#>"QR4S#=423*:'EOs
MA'D!Y8RKB )"$ 1$T 1!< 13-8I518XN=8[". <B(0;803?^* ?O6"0 -X\#r
M5X^=Y0)AX'EM4!RQ! ,J!4Z(!XQ'* +I"#0_4B_%X3,4 2*]L9#OT9!26'\Eq
M4EH)Y#O[IUJGPUJV=4VH^#NJB)!V(P<229%VA@*/$GM$U'G=(Q#>J'?@Z& 0p
MEH%Q-5<_](I*A5>S> 52<(NYN(O2UXL:68X<:4[H2) E(A7&6!D&<1Z0!V.=o
MA9(7H9*:UXCU>)8OB7,F0(T,@7=(R7>Z)3?<^$-'>8T-!G1Z"9#VMGA>.9#$n
7*)8+098I I<ZR3=J609L28\MR2EQN5^Zm
 l
end