MS-DOS patches to perl. Apply this patch to the standard perl source, version 4, patch level 19, using "patch -p." Do this in the root directory of the perl source distribution. You can cat all these patches together and pipe the output to patch -p. Len Reed Holos Software, Inc. ..!gatech!holos0!lbr holos0!lbr@gatech.edu -------------------------------------- *** msdos/doscpp.pl.old Sun Feb 23 13:25:18 1992 --- msdos/doscpp.pl Tue Oct 9 17:47:26 1990 *************** *** 0 **** --- 1,74 ---- + + # This is run by MS-DOS perl.exe to handle the -P option. + # The Unix version uses /bin/sed, but MS-DOS doesn't because: + # 1) The system may not have a sed clone. + # 2) Some DOS compilers can't be run as a pure filter. + # 3) A user can alter this script to work with his compiler + # and not have to touch the source code for perl. + + # This version is Microsoft C 6.0 specific: change as required for + # your compiler. + + # Invoked by perl as + # perl -s this_script [input_file] [-x] + + # Input file is STDIN if not listed explicitly. + # Output is to STDOUT. + # -x is given if the perl script was started by -x. + + if (!defined($perllib = $ENV{'PERLLIB'})) { + $perllib = "/usr/local/lib/perl"; + } + + # Create a temp file name. It must be in the same directory as the + # script so that #includes work properly. + + $tdir = $ARGV[0]; + + $tdir = "" unless ( $tdir =~ s,(.*[\\/:]).*,$1, ); + + srand; + do { + $cppinput = sprintf("${tdir}pcpp%04d.c", rand 10000); + } until ( ! -e $cppinput ); + + $SIG{'SIGINT'} = 'handler'; + open(CPPINPUT, ">$cppinput") || die "Could not open temp file $cppinput"; + + while (<>) { + next unless /^#/; + $x = 0; + next if/^#\s*include\s/; + next if/^#\s*define\s/; + next if/^#\s*undef\s/; + next if/^#\s*if\s/; + next if/^#\s*ifdef\s/; + next if/^#\s*ifndef\s/; + next if/^#\s*else\s/; + next if/^#\s*elif\s/; + next if/^#\s*endif\s/; + next if/^#\s*pragma\s/; + next if/^#\s*error\s/; + $_ = "\n"; + } + continue { + # Work around MSC 6.0's desire to truncate lines at // + # Won't work for // that are #included, though. + while ( s,//,/FIX_MSC_SLASH_BUG/,g ) {} + s,//.*,,; + print CPPINPUT unless $x; + } + + close(CPPINPUT); + + $result = system "cl -EP -I$perllib -DFIX_MSC_SLASH_BUG= $cppinput"; + + unlink $cppinput; + + exit $result/256; + + sub handler + { + close(CPPINPUT); + unlink $cppinput; + }