[Python-Dev] RE: [Python-checkins] CVS: python/dist/src/PC WinMain.c,1.3,1.4

Bill Tutt billtut@microsoft.com
Sat, 8 Jul 2000 13:03:17 -0700


Ah, yes, the dreaded popen bug. 

A) If you really want to fix the problem everywhere then create a
patch to popen for windows only that uses the code from the
win32popen.cpp code. It includes code to handle Windows 9x as
well. Not to mention the fact that this patch doesn't fix os.popen()
in the following case:

C/C++/whatever language binary that is a GUI app (windows subsystem)
that embeds Python. (aka PythonWin.exe)

The win32popen.cpp code works for all platforms and all cases, so a
big -1 on this patch since it isn't doesn't handle all cases for the
platforms the patch does work on.

B)	The -1's below really should be: INVALID_HANDLE_VALUE

!     if (_get_osfhandle(0) == -1)
!         dup2(null_file, 0);
! 
!     if (_get_osfhandle(1) == -1)
!         dup2(null_file, 1);
! 
!     if (_get_osfhandle(2) == -1)
!         dup2(null_file, 2);
! 
!     close(null_file);
! 
!     return Py_Main(__argc, __argv);
  }

Wishing he could throttle the person who wrote popen in the CRT,
Bill

p.s.
Just to clarify:
Win32popen.cpp is all of the real work.
Win32popenWin9x.* is the Win9x helper .exe so that you can use popen.


 <<win32popen.cpp>>  <<win32popenWin9x.cpp>>  <<win32popenWin9x.rc>> 

begin 600 win32popen.cpp
M(VEN8VQU9&4@(G=I;F1O=W,N:"(-"@T*+R\@0&1O8PT*#0HC:6YC;'5D92`B
M4'ET:&]N+F@B#0HC:6YC;'5D92`B;6%L;&]C+F@B#0HC:6YC;'5D92`B:6\N
M:"(-"B-I;F-L=61E(")F8VYT;"YH(@T*(VEN8VQU9&4@(E!Y5VEN5'EP97,N
M:"(-"@T*(V1E9FEN92!$;&Q%>'!O<G0@("!?9&5C;'-P96,H9&QL97AP;W)T
M*0T*#0IE>'1E<FX@8F]O;"!G7V95<VEN9U=I;CEX.PT*97AT97)N($-(05(@
M9U]S>DUO9'5L95!A=&A;73L)#0H-"B\O(%1H97-E('1E;&P@7U!Y4&]P96XH
M*2!W971H97(@=&\@<F5T=7)N(#$L(#(L(&]R(#,@9FEL92!O8FIE8W1S+@T*
M(V1E9FEN92!03U!%3E\Q(#$-"B-D969I;F4@4$]014Y?,B`R#0HC9&5F:6YE
M(%!/4$5.7S,@,PT*(V1E9FEN92!03U!%3E\T(#0-"@T*<W1A=&EC(%!Y3V)J
M96-T("I?4'E0;W!E;BAC:&%R("HL(&EN="P@:6YT*3L-"@T*+R\@0'!Y;65T
M:&]D('!I<&5\=VEN,S)P:7!E?'!O<&5N?%!O<&5N('1H870@=V]R:W,@9G)O
M;2!A($=522X-"B\O($!R9&5S8R!4:&4@<F5S=6QT(&]F('1H:7,@9G5N8W1I
M;VX@:7,@82!P:7!E("AF:6QE*2!C;VYN96-T960@=&\@=&AE#0HO+R!P<F]C
M97-S97,@<W1D:6X@;W(@<W1D;W5T+"!D97!E;F1I;F<@;VX@=&AE(')E<75E
M<W1E9"!M;V1E+@T*4'E/8FIE8W0@*E!Y4&]P96XH4'E/8FIE8W0@*G-E;&8L
M(%!Y3V)J96-T("IA<F=S*0T*>PT*"6-H87(@*F-M9'-T<FEN9SL-"@EC:&%R
M("IM;V1E/2)R(CL-"@EI;G0@8G5F<VEZ93TM,3L-"@E0>4]B:F5C="`J9BPJ
M<SL-"@EI;G0@=&T],#L-"B`@#0H):68@*"%0>4%R9U]087)S951U<&QE*&%R
M9W,L(")S?',Z<&]P96XB+`T*"0D)"0D)("`F8VUD<W1R:6YG+"`@("`O+R!`
M<'EP87)M('-T<FEN9WQC;61S=')I;F=\?%1H92!C;61S=')I;F<@=&\@<&%S
M<R!T;R!T:&4@<VAE;&P-"@D)"0D)"2`@)FUO9&4I*2`@("`@("`@+R\@0'!Y
M<&%R;2!S=')I;F=\;6]D97Q\16ET:&5R("=R)R!O<B`G=R<-"@D)<F5T=7)N
M($Y53$P[#0H-"@ES(#T@4'E4=7!L95].97<H,"D[#0H@("`@("`-"@EI9B`H
M*FUO9&4@/3T@)W(G*0T*"0ET;2`](%]/7U)$3TY,63L-"@EE;'-E(&EF("@J
M;6]D92`A/2`G=R<I#0H)>PT*"0E0>45R<E]39713=')I;F<H4'E%>&-?5F%L
M=65%<G)O<BP@(FUO9&4@;75S="!B92`G<B<@;W(@)W<G(BD[#0H)"7)E='5R
M;B!.54Q,.PT*"7T-"@EE;'-E#0H)"71M(#T@7T]?5U)/3DQ9.PT*("`@("`-
M"@EI9B`H*BAM;V1E*S$I(#T]("=T)RD-"@D)9B`](%]0>5!O<&5N*&-M9'-T
M<FEN9RP@=&T@?"!?3U]415A4("P@4$]014Y?,2D[#0H)96QS92!I9B`H*BAM
M;V1E*S$I(#T]("=B)RD-"@D)9B`](%]0>5!O<&5N*&-M9'-T<FEN9RP@=&T@
M?"!?3U]"24Y!4ED@+"!03U!%3E\Q*3L-"@EE;'-E#0H)"68@/2!?4'E0;W!E
M;BAC;61S=')I;F<L('1M('P@7T]?5$585"P@4$]014Y?,2D[#0H@(`T*"7)E
M='5R;B!F.PT*("`-"GT-"@T*+R\@0'!Y;65T:&]D("AP:7!E+"!P:7!E*7QW
M:6XS,G!I<&5\<&]P96XR?%9A<FEA=&EO;B!O;B`\;VT@=VEN,S)P:7!E+G!O
M<&5N/@T*+R\@0')D97-C(%1H92!R97-U;'0@;V8@=&AI<R!F=6YC=&EO;B!I
M<R!A('!I<&4@*&9I;&4I(&-O;FYE8W1E9"!T;R!T:&4-"B\O('!R;V-E<W-E
M<R!S=&1I;BP@86YD(&$@<&EP92!C;VYN96-T960@=&\@=&AE('!R;V-E<W-E
M<R!S=&1O=70N#0I0>4]B:F5C="`J4'E0;W!E;C(H4'E/8FIE8W0@*G-E;&8L
M(%!Y3V)J96-T("`J87)G<RD-"GL-"@EC:&%R("IC;61S=')I;F<[#0H)8VAA
M<B`J;6]D93TB="([#0H)4'E/8FIE8W0@*F8[#0H):6YT('1M/3`[#0H@(`T*
M"6EF("@A4'E!<F=?4&%R<V54=7!L92AA<F=S+"`B<WQS.G!O<&5N,B(L#0H)
M"0D)"0D@("9C;61S=')I;F<L("`@("\O($!P>7!A<FT@<W1R:6YG?&-M9'-T
M<FEN9WQ\5&AE(&-M9'-T<FEN9R!T;R!P87-S('1O('1H92!S:&5L;`T*"0D)
M"0D)("`F;6]D92DI("`@("`@("`O+R!`<'EP87)M('-T<FEN9WQM;V1E?'Q%
M:71H97(@)W0G(&]R("=B)PT*"0ER971U<FX@3E5,3#L-"B`@#0H):68@*"IM
M;V1E(#T]("=T)RD-"@D)=&T@/2!?3U]415A4.PT*"65L<V4@:68@*"IM;V1E
M("$]("=B)RD-"B`@("![#0H)"5!Y17)R7U-E=%-T<FEN9RA0>45X8U]686QU
M945R<F]R+"`B;6]D92!M=7-T(&)E("=T)R!O<B`G8B<B*3L-"@D)<F5T=7)N
M($Y53$P[#0H@("`@?0T*"65L<V4-"@D)=&T@/2!?3U]"24Y!4ED[#0H@(`T*
M"68@/2!?4'E0;W!E;BAC;61S=')I;F<L('1M("P@4$]014Y?,BD[#0H@(`T*
M"7)E='5R;B!F.PT*?0T*#0HO+R!`<'EM971H;V0@*'!I<&4L('!I<&4L('!I
M<&4I?'=I;C,R<&EP97QP;W!E;C-\5F%R:6%T:6]N(&]N(#QO;2!W:6XS,G!I
M<&4N<&]P96X^#0HO+R!`<F1E<V,@5&AE(')E<W5L="!O9B!T:&ES(&9U;F-T
M:6]N(&ES(#,@<&EP97,@+2!T:&4@<')O8V5S<V5S('-T9&EN+"!S=&1O=70@
M86YD('-T9&5R<@T*4'E/8FIE8W0@*E!Y4&]P96XS*%!Y3V)J96-T("IS96QF
M+"!0>4]B:F5C="`@*F%R9W,I#0I[#0H)8VAA<B`J8VUD<W1R:6YG.PT*"6-H
M87(@*FUO9&4](G0B.PT*"5!Y3V)J96-T("IF.PT*"6EN="!T;3TP.PT*("`-
M"@EI9B`H(5!Y07)G7U!A<G-E5'5P;&4H87)G<RP@(G-\<SI0;W!E;C,B+`T*
M"0D)"0D)("`F8VUD<W1R:6YG+"`@("`O+R!`<'EP87)M('-T<FEN9WQC;61S
M=')I;F=\?%1H92!C;61S=')I;F<@=&\@<&%S<R!T;R!T:&4@<VAE;&P-"@D)
M"0D)"2`@)FUO9&4I*2`@("`@("`@+R\@0'!Y<&%R;2!S=')I;F=\;6]D97Q\
M16ET:&5R("=T)R!O<B`G8B<-"@D)<F5T=7)N($Y53$P[#0H@(`T*"6EF("@J
M;6]D92`]/2`G="<I#0H)"71M(#T@7T]?5$585#L-"@EE;'-E(&EF("@J;6]D
M92`A/2`G8B<I#0H@("`@>PT*"0E0>45R<E]39713=')I;F<H4'E%>&-?5F%L
M=65%<G)O<BP@(FUO9&4@;75S="!B92`G="<@;W(@)V(G(BD[#0H)"7)E='5R
M;B!.54Q,.PT*("`@('T-"@EE;'-E#0H)"71M(#T@7T]?0DE.05)9.PT*("`-
M"@EF(#T@7U!Y4&]P96XH8VUD<W1R:6YG+"!T;2`L(%!/4$5.7S,I.PT*("`-
M"@ER971U<FX@9CL-"GT-"@T*+R\@0'!Y;65T:&]D("AP:7!E+"!P:7!E*7QW
M:6XS,G!I<&5\<&]P96XT?%9A<FEA=&EO;B!O;B`\;VT@=VEN,S)P:7!E+G!O
M<&5N/@T*+R\@0')D97-C(%1H92!R97-U;'0@;V8@=&AI<R!F=6YC=&EO;B!I
M<R`R('!I<&5S("T@=&AE('!R;V-E<W-E<R!S=&1I;BP@#0HO+R!A;F0@<W1D
M;W5T*W-T9&5R<B!C;VUB:6YE9"!A<R!A('-I;F=L92!P:7!E+@T*4'E/8FIE
M8W0@*E!Y4&]P96XT*%!Y3V)J96-T("IS96QF+"!0>4]B:F5C="`@*F%R9W,I
M#0I[#0H)8VAA<B`J8VUD<W1R:6YG.PT*"6-H87(@*FUO9&4](G0B.PT*"5!Y
M3V)J96-T("IF.PT*"6EN="!T;3TP.PT*("`-"@EI9B`H(5!Y07)G7U!A<G-E
M5'5P;&4H87)G<RP@(G-\<SIP;W!E;C0B+`T*"0D)"0D)("`F8VUD<W1R:6YG
M+"`@("`O+R!`<'EP87)M('-T<FEN9WQC;61S=')I;F=\?%1H92!C;61S=')I
M;F<@=&\@<&%S<R!T;R!T:&4@<VAE;&P-"@D)"0D)"2`@)FUO9&4I*2`@("`@
M("`@+R\@0'!Y<&%R;2!S=')I;F=\;6]D97Q\16ET:&5R("=T)R!O<B`G8B<-
M"@D)<F5T=7)N($Y53$P[#0H@(`T*"6EF("@J;6]D92`]/2`G="<I#0H)"71M
M(#T@7T]?5$585#L-"@EE;'-E(&EF("@J;6]D92`A/2`G8B<I#0H@("`@>PT*
M"0E0>45R<E]39713=')I;F<H4'E%>&-?5F%L=65%<G)O<BP@(FUO9&4@;75S
M="!B92`G="<@;W(@)V(G(BD[#0H)"7)E='5R;B!.54Q,.PT*("`@('T-"@EE
M;'-E#0H)"71M(#T@7T]?0DE.05)9.PT*("`-"@EF(#T@7U!Y4&]P96XH8VUD
M<W1R:6YG+"!T;2`L(%!/4$5.7S0I.PT*("`-"@ER971U<FX@9CL-"GT-"@D)
M"0D)"0D)"0D)"0T*<W1A=&EC(&EN="!?4'E0;W!E;D-R96%T95!R;V-E<W,H
M8VAA<B`J8VUD<W1R:6YG+`T*"0D)"2!(04Y$3$4@:%-T9&EN+`T*"0D)"2!(
M04Y$3$4@:%-T9&]U="P-"@D)"0D@2$%.1$Q%(&A3=&1E<G(I#0I[#0H)4%)/
M0T534U])3D9/4DU!5$E/3B!P:5!R;V-);F9O.PT*"5-405)455!)3D9/('-I
M4W1A<G1);F9O.PT*"6-H87(@*G,Q+"IS,BP@*G,S/2(@+V,@(CL-"@EC;VYS
M="!C:&%R("IS>D-O;G-O;&53<&%W;B`](")W:6XS,G!O<&5N5VEN.7@N97AE
M(%PB(CL-"@EI;G0@:3L-"@EI;G0@>#L-"@T*"6EF("AI(#T@1V5T16YV:7)O
M;FUE;G1687)I86)L92@B0T]-4U!%0R(L3E5,3"PP*2D-"B`@("![#0H)"7,Q
M(#T@*&-H87(@*BE?86QL;V-A*&DI.PT*"0EI9B`H(2AX(#T@1V5T16YV:7)O
M;FUE;G1687)I86)L92@B0T]-4U!%0R(L(',Q+"!I*2DI#0H)"0ER971U<FX@
M>#L-"@D):68@*"%G7V95<VEN9U=I;CEX*0T*"0E[#0H)"0EX(#T@:2`K('-T
M<FQE;BAS,RD@*R!S=')L96XH8VUD<W1R:6YG*2`K(#$[#0H)"0ES,B`]("AC
M:&%R("HI7V%L;&]C82AX*3L-"@D)"5IE<F]-96UO<GDH<S(L('@I.PT*"0D)
M<W!R:6YT9BAS,BP@(B5S)7,E<R(L(',Q+"!S,RP@8VUD<W1R:6YG*3L-"@D)
M?0T*"0EE;'-E#0H)"7L-"@D)"2\O#0H)"0DO+R!/:"!G86<L('=E)W)E(&]N
M(%=I;CEX+B!5<V4@=&AE('=O<FMA<F]U;F0@;&ES=&5D(&EN#0H)"0DO+R!+
M0CH@43$U,#DU-@T*"0D)+R\-"@D)"7@@/2!I("L@<W1R;&5N*',S*2`K('-T
M<FQE;BAC;61S=')I;F<I("L@,2`K('-T<FQE;BAG7W-Z36]D=6QE4&%T:"D@
M*R`-"@D)"0ES=')L96XH<WI#;VYS;VQE4W!A=VXI("L@,3L-"@D)"7,R(#T@
M*&-H87(@*BE?86QL;V-A*'@I.PT*"0D)6F5R;TUE;6]R>2AS,BP@>"D[#0H)
M"0ES<')I;G1F*`T*"0D)"7,R+`T*"0D)"2(E<R5S)7,E<R5S7"(B+`T*"0D)
M"6=?<WI-;V1U;&50871H+`T*"0D)"7-Z0V]N<V]L95-P87=N+`T*"0D)"7,Q
M+`T*"0D)"7,S+`T*"0D)"6-M9'-T<FEN9RD[#0H)"7T-"B`@("!]#0H)+R\@
M0V]U;&0@8F4@86X@96QS92!H97)E('1O('1R>2!C;60N97AE("\@8V]M;6%N
M9"YC;VT@:6X@=&AE('!A=&@-"@DO+R!.;W<@=V4G;&P@:G5S="!E<G)O<B!O
M=70N+@T*"65L<V4-"@D)<F5T=7)N("TQ.PT*("`-"@E:97)O365M;W)Y*"`F
M<VE3=&%R=$EN9F\L('-I>F5O9BA35$%25%5024Y&3RDI.PT*"7-I4W1A<G1)
M;F9O+F-B(#T@<VEZ96]F*%-405)455!)3D9/*3L-"@ES:5-T87)T26YF;RYD
M=T9L86=S(#T@4U1!4E1&7U5315-41$A!3D1,15,@?"!35$%25$9?55-%4TA/
M5U=)3D1/5SL-"@ES:5-T87)T26YF;RYH4W1D26YP=70@/2!H4W1D:6X[#0H)
M<VE3=&%R=$EN9F\N:%-T9$]U='!U="`](&A3=&1O=70[#0H)<VE3=&%R=$EN
M9F\N:%-T9$5R<F]R(#T@:%-T9&5R<CL-"@ES:5-T87)T26YF;RYW4VAO=U=I
M;F1O=R`](%-77TA)1$4[#0H):68@*"!#<F5A=&50<F]C97-S*$Y53$PL#0H)
M"0D)"2`@(',R+`T*"0D)"0D@("!.54Q,+`T*"0D)"0D@("!.54Q,+`T*"0D)
M"0D@("!44E5%+`T*"0D)"0D@("!#4D5!5$5?3D577T-/3E-/3$4L#0H)"0D)
M"2`@($Y53$PL#0H)"0D)"2`@($Y53$PL#0H)"0D)"2`@("9S:5-T87)T26YF
M;RP-"@D)"0D)("`@)G!I4')O8TEN9F\I("D@>PT*"0DO+R!#;&]S92!T:&4@
M:&%N9&QE<R!N;W<@<V\@86YY;VYE('=A:71I;F<@:7,@=V]K96XN#0H)"4-L
M;W-E2&%N9&QE*'!I4')O8TEN9F\N:%!R;V-E<W,I.PT*"0E#;&]S94AA;F1L
M92AP:5!R;V-);F9O+FA4:')E860I.PT*"0ER971U<FX@5%)513L-"@E]#0H)
M<F5T=7)N($9!3%-%.PT*?0T*#0H-"B\O(%1H92!F;VQL;W=I;F<@8V]D92!I
M<R!B87-E9"!O9F8@;V8@2T(Z(%$Q.3`S-3$-"G-T871I8R!0>4]B:F5C="`J
M7U!Y4&]P96XH8VAA<B`J8VUD<W1R:6YG+"!I;G0@;6]D92P@:6YT(&XI#0I[
M#0H)2$%.1$Q%(&A#:&EL9%-T9&EN4F0L(&A#:&EL9%-T9&EN5W(L(&A#:&EL
M9%-T9&]U=%)D+"!H0VAI;&13=&1O=717<BP-"@D):$-H:6QD4W1D97)R4F0L
M(&A#:&EL9%-T9&5R<E=R+"!H0VAI;&13=&1I;E=R1'5P+"!H0VAI;&13=&1O
M=7129$1U<"P-"@D):$-H:6QD4W1D97)R4F1$=7`[("\O(&A#:&EL9%-T9&]U
M=%=R1'5P.PT*("`@("`@#0H)4T5#55))5%E?05144DE"551%4R!S84%T='([
M#0H)0D]/3"!F4W5C8V5S<SL-"@EI;G0@9F0Q+"!F9#(L(&9D,SL-"@E&24Q%
M("IF,2P@*F8R+"`J9C,[#0H)4'E/8FIE8W0@*F8[#0H-"@ES84%T='(N;DQE
M;F=T:"`]('-I>F5O9BA314-54DE465]!5%1224)55$53*3L-"@ES84%T='(N
M8DEN:&5R:71(86YD;&4@/2!44E5%.PT*"7-A071T<BYL<%-E8W5R:71Y1&5S
M8W)I<'1O<B`]($Y53$P[#0H-"@EI9B`H(4-R96%T95!I<&4H)FA#:&EL9%-T
M9&EN4F0L("9H0VAI;&13=&1I;E=R+"`F<V%!='1R+"`P*2D-"@D)<F5T=7)N
M(%!Y5VEN7U-E=$%0245R<F]R*")#<F5A=&50:7!E(BD[#0H-"@T*"2\O($-R
M96%T92!N97<@;W5T<'5T(')E860@:&%N9&QE(&%N9"!T:&4@:6YP=70@=W)I
M=&4@:&%N9&QE+B!3970-"@DO+R!T:&4@:6YH97)I=&%N8V4@<')O<&5R=&EE
M<R!T;R!&04Q312X@3W1H97)W:7-E+"!T:&4@8VAI;&0@:6YH97)I=',-"@DO
M+R!T:&4@=&AE<V4@:&%N9&QE<SL@<F5S=6QT:6YG(&EN(&YO;BUC;&]S96%B
M;&4@:&%N9&QE<R!T;R!T:&4@<&EP97,-"@DO+R!B96EN9R!C<F5A=&5D+@T*
M"693=6-C97-S(#T@1'5P;&EC871E2&%N9&QE*"!'971#=7)R96YT4')O8V5S
M<R@I+"!H0VAI;&13=&1I;E=R+`T*"0D)"0D)"0E'971#=7)R96YT4')O8V5S
M<R@I+"`F:$-H:6QD4W1D:6Y7<D1U<"P@,"P-"@D)"0D)"0D)1D%,4T4L#0H)
M"0D)"0D)"4154$Q)0T%415]304U%7T%#0T534RD[#0H):68@*"%F4W5C8V5S
M<RD-"@D)<F5T=7)N(%!Y5VEN7U-E=$%0245R<F]R*")$=7!L:6-A=&5(86YD
M;&4B*3L-"@T*"2\O($-L;W-E('1H92!I;FAE<FET86)L92!V97)S:6]N(&]F
M($-H:6QD4W1D:6X-"@DO+R!T:&%T('=E)W)E('5S:6YG+@T*"4-L;W-E2&%N
M9&QE*&A#:&EL9%-T9&EN5W(I.PT*#0H):68@*"%#<F5A=&50:7!E*"9H0VAI
M;&13=&1O=7129"P@)FA#:&EL9%-T9&]U=%=R+"`F<V%!='1R+"`P*2D-"@D)
M<F5T=7)N(%!Y5VEN7U-E=$%0245R<F]R*")#<F5A=&50:7!E(BD[#0H-"@EF
M4W5C8V5S<R`]($1U<&QI8V%T94AA;F1L92@@1V5T0W5R<F5N=%!R;V-E<W,H
M*2P@:$-H:6QD4W1D;W5T4F0L#0H)"0D)"0D)"4=E=$-U<G)E;G10<F]C97-S
M*"DL("9H0VAI;&13=&1O=7129$1U<"P@,"P-"@D)"0D)"0D)1D%,4T4L#0H)
M"0D)"0D)"4154$Q)0T%415]304U%7T%#0T534RD[#0H):68@*"%F4W5C8V5S
M<RD-"@D)<F5T=7)N(%!Y5VEN7U-E=$%0245R<F]R*")$=7!L:6-A=&5(86YD
M;&4B*3L-"@T*"2\O($-L;W-E('1H92!I;FAE<FET86)L92!V97)S:6]N(&]F
M($-H:6QD4W1D;W5T#0H)+R\@=&AA="!W92=R92!U<VEN9RX-"@E#;&]S94AA
M;F1L92AH0VAI;&13=&1O=7129"D[#0H-"@EI9B`H;B`A/2!03U!%3E\T*0T*
M"7L-"@D):68@*"%#<F5A=&50:7!E*"9H0VAI;&13=&1E<G)29"P@)FA#:&EL
M9%-T9&5R<E=R+"`F<V%!='1R+"`P*2D-"@D)"7)E='5R;B!0>5=I;E]3971!
M4$E%<G)O<B@B0W)E871E4&EP92(I.PT*"0EF4W5C8V5S<R`]($1U<&QI8V%T
M94AA;F1L92@@1V5T0W5R<F5N=%!R;V-E<W,H*2P@:$-H:6QD4W1D97)R4F0L
M#0H)"0D)"0D)"0E'971#=7)R96YT4')O8V5S<R@I+"`F:$-H:6QD4W1D97)R
M4F1$=7`L(#`L#0H)"0D)"0D)"0E&04Q312P-"@D)"0D)"0D)"4154$Q)0T%4
M15]304U%7T%#0T534RD[#0H)"6EF("@A9E-U8V-E<W,I#0H)"0ER971U<FX@
M4'E7:6Y?4V5T05!)17)R;W(H(D1U<&QI8V%T94AA;F1L92(I.PT*"0DO+R!#
M;&]S92!T:&4@:6YH97)I=&%B;&4@=F5R<VEO;B!O9B!#:&EL9%-T9$5R<B!T
M:&%T('=E)W)E('5S:6YG+@T*"0E#;&]S94AA;F1L92AH0VAI;&13=&1E<G)2
M9"D[#0H)?0T*("`@("`@#0H)<W=I=&-H("AN*0T*"7L-"@EC87-E(%!/4$5.
M7S$Z#0H)("`@('-W:71C:"`H;6]D92`F("A?3U]21$].3%D@?"!?3U]415A4
M('P@7T]?0DE.05)9('P@7T]?5U)/3DQ9*2D-"@D)>PT*"0EC87-E(%]/7U=2
M3TY,62!\(%]/7U1%6%0Z#0H)"0DO+R!#87-E(&9O<B!W<FET:6YG('1O(&-H
M:6QD(%-T9&EN(&EN('1E>'0@;6]D92X-"@D)"69D,2`](%]O<&5N7V]S9FAA
M;F1L92@H;&]N9REH0VAI;&13=&1I;E=R1'5P+"!M;V1E*3L-"@D)"68Q(#T@
M7V9D;W!E;BAF9#$L(")W(BD[#0H)"0EF(#T@4'E&:6QE7T9R;VU&:6QE*&8Q
M+"!C;61S=')I;F<L(")W(BP@9F-L;W-E*3L-"@D)"5!Y1FEL95]3971"=693
M:7IE*&8L(#`I.PT*"0D)+R\@5V4@9&]N)W0@8V%R92!A8F]U="!T:&5S92!P
M:7!E<R!A;GEM;W)E+"!S;R!C;&]S92!T:&5M+@T*"0D)0VQO<V5(86YD;&4H
M:$-H:6QD4W1D;W5T4F1$=7`I.PT*"0D)0VQO<V5(86YD;&4H:$-H:6QD4W1D
M97)R4F1$=7`I.PT*"0D)8G)E86L[#0H-"@D)8V%S92!?3U]21$].3%D@?"!?
M3U]415A4.@T*"0D)+R\@0V%S92!F;W(@<F5A9&EN9R!F<F]M(&-H:6QD(%-T
M9&]U="!I;B!T97AT(&UO9&4N#0H)"0EF9#$@/2!?;W!E;E]O<V9H86YD;&4H
M*&QO;F<I:$-H:6QD4W1D;W5T4F1$=7`L(&UO9&4I.PT*"0D)9C$@/2!?9F1O
M<&5N*&9D,2P@(G(B*3L-"@D)"68@/2!0>49I;&5?1G)O;49I;&4H9C$L(&-M
M9'-T<FEN9RP@(G(B+"!F8VQO<V4I.PT*"0D)4'E&:6QE7U-E=$)U9E-I>F4H
M9BP@,"D[#0H)"0DO+R!792!D;VXG="!C87)E(&%B;W5T('1H97-E('!I<&5S
M(&%N>6UO<F4L('-O(&-L;W-E('1H96TN#0H)"0E#;&]S94AA;F1L92AH0VAI
M;&13=&1I;E=R1'5P*3L-"@D)"4-L;W-E2&%N9&QE*&A#:&EL9%-T9&5R<E)D
M1'5P*3L-"@D)"6)R96%K.PT*#0H)"6-A<V4@7T]?4D1/3DQ9('P@7T]?0DE.
M05)9.@T*"0D)+R\@0V%S92!F;W(@<F5A9&EN:6<@9G)O;2!C:&EL9"!3=&1O
M=70@:6X@8FEN87)Y(&UO9&4N#0H)"0EF9#$@/2!?;W!E;E]O<V9H86YD;&4H
M*&QO;F<I:$-H:6QD4W1D;W5T4F1$=7`L(&UO9&4I.PT*"0D)9C$@/2!?9F1O
M<&5N*&9D,2P@(G)B(BD[#0H)"0EF(#T@4'E&:6QE7T9R;VU&:6QE*&8Q+"!C
M;61S=')I;F<L(")R8B(L(&9C;&]S92D[#0H)"0E0>49I;&5?4V5T0G5F4VEZ
M92AF+"`P*3L-"@D)"2\O(%=E(&1O;B=T(&-A<F4@86)O=70@=&AE<V4@<&EP
M97,@86YY;6]R92P@<V\@8VQO<V4@=&AE;2X-"@D)"4-L;W-E2&%N9&QE*&A#
M:&EL9%-T9&EN5W)$=7`I.PT*"0D)0VQO<V5(86YD;&4H:$-H:6QD4W1D97)R
M4F1$=7`I.PT*"0D)8G)E86L[#0H-"@D)8V%S92!?3U]74D].3%D@?"!?3U]"
M24Y!4EDZ#0H)"0DO+R!#87-E(&9O<B!W<FET:6YG('1O(&-H:6QD(%-T9&EN
M(&EN(&)I;F%R>2!M;V1E+@T*"0D)9F0Q(#T@7V]P96Y?;W-F:&%N9&QE*"AL
M;VYG*6A#:&EL9%-T9&EN5W)$=7`L(&UO9&4I.PT*"0D)9C$@/2!?9F1O<&5N
M*&9D,2P@(G=B(BD[#0H)"0EF(#T@4'E&:6QE7T9R;VU&:6QE*&8Q+"!C;61S
M=')I;F<L(")W8B(L(&9C;&]S92D[#0H)"0E0>49I;&5?4V5T0G5F4VEZ92AF
M+"`P*3L-"@D)"2\O(%=E(&1O;B=T(&-A<F4@86)O=70@=&AE<V4@<&EP97,@
M86YY;6]R92P@<V\@8VQO<V4@=&AE;2X-"@D)"4-L;W-E2&%N9&QE*&A#:&EL
M9%-T9&]U=%)D1'5P*3L-"@D)"4-L;W-E2&%N9&QE*&A#:&EL9%-T9&5R<E)D
M1'5P*3L-"@D)"6)R96%K.PT*"0E]#0H)"6)R96%K.PT*"0T*"6-A<V4@4$]0
M14Y?,CH-"@EC87-E(%!/4$5.7S0Z#0H)>PT*"2`@("!C:&%R("IM,2P@*FTR
M.PT*"2`@("!0>4]B:F5C="`J<#$L("IP,CL-"@D@("`@#0H)("`@(&EF("AM
M;V1E("8F(%]/7U1%6%0I#0H)"7L-"@D)"6TQ/2)R(CL-"@D)"6TR/2)W(CL-
M"@D)?0T*"2`@("!E;'-E#0H)"7L-"@D)"6TQ/2)R8B([#0H)"0EM,CTB=V(B
M.PT*"0E]#0H-"@D@("`@9F0Q(#T@7V]P96Y?;W-F:&%N9&QE*"AL;VYG*6A#
M:&EL9%-T9&EN5W)$=7`L(&UO9&4I.PT*"2`@("!F,2`](%]F9&]P96XH9F0Q
M+"!M,BD[#0H)("`@(&9D,B`](%]O<&5N7V]S9FAA;F1L92@H;&]N9REH0VAI
M;&13=&1O=7129$1U<"P@;6]D92D[#0H)("`@(&8R(#T@7V9D;W!E;BAF9#(L
M(&TQ*3L-"@D@("`@<#$@/2!0>49I;&5?1G)O;49I;&4H9C$L(&-M9'-T<FEN
M9RP@;3(L(&9C;&]S92D[#0H)"5!Y1FEL95]3971"=693:7IE*'`Q+"`P*3L-
M"@D@("`@<#(@/2!0>49I;&5?1G)O;49I;&4H9C(L(&-M9'-T<FEN9RP@;3$L
M(&9C;&]S92D[#0H)"5!Y1FEL95]3971"=693:7IE*'`R+"`P*3L-"@T*"2`@
M("!I9B`H;B`A/2`T*0T*"0D)0VQO<V5(86YD;&4H:$-H:6QD4W1D97)R4F1$
M=7`I.PT*#0H)("`@(&8@/2!0>5]"=6EL9%9A;'5E*")/3R(L<#$L<#(I.PT*
M"2`@("!B<F5A:SL-"@E]#0H)#0H)8V%S92!03U!%3E\S.@T*"7L-"@D@("`@
M8VAA<B`J;3$L("IM,CL-"@D@("`@4'E/8FIE8W0@*G`Q+"`J<#(L("IP,SL-
M"@D@("`@#0H)("`@(&EF("AM;V1E("8F(%]/7U1%6%0I#0H)"7L-"@D)"6TQ
M/2)R(CL-"@D)"6TR/2)W(CL-"@D)?0T*"2`@("!E;'-E#0H)"7L-"@D)"6TQ
M/2)R8B([#0H)"0EM,CTB=V(B.PT*"0E]#0H-"@D@("`@9F0Q(#T@7V]P96Y?
M;W-F:&%N9&QE*"AL;VYG*6A#:&EL9%-T9&EN5W)$=7`L(&UO9&4I.PT*"2`@
M("!F,2`](%]F9&]P96XH9F0Q+"!M,BD[#0H)"69D,B`](%]O<&5N7V]S9FAA
M;F1L92@H;&]N9REH0VAI;&13=&1O=7129$1U<"P@;6]D92D[#0H)("`@(&8R
M(#T@7V9D;W!E;BAF9#(L(&TQ*3L-"@D)9F0S(#T@7V]P96Y?;W-F:&%N9&QE
M*"AL;VYG*6A#:&EL9%-T9&5R<E)D1'5P+"!M;V1E*3L-"@D@("`@9C,@/2!?
M9F1O<&5N*&9D,RP@;3$I.PT*"2`@("!P,2`](%!Y1FEL95]&<F]M1FEL92AF
M,2P@8VUD<W1R:6YG+"!M,BP@9F-L;W-E*3L-"@D@("`@<#(@/2!0>49I;&5?
M1G)O;49I;&4H9C(L(&-M9'-T<FEN9RP@;3$L(&9C;&]S92D[#0H)("`@('`S
M(#T@4'E&:6QE7T9R;VU&:6QE*&8S+"!C;61S=')I;F<L(&TQ+"!F8VQO<V4I
M.PT*"0E0>49I;&5?4V5T0G5F4VEZ92AP,2P@,"D[#0H)"5!Y1FEL95]3971"
M=693:7IE*'`R+"`P*3L-"@D)4'E&:6QE7U-E=$)U9E-I>F4H<#,L(#`I.PT*
M"2`@("!F(#T@4'E?0G5I;&1686QU92@B3T]/(BQP,2QP,BQP,RD[#0H)("`@
M(&)R96%K.PT*"7T-"@E]#0H-"@EI9B`H;B`]/2!03U!%3E\T*0T*"7L-"@D)
M:68@*"%?4'E0;W!E;D-R96%T95!R;V-E<W,H8VUD<W1R:6YG+`T*"0D)"0D)
M"0D@("!H0VAI;&13=&1I;E)D+`T*"0D)"0D)"0D@("!H0VAI;&13=&1O=717
M<BP-"@D)"0D)"0D)("`@:$-H:6QD4W1D;W5T5W(I*0T*"0D)<F5T=7)N(%!Y
M5VEN7U-E=$%0245R<F]R*")#<F5A=&50<F]C97-S(BD[#0H)?0T*"65L<V4-
M"@E[#0H)"6EF("@A7U!Y4&]P96Y#<F5A=&50<F]C97-S*&-M9'-T<FEN9RP-
M"@D)"0D)"0D)("`@:$-H:6QD4W1D:6Y29"P-"@D)"0D)"0D)("`@:$-H:6QD
M4W1D;W5T5W(L#0H)"0D)"0D)"2`@(&A#:&EL9%-T9&5R<E=R*2D-"@D)"7)E
M='5R;B!0>5=I;E]3971!4$E%<G)O<B@B0W)E871E4')O8V5S<R(I.PT*"7T-
M"@T*("`@("\O($-H:6QD(&ES(&QA=6YC:&5D+B!#;&]S92!T:&4@<&%R96YT
M<R!C;W!Y(&]F('1H;W-E('!I<&4@:&%N9&QE<PT*"2\O('1H870@;VYL>2!T
M:&4@8VAI;&0@<VAO=6QD(&AA=F4@;W!E;BX-"@DO+R!9;W4@;F5E9"!T;R!M
M86ME('-U<F4@=&AA="!N;R!H86YD;&5S('1O('1H92!W<FET92!E;F0@;V8@
M=&AE#0H)+R\@;W5T<'5T('!I<&4@87)E(&UA:6YT86EN960@:6X@=&AI<R!P
M<F]C97-S(&]R(&5L<V4@=&AE('!I<&4@=VEL;`T*"2\O(&YO="!C;&]S92!W
M:&5N('1H92!C:&EL9"!P<F]C97-S(&5X:71S(&%N9"!T:&4@4F5A9$9I;&4@
M=VEL;"!H86YG+@T*"6EF("@A0VQO<V5(86YD;&4H:$-H:6QD4W1D:6Y29"DI
M#0H)"7)E='5R;B!0>5=I;E]3971!4$E%<G)O<B@B0VQO<V5(86YD;&4B*3L-
M"B`@("`@(`T*"6EF("@A0VQO<V5(86YD;&4H:$-H:6QD4W1D;W5T5W(I*0T*
M"0ER971U<FX@4'E7:6Y?4V5T05!)17)R;W(H(D-L;W-E2&%N9&QE(BD[#0H@
M("`@("`-"@EI9B`H*&X@(3T@-"D@)B8@*"%#;&]S94AA;F1L92AH0VAI;&13
M=&1E<G)7<BDI*0T*"0ER971U<FX@4'E7:6Y?4V5T05!)17)R;W(H(D-L;W-E
>2&%N9&QE(BD[#0H-"@ER971U<FX@9CL-"GT-"@T*
`
end

begin 600 win32popenWin9x.cpp
M+R\@0V]N<U-P87=N+F-P<"`Z($1E9FEN97,@=&AE(&5N=')Y('!O:6YT(&9O
M<B!T:&4@8V]N<V]L92!A<'!L:6-A=&EO;BX-"B\O#0H-"B\J*RL-"B`@("`@
M("`@($UO9'5L92!.86UE.@T*#0H@("`@("`@("`@("!W:6XS,G!O<&5N5VEN
M.7@N8W!P#0H-"B`@("`@("`@($1E<V-R:7!T:6]N.@T*#0H@("`@("`@("`@
M("!397)V97,@87,@86X@:6YT97)M961I871E('-T=6(@5VEN,S(@8V]N<V]L
M92!A<'!L:6-A=&EO;B!T;PT*("`@("`@("`@("`@879O:60@82!H86YG:6YG
M('!I<&4@=VAE;B!R961I<F5C=&EN9R`Q-BUB:70@8V]N<V]L92!B87-E9`T*
M("`@("`@("`@("`@<')O9W)A;7,@*&EN8VQU9&EN9R!-4RU$3U,@8V]N<V]L
M92!B87-E9"!P<F]G<F%M<R!A;F0@8F%T8V@-"B`@("`@("`@("`@(&9I;&5S
M*2!O;B!7:6YD;W<@.34@86YD(%=I;F1O=W,@.3@N#0H@("`@("`@("`@("!4
M:&ES('!R;V=R86T@:7,@=&\@8F4@;&%U;F-H960@=VET:"!R961I<F5C=&5D
M('-T86YD87)D#0H@("`@("`@("`@("!H86YD;&5S+B!)="!W:6QL(&QA=6YC
M:"!T:&4@8V]M;6%N9"!L:6YE('-P96-I9FEE9"`Q-BUB:70-"B`@("`@("`@
M("`@(&-O;G-O;&4@8F%S960@87!P;&EC871I;VX@:6X@=&AE('-A;64@8V]N
M<V]L92P@9F]R=V%R9&EN9PT*("`@("`@("`@("`@:70G<R!O=VX@<F5D:7)E
M8W1E9"!S=&%N9&%R9"!H86YD;&5S('1O('1H92`Q-BUB:70@8VAI;&0N#0H-
M"@T*"0E!2T$@<V]L=71I;VX@=&\@=&AE('!R;V)L96T@9&5S8W)I8F5D(&EN
M($M".B!1,34P.34V+@T*+2TJ+R`@("`-"B-I;F-L=61E(#QW:6YD;W=S+F@^
M#0H-"F-O;G-T(&-H87(@*G5S86=E(#T@7`T*(E1H:7,@<')O9W)A;2!I<R!U
M<V5D(&)Y('1H92!0>71H;VX@=VEN,S)P:7!E(&UO9'5L95QN(@T*(G1O('=O
M<FL@87)O=6YD(&$@;&EM:71I871I;VX@:6X@5VEN9&]W<R`Y>"X@($ET(&ES
M7&XB#0HB;F]T(&1E<VEG;F5D('1O(&)E(&5X96-U=&5D('-T86YD+6%L;VYE
M(CL-"@T*:6YT(&UA:6X@*&EN="!A<F=C+"!C:&%R("IA<F=V6UTI#0I[#0H@
M("!"3T],("`@("`@("`@("`@("`@(&)2970@/2!&04Q313L-"B`@(%-405)4
M55!)3D9/("`@("`@("`@<VD@("`]('LP?3L-"B`@(%!23T-%4U-?24Y&3U)-
M051)3TX@<&D@("`]('LP?3L-"@T*("`@:68@*&%R9V,@(3T@,BD@>PT*"2`@
M($UE<W-A9V5";W@H3E5,3"P@=7-A9V4L(&%R9W9;,%TL($U"7T]+*3L-"@D@
M("!R971U<FX@+3$[#0H@("!]#0H@("`O+R!-86ME(&-H:6QD('!R;V-E<W,@
M=7-E('1H:7,@87!P)W,@<W1A;F1A<F0@9FEL97,N#0H@("!S:2YC8B`]('-I
M>F5O9BAS:2D[#0H@("!S:2YD=T9L86=S("`@(#T@4U1!4E1&7U5315-41$A!
M3D1,15,[#0H@("!S:2YH4W1D26YP=70@(#T@1V5T4W1D2&%N9&QE("A35$1?
M24Y0551?2$%.1$Q%*3L-"B`@('-I+FA3=&1/=71P=70@/2!'9713=&1(86YD
M;&4@*%-41%]/5510551?2$%.1$Q%*3L-"B`@('-I+FA3=&1%<G)O<B`@/2!'
M9713=&1(86YD;&4@*%-41%]%4E)/4E](04Y$3$4I.PT*#0H@("!B4F5T(#T@
M0W)E871E4')O8V5S<R`H3E5,3"P@87)G=ELQ72P-"B`@("`@("`@("`@("`@
M("`@("`@("`@("!.54Q,+"!.54Q,+`T*("`@("`@("`@("`@("`@("`@("`@
M("`@(%12544L(#`L#0H@("`@("`@("`@("`@("`@("`@("`@("`@3E5,3"P@
M3E5,3"P-"B`@("`@("`@("`@("`@("`@("`@("`@("`F<VDL("9P:0T*("`@
M("`@("`@("`@("`@("`@("`@("`@("D[#0H@("!I9B`H8E)E="D-"B`@('L-
M"B`@("`@(%=A:71&;W)3:6YG;&5/8FIE8W0@*'!I+FA0<F]C97-S+"!)3D9)
M3DE412D[#0H@("`@("!#;&]S94AA;F1L92`H<&DN:%!R;V-E<W,I.PT*("`@
M("`@0VQO<V5(86YD;&4@*'!I+FA4:')E860I.PT*"2`@<F5T=7)N(#`[#0H@
7("!]#0H@("!R971U<FX@+3$[#0I]#0H=
`
end

begin 600 win32popenWin9x.rc
M4U1224Y'5$%"3$4@1$E30T%21$%"3$4@#0I"14=)3@T*("`@(#(P,#`@(D1U
M;6UY(B`O+R!.965D960@=&\@=F5R<VEO;B!B<F%N9&EN9R!W;W)K<R$-"D5.
#1`T*
`
end