Hans Hagen wrote:
At 12:11 PM 11/3/2002 -0500, Gregory D. Collins wrote:
Hello ntg-context,
I have a copy of texexec.pl dated 2002/05/04 which has a bug in it. I use tetex under cygwin in Windows, and was having a lot of trouble getting texexec working. The problem is as follows. There is a line in texexec.pl:
my $dosish = ($Config{'osname'} =~ /^(ms)?dos|^os\/2|^(ms|cyg)win/i);
The purpose of this is to find out if we are in a "dosish" environment. This is used later:
unless ($dosish) ~ { if ($TeXFormatFlag == "&") { $TeXFormatFlag = "\\&" } ~ if ($MpFormatFlag == "&") { $MpFormatFlag = "\\&" } }
This breaks badly (and very confusingly) later when we do system() calls if $SHELL=bash. I don't know if the rest of cygwin's environment qualifies as "dosish" or not for the rest of the program, although mine works fine if it's turned off.
Is this a known bug?
So you suggest to remove the cyg from the regexp?
The part which is causing the problem is the system() call, when we need
to escape the "&" under sh, but not when using the Windows shell. So
perhaps the following:
# If $SHELL contains "sh", it is probably UNIXish
my $escapeshell = ($ENV{"SHELL"} =~ m/sh/i);
...
# Then later, instead of:
unless ($dosish)
{ if ($TeXFormatFlag == "&") { $TeXFormatFlag = "\\&" }
if ($MpFormatFlag == "&") { $MpFormatFlag = "\\&" } }
# We do:
unless ($dosish && !$escapeshell)
{ if ($TeXFormatFlag == "&") { $TeXFormatFlag = "\\&" }
if ($MpFormatFlag == "&") { $MpFormatFlag = "\\&" } }
What do you think?
--
Gregory D. Collins