From bbc0fd3f0d900d07748f83eba1fca951bb5f0e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A8Rene=20Richarz?= <¨rene.richarz@bluewin.ch¨> Date: Thu, 28 Mar 2019 08:42:01 +0100 Subject: [PATCH] removed requirement for absolute path to command --- README.md | 20 ++++++++++---------- main.c | 10 +--------- main.h | 5 +++-- tek4010 | Bin 20036 -> 24392 bytes tek4010.c | 43 +++++++++++++++++++++++++++++++++++++++---- 5 files changed, 53 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 81e4cdd..15f7ebe 100644 --- a/README.md +++ b/README.md @@ -27,13 +27,13 @@ This allows you to get updates later easily as follows: There is a file "captured_data" in the repo, which you can use to test the tek4010 emulator. "captured_data" was produced in 2.11 BSD using my program "dodekagon". Type - ./tek4010 /bin/cat captured_data -noexit + ./tek4010 cat captured_data -noexit If you want to test text output, type for example - ./tek4010 /usr/bin/head -n 32 tek4010.c -noexit + ./tek4010 head -n 32 tek4010.c -noexit -Don't forget the absolute path to "cat" or "head" and the LAST argument "-noexit", which tells +Don't forget the LAST argument "-noexit", which tells tek4010 to stay alive after cat has finished so that you have a chance to look at the output. By the way, the "-noexit" as the LAST argument might also be helpful if you want to experiment with other commands. Let me know if you find anything which works and makes sense. @@ -54,7 +54,8 @@ or This can either be a real historical computer, or a virtual system using simh such as the PiDP-11. -First, you need to login remotely from your client machine into your historical system, using +First, you need to test the remote login from your client machine into your historical +system, using rsh -l user_name system or @@ -69,13 +70,12 @@ or If this works properly, you can use the tek4010 emulator. Call it as follows: - ./tek4010 /usr/bin/rsh -l user_name system + ./tek4010 rsh -l user_name system or - ./tek4010 /usr/bin/telnet system + ./tek4010 telnet system -In the current alpha-testing version, there are very few useful error messages if this does -not work. If the terminal window is closed right away, there is a problem with your rsh or -telnet call or you forgot to use the absolute path for rsh or telnet. +If the terminal window is closed right away, there is a problem with your rsh or +telnet call. The following keys are not transmitted to the Unix system, but are executed locally in the terminal emulator and clear the persistent screen: @@ -112,7 +112,7 @@ the Raspberry Pi. You cannot use telnet here. Now start tek4010 as follows: - ./tek4010 /usr/bin/rsh -l pi localhost + ./tek4010 rsh -l pi localhost This should give you a login prompt into your Raspberry Pi. If not, test the rsh call first. diff --git a/main.c b/main.c index 224c3a3..d0b6764 100644 --- a/main.c +++ b/main.c @@ -47,7 +47,6 @@ extern FILE *putKeys; static cairo_surface_t *global_surface, *global_surface2; static int global_firstcall; -int global_noexit; int globalClearPersistent; static void do_drawing(cairo_t *, GtkWidget *); @@ -141,14 +140,7 @@ int main (int argc, char *argv[]) { GtkWidget *darea; GtkWidget *window; - - if (strcmp(argv[argc-1],"-noexit") == 0) { - global_noexit = 1; - argc--; - } - else - global_noexit = 0; - + gtk_init(&argc, &argv); global_firstcall = TRUE; diff --git a/main.h b/main.h index b7b6931..c899380 100644 --- a/main.h +++ b/main.h @@ -3,7 +3,8 @@ void tek4010_init(int argc, char* argv[]); void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first); -int tek4010_on_timer_event(); -int tek4010_clicked(int button, int x, int y); +int tek4010_on_timer_event(); +int tek4010_clicked(int button, int x, int y); void tek4010_quit(); + diff --git a/tek4010 b/tek4010 index fe72f317ccac0d2fba94b8054a524b2b01874a29..df0959940c56e6bae064a1bad98b81c5a24e44a1 100755 GIT binary patch literal 24392 zcmeHveSDPFo$q-v0YV5cK*X3tc#zbll9ve}0!9raLV%ztq)4~aVUn4UX(lt{%mjkw zt^}~lwzQ-|E%k#pX)kT9mu+)fwo4VgSgCrI&q|eTk+R*qFcuKg;9}Jln*04e&pFA- zQ*^hV+rRE|J~{clp5Hm=_ng<~IddMqyK0GH7(#^1#Un*?Xpni(2J5i&p3mUF5cCJj z%s_c2B6*hlq36!8etO3=?=!#K6MD6!>A9T`zF7_#eL*{85fLi4l)1OA|3Z6Z`jW~W zZ8UG1?Y@kkRfx7~vF-UUnyCe4`Cq+x%Z$HI`{&xMvi6ciJ8FMzq@*rN{i0ZG`_=Z( z7#QQTWRSK+I`Hv`6UjuFj5x)@?6O`5{CY$_Lxvn1prr_5BF>QXO@K2IKY{p3$;$`4 z1#uQ)f#ekd;&F@Fh;$m;62q;C^AP7FE4?Av~@o!>U=%-(~IN^(1^4&k3)p*^D z{dX>%^w7T6|9$GdoC$xN9-8=x)0My4vpaXzeV4M1FJHE0)~IJge>?B~!K!C6RyNkn zHWux=@k(Rh^O}S2kLH`d2{UZl`3md!)Y*&w~ zjsTqWJWZdp;m{xLpj8`%s+E2@JCY1c|5=Cr=amqU^4~b<36Aml<$ZmzxN&V zgO2oHapdECnc-{G*A?I=&bBmMobpXafaCW{GTrz8Dypj#K&g>Z{35qHS< zI_!VVQQkeE54n~7aU#Q!ezJpJ?5NLWM|pqbC{N6h-*QKJ<~i)Y?6B{5q>nk$Kje^? zIOuMN{wha)UPt;qhrH5J{tAb^JV*NF4*AzW z5103P@wCJKi;(N>m2re?9h)o@((%m)!0up_RoBW{U1Bh??w9I@@9!&ILdpY z!yf{3^@c=a;T+D;9#Q8D#vKg24cQMB&Jx+v3g%!z-y=S#)D14kWUF?fx3h*ydk8l zu{7~Wa}4^i4YfXHVgwguiU&7@eIajMBpikTuiuv#Rt=F;9|_|hvXvG#z(T?o0}$Tj z8@;On8-npfAXXmo#p8jvRI=PKR26?9o`^*@Yele(#)A(kqfuWl413FJR(kz`m^4|l zvOE+C2Wot^!R`aYCqWFkjCmMR*BH?T1f zPQ-<`J{S&KNt%#}_krdhS`Tt1rCWcXInW&N`eQyjPb9MS$O(owcztMH-r*8iRb+J% z!2~?YChQ+-!l0sPJ`t-a7nT%x?3S(ABRD>^{2>iAYk16C*AS>{^ajK5cbHAo7f&z; z+uVjo?HACNXma)t*QSQMjxU@D`a(fpT$aom4Yt%a*B8##%CaFC8A;oQNAi&E2u3u~ z07v-k3dMZEcmRzf5Q~K)-Vo}W2u8wUlP{Qv2K`pys5nmqTHwtz~Z7l5^EH`+DI%RqUfbz5sje**9$cC5U4~Q{On64V#41Xoh_Qs1R`}5B0CX` z)Fnb9S{I6-BxnlkETZ0TnMu@vVI^dyz>zADfE%pDO;MDbUX{(-Y7q6Y04fx)dal=7 z8;{#UXb$0Q{}vSp`z>5T0I{@c+2V5V>>_>0l>3U5A!rYm90Xn94G)IIQm}2XBejSt zF6m)io1)YnjFq0+$r!Lri7i*@$fZ?7JOzY%7ZWiv7{u1XC0>=|KILypImA+)G9=Hy z+<6`38D%MAYB}r>V#AP0h>c1X;Y=ZN39%_K39-=6BgCd6pYTTPH3+d0@epG3GM5mW ziur^nQ7Iud31x%}v1cI6!$yk`8=fk{n}w(*#KxqC5F4MhgxFB5BPqG5G{n*NVO7<5@HJ>Hb>hDCkU~F5F3@9gyV#0C%j#VJ%rdu z?Ip|-Vjm$kPo0F=(CsJ0;`m9zZ0wy0vH9vEoGrvb!ZNJg2rGp+Oo+|k5yC3$zX|cs zUM9Rvh+~A<4IC%@ln^Hfu`xSII9-U-gfoQbCd?4x3?U})vxL~2Um(PWdVsJ{h)aZv zh4_Hb6yh>rCK>>q_f$OZRKiKvn-XI4nO0VK?t~C;r)_!mY-)F5GPS!SIiY)3ciO;n z$%10Ez881(PJU%)Z^7Wq$8Pn zq%fHwI+7Wlj^x?F!MB?cP3#E|WEtWJ`c5YJnPx}Q<=NGpV($Je-gxy*8!R@u2M5oe zo@Iy(bgx|K(u?_SisXi{g-x2Css zKkx49prcvqK=;v8w%;$t<+r8!4tbap!4G-$)Ihq80mb&>?S=ucfj2hX!C~KB1 z&mRW|(`jc8%H%G4_Ux}AJBas!R;VmIm)iA}Uia~py=h`xGQ&MC={CnD)7&}mQBD#= zYb`xdKLVa^l zU*q=9zBJFcq^q>EF9R^Mg#O-b`4U5JdKT(41vXfoG&3jZ%I@rYg|^VHF3`v3wj_1Z z9XiiTonunx2%)U!4$+B zmWya2Dqm*7m#j-Be3@keqRg47Xa0>pK@kHvZ2&((uMd>U~T z;%5-oAXdZA(*dI&;qOdyMX%elqBjM0*?;!IZadnq@(t|wHG#*z{Vl)@z&Xs@1ASSR z36jo08>5Ydpp9Jg36%3*;yE_XGFQ9NN5D7iG<~UPqZ}XDRtfohvnF*UZwg8j28Z6yrQSN&qE0_(H`_VvE8k=J2|wo~Z${dwcKQ+HCi{-K&JZ5V zH75b*1BL+0086jOw;;f|p#6ZVZ*h#R@Yv%<8lH8j%>P%&KMnb_eT@?0RKC<<*&dc< zMV~z{Jl!M8upVW|slhrM(2a3C4P*ayp=+kkD9_!RN6z|rqc z?Mv-QegpOm_;V*9Wn)UpdtD`+Jv-qGmuG7?$GDbE+fVNemBs1@+5Wl1ZPUubQ{KA+ z`5~Y4m5^afwZ^py*kxUQDbrU%rxHBYm;K*FIhtiTz5qy>I}ho_qlnv*2i>ptj5c2f zd;#!zS6F#9+2x(R)^!o8xm5`B!%nq@l1 zG-Wwfc}RDGW}7ll7nf&yw_S%9hVo-nQTb4^#0YZN!+DEoQ#l@V>k z+?`as4EWdOY3pVh@(es9rgOt@Y$GnQs;7T&@M(^fWwWt{#Ikp4A^af z-4xFYeJy;BnvRflN+NBBw5_L|jI@{J_(8tXe-rx0CI65dcOC=}?Yqa~qfNgo<*HvE z79Gi5&|!Pr4)~;!%Q8Fx-VX5Sw>{EkK-wgq{bY+uBl~&+HkmJNMgZ3EX|` zWv5QN&}2HK5lba!%zqcpSX5hz-C~@h#s(DGE*wj272W#_tDACn7UFCXJj zfqPuiV~$JC#WST%_R&<1lSogW;}t>rzt8G;=UuGrE@Ew$k1=LGY!bEup2V1f=VgsG z0~&smILlC4*V{dl_}1h>P5ztPJKp(M*gXxqzlPlc*vo}I_B-NZfD>*4L>shtDZpQs zx@Z14`1UW5{y5UVCV7(~9}QiWZ65Id13vLLq5CuFz69MPl1KX(vrz8NK66S(l6o`2 zQ}X4&=?|-Jkh3f~;2n~AEe1Xs@=W+^7Up8EPdT=5{l;-(0Aqsk%S=tqaRhTwHphRC z=S+W;y3*fx1$645q&X*IYJ-H}LF7#+~M~X;SI9?H+Iwr>u+C#arDU)l0bdGhSrM>-9kNaSy=K@ZD?0{^H z)N7S`V>CTwZ#`sbQm;np(f?NYFLrzb=U2|>39OS4+Yt{Toq8q;F$%d z-_vxDO5Pz&Pw}46^l0<4)IFo=4oKdknyxv+&by$*u7ih=V<76_k+L!=tI%W>QdTW_ z?F+~B|MsCn{cDvD#?bbKqx;`#Jk-A=r>lSIxUPPVSI_(bbDbki`+tyT6vjfPT>yB* zk@n?}Nz3uC1NnX6NF!#;I$ouWOmhxt2yaAwYK+pyzDlOY^R7~MJd3UOUD%$Nr6E$K6oJ_~x397k}3&uV+OW4ytu{&YgD zp_%Rh;IJYL10|2%N&Hvvuq{2buTfYTv+7xUCb%u@q$p87oe z$LIBrfNw)~0kU&awg$W>wK=tuxSVtM$~kwBCdWIG^V>mBm*r0fozUbM)6e@g8sn=q zR=g?UuK?M%*@sP(*@ba)8+Ze=48eHmmXD4NpE5)j;$_5EskiTA^gqtlQJL<9gl7Od zIX9slJt^lX7uwOzo9K_N$?a0su4Gv6KPJReTO{q5dS63b){xtSSBImAILd~^B6uGy>dp;=trmVj>Bqu zlE=9db8Px?((>8y*>Hc5g7*qs(;k$%du7^2$oE+KyOW$F)i|_8%IhF+vE+7o)z?B& zw_56b7JAj-sWrl9K$n45bN#15do(*ML0jWL%DhajHTVu|3F??CZF7F++Jk!nH77Go z-1ED)OwS6GwX<(Jp!Hr8zE|VnQMoRE{;sQ!hnqg+dv@&guoq&V@qxD1{F)85_P?49 zj#KrT4bs)1t@k4wqh$WpcrNEteJsO!I;+2MKgv0l{mY(5@j_3|tDGx2pQ^c%dj`&} z_MF_=quvVyuMB3Z{V>OhQuO^h(DxUj@3UO@p-rC z4SiS5B}az%<=~C#Pk!!D|C1wlsr_eG9O|#Qy{rH3SzSYO5A&aeJPH3n!tVfD?~UPW zwpWZb*?D*tY$tpk_)^(-4|MQsf!psaU&k7{6}&Rhk<6w{boNcO;m}^o=|7tuxQl+I z59v$#kbAK`SfAhxXI~rqWgIcPh1<8-FhAWJ1uZ;XJ;JkoG1h}U5$hP_q@D-BpHdv@ znKUudlVX;2Pd8(|Tg|Olf_L_%T--(2(>8H6%G=r9c2~J+NZbJ4HbL_51YhC?@V4=i ze+T#yH-NWgNPa2!5;uUijg$P_!I!uJye(bw7lJQw19;n5$zK4z#0}tWX_7x5e2E*t z+r~)#ZQx7X0NyrQ^5=msaRYeUD9OJSe2E*t+fpTeF8C5RfVa6Me-8K(H-NXLNd9c_ zC2jz3GbFzRe2E*t+wfd0KYPHJIM(MTzV!FuEB|8dg>h;CQQ@6)j!o<|46(&U*(5y2 z>1J&&_2;CpjVZnAz7(VTg%qRn$9%uV_VFR!*|_k%ir?i%<9pSk!qx4ZGQ~f5x*5S>(rAFje*Txi(wyw5;cKFoc0O_TgP?(MYi_d6O9@dJj#%e)%6;K*Bw<>|ZEYzj0*Vw+8z)-ipx@kpo{yr>U{ z^AI*Q1nU~`Bx1m2I-I-mn{|<axhnu1|C!w(&^cThiS3C^`}%>&mwaLohPJaEke*F12|1J^uo z%>&mwaLoh%|9If#OuR=$WZ-`lkEYo8>k^)m@Q)JSjF*$tEtT+o37aK+M8a=M$loVW zpT9%EyE5zdjCglu{caLR^R3^U^Eb};j*1V9I75%Kq`8uQ?@xn~gV^sgI>v!2WOK8DA z4Gu=4;12>a?Ev5}$FtObS>W&ERXFO#S%Lq;QTc&zX?giVGk=vY9<2@f!sfi9IYpkr zlKHb@(O}6ef1q|jbIGS{t~uLNa+~MYl6hhg4q^&lz*id-Mjp^n^Tg=UX~tM1J!Nw0 z6eH8P&bZ!{W!zw7r{o$pUHw_{J_H8)7c@BcI7HjeseOpHT8>~_v-Q~;?Y3sqRtvP+ zpiQ$S3ZdGFOWQ+4AkaM(DD7fZf+@nmqx(TaoS8W!;*9 z@(t0lhoNsVxCDM|gW$${SO%BX!-jt=>cVfG_23%1&A{fm(9`Xb+H|V8I9Lf(Js)=7 z6`*-q)1{@rySqkXHWS?Fyt-`8WdH16l>UY@VD!+7y?qM+vju)J@89spehNcvR_2|RDh`!q=NxAQ!Y z8=~-Q`8cO*hw+wwcy3qG7l4wE0xJET_)UqDv;I8$Yln$edj96b4t9SC z4P9U`UVNxTP@sR9K40^P3$EdJ7FGYzp!v;3(PKf+)#wb+^EG-RXr32Q`jbKP?1-YT z1I=?Jip~PfGbM`70nPIyil+bfYUO8n2OKod=Gnon|7C~##B?RM{hMbF)3mo!qnTg3 zMpJ%Z=CD5HJTqhm+rN7?nsS~c(&cAxhDgzr^SijBX&LeoG}p%}P@Z8gDJ&N0TnBv%Xf=Mh zG5(e~ZUM?kYZcVp2#8RJo_L;ej1{T(GDSL61ej`7PHjf0mdEq*XRr-jy7aiATJ^WdDdWX6pgDe0 zZ4%1+yhHziwBhvu?}j-Exn93t+e=8RhOFNiNBZ|b^IS2^SoRIM1Z4v1zv-|y#Uamk z&(8qll{#}(Gc>ySqs^cK(!T6uOloV(43#R_oe?%IrJ|$=qsRAdD&ma!T;^>FU!K`nWK#t9ACbQ z=d8ECe8^Q`dFMIk37ajDk9P~K{ z{jP%^!;T{Z>o-%QP0)8~H07%t^ajwJ-`Fi#-c1hqb_e~0gMQLM|6HS){|N`(uhA?| zioIn7#{3aMbA7{p&GLxi=6KAy9B)HiT`}&(lQ-mT2sd-n+)!UUuehj4{#{L67fX~B zMMR!oBHUR)az#yvY;uRr455Q@~|@*Y2~2#R}s%`F0F7owp6zV#QCc;+m)_3B#I^)k2| zCg$7h#Yu$NW>FvWHQ^$e=BB32NTN}=&?SibiZoSTIf4SpoYlQMBgxrHTpx_Z6Lgip zO*}jUB9C^U=<<#l3V6Sb6o48!1|kxHMxOjYZY>_M*&|wJi_Nn|OM_?$iOmgSb4WBr z{J8qWAKVxZ&Vd7qY|I;P3`WWI;Nm4*LlbWZ*5h&^|HdZ2HxzDxVjxss$eI;JR-?X4 zRxMh2xA*RQDy*wf=y-`&eDi+WrQ32BN^5WL&CeX>fXhRs=W6uS+e@>8gI>_ z#Z`Cn)*<^6m$I_qYgX*rf~-4#vt;hLL9>%JYmjP`{( zI;Wu`l89I1s;LHCdW9Q&th;RNyoN8oQU$3C1?w77H}sQu#M^)aJ-G6SSNG@^H|iGU z5u)M3>$hjAD}eOWSJOm()~h^k5bY1$u^HD|eZ<{Q`i(r+O+vbDxTFFnjjDO!kbMEr z2(sLMga3)P&(PiJ&Wj{qVl6f(_@ea6{9PR8Yp!9NCw^Qj1 z=Os?VjSFKR8#fw>yzj~OqB>zW?9<`9)-<0ET}-APQi$Uv3=Z8HB`>Yg3u9kyrE}zM zRCV!YYls}WrOdvw%r1j{x0`j7mY$T4vMH)_SUe82xIGKclb2xWQs zMAg-q(VyLsrd7qdeoZ>?FS&5eaWj{m<^R)dbUbdT8&hMP7B4GI_%=uitEZycW}Hkc#I0vVq;O)e0aNJaFzne7*Oyt6jqDb< zBuyv0ki`Na>f1;(ln_N$iHfZ24vQ==7R4fLqM~Tgs+C1JqUmoDMS%u;iD9eTs|#VN zEBp&}unx<d!Y){Ww;+vee>hDoL^#D{Wy3k zU#4elMC3O@;{3)F#pjnY;LMjiW%@zjT(*L*jE^EJJ?_;{;t$_AD=e9ljtJbjp{+F$1 z`H$}kkDvi58#Jl#XModXtfGBy`LGNuOOLuQA>#KomLA^~cHyoxWdrOXy*Gff*tExY zkO!}#2a!05$Y()4zKi6&=#@xF9s_ODhdqeOp7jp04Das9kb!!PZy_o@zT0yzy1Jh) zK#z8rFZbM8(DMUVfwmYfBGMingB7U9?-eRg#`p(B*orEC74(V~0Z1JNLOxp+TA?=p p$Fs>ig2;T`h-}L&n+l<7A*PclgR(aXw66DM{NN~E2_aMH{{?nFN&Wx; literal 20036 zcmdsfeSDPFo$q-v0b>X(dC+K6Nx~!`1w;)YLXe;lQ?%>LFqxSoV%mfqV zvl5^!w~LY%eA#|*liSO>)@8TZyWCy2#V%gCmFx1UxO(qJO1BANS_Dk7AKPM$&HaAQ zb53&d6xjB&z5m<;XMV5ecivx~^OC3Us$XGQme4LslnPSb8J1W8xN8-Dvc;qY!WLIT zcD=Zc@ zT=Wc2DRuUO-dm9+eM6QI``{Tb|tLTVDT)ot-Ddvo~*=^Ph5l*i=y6Gkw{%njcwN*~_xOB5G*s3K?k3 zp2!7_AY!`W&rpzQn+0D0Uj%HQeDGE9bSw&8#^oO$=>SAEj^g*jV4Dv5~iEI7UH zUC%!}`)0x1U!VS~d9yeCx8pf)zkTDpdv5<#Td>Od!SEd`58uA*Zv*q2r)~Uj`n0QV zI#DzTR(7TYS3KTmQYhHUIEY&0lZGJiqb%#~&;{Fn`C}-y8bI z#z&vuS^U7eFK4%fAIYEg>Fj9DUH|Lc?(h7|qp6jGf-pW40g`^O(By5)h73;yYukFIL|tnG(SG%nqR zVwm72v(YGL1Fmz?|HVcBR~J2E(5%mpZgjv&zXY!x>0fFBkn}+|O65pDitu*1V|0eN zO1$W@KTRtGQhzHN_xegFQZHK2J1%<*UE!a0(TmwRl%u^VuJ8>m`G6~YjSdXR@Q=9Y z(=L0HUH0yF**oH*Z*b{<$5p;pyX1fGihl>>X8F{)!r$xCA9AJl>n{DPT=cL@KhKq( zQWst1qQC13uc}g}iskuluJl>1@Db1>J||JE|3X*!y#TqH|5dK=^IY^C7oBwFw+Zs` z_^uJ9uK0fK%Fk1-@OQi9*SX{gSAJ_;>G`HhKk16U#1)?7p>{0K5m)?MVBajC!&(`T z`nwQc^)x4v8Dfff#wG8VP#ze;F;BIm+sfy2cJhf}Ad-yxQ{l896Ia;(L?o1M)y&rT z6aI9#Gc8*D=}3Dx-jVhPLLns$Cc}YrSP|{<4Pk#et^>kaJP}R?(($BbbtIbu!LZ*6 zT#$z!U@P`8Fan&d} z&G8t15UsM%0t@Lt5PhCUD-jk3kFkWp&4G?6%9AOk48@g3lEX<^mxgvM{DcY|qOlZf zKY-Ls4CIPOs-jW&!yCe}bV~S}Be94K(vC>{k9S1SdJroq)B58b;f}CBlngj=B9Nm; zP9)ai51@7V$5SM;$n2yeX_P3NaA>RvgG!+J#AQ=1udMJnEnBlEZ~|!gV;X4IC^3Jq zH5_d7M`9@N7@KGym1Yc%xt4g-V`xh>SvAIWsPV27h@~TeXe5wQDf1^HolPCh(+^WFV3Xqj7|j$ynSUMSjzfcuYJIh@=ydkW3sE7m9Ev zN;BLU4sJl(x!0fQNC!nCg0=xHC7R>OHW6rwC(|MwM41NC>7)pCB&tLt9!y6?A{dP$ zp5_p`a11J_aj8O6z=Hx|kU4>l5o}K&JuEBLSY1a4aNo z1p&m$`c*Z{{Z$p_n5c&{k6b--4ebn&9A@=Uo24*H$a6+RM@kw0=}?sMYk~h9O>Je| z9x+GH(css|t1!T|w+){kiA?2ceYYC>DSuzdAy)FNG5LASf3qOZ1H2lGYcC-d!TE$( za2F6_AzVy&C*mN)Lb`+y3-3}w4EAM&bFii+yc%n1LM);e5#AugQo>pxstK#HrY6K9 zzm5vg#74ragxEy52x~t=TZnCh_*mRdh>wIG!ZOTVge5|}NQjSx-Gul^=p(EWVh`cx zg?NSVR($&rVu9IDh!2Q;g!n+)Pl%7n1BBOL%}R(5k3)nv3UQdQQivmj_;@->xKxPu z2yYkS7$GY61mP4R1_);gaf%T2cABtIh;xJs@!eZp{=q>Z&gN`-?R54)c_w?HH*?j% zj)9!>-_Pu^(Qi)z|#gEHSmyuKWyNQ23~LA zwFbV_z!w;JnSqxWc(H-!8+e|9XDfU<@;)-^@IyKeq8_c%RrbT(id$2c?eXu-}Cwen^ zzTV8wMn}(Xf-lDR->IuDaiGk?7}lG~w|g@l-;RMSd*{!vQ!;e@=sfEuqoZf`TxW^% zFkcLvV%QMA1Z*QiA`rc&&%cl1Y{^!}<1Fw7g z2Wi(Gj$w2-FZyLcHRE|t+V*aGtpMpbYx$5r-=PfX)6^}MY3Y$Vh_3J?(psR>^Xcel zF73=mn!MGoo&FJI`>>xRU0wMH+5OL)^d4PvGDl3w2u$jw2xU;frfkRb{lCgKz@snU+cEM zp&Z|ojAv=zP#$1@CChuKEK5vnxdq5i5o|C$Id)OTQ`k3jjJD9O&asT`Eg9;}aOu3Q zbdD&UgM=!d2O#qz{(gh^kKpBlw@dMa?-{gFC(e9tQO1in<|037X%F>}c%w@9>Z0Bc zXHDt-(BthJWLoATErinn>y^$_=;RqXHz=JPK-&I|jK3&zf$28u8@SV0Fi-Gf89tj( zwSxkbCG(PxvMjIxk>-5lvvf{xCQIBuh-oKR^9mFXQ|cHmNAWO?jqxtnPFO5Q#(1X{ z57SrS0PF zi1}pxe*xZoF1^>3UI@0R!*sGX4cwC0LYZ2N9`{tsVII95d z&9}r-z&)UA0n@WA@gQInbSt3lyBx!7ea^U)gF0WT((xA3k%M%w-AoeVc&XB18lO^W z#+YzM_y#7Vr50%@YQ(zRXs?}!qZ938BgThLwmH~Ddpl12O5o_v$ICpuneDJ^p**(& z+Vguen78E^R{(sL!o9$C`^`ZZp~}+|DcUK#kky-cQrSrYo&)`BK-P`cIRW0|N+$yN zs*-c;=Xk62_Cv2l>G=UEV|g?no{hk>(a#nj4D-RhmyPn1{SRsN*&g&QXI{bQ&>5B` zbvB}29i5#S&CB*OT=xLOkZ1X}$nlA7OxhM}2Zu*Tzss>AzY6OY#A~6yur7is?MySq zuEITv<`|HTwEhBf{{Z?e!%)8la*hFd9=e12;2%;vq3o`4*?smRc6$uFWsq+&?3RLF zfb=iG7?O?ruwP^$o&@-;<0*i3M)+dT)kgRN(4~q_pj>rdV10#9Mp?c$hC(R&Y(qz< zeLi$PMtfzR&9Hw0{t4BN$=CXy1OI^HAND%^@SPEqi`_RU`Iu+-DLLz(?d%oNn;C!( z^KuMuY|d8YHw<0^VVH(Z%H{!O)0w}==WcCtJ#7AqviSy}p0{;6-)DG~pb&_L8v2zC?UIaKb}?Xm67D5b$@D?sDKq5&mt2|Docwf;Snu zOxt$ghruVl2>9#J{Q-3US@9kL591Kh-8WP`vo}M%F7UMcCEzR%%137OW|)@8!TU!Q z*K@!pL!OWFdKTjz*Ib+{xF%uWKZmhFm&;cSImZT!w}o7@aK2~wgVaS?vAnTOaJ*m9 z9FH+xy`}9UTrTmc;A0(AxXp-zd69L8Ie=@3sItNIU~8n1;pPG7{6Ty%aM*jR7JApK z`dg&JFdf(qIbN#h9MIU_c&k9slRz_m+PMxm```%rzMc!VXNfbEy;0RSSd6q31EmV|(ZLVKrXR9@14vnVOGs_d+&VrK?Zr@!L-8d4RJ#wnBD=((6=uR~UNQ-oudP zD7^-y$MToy|ETwcm6kZ;n}hxdKLTHR1LkM=7vT@WpMyVk(;wfTF2PuUd~l*fzy=si({L`m+zd{4K8q@u=F!H(iiZNmI@feL)ed$3&TsxX z-3NC%bX7ISF^*>s!Y{%&WdoMLm%^997r=Yri{bO(eWZ=NEV5_Iyx2ZM%#%n*nc}@+ z@)lORJKF3>yi>!&&rLd9dvI6u-yN-K}_kW#}GKy#0or=DlR-(dLNK zJ!R;gSG;c+y7n9=uVs}^9(;rx|Bwftl2t2Nts$#bvIfQLS#rhj&z{;p{Giss_}Q~$ z^6*dF_7ATp>K|S?rGJ=X)vQlP&u(*t>G^lUd1@A@&MQi1 z-(_@;DcOk|n6J&50Y#ru^l8wO)EI)LyKH;6VXVQHbuJ;c!r#gR#F(8+h%NB%`Y^_D z9LIM1*UGW>d;~c4+X1mvp8F8s&49BZbI-H;Q0A;J56bT>=C5;@zdlg&*WW<)iZP$| z8T0LnYQEiN$nlMTW-I8~D*d^j(}o=5`I(SGV{FAZ(KqTs)) z^=KK^@6QYI>Lx{pl-}2omj}tK-kE7oVI++{yoKNLYR&wZCAcma^w_lndcKr$^z#B` z>(5||-v&%mj*5qA5=wqS%|D#OaNO|LDNS>&gl}uv_7sovCg#^%`JJHZj&*Yo@+^GM za^Fer6(F52s<3U4?_zkwzfIdl`Zg(f5OO(JDto%GMU`%Y()$whI9KZR!52aEyFkzL z_ks2?jIy%^v>gAD=2dE)!9AH3$fN!?;M~l02fqpQe9SN@-_L()`&J|GeM7SWkEr=f zkB5g8{ra639}nO81mCInzF|GF&wL;BHkXY}m$AWd>Y!nR^xuG%-{UApz5bWuxtdGO zu?+i8vcK^AlKqDLOV6@;UgccL`Bcx9{9fSPN_~3TV|_pN*=S*b!Z}tfLEpa(eSeW! zd;TrbwOEY<-N3p3#<@n9)q9Helm$=fa%B6Oedt3kTU32@#<{p;IX2eN&LBaEYavg#+F#RZl!V=U4+X?FfCtgE;2_4ieaA#ld zU96wqB2V-UwK;Gw=P35MxTme0E;olfe<#b2WydmP*>Rr*yL3a{C?o5jJs`Y+8q2=# zWCFDC^$!Z)`WmeN2IJTx%o5WF9|wQty!hbsY4O1^I|v86 zr`^xG80fxpxos)j0^WU<;@<(j!Y$z4Qx*Sq@D*+W@6J>FrQj>v0^U7E@oxiP;TG`j zT*Y4kzQQfw-B&99V(=Ai0q@RH{6*j^+ydTxh2nn!e1%)UyC*CDLhu!C0q>rq__u$5De$wS$6)Z=Ws=_K{%XR%#ry@sJIYv7G6tMBhIAEOW6 zH}nbiT|78*>A>FlWSqHtLwE)}IQyZUEbwzs|3zqnSvbErzq0%Tk?0$&Ti=_hYrr?i z`W*w48sOKj7_c^B-=wE+@c9d)XIBLJ2hV@?wH#56J;my+*jIV()Ri{&lhNLVVR)D1$*|2^6t=v#@w+m_Z&z;Xpf7#1og$!;P;AifiJrcq+jQRX9r@8a1zK(#-!GhlSj+8J4uoU+oWJ zXd(Wu3VxvArwZPTNtyDc3O=e}hk{>L@Xr;Fs|E7TIqyDW z??B)xfau4WAg)MA8s~TMeP}zAK#yEu39Qw`ZjUAJQ@@M=Q$S}nj*p~0Xk`+m^?Yhy3)$cnvp%z%C}}&*LVu7YpuepVhj5a7jt~`K&S69 z@eP7QJ9W`BM$6VA*q$6YTb$FL9Gb1nX=e`2)+U5*2Of2+pY4RsBU=vc?2OSk@q=SK zqw~mC>a=%fYX(hYkOER!||O6okzBO*c+p# zOFrLmIC8dfr$0F~TRZOdjLF$MoOd0B9^H%3e;gVYq2N9qquGnb?*Mz`s|CrDKOXt& z#H0&lzt@~>@zH1<2wgwC3$_}x&c8tZDcAX9&n8{1%16s}c?dC0%60mLxJKLqeeD<@ z?bjROpEKwz6<@0%r@p@P%h83jzLPIdAKwD4owi@6>Qn2NsQRM*2U;1B`X2-8^2ZGi zX+L4a&!(wqoxWX$oayN^Xbgp8wAMdj$XR|DRQ<7h7+#P0EKgiD8KZUh5hFaVp~yQR z0I16XS>7C<9XC@fg+SAmm?`ZG%qxzYDuP56t?l~^In$@xD{o!Lp|5F<(v<5vD10UJ ztTqik%kw$XSPQc!>-3R!T!GjFIqwK)`99D*pVTzVgJ+eFn=1YXPLUaWA8X+bAFH^!O4rB6ST<_6Y;%eDH^!&=zCgXp2Y<$j>^7RINzzHhDbGAI{qJQe5xdzsb`tCPV z*J6pG$15+!TiaQ3$RO1J3C0gSU)hjXLC*P%{b4%hvt=&*dqA_j9>v0W2F9OrnC135L{VqBUTKAV3SyM$fXpVnW zn~wB-)ulgz4`n^S^Ud8~KyKz|hqDBfDP;Oyb%p;PXr6cHDEn`^r`9c@H0(8BRp0zGH4=?q4i}l;;l0OZa;|0H|Za{p` zfNnI(?>U$LD=zwgi~d&^%|lG>nEpK|IKAHD8>`g`zASbu7qd z&^E&RU38a0)BZCq`X$g@Z|uf6#`K7J9jT;zklqpu&cj=D^(wt3*1?b1*5-K&=T%gw z{}&Snlj+KexF`vUlE5FsSOms`cueMhA{=P*H^=@MHe19P7#c^C!*nWI8;&To4@$h zi)+beZFrQH40QRio0jYn&B;JJ9+iVGiMd? z`;p%jYnQFL%YWBBwekfQ3tr*1U%F@6npMl8GNBkk6B+Vlqwue+zqe*tz5m`7EAGFm z(cieNrv5Izc66SZRacL{26J91%D0Bb!@=?Qcfa@3RrNH@dD~{jz*tl15S}b{q{6Nz zuBuSgYsE{y8FbR4pTg=;@(JX4Qh&d9v3O_KCZF+{X>6^Hr&A4huiA>2vv>w5-_JRg z$6wIuXoJy6unjpuqff>Ct$|nw?F&$PI~v^btd^X;vEKxhWLm?k2U8)W_nS`j)` z2Oh;<;^nCM{7=3^G;Jg2wb=J=;B!Uiq2UDS_=DH+*Ps)l;R|J_y^K8?o$v-01tJ^2 z^V-og&Nq-IjnY~j?n=p|{6Vjc&7$zJ&}l}$(==lkFUav1q()me-qkvqC>;HOdF<(? zX^)2hChhm*A+qY4&Umvt8V)4UhEja_tg1-8Am(e^fB#u@G~AqS$GL@i&g;DEb?Quy zK7I^Id@r6b%G^&FbR3I9NdRXd|i$0SXFVFE;+D3Vf zJ!#ez6y=DAmOJ)16}WuO8ccP_0c`B;vh$MJvG2V2mhWrLJUH)RO%9{xFgX5*)|9#* z@=lOl<~cd7{?0RLBi-@^wknA~B>a#i!%^xxNFtgR6*5H?@-H4#$Wp9G#^qDyie+opRNxda)F~>$t3^vXy$=%jVvl4O~0@NmmJm*5esO5A;g35}?+r1^z2_?!>bR?or}^bnH`* zdi31eo&wK!c?QNc>3RtGNdR@J!|%3r@DNEoo|*9*muF?#QJ3yfczxc*GmdXzk6}A_ z`V)-t(6_49IfY^w+V5OiBOJu^xuHjdi)0VV!`iar7NeG z{x5>odfXeZ%bj#%HvgB{l;(f8)!shipry_5KbN #include +#include #include #include #include @@ -25,7 +26,7 @@ extern void gtk_main_quit(); extern int globalClearPersistent; -extern int global_noexit; +int noexit; /* not yet used, for dsrk mode int memx1[MEM], memy1[MEM], memx2[MEM], memy2[MEM]; @@ -82,10 +83,40 @@ void tek4010_init(int argc, char* argv[]) // put any code here to initialize the tek4010 { char *argv2[10]; + size_t bufsize = 127; if ((argc<2) || (argc>9)) { printf("Error:number of arguments\n"); exit(1); } + + if (strcmp(argv[argc-1],"-noexit") == 0) { + noexit = 1; + argc--; + } + else + noexit = 0; + + // expand argv[1] to full path and check, whether it exists + char *str = (char *) malloc(bufsize * sizeof(char)); + if (str == NULL) { + printf("Cannot allocate memory for absolute path\n"); + exit(1); + } + strcpy(str,"which "); + strcat(str, argv[1]); + FILE *fullPath = popen(str,"r"); + if (fullPath) { + getline(&str, &bufsize,fullPath); + // remove the endline character + str[strlen(str)-1] = 0; + argv[1] = str; + pclose(fullPath); + } + else { + printf("Cannot find command %s\n", argv[1]); + exit(1); + } + hDotsPerChar = WINDOW_WIDTH / 74; vDotsPerChar = WINDOW_HEIGHT / 35; globalClearPersistent = 1; @@ -127,10 +158,13 @@ void tek4010_init(int argc, char* argv[]) // run rsh in the child process execv(argv2[0],argv2+1); - exit(1); + free(str); + exit(0); } // parent process + + free(str); close(getDataPipe[1]); // not used close(putKeysPipe[0]); // not used @@ -412,9 +446,10 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first) // is child process still running? int status; - if ((! global_noexit) && (waitpid(-1, &status, WNOHANG))) { // Is child process terminated? + if ((! noexit) && (waitpid(-1, &status, WNOHANG))) { // Is child process terminated? tek4010_quit(); gtk_main_quit(); + printf("Child process has been terminated\n"); exit(0); } }