On Wed, Mar 13, 2002 at 11:55:48AM +0000, Edward Avis wrote: > Okay. The patch you suggested, quoting spaces with backslashes, does > not work because Win2k's command shell doesn't grok backslashes. Here's > my patch: > > - --- MM_Win32.pm Tue Sep 4 14:24:00 2001 > +++ MM_Win32.pm.new Wed Mar 13 11:45:30 2002 > @@ -160,8 +160,26 @@ > print "Checking $abs\n" if ($trace >= 2); > next unless $self->maybe_command($abs); > print "Executing $abs\n" if ($trace >= 2); > - - $val = `$abs -e "require $ver;" 2>&1`; > - - if ($? == 0) { > + > + my $tmp_out = 'out.tmp'; > + if ($trace < 2) { > + # Hide stdout and stderr. > + open(OLDOUT, '>&STDOUT') or die "cannot dup stdout: $!"; > + open(OLDERR, '>&STDERR') or die "cannot dup stderr: $!"; > + open(STDOUT, ">$tmp_out") > + or die "cannot write to $tmp_out: $!"; > + open(STDERR, ">$tmp_out") > + or die "cannot write to $tmp_out: $!"; > + } > + my $ok = not system($abs, '-e', "require $ver;"); > + if ($trace < 2) { > + open(STDERR, '>&OLDERR') > + or die "cannot dup stderr back again: $!"; > + open(STDOUT, '>&OLDOUT') > + or die "cannot dup stdout back again: $!"; > + } > + > + if ($ok) { > print "Using PERL=$abs\n" if $trace; > return $abs; > } elsif ($trace >= 2) { > > > But I think this code would better be shared among several MM_x files > rather than just for Win32. Perhaps MM_Unix could hold it and MM_Win32 > could inherit it somehow? I don't know how all this stuff works.
Neither do I sometimes. :) > The present MM_Unix implementation is slightly different to Win32's > but I think this code should work for both. I'll have a crack at unifying them somewhat. More likely is I'll have a crack at collecting together all the `` and system() calls into one safe function that basically does the above. Instead of a tmp file I'll probably switch that to File::Spec->devnull or try something with tying. I think it was tying that got me in trouble last time. Thanks for that patch, it'll be in 5.51_01. > >>It might be a good idea to make the code taint-clean, > > >Yes. After that we'll be unifying Gravity and Electromagnetism and > >then World Peace will be brought about just after supper. :) > > I just suggest it as a debugging aid, not as a new feature to implement. > You can turn on -T, fix a couple of things that break and thus hopefully > a couple of quoting bugs, and then turn -T off again to continue with > normal development. After world peace is achieved, of course, the code > can be distributed with -T set. Even better, I can use the new -t or the ok -UTw. Or you can! :) Sorry to keep punting this back, but its very low on the priority list. Do you have any thoughts on the PREFIX/LIBification behavior maybe? http:[EMAIL PROTECTED]/msg00157.html -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One pleasing symmetry the paste goes in at one end comes out the other. -- mjd