[comp.os.minix] [source] Another #! implementation

kjb@cs.vu.nl (Kees J. Bot) (05/13/91)

Here is my implementation of #! interpretation by MM.  I was at first
not going to post it when I saw Klamer Schutte's version go by, but I
spotted 2 minor and 1 major bug in his patch after half an hour.  So I
decided that posting my patch to mm/exec.c was the easiest fix.

The good points of my version are:
- The #! line may be 255 (PATH_MAX) bytes long instead of 32 (SunOs),
  or 29 (Klamer).
- It knows about tabs on the #! line.
- A lot of comments.
- It doesn't double the number of goto's in MM :-)
- Full error checking.
- It does setuid right.

Bad points:
- It does setuid right.
- It patches the stack for each argument it inserts, Klamer inserts them
  all at once which saves a few microsecs.
- A new and different set of bugs (features).

The bugs in Klamer's patch:
- Buf must be cbuf in "buf[HDR_SIZE - 1] = '\n'".
- The ALIGN(len) may introduce extra bytes in the middle the stack image.
  (ps(1) may not like that).  Better do an ALIGN(stk_bytes) when you're
  done.
- Argv[0] should be replaced by the first argument of execve(2).  (Fixing
  this without making your code ugly won't be easy.)
--
	                        Kees J. Bot  (kjb@cs.vu.nl)
	              Systems Programmer, Vrije Universiteit Amsterdam
P.S.
I really dislike the name "Advanced Minix".  To me, the only advanced
Minix is version 1.6.15 that Andy is working on.  Better call it
"Enhanced Minix", because that is what it really is: Minix with a lot
of features (bugs) added to make look more like all the other overweight
UNIX(tm)'s.

table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 exec.c.cdif.Z
M'YV-*@*">-'&#9X7,5S4(-CF11D\9<:X&)-@2ATW()J$D0,"! T0,F;H@(%Cz
M9 T0,7+D@*&@A4L0#R-.K'@Q8Y@\*&6 A*&#1@T=,FR@5!E#0<"C2).J,"HPy
M1@T6,F" 0-KRI5.H,4"X=*F@XX@T;L:PJ4.F# @1;=JX0".B*XBO8<>6!<%Cx
M3IXY+^;0"4-GK0^W<,62-<NC#=@T!\>$8</&C1R_"E:\!2MX;ETZ<L">@>R5w
MLERS:.'(>2.1+6#/@\_"V1A&K>F.3)7*C@UB!@P6,W!,/5JU1>T8+&C,T+H5v
M<%DS8,U2>4)%2,?GT*.#L)'@A0H0;$CS3?,&XQLS(.B\V<L&Q)PT>LR"!8&Fu
M3)BR'%6\,%X&N1NS4[(T<2Z]/X@;U5V7G6)T<.<=>':U(<8;Y9V7'@CKM?=>t
M&?'-!YMD(QR7' A%3#&$%$E 044"*+000T@RQ)!"@"!(408==<AQ'QD@B(&3s
M'.Z1\86$\(%@QAL<A?%6".:-D1D<?4TU'X8:W@>"B%),D806123@8!G?H3 &r
M&AM-E4)D(+AEQ!-27!&$%$2 8,<;:="8W7M?S%'&&2BDL(.89)J))H1NT '"q
M?7=\T489;=1Y9T=CEGEFFFNV"<)J=&SY!9)R& IFHGJFN667*D JJ5YAC+&&p
MI8CFN2B??N(()X\4DAIF9^"A, 02(8+00P\9V8 ##+Q^*=NOM-5@ PLVW+!;o
M0&XEL"E';K16QA=BU&'&%E $00427S01!!9=[&!=>.W]Z2P(WX%K%G)LF"4>n
M3!"-H62RRX*@AQA;4"G%$T)48<074E+9+8MUR$GCNNF-5N,<<[P+71\@U'$Gm
MD1W%JP*@<<)QZ'-VI"$'M'G044;"<\@Q!@L@D*$7R1[C00?''L]!,AE\A<'Rl
MQR2+@?#,+IM'QQHXDVS''!:[U1$<:-R%<WCCX;Q# BR*1YYYJXUQ+I"/CG:&k
M'*V1C!H9FH%P1AAP*/Q<=FZ<85X>;2@MM)H:?R%6&J*"/,;#S^DE1QUC^ FJj
MWM!*>_':WQ+QAGEO#*KF8FVF00=.6T:TQAPNB-V1'&V$C6OE=VXU'7 WZ+15i
M"_!RR:RS?4];[;79;MOMMW2$VZSAY;9^;AKI(LUN1&(K*[J\]-J+K[[\3EG$h
MO]\&7,; @Q<\N,T)R[<VPPXK #$($K]>!LD3EQ$HT!=WE/'&-K9LGL@OGQS>g
M0RN'3W/),?=\\!SNZ\6S^CG_'#1T1!M-/]+I=_SQTDT;SV*@%JJI<40T;[A:f
MUOA4F:Y]+6S.@P[9S)8@M4'G>VYC ]P>5R2Z=<1N>-/;7O@6K6G)H%MN =QUe
M!$<XP]D!<5Q;'/7:$[?(1? YE+,<"# 7FU]1Y2C_H0$+8L"K8RT%.B;S$ZY0d
M@$'ZI:!A+K!>Z;H' HY<CE!N>P,<\H"".Z#A#20C LE0,,$GAFQD&6G"%Z!Pc
MKR%\P0E2".,8RU@R\Y&Q.V=X8DS&\(5TN<%.:TM#K#@2 EP]80E/Q!&,9(0"b
M.=B)1>@RB_7^-!X^-4Q.'('97LPSIT'UZ5V^Z8C'&/,%,\Q!5D@@0A+B" (Oa
M@A$$MX'E(UE'*#@ :2.TP\D<[J"X+=G.>'(X0<*XAJ.\ 0DGS@NECVB$J\5Dz
MYP['0T$=HDBZ$I+,!/"S)@BP\ 4A)($*L[Q.&A(6R=N-H0Y[$4.Z?@#*YXR2y
M#:4\Y:Q4R<I8 D>62_O6+GN)AAJ%:@VV:T(3A$FN.V"$F!$1CQR0.1]E"A($x
M*# #C7@@RRJ^*$9NB"@9PNDCVIGE#F%(F!LJN4=TAD&=9DEFF)3Y+1>]QUP=w
MK1VK@N0&&J$/:WF#J9S.X$F]H>=C-FQHW=RU1/D=33)#8$(2AK"$X%%)*RAYv
MH@]\ (*D+K6I4Z"5$:B0N>>TP586756.6B71:YJ!#M=,6?]:=DU-RHQ^UV2>u
M^UH" J;9-0$F<)K[L(FV^(T!D Z-U5<I"H,G[H&NRLJ.G#3Z2!;-H7 O0D/7t
M[C":LK52<?V<:3L3H$B,HJ (3GA"$;!0A"$ ]CE]2"%TOF6$%_E2=CK[IX]&s
M\U78 K-&]0&26<IBMS?DH6NP91"-QJ!;"+4A#&<H0U#7=D:P,K%M3HRMJ":%r
M&2HFT;E-]-\<GJ@@OZW-BCO$(G&WV,4ORA&B=#PCR02ZQC:^D95B1"\>GYC$q
M.<Y79_/3+B"G]]!&@J"0(#BD8:575[&\8;$2;>RW%..&$_C)#*[M)ZA$!5'Ep
M;L:?-/H>C ;X'C(X\EU$XNQ%&5F$( QA"!T"Y,)4^YQO!8$QVO'8G[07WC8<o
M$P1AJ*E%TQ52LPBWQL>,' B,@)@=@@W'.GXG"-9 H?NP8;F:NT$.AAB#K'QNn
M;===8G9;]L1I2K&$5 3OH-(V7BZZ\KQW+)L9R9?&]C[!C7!$,QWK*U\UF[./m
M9?@C%?M+2$,BTJ*+S*@C\WF=<DYRI'Y:SVW=RDF>YME/-U3AD".LT[U0V RTl
MA>EMQ9!;')7L8YCQ+7##]6/B>CH-QTWN<J'37"U#5[_2Y1FEK*L7[+Z:RSL$k
M\W?!.N8LDO?,((AOFO,X/C2REXUO?J^<[TOG89MQ9SC;[W/X_%\_)W+$&2WQj
MB5-,:.KEV,$^HO2$ 8H""T=.#"_5<!TX3 8//]%Y1"+PY, *@VZ#5RH1U5BMi
M^>*QRM$A!22C6E90 !:/R4$T+SI>D8[T;Q _9Y*X\G(U_<:B29:KG.O:XW*Gh
M1X;!'3;$[XPG*NE),F#'LK [Z @M*W?+S+!!E[R,5#_7!4R"(M28"W5X B0*g
M5F>^ 9ID0('UKIE-:6U!#ET@&3>]"<Z4#T2<Y/2H.4V*4G;"NZXA-^7(5TDRf
M>W:=H_N4N3\IO"Z!$O3G!]580F]\]03TE^>$O7:@&0O ;Y43I"(E:;NH7KNKe
M$YA%+AU8N,JIV1S;5&4X]1-L=]I3\_P4<CJ? U$A:M3](56I3'5J$:"J(A!,d
MM:J8QZI6N4K@OW\55ZK2T4PU:E:T@B"OZ-NK6_<J5[B&*<1WQ:M>;<_7M-E>c
M\M*6-P@8YD6IH^#TN.K0AT)$A=>;  0K6 %'>("KHH38!,\7^KAPY2DTQ,G2b
MHRIKKJ5%=&C;7N*#*ET*G@A@)R2!"6ND@A2"SU_!TJ6B'R^P8LM =Z;I$[*Ma
M,UF5938QEUEC52%_UUF,5'G:Y7D@<"9'D#I8  +L!%I/T 1%T 0@H ,<$EJCz
M55HJAEHLIG+7\6(#PA>21&-C=F.&MV/N(2?DP@8TLH(+)61$A@=&%C8MJ&1,y
M)B-E\&3OXD-*01LG<@-#E!M&-()/!P)4$ 9,YFV>5BYR B-MDA<O<@:.(@:*x
M WDWU!']U4B5TP(^4#FEQ ;(E3#/)W\F5@1$\$2W@G]+. =U  <(AS 0 AZ8w
M$2I=TW;]571FX )Z(2AO,!?/EP3\4@14\ 55D 1$T$W?-&"XET-B2(;U809Uv
MX"BXXH> N#*72 9TPS19=TI3@(B+&%_ 1G!]DDAA.(9P\ 6J,A9M,D8%IXIPu
M,(FM6(F=*&T)D%HAUH>ELXF"2(@@8(BCF(A'P(B."$X@D'],(XFL^ 65B(7,t
M9!Z_&(C2>#&@^(/PI'7%>(RF:%X0-8M5M(ID^(K2*(NI.(ZU^(S1V"8AN(O/s
MTQLHD1M#1 ,Y0!Q< 1NK=1U-^(2*$84(<E%5.(726"-;N&K3%BM@N(YD: 9Fr
M> 9HR(12L(9M:"NX4EC+&(=S6(<)\U!Y. 9[.!^]&"M^N 4PT 7 :&/"2(R(q
MJ(C(R'206%><18ZW: :6B(G46$(FB9*!V(F?F "AB +%6(HE!XZHV'#.6([Np
M 8MD@(Y(29/0:).Y^(F\6%>^J),GF9*#:!:%>(C&^)*/N(Q_-Y,,69-F4)"9o
M6#H["8S7F"Q J8TBUXV,6)2O=)2T:(NNN)3G&([IF)1F*8WOF%HK)H1)080Xn
M($0I(154$1W7L1%F@85VD&>6!%LSY0)K(S;"QV<YPGHU0GX@D$I2H'GLARN@m
M*9J YED6^(&FM6>Q E%8V06O!TMX8 1&  .T>9M,,)H9$03':%JG26(>2%JKl
MN38J<%;.]9JQ.8I00($@H)QG8BV;QX$HYUAEL!I8(V-)$)MI0C6(AIF:DQ)/k
M$17&<F6,B6.>!IF2N1Z4>8"6R9@6<GL)"5''AWJ;*7[:5)K]4@3K=W\R('>Hj
M&9P@2#>9J9!:LCLJ\$0EE ([:9$@< (C< +.)Y\2@Z#2HJ Q )MO> (A< )?i
M$F(*F&T> B(BPE%)T"<4@G >0R.2QW .-Z 0]54 AI_"XY_ *5K"&7S0T5^Nh
M:70G&9LP,)NU>9NTF9O5MIN]2:/9!J##"1W%J40[.BT]^GS*R9S..9%4$)WXg
M1)W6B8+#J)WDPBR5%&F$^4,",0.=@QLW8"Q4H3FY,64U4$3D^2IR:AVW4J=Vf
M>J=XFJ=ZNJ=\VJ=\NA22,15W!1:8M#(;<09WQ9A@,A5^VJB.^JB0>J?.(QELe
ME 16 )VHPB>%^@6'B@+C1C(,R%;F>08D@R-P8(92\R62$2_CM@40*('_PB*Vd
M5' 48COC9ES(]5&8M1X"]2Z2L64?,Q6A^C_^=QU70B[@<1@%,D"W.JDSQ"F'c
M"D L<JAUT'CK@G!PD&=D\ *FBJIF$5(S=@>C:@<+ZJP%9U&G6D!W(AF')1G?b
M @5\\5KA<JN/!2Y\,:J7Q1BX15R&<ZCDFI4=(01F\8_U40=L *K@9V1YL*C7a
MP6DQE2XT4H!>LQ'HEEPDLQBM\P9U< ;]I#B41#G.A!/9\08<I$%/&(!SH ,,z
MFP#-(@<0.:X+Z@(R"[,M"Y$F IM.4 5,P 0PX09V  <Q.[,YN[,,ZR,,\DP*y
M9R.5EAEEDS B,*LF2@8B8#M*"UO^N@5I )L[&"YY]K-8BY(=007M4;10:W )x
MXYAAQ1@X\1VF]"+DE&F+MQ=RX"=2"'Z6&:C..CES,DX&EZEL.X47&TMA<$_"w
M=32XH@+#.@?K&B:!NH108*K:VC6'BF/M=K9^PF.UUAUF83>2JV-"HCPUXC_+v
MU;A_^R)@93=^A *'^D22$0.+NZ@X)A5+)(XH4*"<<J"Q9J'$TY@N^Z^PF;=Wu
M"%%A(!44]1'7 27Y"0)\P >QZWFX4KC1]:$H8 1!P 2C"$B2 ;N#VW/U-JU9t
MP4OZ6K:V$[=,^[+KXK V%IDT KR:F:ZI*I:2P2+I^ZU9L2ZPI:W("K,GN06Ps
MJ;J]NP47&KPUFS!4U7G.F@ =![\RV5_;^X;0"VO22[W6JY^+RS0N4;IT4,'$r
M)UFUXZG@MP6#&WVP"6 H![L,\X,PV*YUA<'0ARO(*SS=!BCZ"YOW<3PB16-Eq
M6ZOK<;6_NR1U-;PM_"3REY]U)R Q9B#Y*\-7N[]@"[RIE;V-JT\)"[[E<34_p
M%[K(VK9^LC\H0#5S@ 9,"U!*VP(L'%WLJY"(:WX-N +/:Y-3*%4/* 41J"U8o
M@*336[W7^[I1?!TN8DOG42#=L;2:D3!*6\8-"+QC-K\>+%N2L;V2@<$(R\@Xn
M1K@R>#2^,;C8R[AU@QEC0%ZWVLB"Z[(<!07HA*_JZ3HT!C0%-+J:[(6Q$@+=m
M6D #%K_?HA%/J,I28[1!$JXSS,H)D,AO$)F+3&&2H1/'.\3"$\G$C!)3(<11l
MDLS-ZQO&[,SYF<E@0B*V&Q^X.VX*>I+1%\.'.@??[*LBN,<@X 17W'T-HX/_k
MJ[4ZUK5 "YN%[,:F"[S=1UV5\JD0!:S;E<5OO+@=4;L2L\W@I[O.-:&QVVU3j
M.,/4 R3%1 <O1\YZ.W?R5P44#"9/K,E@DB'UL2%24 10P 1KF  5700;W21Fi
MD01.,(I2,"(2/(I@$M/NJ@*16M,V?=,] *@=H0)W=<_CEJA,RK X/=1$O:?.h
M6JF7>J7/&A\^#7Z<J<^)"ZI&D@9(HJJ9*E'2"DE2QUM3C214LRY:))DK2M4/g
M)G7.RJH?_*IT'*O?DL,<L2ZWBFJY>ED!B!&]ZJS\+*QJW#)%['@/4B[*F@;,f
MFK!G;:!CC232^BT6AR!=K7B#0ZL'ITCDK,+O&J\S%R[4VGB1B7.VLS7J$BZ0e
MTD^+K5.-3;5E4+20C:+'<[&>JZ^<V[3D@A&P-0)$HD'W(60N$F@) UNA+2ZPd
M8P9%"UNIK4@4<K<[[<-ZBX5Z4:L2 S38D]I@Y7[P!R4 ;5'*W;?GZ@9Z+)/%c
M:F2WW-C\"U-*_+\]>L80%0*$2B&&ZK+#O 8(FU^B>MBN]]$AO8;[*;W2'7_Sb
MM]VNC%YR4@;AUY0@P01?=W\PT-UJ$#!;7 :2E63A0ML2_1S+"U%N0)_O\=2-a
M33*G@RUTO)^$Q2*IAQT;HKD1WA$3[JEP<$5ML"7YG.$-R@4-1C)_Y(:XDM]0z
M\D1+V 8*CELX5C5AS1&VG5(^+&)S9^/R9\WFW 3!O+EA@VZB E)R8#+@,AH;y
M*V'@G7154YV1:UGNX4NO;39P;;<1_B,<@0([L .S7%?ZM 9434!20\@,#A8Tx
MDMF/YLO%U\% XX#R':$HH (ND><9VJ#*R[R(:SFX<@)<0 <<:E@9[78D:>@+w
M1]8(JBIKL-U6 K0!?)$5_"WS.[[S*K=TBX>8[;+5^FCDG !W;A8HKN>EC7U0v
MLP4W6Z00"J&N#C2P'L  ANB*_D1_'C10;)4F>G"GZ^M6^<KI/;><RMY0O=?Ku
MX]S#N-)%T-+WC6TH8.3[;<(RW6)\K+$ZEL;P':QSZ.F;^U/Y*R1NK<LXID%Gt
MX :-1UQ]@C4%USS(K=??/@=+U.>)"WW4+#R<]T0OL.]4\FX 7P3\33W[1W>Ps
M*[VIG<D9G>UT6M00#_%'M--W]28ZLE- _1P3SZ@1W_$X?4-(C:F-XB9O "<[r
*]=1S JIS$FT* -00q
 p
end

bert@arrakis.nl.mugnet.org (Bert Laverman) (05/23/91)

kjb@cs.vu.nl (Kees J. Bot) wrote:
> P.S.
> I really dislike the name "Advanced Minix".  To me, the only advanced
> Minix is version 1.6.15 that Andy is working on.  Better call it
> "Enhanced Minix", because that is what it really is: Minix with a lot
> of features (bugs) added to make look more like all the other overweight
> UNIX(tm)'s.
Whoa! Are we getting a 'real war'(tm)? :-)
Perhaps 'twere better if you add a smiley next time you post something
like this, otherwise it could be mistaken for mudslingin'. ;-)

About the name: I think any form of generalized name (i.e. a name
_not_ speciying a specific system or processor) is unfit for both,
as long as there isn't a 68k version (and 386 of course, but that
doesn't count as much... to me :-)) with full source-level & system
call compatibility. If possible with largely the same sources.

Greetings, Bert

=====================================================================
    Bert Laverman		email: bert@arrakis.nl.mugnet.org
    tel.:  +31 50 - 733587	   or: laverman@cs.rug.nl
=====================================================================