[comp.sources.atari.st] v04i013: bgacc -- Desk acc. to run background jobs under MiNT

koreth@panarthea.ebay.sun.com (Steven Grimm) (10/23/90)

Submitted-by: ersmith@uwovax.uwo.ca (Eric R. Smith)
Posting-number: Volume 4, Issue 13
Archive-name: bgacc

Here's the source code for the bgacc desk accessory. Bgacc allows
you to run TOS programs in the background with GEM programs, and
to disconnect from and reconnect to them at will. The source code
is interesting because it illustrates how to set up a server process
that a desk accessory can make GEMDOS requests from. This is necessary
because D.A.'s run in the environment of the current GEM program, and
hence file handles (for example) that were available when the D.A. first
started may no longer be available.

Bgacc requires MiNT to work. It may be possible to adapt it for use under
RTX as well. The source code is for GNU C, with the MiNT library; users
of a different compiler/library will have a bit of work to do (nothing
major, just changing stuff like getpid() into the appropriate <mintbind.h>
calls).
--
Eric R. Smith                     email:
Dept. of Mathematics            ersmith@uwovax.uwo.ca
University of Western Ontario   ersmith@uwovax.bitnet
London, Ont. Canada N6A 5B7
ph: (519) 661-3638
======================== cut here ===========================
table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 bgaccsrc.arc
M&@A"1T%#0RY#        4!4  $X5$9BTB0DG   ,+U0T4 !"!0@Q9\*,&>-Bz
MC X0<NJX 1$&!!PY;\[("=,&Q)TT=-"  #D'1)(73R"6(9-&3IDQ=%:"H/.&y
MHL4Y9>J0>=,BIIPV:=R$8>-B8$&C!I/0 3$FS,2A<VHJ7!JF9$4R9>:LH;@Px
M:U0Y>5R8G!@R3<DV;["R\%@&!)HP=MK2!'&F9DB,=<Z@00HB:INV8]ZXH2F'w
M3AK!)>>>*;,T9-LY:<X(96/5#1F3*-TZ)<,F*\3(:.B(O?)VZ9VV._F:]8BFv
MS,33)UR",--RSM*F;#J367MZ]ALY6]^8,6-S#)HT;"X'M8D33IB-,6>B<1F&u
MC%@JK=VPX'LG>YFX<J2CSKI5X1BOO_.,M HSC9TP,7>S[>OZ<L4I28X,>>*$t
M2M_(D_$UEV-,'9?<3#7=$<8:;8$$0AUP7-=:@<A=UA19V8&PDWB8/;'69JRYs
M-EM09K5&!E\X66;5?Y(-=9!"6PTX(6Z=R3%:6V_%A:"&-3E85DD*JB?&2V'4r
M@1-?3G%UWAQ?J1>1&R4M1V!@@Y6!QU+"L0;?=V6$=]$;2P)9%5>&Z=B=B 0:q
MV26*970&DTP@[2#=:G\YE5AI(W:FF66=S;$68PQ1))L*;KQ!AT%NO.35<\BIp
MAQ,=?$'(89#SD6C84&PXRIAX'4F*@I038J4537"<4!*5,5V9@EA"J)=C4&<@o
M29]ST+7U99B\ 98DJABQP:%K=K0DV%^#%4600,=Z) =(,4TDAGI%+#L&"%*(n
M-050(5%DF45L* 0GAK;6(08;:4R[4QMA!&7L4<EBM]J7&G'DT9AW+$M'L[Z%m
MIZ9'((ETA!-5@#"$MI<1V$0:_8% KA@;@256%9"Y$6NR#GZ4[55I#->E:[>]l
MT08<R'5)\ N_*9P&P\^I]U%N(-0YT:L2[X@N@RAZ#-A;$F>UK@HO##30"$&-k
MP89.;?%@&TMON("&#S\'/316(!@-X%!*,ZT T&X(37341R]<==-9/UWT&W.(j
M$91U2X.M-=0\ #68V99]?356M"4*PA=?./'$%TT80800>"<0$$5VO)&&A8*9i
M02Y,44ZT6!MF5"6:2""2FV@82A?4\]5.;\W#XY';)C?6:Q<=1E9PHVTUZ6)'h
M;7D9F*>MP,]T!]56%%4D0<421621  QXP "##3'   D!M)=1=UM$%#'%$E0\g
M 04(,"2_/ A0,!%$$DY0[[,"@Q^Q$%."Q37881.94;)YZ"WK&<_?&_?<W;;!f
M^$5K8<"Q!0TPY&!#%SL82.$.5Y#[P0X.8JA*6WH  A0,\#(J2,$7ZC>&-1@Pe
M?P%4 !L$<P;ZT6$-D-'# O\C0N&@8()TL!_^X)""#'XO*%19R X2(#B#/*<Md
MO4D2^YB4GA]H[H6#.<@90'89!K8@!C.L(8628RJ+'(Z&\%. _,+CDS8(Y2];c
MF($, *A$..!$)SRI8E!<=,6V1!&&('A#'>1@AB*"X(AK6</AV@@"(R)1B;31b
M$\XXXQGU47%"<*"#>J(XD,$!90Z!>L^RPC"N/I;L26Z U1+)X)*)1'&*() Ca
M&<JX!2,D@0E%<$(0FE $O@4!"P <""8UZ9R0=/*3H1QE*9MPRE3.#GP&460:z
M&*DG/Y*O#6V02+G@@[Z#,.8T(JH($8) L)'0X50&N@P*<"('\*3 (A@)TP]Qy
M.2\&2:H'#(1!RV ')0[1BF-]08,:#S0DB$@DDA*3DX*\"0<0^(!ZX[03AXQ3x
M(12ILPX'>M*'MG6F])%H#B9BT63,F4VOL(9LMB+@:I8SSYS  2F;*URW#*,Gw
M-%840BZ4XEO"HX*A/',,+G'-# =7'4HZ-$N)ND-?4%H&$1%2 3!,P!G8<+\Iv
M9C"G._W"'7PZ$*#R] YB> ,>?CH8G?(4#4E=JA+GD ?;E*$C(7S?YHH:Q 3 u
M 0U5O=]F.K-2@WRUJL/TU1U^ \(4&D8P>^+C-M&8@#V2E8:#"U9AZN"BM0*Gt
M?F]]V5C-N%6<-O4C7S@#'EB 5X/@@7R_88E0HN-+ HEJ#:3R"%LE><.*1#$!s
MB#U#'ABK1/4$)K)CI&S)+$N>S/I5CC'K[#9!FX;$WH&T@_L(&;*5)=:.Z@WUr
M?"UGJ3/;T*(AB8-K#6BP1!S?8A:XF@7.<&$WU\,>M[%Q[>7Z9K,@')[M#3*]q
MZ0AJ9S<C;(\)($C $:UG.Q \80F_^][@@"LBO=*!KVIE*V"+&<4'IA$.KOF"p
M'5Z+@A0,9 \#28!'V?J%H&PA!C'@XN"2X 8XU*$Q-3G"%+!@D>=PA#$B>\Y&o
M!KDY!0?QM5]0(QVV4(,;2-@@3[BPA9=B!HQT1,,<IM6'?2*H$<_6)6<P"X_1n
MF(:0)L"/G^H!#.24AJB!H'CR9+"#T[""%72ACD]N88)1[.#B=:$',LA@70?;m
M@[/.0:Q\*H.8[9!B.+AAP&M  9>U P(3V+4,O&&PBK6L@#X $5(*6 P=X%5&l
M%)31P I( "8)]>$,(CC15O+)1!:]+,M8J<!BWN^T,/G:5J)A"SB 01?6DD?7k
M?/C!-;"EHD=:D#F(&8TUS@I Z4!J,5R8)FXP<L8:V&GX?%K4=0SG-1]-PUZ[j
M$M@,)(*@*6F' H-@!2 X01!.(&;0LM73#[XR T^@ VHG. '*9HRG46 "8W]Zi
MBVN! 9]I:!LY-(4.<KZVK]<B BYP003K]G.B?3E-+)M;3BIP=5^J/.QO[QH%h
M 0]VM%5P@FO692Z%6AD9FB(',HA9WPEH]QC@D(=ITEL%+E !OD,:\0I1G PZg
M2'"LYS!K+)L!)SP-RHSC#1Q/DSID95R+"<Q@ZWL)9MT'7WG+>1!.$/"!#[/If
M.:Y!$ (&QL#H2 ]!J3DI:D33T"7WE<-$S/O)3&.YTEC! \W78/-HV[OAKR8.e
M"D(P!ZMG',OEEK<KMRCF-ATIT1FOLI@3'LY,T\'='#?TA_-<<U^O6^/P$?Q?d
M;MZ90XL9ZVN<R'LSJ.]"(JL@\PG,7]RRL1 E"CS%B::&TI 5C'[O@0/!2G6^c
MH$EG/WIP.&E0<R<T!P"/(6/EFB1;8M.@*KG$JLH1;$E8(I//'APA1+0G]0J.b
M]X/+,3<H0/[ATGU-'BP?!,2&Q "D[\8CBEG["@()"CX5Q BJN]H8UW?E<<F7a
M+F$D/"Z!PV\,$S/;U&$XIK\EZA7@_M]\(9 =AVC$YD=M\ 5#T27P%@/TM@5;z
MM 5#L$Z;= )8 F!/<1,YL1,]T25N0S5=L 4@0 5O4!-"4!T@T 4C-Q#KMW_]y
M)P=?X$=Q)H J]QL%>("%@0(*" (BP( =^(  %8$TQE8V$5/8!"9>X0(=" )3x
M\'=.L1@E>()]=GJ&<R+\)P?O]P5N V\PN&\R:( UDH +V( 'DS"K42@Q5"9Ew
M$ )'. 6_ 19-R&<I&(4#L8)6>%4%=F Q^!-<B( V^(4=Z 2& @*NH49Z,4YHv
M 19HZ(%$\!P388)N*%^79Q"/\B#U5!%>=(%A)$CYQU6 ]B@0\G^"Y'H)5GN5u
M1@=F@ )5E',X& 4Z8&\?X08N4 (P, -D( )K(6A$5&#KID9LY$9&0%-;8HH:t
MB(KF]053D 530 5%T 1\,(Q(D 1$T#Q. '1JIXMT9'WJAGW?!GE:!P)<QP07s
MEV":1$<,9 3TY0; ^!.H* /2V$#A>!G6R'Q7QQB1QXWG]8V)IHV2MP24YXA\r
M(6B$F![YHBT4P0:2MB4SE5)ND(DB-3_($E.(A)!UJ #$MD$Q$Q,?(V84V4%9q
M)6:+ICYOL!8J@'5&]CIA  .8%HII($)8AC=#83LMX -?8 57( 5!,#T&805?p
MD 6FA 5&9I'UQ$!-@"E@,DTIV1;05@,QH(YIUT AX)/7A(\-M&@IL&0Q6!,,o
MA'58A@)2B0(-Y),K@)0Q<$TF  )^ )8@L&[=$3(-E%4MT +*=XTJX)%5AF5+n
MID1" SM_]!@T95,E!I4BB8+\F"P$,A7X-1,:.$:^<E4 14QP9082T1Z"H9#[m
M)T:3\06*N5%E$)'$AC=3$!F.F35IE!R0<0:Z%D2T(0>V81B;YW1E-2*HV1AIl
ML'EW(8@B02 ;!%P_X$/&=V(8$1_P$088R4%,L19RX'?$-"T2,9J)8B&L9FMFk
M\& R@ .C5A!BP)&LI@)M ))^4A#=8AMST)W'E6"+9F8@N4&D^3T)P&;'@15?j
M, 8H<&<MI$1HL2]CL$9?D4;#L4T)9IY9*95,D!$)A!,GF6AFUI_7F0)0 %9Ei
MHT #FF!3P!@/65/F:%(1ZAH?0I 52F='M&Y#0"5W, <H4&^Q. -E,'()H'V#h
M4Y^H63)P=5-']ALHL ,[ (\)$![C&!2 A0+42 ;KIF!J%Q[W=(W9-P#U8B@Kg
M\9M8AD0)!GX&TA8H( =M^9;P>#S3,HZ"-D4ZND9M1'W?1P!&,&-8>H-CP*5+f
M.@!]0$/?AG$)8'=E4*9%ZILI1)=&YJ,-Q'T*=T1U-I9O>J1Q"D[7-Z1LAE#@e
MU9[O.5A<*I]JA!-I9$DEIGU!5QOW$IME,*4$<)JI*:ER6J88IWULBHV)=CS?d
M65-P8(/KIGV;.@ =*A@?&J)<,*)FT*HS, -%, 3J!%$V 2\;T1%S\21<( =<c
MX 9.>*(#<'"VB!$M\A<HH$F'IG#=:'7'PS"PLP9&IGTEP4"LY&MRTA'6>CAEb
M)"?=^4S@B677&A+32J1-&I58AIT$YZDG2@ '5Z7;=G;7]*W?614BP4"NMJ0$a
M$'!SR4!C\'UF6J;\"FU])[#T&JX%>TO":J<,9 <N.*#">GQ#1$#OR*['(X</z
M6ZH$ *T+ K"GVJD2FWQ^*J3Z2@80(@/).D?RL:%=:K)P@++M2*:?2@ N"[,Jy
MNQ9AV;(GF[)DL*4@H)3ZZGR'@VU5MZ0%8!PL(0<\ZVD:"P56\A(H( /"$T?<x
M.G@X2(M1>:#GIZ^6B0?BE[.:6J;J>3AE0*CPV9KSJ:C"01R?I7VIZ@:K*J*Qw
M6@2P2J+!F@#K1T,'9P0XZE8HL*%3.@!5RHU7.E)_>X-;^ZG#JG;P"@*XHSN\v
MDP50QQ1.IF[ZRK'26J9?>F%8NJ-K,:;+AWX)AG%O&[=U:P8FFJ+VR:+YZ:(/u
M>E(0:9YK09YO!+:)%JCJ= =F:ZBABZC[TJ*%M7[CI3SM91Y?0'S.AF0R.FR t
M: >#,8=S$ 9G@ )M, =GX)QFT$(@\(:'4U22\1N9F87K%Q "0GM= GI/TCASs
M4A*?"9FNR(V0FBOTT1C'(3$E(2ES 2#@RQ0(F"X)F2S*"142(B*]$8F20HF"r
M-%"7 1FFD2[TUT&517M3XRLA 1_<40:\1R;NL276H9 P-!!/,D'GVR6@>+M1q
MV$ EY;XI +$>U5U$%%*#4TD?ED;VV29Q41*?)8HP5(K*:K4B@ 6KR 5'D(ROp
M&(NS6(OB=CBXF&D7L<-+.V\X",3V)@1'$ 1#, 3!*L/(VL.+ETE#:W@P#(F;o
M(BD!3!FS5<8H@!_Z@01,0 1KH7IDP'J'<W@3G,;YP3U4L!;ZZQ+:B\9J_+AYn
M/!+?R\>95L=J3 7'" 5Z/,B3*B=^G!]40 7<L\B%0L@@@)(MP@9V? 21_ 15m
M0,G@RV<)=G"<" >>&(#,>EYN-Q7%Q$!R"(!U1QFRUT -1*%[.1$,Y)"WC(L*l
M!S!,P 2K[+Y8)H=_T0:QK*C?QLIPQ4"4.126&4R8:63*.Z/LFEL.')!E/!LVk
MUF&5M!2?!5KG*F?=)2E$MWQEZAQJ K&@Y<($Q$ ?!0?5AG#*[ 8KW*/OG*EXj
M]WR:7%%$M!9JO!_]D6^ >4OH$A2:.<I!E#]P$',6A]!+4;W7>W_/*9VO%D34i
M!!XOC%W)ER47+3*WXE N&FE=,A%H9(!P ,]*-+(!N4--,ELBO8TE;84P9&3Fh
M@64A8-+PC)X*S=!8MM,-%DE8*&9FAF9RQ4#Q8@9$W1GD%E1#-5(Z%U1H,$5/g
M?511-=7W$U6Y2($"1F"BG&@'9QXT>G!X<X4*1[**2\PP!+':9[S(VZ-Y2Z=<f
M.4TC+ <B.Q,/&\(=+0?45WU_6J:O_(FE.@!L37KJ_-;$4@=? &1"1L(^/7TXe
M" (@,((5I!%JM"U0( <==+>M&,>"A@+-\SS1H\@@< 5&\ 57\ 12L 18D 57d
M@ 0Z%UJ+56>A-5JR75MG<%ME6MN)A09=34/3'+C?\;Q_$;W3"]'8&]@'9]P2c
MO07(QD!6_ 72$TKP.#@;XA>V@G6"Y$0PL49:I:_=X6]GTY[4$1,HD#W;XP2\b
M8=NQ/=OI;5O;\:D%P"^[K;%'G5@8@51*A0(PP +[+;4L4#PL -L!;MNC%5JWa
M95P:N]EMYAIRA@;MK5@/3ML&_N"\;60LU1[O$1T$DM=B45#.U$0[D2AZ;!K(z
MX2LI<AE&0A$)!@+:]\_\X1_9#"*1>,\)5$$[4CV)-EO'<\]&G<1DH-8$H,]Ry
M74U=TL](F!\ 304)'L[WW'3F#-_H+* )'MY" U$-3M\;@=0(56EK$%7ZS=\Lx
MX-\ +N#L/>$(WJ4*CA6=0=[=$=AJFGX)UJG$EG&&C.1L[,8: CMQK$D]*M8Rw
M'40C"]Q4Z']7B&DJD743H:1X]]:D+(^F#(#.YJ?-:K$#\-<!*"=6\K5N;7!Jv
MAP*VC)!8ILL0F0+7Y*>^#,R43LQTJ+V9GH";CG?-S%.7^8L"K;!L)C1S &>%u
MFF;KYM.M#K%0295/>$OD*Y@/V[Z!]2&870?$0@<I\!#U4Q@K(H1WH>?X"8AXt
M\!(75DR0!"NJ 2Y],<,M]7LE47O>,L @0.W38>V"%B7/E$9W,!$TL 1]D4(5s
M]-Z8)^,I).T40;]M,>X.M1S(7DP6(Q(B\!QGP.P<(P*+RB$4M ;X;A!IX )Er
M(!9C$A*TR2$%/1&X*B]O81],@2DFPR X./""X>G+WNPI( ([\X$3LO%#&"\=q
M@2I!40>>\;3U^<#IG2VD"(3X*$D$\M%,HAHN8!W7/B71U/)^J.%X<DX)O2W\p
M=" (=4,./\/%G!YR\B/DTX,AKR9\\26-5+W\DBW6;3(HPX8TLIUDR$OJ@2ZYo
M,92KHI"#PSJ>0S:I4S7;1/=L$Z!EX!R+(3?L93?XH05%  +\XS],\#V:!@+[n
M%^WW-:IB8'5"$ 134 10$ 1#3)V.YM HW+[U')RQA=G2_)A9B48(5\\I( 8Om
M:<IDP/=BAO!8IOH^P/J-)V904$4HT+XH?P:DOH^W],$*T// D?N/J>R\S_D(l
MY_D0FY&"<IX2F6"37_F7G_DJ4)V<_\+H*099&?V6C_F%'T%.F^WN"06E- 3<k
M/_U%D&Y,0&]8"P/ +&9-L.5!$6=BX,])0/CK)ONF3 =\;Z ,F0*.#U()IO_'j
MV_\,I)4'VKYBIO_'VW@]+?H)5M?A#[7%0P/JOQ;U3SWOGV!0B?W##AH(0D=!i
M0T,N1$]#     $X%  !.%;68\#J@"   #$*.!!DR1 >(,"#$A!FSYHR<-W7<h
MD $!YZ'#,&T.CAE39LZ<-W+R@# #$D23-$ZH-%!P14X:.G3*N$DHLHC+,2"Dg
MN  QI<U+-"!0E+GI8HY/.FB U+GSQL68,"E6KJ2")LT<BA;E8 1AE>M,I&4Hf
MUA'#)@U.,F_:A$GC9B>1-R#N_.1*)RZ:,'7S0(R;A@V;G4&NAEDY!J*<F'/Re
ML*#(IDR8.6'9CF%3ATQ8L)!!H!US52[2@WXU6Z7C4DP=.FG>N)FS.(Q$$&?2d
MV"FSLN(;.$-!C)%3ALQ+$'3@@CUX&@W(G4[>Q 1^MVX8-D@AG@&:Y,1LX!UCc
M3OSM>N+=V6Y.T%E),N)$UR)-GV$-0F\=$&I%S@X9MTQH,VPGVB9;IDWGN>[)b
M05$8AYE5!QL$K@09'77 L0,(=63F&5!/G99:6U(I(((89RPTA@A<"0;"'&FTa
M 4=C()0%$XH>=O01?4CA!9ML'1TTDV.)Q16&2&^8 8(<$;G!UAE3/3$%5F]<z
MY)]7S(6E$$,.0?1:CP>!<$0138SHXH4[36%?&6.@YL89S'75HD<@Y5';;5<Uy
M6"5^*$+66)@EB?$&'@]&>%E55]F)!W!PR0EF7</9IF1[>]WAVG@*!/=C1#M1x
MU=4<QATXD0IN**="0F$A=&66AFK5QH/N@<9;&&2(]%VG5F*)I)(K >F&D&,Nw
M5E*I3%D:7EUB=,H?H+"50:AP:(35ADSO*21'"*UF*5=H9:UAGYH*]%K8L2 8v
M)T=I;(A4F!MFZ+F=CV#Q=I"Y=##UJJA7J;7&D,WJ]AP;<RA8XH%TN%8&1'-Tu
MZT*&3[C!$:)U6!>6H&'VUN2Z6^&ZZ&(OG1!:KX^V!0(5</'&H!Q?O;'2'<V5t
M,5^\H3:<Z%!A13CD8A6Y"$(53A#Q1*3%7FPDPQD]RX9NJHE9!VV-9AP1D\,]s
MV=!#YI&ZUU,S:5P'Q\#^)H9(873(EI9SBDFF"$(L=+249*P$A1QG@&C&0QD-r
M9]D<:VC$$9KT'>M&'3LEX6.I9>#QV]EI+6QTE.;5EA5&BY4;ELZ<5BF&2V7Xq
M"$<8>MHXT7!P'OPEG0+ZR5=H8<"!6X(*5+W63!\Q)V.I3&,]J(W*%2M@R6D+p
MC:$"*R&11$I3Z+!2<LO%F-=>JP(;_$DI,1D@<8Z2Q(9E<K3VFJSQJC7WO(JMo
MY*B[>W;%E!QMHY"&"V7L]&FVCP$[1[Z'00@'A!+E1CP5BV5:EQUFE='"?'- n
M]:\"=IN$$A4AVI5&4',=D,F$8"-"7UT^M1CW2&QG9Q"6C4 S%%[=24<<&])*m
M2D4EI'3%# MQSFN&<Z87B01Q\O/*^>9%%SF987\K.<.!MI(ZBD&/;QGAD(<6l
M8QI"N:X,)Q#1?AJ3L[E$$";P,AJ@5O*I!\D001GAC5K@<)7AP$QF()"62!SUk
MD6-Y<$P@L ]D=I*%I;F&?6B!S0S;$,25:-%.!)K(%.$ KPGQQ'9&H,(*D% $j
M)D!A,:4;CJ*V")>\_:8K4\"C'OGHQY&\P2]ON$-O5C*UE\5L9A?+6'9 $I8Gi
M8B2(\.D<'<?4F6+-I%2\:8%,8B*@EQ0N#[@!P1">D!(I/($)*V "#!4PA;1Th
M4BMPJ IG0 "2-*Q28;"["EH$&,(Z4"^4THI7$(IPI*?XA3W=L5ZQ,E/#L-P0g
M;0GIT$9V,K8W\&=)! I+8SR2HC1(JUO >L-&GL:5NT$D5D,KU.!BQS,3-08Uf
MJJF;/=^C*#<,"SCTR1MN7"(WK2TFC2]1D"]1@RT#GA(B)S!7"M$"+_1\D4PEe
B@@-(\F50YTV$8BU['&\FYS$%\,9.RJDG N\"1C=]:G\: #!7d
 c
end