summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1997-03-22 15:34:25 +1200
committerChip Salzenberg <chip@atlantic.net>1997-03-22 15:34:25 +1200
commit3fe9a6f19eb206c685bd7389e54e2838fdfd04b7 (patch)
tree94845bcda5f58956e6c9ccef24340d1b5c93d182
parent9a2c4ce3a0904191a580ec822adeb696331d31ce (diff)
downloadperl-3fe9a6f19eb206c685bd7389e54e2838fdfd04b7.tar.gz
[inseparable changes from match from perl-5.003_94 to perl-5.003_95]
CORE LANGUAGE CHANGES Subject: Don't compile scalar mods of aggregates, like C<@a =~ s/a/b/> From: Chip Salzenberg <chip@perl.com> Files: op.c t/op/misc.t Subject: Warn about undef magic values just like non-magic From: Chip Salzenberg <chip@perl.com> Files: ext/Opcode/Safe.pm sv.c t/lib/db-btree.t t/lib/db-hash.t t/lib/db-recno.t t/pragma/locale.t CORE PORTABILITY Subject: Win32 update (five patches) From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: MANIFEST README.win32 doio.c dosish.h pp_sys.c lib/ExtUtils/Command.pm t/comp/multiline.t t/op/magic.t t/op/mkdir.t t/op/runlevel.t t/op/stat.t t/op/write.t win32/Makefile win32/config.H win32/config.w32 win32/win32.c win32/win32.h win32/win32aux.c win32/*.mak win32/VC-2.0/*.mak DOCUMENTATION Subject: INSTALL-1.8 to INSTALL-1.9 updates Date: Tue, 25 Mar 1997 13:52:53 -0500 (EST) From: Andy Dougherty <doughera@fractal.phys.lafayette.edu> Files: INSTALL Msg-ID: Pine.SOL.3.95q.970325135138.3374A-100000@fractal.lafayette.e (applied based on p5p patch as commit 9b1ae96a0b4301a9588f62b3175bc0312302f4b9) Subject: Document possible problems with -Mdiagnostics after upgrade From: Chip Salzenberg <chip@perl.com> Files: INSTALL Subject: Mention perldelta in INSTALL From: Chip Salzenberg <chip@perl.com> Files: INSTALL Subject: Describe pod format at top of INSTALL From: Chip Salzenberg <chip@perl.com> Files: INSTALL Subject: Document C</a *b/x> fix From: Chip Salzenberg <chip@perl.com> Files: pod/perldelta.pod Subject: pods for subroutine argument autovivication Date: Mon, 24 Mar 1997 07:25:21 +0000 From: "M.J.T. Guy" <mjtg@cus.cam.ac.uk> Files: pod/perldelta.pod pod/perlsub.pod Msg-ID: E0w9489-0005YT-00@ursa.cus.cam.ac.uk (applied based on p5p patch as commit db8878faa51a8a1541a40745a8613adb5db155e4) Subject: Missing item in perldiag Date: Sun, 23 Mar 1997 09:24:09 +0000 From: "M.J.T. Guy" <mjtg@cus.cam.ac.uk> Files: pod/perldiag.pod Msg-ID: E0w8jVZ-0005va-00@ursa.cus.cam.ac.uk (applied based on p5p patch as commit c00a529017138505fcbe538b74c7884abe1d18e1) Subject: Pod problems & fixes Date: Mon, 24 Mar 1997 21:31:51 +0100 (MET) From: Hallvard B Furuseth <h.b.furuseth@usit.uio.no> Files: INSTALL lib/Term/Complete.pm lib/subs.pm pod/perlcall.pod pod/perldata.pod pod/perldiag.pod pod/perlembed.pod pod/perlguts.pod pod/perlmod.pod pod/perlop.pod pod/perlpod.pod pod/pod2html.PL Msg-ID: 199703242031.VAA14997@bombur2.uio.no (applied based on p5p patch as commit 55a864fe4cea1a0586891b83d359ba71e0972da5) Subject: FAQ update From: Nathan Torkington <gnat@prometheus.frii.com> Files: pod/perlfaq*.pod OTHER CORE CHANGES Subject: Improve 'prototype mismatch' warning From: Chip Salzenberg <chip@perl.com> Files: global.sym op.c pod/perldiag.pod proto.h sv.c t/comp/redef.t
-rw-r--r--Changes166
-rw-r--r--INSTALL63
-rw-r--r--MANIFEST8
-rw-r--r--README.win3230
-rw-r--r--doio.c6
-rw-r--r--dosish.h36
-rw-r--r--embed.h1
-rw-r--r--ext/Opcode/Safe.pm21
-rw-r--r--global.sym3
-rw-r--r--lib/ExtUtils/Command.pm66
-rw-r--r--lib/Term/Complete.pm1
-rw-r--r--lib/subs.pm1
-rw-r--r--op.c101
-rw-r--r--patchlevel.h2
-rw-r--r--plan9/buildinfo2
-rw-r--r--pod/perlcall.pod4
-rw-r--r--pod/perldata.pod2
-rw-r--r--pod/perldelta.pod37
-rw-r--r--pod/perldiag.pod16
-rw-r--r--pod/perlembed.pod2
-rw-r--r--pod/perlfaq.pod19
-rw-r--r--pod/perlfaq1.pod2
-rw-r--r--pod/perlfaq2.pod31
-rw-r--r--pod/perlfaq3.pod2
-rw-r--r--pod/perlfaq4.pod9
-rw-r--r--pod/perlfaq5.pod2
-rw-r--r--pod/perlfaq6.pod24
-rw-r--r--pod/perlfaq7.pod4
-rw-r--r--pod/perlfaq8.pod17
-rw-r--r--pod/perlfaq9.pod19
-rw-r--r--pod/perlguts.pod6
-rw-r--r--pod/perlmod.pod2
-rw-r--r--pod/perlop.pod6
-rw-r--r--pod/perlpod.pod10
-rw-r--r--pod/perlsub.pod14
-rw-r--r--pod/perltoc.pod108
-rw-r--r--pod/pod2html.PL2
-rw-r--r--pp_sys.c6
-rw-r--r--proto.h3
-rw-r--r--sv.c23
-rwxr-xr-xt/comp/multiline.t2
-rwxr-xr-xt/comp/redef.t16
-rwxr-xr-xt/lib/db-btree.t19
-rwxr-xr-xt/lib/db-hash.t14
-rwxr-xr-xt/lib/db-recno.t14
-rwxr-xr-xt/op/magic.t2
-rwxr-xr-xt/op/misc.t3
-rwxr-xr-xt/op/mkdir.t2
-rwxr-xr-xt/op/runlevel.t5
-rwxr-xr-xt/op/stat.t18
-rwxr-xr-xt/op/write.t8
-rwxr-xr-xt/pragma/locale.t1
-rw-r--r--vms/config.vms2
-rw-r--r--vms/descrip.mms2
-rw-r--r--win32/Makefile18
-rw-r--r--win32/SDBM_File.mak2
-rw-r--r--win32/Socket.mak8
-rw-r--r--win32/VC-2.0/Fcntl.mak247
-rw-r--r--win32/VC-2.0/IO.mak245
-rw-r--r--win32/VC-2.0/Opcode.mak247
-rw-r--r--win32/VC-2.0/SDBM_File.mak8
-rw-r--r--win32/VC-2.0/Socket.mak14
-rw-r--r--win32/VC-2.0/libperl.mak6
-rw-r--r--win32/VC-2.0/miniperl.mak10
-rw-r--r--win32/VC-2.0/modules.mak24
-rw-r--r--win32/VC-2.0/perl.mak6
-rw-r--r--win32/VC-2.0/perldll.mak14
-rw-r--r--win32/VC-2.0/perlglob.mak201
-rw-r--r--win32/config.H2
-rw-r--r--win32/config.w322
-rw-r--r--win32/libperl.mak2
-rw-r--r--win32/miniperl.mak4
-rw-r--r--win32/modules.mak20
-rw-r--r--win32/perldll.mak8
-rw-r--r--win32/win32.c18
-rw-r--r--win32/win32.h7
-rw-r--r--win32/win32aux.c3
77 files changed, 1751 insertions, 350 deletions
diff --git a/Changes b/Changes
index b7f1ad5f70..62c1b45217 100644
--- a/Changes
+++ b/Changes
@@ -9,6 +9,172 @@ releases.)
----------------
+Version 5.003_95
+----------------
+
+ CORE LANGUAGE CHANGES
+
+ Title: "Don't compile scalar mods of aggregates, like C<@a =~ s/a/b/>"
+ From: Chip Salzenberg
+ Files: op.c t/op/misc.t
+
+ Title: "Automatically flush on C< $| = 1 >"
+ From: Chip Salzenberg
+ Files: mg.c
+
+ Title: "Refine modulus ("%") per suggestion of Tim Goodwin"
+ From: Chip Salzenberg
+ Files: pp.c
+
+ Title: "If C<perl -a>, do equivalent of C<use vars '@F'>"
+ From: Chip Salzenberg
+ Files: toke.c
+
+ Title: "Warn about undef magic values just like non-magic"
+ From: Chip Salzenberg
+ Files: ext/Opcode/Safe.pm sv.c t/lib/db-btree.t t/lib/db-hash.t
+ t/lib/db-recno.t t/pragma/locale.t
+
+ CORE PORTABILITY
+
+ Title: "Remove redundant patch to hints/bsdos.sh"
+ From: Shigeya Suzuki <shigeya@foretune.co.jp>
+ Msg-ID: <19970322222244K.shigeya@foretune.co.jp>
+ Date: Sat, 22 Mar 1997 22:22:44 +0900
+ Files: hints/bsdos.sh
+
+ Title: "Another MachTen Patch"
+ From: Tom Phoenix <rootbeer@teleport.com>
+ Msg-ID: <Pine.GSO.3.96.970324152150.20610P-100000@kelly.teleport.com>
+ Date: Mon, 24 Mar 1997 15:26:48 -0800 (PST)
+ Files: hints/machten_2.sh
+
+ Title: "Win32 update (five patches)"
+ From: Gurusamy Sarathy <gsar@engin.umich.edu> and
+ nick@ni-s.u-net.com (Nick Ing-Simmons)
+ Files: MANIFEST README.win32 doio.c dosish.h pp_sys.c
+ lib/ExtUtils/Command.pm t/comp/multiline.t t/op/magic.t
+ t/op/mkdir.t t/op/runlevel.t t/op/stat.t t/op/write.t
+ win32/Makefile win32/config.H win32/config.w32 win32/win32.c
+ win32/win32.h win32/win32aux.c win32/*.mak win32/VC-2.0/*.mak
+
+ OTHER CORE CHANGES
+
+ Title: "Fix botch with G_NOARGS; PUSHMARK *is* required"
+ From: Chip Salzenberg
+ Files: perl.c
+
+ Title: "Improve 'prototype mismatch' warning"
+ From: Chip Salzenberg
+ Files: global.sym op.c pod/perldiag.pod proto.h sv.c t/comp/redef.t
+
+ Title: "In perlio, fix vprintf() definition and define vfprintf()"
+ From: Chip Salzenberg
+ Files: perlio.c
+
+ BUILD PROCESS
+
+ (no changes)
+
+ LIBRARY AND EXTENSIONS
+
+ Title: "Fix C<require> in Getopt::Long to work with 5.003"
+ From: Chip Salzenberg
+ Files: lib/Getopt/Long.pm
+
+ Title: "Extraneous blank lines from Pod::Text"
+ From: Russ Allbery <rra@stanford.edu>
+ Msg-ID: <qumend4qq08.fsf@cyclone.stanford.edu>
+ Date: 25 Mar 1997 01:28:55 -0800
+ Files: lib/Pod/Text.pm
+
+ Title: "Exporting UNIVERSAL::can"
+ From: "M.J.T. Guy" <mjtg@cus.cam.ac.uk>
+ Msg-ID: <E0w9DwX-0000Zr-00@taurus.cus.cam.ac.uk>
+ Date: Mon, 24 Mar 1997 17:54:01 +0000
+ Files: lib/UNIVERSAL.pm
+
+ Title: "Term::Readline patch for AmigaOS"
+ From: "Norbert Pueschel" <pueschel@imsdd.meb.uni-bonn.de>
+ Msg-ID: <77724797@Armageddon.meb.uni-bonn.de>
+ Date: Sun, 23 Mar 1997 18:57:22 +0100
+ Files: lib/Term/ReadLine.pm
+
+ TESTS
+
+ Title: "Reduce memory footprint of complex.t"
+ From: Dominic Dunlop <domo@slipper.ip.lu>
+ Msg-ID: <v03020902af5d8e03c5ab@[194.51.248.84]>
+ Date: Tue, 25 Mar 1997 15:39:26 +0100
+ Files: t/lib/complex.t
+
+ UTILITIES
+
+ Title: "Improve pod2man diagnostic when NAME is invalid"
+ From: Chip Salzenberg
+ Files: pod/pod2man.PL
+
+ DOCUMENTATION
+
+ Title: "INSTALL-1.8 to INSTALL-1.9 updates"
+ From: Andy Dougherty <doughera@fractal.phys.lafayette.edu>
+ Msg-ID: <Pine.SOL.3.95q.970325135138.3374A-100000@fractal.lafayette.e
+ Date: Tue, 25 Mar 1997 13:52:53 -0500 (EST)
+ Files: INSTALL
+
+ Title: "Document possible problems with -Mdiagnostics after upgrade"
+ From: Chip Salzenberg
+ Files: INSTALL
+
+ Title: "Mention perldelta in INSTALL"
+ From: Chip Salzenberg
+ Files: INSTALL
+
+ Title: "Describe pod format at top of INSTALL"
+ From: Chip Salzenberg
+ Files: INSTALL
+
+ Title: "Document C</a *b/x> fix"
+ From: Chip Salzenberg
+ Files: pod/perldelta.pod
+
+ Title: "pods for subroutine argument autovivication"
+ From: "M.J.T. Guy" <mjtg@cus.cam.ac.uk>
+ Msg-ID: <E0w9489-0005YT-00@ursa.cus.cam.ac.uk>
+ Date: Mon, 24 Mar 1997 07:25:21 +0000
+ Files: pod/perldelta.pod pod/perlsub.pod
+
+ Title: "Missing item in perldiag"
+ From: "M.J.T. Guy" <mjtg@cus.cam.ac.uk>
+ Msg-ID: <E0w8jVZ-0005va-00@ursa.cus.cam.ac.uk>
+ Date: Sun, 23 Mar 1997 09:24:09 +0000
+ Files: pod/perldiag.pod
+
+ Title: "Mention and discourage use of term 'soft reference'"
+ From: Chip Salzenberg
+ Files: pod/perlref.pod
+
+ Title: "Pod problems & fixes"
+ From: Hallvard B Furuseth <h.b.furuseth@usit.uio.no>
+ Msg-ID: <199703242031.VAA14997@bombur2.uio.no>
+ Date: Mon, 24 Mar 1997 21:31:51 +0100 (MET)
+ Files: INSTALL lib/Term/Complete.pm lib/subs.pm pod/perlcall.pod
+ pod/perldata.pod pod/perldiag.pod pod/perlembed.pod
+ pod/perlguts.pod pod/perlmod.pod pod/perlop.pod
+ pod/perlpod.pod pod/pod2html.PL
+
+ Title: "DB_File documentation fix"
+ From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+ Msg-ID: <9703240854.AA08401@claudius.bfsec.bt.co.uk>
+ Date: Mon, 24 Mar 97 08:54:16 GMT
+ Files: ext/DB_File/DB_File.pm
+
+ Title: "FAQ update"
+ From: Nathan Torkington <gnat@prometheus.frii.com>
+ Files: pod/perlfaq*.pod
+
+
+----------------
Version 5.003_94
----------------
diff --git a/INSTALL b/INSTALL
index bc21709706..3376508cd2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,3 +1,15 @@
+This document is written in a format called Plain Old Documentation,
+or "pod" for short. For a description of the pod format, please read
+"pod/perlpod.pod".
+
+Here's the short version: lines that begin with "=" are special, like
+headings and list items; lines that begin with whitespace are to be
+read verbatim, perhaps because they are source code; B<> surrounds
+bold text, I<> surrounds italicized text, C<> surrounds verbatim text
+like source code, F<> surrounds a filename, L<> surrounds a link to
+another document (e.g. L<perlpod> means "pod/perlpod.pod"), and E<>
+represents a special character (E<lt> is "<" and E<gt> is ">").
+
=head1 NAME
Install - Build and Installation guide for perl5.
@@ -19,8 +31,7 @@ The basic steps to build and install perl5 on a Unix system are:
Each of these is explained in further detail below.
-For information on non-Unix systems, see the section on
-L<"Porting information"> below.
+For information on non-Unix systems, see L<"Porting information"> below.
=head1 DESCRIPTION
@@ -39,7 +50,7 @@ provide additional or different instructions for building Perl.
=head1 Space Requirements
The complete perl5 source tree takes up about 7 MB of disk space.
-The complete tree after completing C<make> takes roughly
+The complete tree after completing B<make> takes roughly
15 MB, though the actual total is likely to be quite
system-dependent. The installation directories need something
on the order of 7 MB, though again that value is system-dependent.
@@ -217,14 +228,14 @@ F</usr/local/lib/libgdbm.a>. Configure should figure all the
necessary steps out automatically.
Specifically, when Configure prompts you for flags for
-your C compiler, you should include C<-I/usr/local/include>.
+your C compiler, you should include B<-I/usr/local/include>.
When Configure prompts you for linker flags, you should include
-C<-L/usr/local/lib>.
+B<-L/usr/local/lib>.
If you are using dynamic loading, then when Configure prompts you for
linker flags for dynamic loading, you should again include
-C<-L/usr/local/lib>.
+B<-L/usr/local/lib>.
Again, this should all happen automatically. If you want to accept the
defaults for all the questions and have Configure print out only terse
@@ -421,6 +432,10 @@ answer "n" when B<Configure> asks if you want binary compatibility.
The default answer of "y" to maintain binary compatibility is probably
appropriate for almost everyone.
+In a related issue, old extensions may also be affected by the changes
+in the Perl language from 5.003 to 5.004. Please see L<perldelta> for
+a description of what's changed.
+
=head2 Selecting File IO mechanisms
Previous versions of perl used the standard IO mechanisms as defined in
@@ -662,16 +677,20 @@ negligible.
=head2 Building a debugging perl
You can run perl scripts under the perl debugger at any time with
-B<perl -d>. If, however, you want to debug perl itself,
+B<perl -d your_script>. If, however, you want to debug perl itself,
you probably want to do
sh Configure -Doptimize='-g'
This will do two things: First, it will force compilation to use
B<cc -g> so that you can use your system's debugger on the executable.
-Second, it will add a C<-DDEBUGGING> to your ccflags variable in
+Second, it will add a B<-DDEBUGGING> to your ccflags variable in
F<config.sh> so that you can use B<perl -D> to access perl's internal
-state.
+state. Note, however, that Configure will only add -DDEBUGGING by
+default if you are not reusing your old F<config.sh>. If you want to
+reuse your old F<config.sh>, then you can just edit it and change the
+optimize and ccflags variables by hand and then propagate your changes
+as shown in L<"Propagating your changes to config.sh"> below.
If you are using a shared libperl, see the warnings about multiple
versions of perl under L<Building a shared libperl.so Perl library>.
@@ -689,7 +708,7 @@ following:
sh Configure -Dccflags='-Drand=random -Dsrand=srandom'
-or by adding C<-Drand=random> and C<-Dsrandom=srandom> to your ccflags
+or by adding B<-Drand=random> and B<-Dsrandom=srandom> to your ccflags
at the appropriate Configure prompt. (You may also have to adjust
Configure's guess for 'randbits' as well.)
@@ -964,6 +983,13 @@ If Configure guessed wrong, it is likely that Configure guessed wrong
on a number of other common functions too. You are probably better off
re-running Configure without using nm extraction (see previous item).
+=item do_aspawn
+
+If you run into problems relating to do_aspawn or do_spawn, the
+problem is probably that Configure failed to detect your system's
+fork() function. Follow the procedure in the previous items
+on L<"vsprintf"> and L<"nm extraction">.
+
=item Optimizer
If you can't compile successfully, try turning off your compiler's
@@ -980,7 +1006,7 @@ with B<make depend; make>.
=item *
-If you still can't compile successfully, try adding a C<-DCRIPPLED_CC>
+If you still can't compile successfully, try adding a B<-DCRIPPLED_CC>
flag. (Just because you get no errors doesn't mean it compiled right!)
This simplifies some complicated expressions for compilers that get
indigestion easily.
@@ -1088,7 +1114,7 @@ comments that apply to your system.
B<Note>: One possible reason for errors is that some external programs
may be broken due to the combination of your environment and the way
-C<make test> exercises them. For example, this may happen if you have
+B<make test> exercises them. For example, this may happen if you have
one or more of these environment variables set: C<LC_ALL LC_CTYPE
LC_COLLATE LANG>. In some versions of UNIX, the non-English locales
are known to cause programs to exhibit mysterious errors.
@@ -1101,7 +1127,7 @@ If you have any of the above environment variables set, please try
LC_ALL=C;export LC_ALL
-for Bourne or Korn shell) from the command line and then retry C<make
+for Bourne or Korn shell) from the command line and then retry B<make
test>. If the tests then succeed, you may have a broken program that
is confusing the testing. Please run the troublesome test by hand as
shown above and see whether you can locate the program. Look for
@@ -1187,8 +1213,12 @@ directory. They are simply in F</usr/local/lib/perl5/$archname>. If
you will not be using 5.000 or 5.001, you may safely remove those
files.
-The standard library files in F</usr/local/lib/perl5>
-should be usable by all versions of perl5.
+The standard library files in F</usr/local/lib/perl5> should be usable
+by all versions of perl5. However, the L<diagnostics> module uses the
+F<pod/perldiag.pod> documentation file relative to this directory. So
+after you install 5.004, the C<use diagnostics> pragma and the
+B<splain> script may not correctly identify and explain any warnings
+or errors that Perl 5.004 would not have generated.
Most extensions will probably not need to be recompiled to use with a newer
version of perl. If you do run into problems, and you want to continue
@@ -1302,4 +1332,5 @@ from the original README by Larry Wall.
=head1 LAST MODIFIED
-$Id: INSTALL,v 1.8 1997/03/21 16:21:53 doughera Released $
+$Id: INSTALL,v 1.9 1997/03/25 18:50:19 doughera Released $
+Additional modification by Chip Salzenberg, 1997/03/25
diff --git a/MANIFEST b/MANIFEST
index 987d22c10a..a0585d5a9a 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -773,7 +773,6 @@ vms/vms.c VMS-specific C code for Perl core
vms/vms_yfix.pl convert Unix perly.[ch] to VMS perly_[ch].vms
vms/vmsish.h VMS-specific C header for Perl core
vms/writemain.pl Generate perlmain.c from miniperlmain.c+extensions
-win32/EXTERN.h Win32 port
win32/Fcntl.mak Win32 port
win32/IO.mak Win32 port
win32/Makefile Win32 port
@@ -781,6 +780,9 @@ win32/Opcode.mak Win32 port
win32/SDBM_File.mak Win32 port
win32/Socket.mak Win32 port
win32/TEST Win32 port
+win32/VC-2.0/Fcntl.mak Win32 port
+win32/VC-2.0/IO.mak Win32 port
+win32/VC-2.0/Opcode.mak Win32 port
win32/VC-2.0/SDBM_File.mak Win32 port
win32/VC-2.0/Socket.mak Win32 port
win32/VC-2.0/libperl.mak Win32 port
@@ -788,7 +790,7 @@ win32/VC-2.0/miniperl.mak Win32 port
win32/VC-2.0/modules.mak Win32 port
win32/VC-2.0/perl.mak Win32 port
win32/VC-2.0/perldll.mak Win32 port
-win32/VC-2.0/vc2.patch Win32 port
+win32/VC-2.0/perlglob.mak Win32 port
win32/autosplit.pl Win32 port
win32/bin/PL2BAT.BAT Win32 port
win32/bin/network.pl Win32 port
@@ -800,7 +802,6 @@ win32/config.H Win32 config header (suffix not ".h" for metaconfig)
win32/config.w32 Win32 port
win32/dl_win32.xs Win32 port
win32/dosish.diff Win32 port
-win32/dosish.h Win32 port
win32/genxsdef.pl Win32 port
win32/include/arpa/inet.h Win32 port
win32/include/dirent.h Win32 port
@@ -817,7 +818,6 @@ win32/perldll.mak Win32 port
win32/perlglob.c Win32 port
win32/perlglob.mak Win32 port
win32/perllib.c Win32 port
-win32/perlmain.c Win32 port
win32/runperl.c Win32 port
win32/splittree.pl Win32 port
win32/win32.c Win32 port
diff --git a/README.win32 b/README.win32
index 36953ec0da..82c9bacfab 100644
--- a/README.win32
+++ b/README.win32
@@ -13,12 +13,12 @@ These are instructions for building Perl under WindowsNT (versions
=head1 DESCRIPTION
-Before you start, you should glance through the README file found
+Before you start, you should glance through the README file
found in the top-level directory where the Perl distribution
was extracted. Make sure you read and understand the terms under
which this software is being distributed.
-Make sure you read the L<BUGS AND CAVEATS> section below for the
+Also make sure you read the L<BUGS AND CAVEATS> section below for the
known limitations of this port.
The INSTALL file in the perl top-level has much information that is
@@ -76,8 +76,8 @@ but it doesn't hurt to do so.
The "win32" directory contains *.mak files for use with the NMAKE that
comes with Visual C++ ver. 4.0 and above. If you wish to build perl
-using Visual C++ versions between 2.0 and 4.0, do the following three
-additional steps (these three steps are not required if you are
+using Visual C++ versions between 2.0 and 4.0, do the following two
+additional steps (these steps are not required if you are
using Visual C++ versions 4.0 and above):
=over 8
@@ -85,9 +85,7 @@ using Visual C++ versions 4.0 and above):
=item 1.
Overwrite the *.mak files in the win32 subdirectory with the versions
-in the win32\VC-2.0 directory. (The only difference in those makefiles
-is in how the $(INCLUDE) variable is handled--VC 2.0 NMAKE does not
-grok a path list in $(INCLUDE)).
+in the win32\VC-2.0 directory.
=item 2.
@@ -100,15 +98,6 @@ This must have only one directory (a list of directories will not work).
VCVARS32.BAT may put multiple locations in there, which is why this step
is required.
-=item 3.
-
-Apply the patch found in win32\VC-2.0\vc2.patch, like so:
-
- cd win32
- patch -p2 -N < VC-2.0\vc2.patch
-
-You may have to edit win32\win32.c manually if you don't have GNU patch.
-
=back
=item *
@@ -152,16 +141,17 @@ This should produce a summary very similar to the following:
Failed Test Status Wstat Total Fail Failed List of failed
------------------------------------------------------------------------------
io/fs.t 26 16 61.54% 1-5, 7-11, 16-18, 23-25
- io/tell.t 13 1 7.69% 10
lib/anydbm.t 12 1 8.33% 2
lib/findbin.t 1 1 100.00% 1
lib/sdbm.t 12 1 8.33% 2
+ op/magic.t 28 1 3.57% 16
op/mkdir.t 7 2 28.57% 3, 7
op/runlevel.t 8 1 12.50% 4
- op/stat.t 56 3 5.36% 3-4, 20
+ op/stat.t 56 3 5.36% 2-3, 20
op/taint.t 98 20 20.41% 1-6, 14, 16, 19-21, 24, 26, 35-3
pragma/locale.t 98 40 40.82% 1, 13-14, 21-27, 33, 39, 45-53,
- Failed 10/149 test scripts, 93.29% okay. 86/3506 subtests failed, 97.55% okay.
+ Failed 10/149 test scripts, 93.29% okay. 86/3871 subtests failed, 97.78% okay.
+
Check if any additional tests other than the ones shown here
failed. The standard testsuite will ultimately be modified so
@@ -173,7 +163,7 @@ This is still very much an experimental port, and should be considered
alpha quality software. You can expect changes in virtually all of
these areas: build process, installation structure, supported
utilities/modules, and supported perl functionality. Specifically,
-functionality that supports the Win32 environment may be ultimately
+functionality that supports the Win32 environment may ultimately
be supported as either core modules or extensions.
Many tests from the standard testsuite either fail or produce different
diff --git a/doio.c b/doio.c
index 8c4c2678e2..271de285fa 100644
--- a/doio.c
+++ b/doio.c
@@ -34,7 +34,11 @@
#endif
#ifdef I_UTIME
-#include <utime.h>
+# ifdef WIN32
+# include <sys/utime.h>
+# else
+# include <utime.h>
+# endif
#endif
#ifdef I_FCNTL
#include <fcntl.h>
diff --git a/dosish.h b/dosish.h
index 58fdb28aac..dfc5e358b5 100644
--- a/dosish.h
+++ b/dosish.h
@@ -3,20 +3,28 @@
#define SH_PATH "/bin/sh"
#ifdef DJGPP
-#define BIT_BUCKET "nul"
-#define OP_BINARY O_BINARY
+# define BIT_BUCKET "nul"
+# define OP_BINARY O_BINARY
void Perl_DJGPP_init();
-#define PERL_SYS_INIT(argcp, argvp) STMT_START { \
+# define PERL_SYS_INIT(argcp, argvp) STMT_START { \
Perl_DJGPP_init(); } STMT_END
-#else
-#define PERL_SYS_INIT(c,v)
-#define BIT_BUCKET "\dev\nul"
-#endif
+#else /* DJGPP */
+# define PERL_SYS_INIT(c,v)
+# ifdef WIN32
+# define BIT_BUCKET "nul"
+# else
+# define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
+# endif
+#endif /* DJGPP */
#define PERL_SYS_TERM()
#define dXSUB_SYS int dummy
#define TMPPATH "plXXXXXX"
+#ifdef WIN32
+#define HAS_UTIME
+#endif
+
/*
* 5.003_07 and earlier keyed on #ifdef MSDOS for determining if we were
* running on DOS, *and* if we had to cope with 16 bit memory addressing
@@ -75,6 +83,18 @@ void Perl_DJGPP_init();
*/
#define fwrite1 fwrite
-#define Stat(fname,bufptr) stat((fname),(bufptr))
#define Fstat(fd,bufptr) fstat((fd),(bufptr))
#define Fflush(fp) fflush(fp)
+
+#ifndef WIN32
+# define Stat(fname,bufptr) stat((fname),(bufptr))
+#else
+# define Stat(fname,bufptr) win32_stat((fname),(bufptr))
+# define my_getenv(var) getenv(var)
+/*
+ * the following are standard library calls (stdio in particular)
+ * that is being redirected to the perl DLL. This is needed for
+ * Dynaloading any modules that called stdio functions
+ */
+# include <win32iop.h>
+#endif /* WIN32 */
diff --git a/embed.h b/embed.h
index 3beabb649c..a408584852 100644
--- a/embed.h
+++ b/embed.h
@@ -124,6 +124,7 @@
#define cshname Perl_cshname
#define curinterp Perl_curinterp
#define curpad Perl_curpad
+#define cv_ckproto Perl_cv_ckproto
#define cv_clone Perl_cv_clone
#define cv_const_sv Perl_cv_const_sv
#define cv_undef Perl_cv_undef
diff --git a/ext/Opcode/Safe.pm b/ext/Opcode/Safe.pm
index 22772796e2..c9d741647e 100644
--- a/ext/Opcode/Safe.pm
+++ b/ext/Opcode/Safe.pm
@@ -150,26 +150,27 @@ sub share_from {
my $vars = shift;
my $no_record = shift || 0;
my $root = $obj->root();
- my ($var, $arg);
croak("vars not an array ref") unless ref $vars eq 'ARRAY';
no strict 'refs';
# Check that 'from' package actually exists
croak("Package \"$pkg\" does not exist")
unless keys %{"$pkg\::"};
+ my $arg;
foreach $arg (@$vars) {
# catch some $safe->share($var) errors:
croak("'$arg' not a valid symbol table name")
unless $arg =~ /^[\$\@%*&]?\w[\w:]*$/
or $arg =~ /^\$\W$/;
- ($var = $arg) =~ s/^(\W)//; # get type char
- # warn "share_from $pkg $1 $var";
- *{$root."::$var"} = ($1 eq '$') ? \${$pkg."::$var"}
- : ($1 eq '@') ? \@{$pkg."::$var"}
- : ($1 eq '%') ? \%{$pkg."::$var"}
- : ($1 eq '*') ? *{$pkg."::$var"}
- : ($1 eq '&') ? \&{$pkg."::$var"}
- : (!$1) ? \&{$pkg."::$var"}
- : croak(qq(Can't share "$1$var" of unknown type));
+ my ($var, $type);
+ $type = $1 if ($var = $arg) =~ s/^(\W)//;
+ # warn "share_from $pkg $type $var";
+ *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"}
+ : ($type eq '&') ? \&{$pkg."::$var"}
+ : ($type eq '$') ? \${$pkg."::$var"}
+ : ($type eq '@') ? \@{$pkg."::$var"}
+ : ($type eq '%') ? \%{$pkg."::$var"}
+ : ($type eq '*') ? *{$pkg."::$var"}
+ : croak(qq(Can't share "$type$var" of unknown type));
}
$obj->share_record($pkg, $vars) unless $no_record or !$vars;
}
diff --git a/global.sym b/global.sym
index ddfe93130c..91372705c0 100644
--- a/global.sym
+++ b/global.sym
@@ -45,7 +45,6 @@ cshlen
cshname
curinterp
curpad
-cv_const_sv
dc
debug
dec_amg
@@ -363,7 +362,9 @@ ck_trunc
convert
cpytill
croak
+cv_ckproto
cv_clone
+cv_const_sv
cv_undef
cx_dump
cxinc
diff --git a/lib/ExtUtils/Command.pm b/lib/ExtUtils/Command.pm
index 8c4fd7a916..7bdbea9dd7 100644
--- a/lib/ExtUtils/Command.pm
+++ b/lib/ExtUtils/Command.pm
@@ -1,6 +1,7 @@
package ExtUtils::Command;
use strict;
# use AutoLoader;
+use Carp;
use File::Copy;
use File::Compare;
use File::Basename;
@@ -35,14 +36,22 @@ Most commands are wrapers on generic modules File::Path and File::Basename.
=over 4
+=cut
+
+sub expand_wildcards
+{
+ @ARGV = map(/[\*\?]/ ? glob($_) : $_,@ARGV);
+}
+
=item cat
-Concatenates all files menthion on command line to STDOUT.
+Concatenates all files mentioned on command line to STDOUT.
=cut
sub cat ()
{
+ expand_wildcards();
print while (<>);
}
@@ -68,7 +77,7 @@ Removes directories - recursively (even if readonly)
sub rm_rf
{
- rmtree([@ARGV],0,0);
+ rmtree([grep -e $_,expand_wildcards()],0,0);
}
=item rm_f files....
@@ -79,12 +88,13 @@ Removes files (even if readonly)
sub rm_f
{
- foreach (@ARGV)
+ foreach (expand_wildcards())
{
- next unless -e $_;
- chmod(0777,$_);
- next if (-f $_ and unlink($_));
- die "Cannot delete $_:$!";
+ next unless -f $_;
+ next if unlink($_);
+ chmod(0777,$_);
+ next if unlink($_);
+ carp "Cannot delete $_:$!";
}
}
@@ -96,6 +106,7 @@ Makes files exist, with current timestamp
sub touch
{
+ expand_wildcards();
while (@ARGV)
{
my $file = shift(@ARGV);
@@ -114,19 +125,12 @@ Multiple sources are allowed if destination is an existing directory.
sub mv
{
my $dst = pop(@ARGV);
- if (-d $dst)
- {
- while (@ARGV)
- {
- my $src = shift(@ARGV);
- my $leaf = basename($src);
- move($src,"$dst/$leaf"); # fixme
- }
- }
- else
+ expand_wildcards();
+ croak("Too many arguments") if (@ARGV > 1 && ! -d $dst);
+ while (@ARGV)
{
- my $src = shift(@ARGV);
- move($src,$dst) || die "Cannot move $src $dst:$!";
+ my $src = shift(@ARGV);
+ move($src,$dst);
}
}
@@ -140,18 +144,12 @@ Multiple sources are allowed if destination is an existing directory.
sub cp
{
my $dst = pop(@ARGV);
- if (-d $dst)
- {
- while (@ARGV)
- {
- my $src = shift(@ARGV);
- my $leaf = basename($src);
- copy($src,"$dst/$leaf"); # fixme
- }
- }
- else
+ expand_wildcards();
+ croak("Too many arguments") if (@ARGV > 1 && ! -d $dst);
+ while (@ARGV)
{
- copy(shift,$dst);
+ my $src = shift(@ARGV);
+ copy($src,$dst);
}
}
@@ -163,7 +161,8 @@ Sets UNIX like permissions 'mode' on all the files.
sub chmod
{
- chmod(@ARGV) || die "Cannot chmod ".join(' ',@ARGV).":$!";
+ my $mode = shift(@ARGV);
+ chmod($mode,expand_wildcards()) || die "Cannot chmod ".join(' ',$mode,@ARGV).":$!";
}
=item mkpath directory...
@@ -174,7 +173,7 @@ Creates directory, including any parent directories.
sub mkpath
{
- File::Path::mkpath([@ARGV],1,0777);
+ File::Path::mkpath([expand_wildcards()],1,0777);
}
=item test_f file
@@ -195,9 +194,6 @@ __END__
=head1 BUGS
-eqtime does not work right on Win32 due to problems with utime() built-in
-command.
-
Should probably be Auto/Self loaded.
=head1 SEE ALSO
diff --git a/lib/Term/Complete.pm b/lib/Term/Complete.pm
index e3c290aa02..275aadeb65 100644
--- a/lib/Term/Complete.pm
+++ b/lib/Term/Complete.pm
@@ -29,6 +29,7 @@ The following command characters are defined:
=over 4
=item E<lt>tabE<gt>
+
Attempts word completion.
Cannot be changed.
diff --git a/lib/subs.pm b/lib/subs.pm
index aa4c7e751e..512bc9be9a 100644
--- a/lib/subs.pm
+++ b/lib/subs.pm
@@ -23,6 +23,7 @@ declarations with C<no vars> or C<no subs>.
See L<perlmod/Pragmatic Modules> and L<strict/strict subs>.
=cut
+
require 5.000;
sub import {
diff --git a/op.c b/op.c
index 55b0422b4f..7aa4cbd70d 100644
--- a/op.c
+++ b/op.c
@@ -39,6 +39,7 @@ static I32 list_assignment _((OP *op));
static OP *bad_type _((I32 n, char *t, char *name, OP *kid));
static OP *modkids _((OP *op, I32 type));
static OP *no_fh_allowed _((OP *op));
+static bool scalar_mod_type _((OP *op, I32 type));
static OP *scalarboolean _((OP *op));
static OP *too_few_arguments _((OP *op, char* name));
static OP *too_many_arguments _((OP *op, char* name));
@@ -1031,6 +1032,8 @@ I32 type;
}
/* FALL THROUGH */
case OP_RV2GV:
+ if (scalar_mod_type(op, type))
+ goto nomod;
ref(cUNOP->op_first, op->op_type);
/* FALL THROUGH */
case OP_AASSIGN:
@@ -1059,6 +1062,8 @@ I32 type;
modcount = 10000;
if (type == OP_REFGEN && op->op_flags & OPf_PARENS)
return op; /* Treat \(@foo) like ordinary list. */
+ if (scalar_mod_type(op, type))
+ goto nomod;
/* FALL THROUGH */
case OP_PADSV:
modcount++;
@@ -1126,6 +1131,52 @@ I32 type;
return op;
}
+static bool
+scalar_mod_type(op, type)
+OP *op;
+I32 type;
+{
+ switch (type) {
+ case OP_SASSIGN:
+ if (op->op_type == OP_RV2GV)
+ return FALSE;
+ /* FALL THROUGH */
+ case OP_PREINC:
+ case OP_PREDEC:
+ case OP_POSTINC:
+ case OP_POSTDEC:
+ case OP_I_PREINC:
+ case OP_I_PREDEC:
+ case OP_I_POSTINC:
+ case OP_I_POSTDEC:
+ case OP_POW:
+ case OP_MULTIPLY:
+ case OP_DIVIDE:
+ case OP_MODULO:
+ case OP_REPEAT:
+ case OP_ADD:
+ case OP_SUBTRACT:
+ case OP_I_MULTIPLY:
+ case OP_I_DIVIDE:
+ case OP_I_MODULO:
+ case OP_I_ADD:
+ case OP_I_SUBTRACT:
+ case OP_LEFT_SHIFT:
+ case OP_RIGHT_SHIFT:
+ case OP_BIT_AND:
+ case OP_BIT_XOR:
+ case OP_BIT_OR:
+ case OP_CONCAT:
+ case OP_SUBST:
+ case OP_TRANS:
+ case OP_ANDASSIGN: /* may work later */
+ case OP_ORASSIGN: /* may work later */
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
OP *
refkids(op, type)
OP *op;
@@ -3051,9 +3102,39 @@ CV* proto;
return cv_clone2(proto, CvOUTSIDE(proto));
}
+void
+cv_ckproto(cv, gv, p)
+CV* cv;
+GV* gv;
+char* p;
+{
+ if ((!p != !SvPOK(cv)) || (p && strNE(p, SvPVX(cv)))) {
+ char* buf;
+ SV* name = Nullsv;
+
+ if (gv)
+ gv_efullname3(name = NEWSV(606, 40), gv, Nullch);
+ New(607, buf, ((name ? SvCUR(name) : 0)
+ + (SvPOK(cv) ? SvCUR(cv) : 0)
+ + (p ? strlen(p) : 0)
+ + 60), char);
+ strcpy(buf, "Prototype mismatch:");
+ if (name) {
+ sprintf(buf + strlen(buf), " sub %s", SvPVX(name));
+ SvREFCNT_dec(name);
+ }
+ if (SvPOK(cv))
+ sprintf(buf + strlen(buf), " (%s)", SvPVX(cv));
+ strcat(buf, " vs ");
+ sprintf(buf + strlen(buf), p ? "(%s)" : "none", p);
+ warn("%s", buf);
+ Safefree(buf);
+ }
+}
+
SV *
cv_const_sv(cv)
-CV *cv;
+CV* cv;
{
OP *o;
SV *sv = Nullsv;
@@ -3084,21 +3165,20 @@ OP *block;
{
char *name = op ? SvPVx(cSVOP->op_sv, na) : Nullch;
GV *gv = gv_fetchpv(name ? name : "__ANON__", GV_ADDMULTI, SVt_PVCV);
+ char *ps = proto ? SvPVx(((SVOP*)proto)->op_sv, na) : Nullch;
register CV *cv;
AV *av;
I32 ix;
if (op)
SAVEFREEOP(op);
+ if (proto)
+ SAVEFREEOP(proto);
+
if (!name || GvCVGEN(gv))
cv = Nullcv;
else if (cv = GvCV(gv)) {
- /* prototype mismatch? */
- char *p = proto ? SvPVx(((SVOP*)proto)->op_sv, na) : Nullch;
- if ((!proto != !SvPOK(cv)) || (p && strNE(p, SvPVX(cv)))) {
- warn("Prototype mismatch: (%s) vs (%s)",
- SvPOK(cv) ? SvPVX(cv) : "none", p ? p : "none");
- }
+ cv_ckproto(cv, gv, ps);
/* already defined (or promised)? */
if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
SV* const_sv;
@@ -3142,11 +3222,8 @@ OP *block;
CvFILEGV(cv) = curcop->cop_filegv;
CvSTASH(cv) = curstash;
- if (proto) {
- char *p = SvPVx(((SVOP*)proto)->op_sv, na);
- sv_setpv((SV*)cv, p);
- op_free(proto);
- }
+ if (ps)
+ sv_setpv((SV*)cv, ps);
if (error_count) {
op_free(block);
diff --git a/patchlevel.h b/patchlevel.h
index f7cc9dda21..6d4fe6eea1 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1,5 +1,5 @@
#define PATCHLEVEL 3
-#define SUBVERSION 94
+#define SUBVERSION 95
/*
local_patches -- list of locally applied less-than-subversion patches.
diff --git a/plan9/buildinfo b/plan9/buildinfo
index 49489adae9..99818464e8 100644
--- a/plan9/buildinfo
+++ b/plan9/buildinfo
@@ -1 +1 @@
-p9pvers = 5.003_94
+p9pvers = 5.003_95
diff --git a/pod/perlcall.pod b/pod/perlcall.pod
index 1ff71fc581..8236102f80 100644
--- a/pod/perlcall.pod
+++ b/pod/perlcall.pod
@@ -388,8 +388,8 @@ When C<Call_fred> is executed it will print
As control never returns to C<Call_fred>, the C<"back in Call_fred">
string will not get printed.
-To work around this problem, you can either upgrade to Perl 5.002 (or
-later), or use the G_EVAL flag with I<perl_call_*> as shown below
+To work around this problem, you can either upgrade to Perl 5.002 or
+higher, or use the G_EVAL flag with I<perl_call_*> as shown below
void
Call_fred()
diff --git a/pod/perldata.pod b/pod/perldata.pod
index f0837b3854..b69e77e3d7 100644
--- a/pod/perldata.pod
+++ b/pod/perldata.pod
@@ -342,7 +342,7 @@ quoted, the type of quotes you use determines the treatment of the
text, just as in regular quoting. An unquoted identifier works like
double quotes. There must be no space between the C<E<lt>E<lt>> and
the identifier. (If you put a space it will be treated as a null
-identifier, which is valid, and matches the first blank line.) The
+identifier, which is valid, and matches the first empty line.) The
terminating string must appear by itself (unquoted and with no
surrounding whitespace) on the terminating line.
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 958bee38ed..46bd59b04f 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -27,17 +27,29 @@ might have symbol conflicts if you embed Perl in another application,
just as in the 5.003 release. By default, binary compatibility
is preserved at the expense of symbol table pollution.
-=head2 No Autovivification of Subroutine Parameters
+=head2 Subroutine arguments created only when they're modified
-In Perl versions 5.002 and 5.003, array and hash elements used as
-subroutine parameters were "autovivified"; that is, they were brought
-into existence if they did not already exist. For example, calling
-C<func($h{foo})> would create C<$h{foo}> if it did not already exist,
-causing C<exists $h{foo}> to become true and C<keys %h> to return
-C<('foo')>.
+In Perl 5.004, nonexistent array and hash elements used as subroutine
+parameters are brought into existence only if they are actually
+assigned to (via C<@_>).
-Perl 5.004 returns to the pre-5.002 behavior of I<not> autovivifying
-array and hash elements used as subroutine parameters.
+Earlier versions of Perl vary in their handling of such arguments.
+Perl versions 5.002 and 5.003 always brought them into existence.
+Perl versions 5.000, 5.001, and 5.002 brought them into existence only
+if they were not the first argument (which was almost certainly a
+bug). Earlier versions of Perl never brought them into existence.
+
+For example, given this code:
+
+ undef @a; undef %a;
+ sub show { print $_[0] };
+ sub change { $_[0]++ };
+ show($a[2]);
+ change($a{b});
+
+After this code executes in Perl 5.004, $a{b} exists but $a[2] does
+not. In Perl 5.002 and 5.003, both $a{b} and $a[2] would have existed
+(but $a[2]'s value would have been undefined).
=head2 Fixed Parsing of $$<digit>, &$<digit>, etc.
@@ -267,6 +279,13 @@ string in some way. This change makes it practical to chain C<m//g>
matches together in conjunction with ordinary matches using the C<\G>
zero-width assertion. See L<perlop> and L<perlre>.
+=item C<m//x> ignores whitespace before ?*+{}
+
+The C<m//x> construct has always been intended to ignore all unescaped
+whitespace. However, before Perl 5.004, whitespace had the effect of
+esacping repeat modifier like "*" or "?". For example, C</a *b/x> was
+(mis)interpreted as C</a\*b/x>. This bug has been fixed in 5.004.
+
=item nested C<sub{}> closures work now
Prior to the 5.004 release, nested anonymous functions didn't work
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index e0a23b0162..90b811f691 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -334,6 +334,12 @@ wasn't a symbol table entry.
of Perl. Check the #! line, or manually feed your script into
Perl yourself.
+=item Bareword "%s" not allowed while "strict subs" in use
+
+(F) With "strict subs" in use, a bareword is only allowed as a
+subroutine identifier, in curly braces or to the left of the "=>" symbol.
+Perhaps you need to pre-declare a subroutine?
+
=item BEGIN failed--compilation aborted
(F) An untrapped exception was raised while executing a BEGIN subroutine.
@@ -475,7 +481,7 @@ They must have ordinary identifiers as names.
=item Can't do in-place edit without backup
(F) You're on a system such as MSDOS that gets confused if you try reading
-from a deleted (but still opened) file. You have to say B<-i>C<.bak>, or some
+from a deleted (but still opened) file. You have to say C<-i.bak>, or some
such.
=item Can't do inplace edit: %s E<gt> 14 characters
@@ -1869,10 +1875,10 @@ last argument of the previous construct, for example:
open FOO || die;
-=item Prototype mismatch: (%s) vs (%s)
+=item Prototype mismatch: %s vs %s
-(S) The subroutine being defined had a pre-declared (forward) declaration
-with a different function prototype.
+(S) The subroutine being declared or defined had previously been declared
+or defined with a different function prototype.
=item Read on closed filehandle E<lt>%sE<gt>
@@ -2461,7 +2467,7 @@ bad side effects.
=item Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated
(D) You are now encouraged to use the explicitly quoted form if you
-wish to use a blank line as the terminator of the here-document.
+wish to use an empty line as the terminator of the here-document.
=item Use of implicit split to @_ is deprecated
diff --git a/pod/perlembed.pod b/pod/perlembed.pod
index 4b88754f72..7752156026 100644
--- a/pod/perlembed.pod
+++ b/pod/perlembed.pod
@@ -753,7 +753,7 @@ with L<perlfunc/my> whenever possible.
exit(exitstatus);
}
-
+
Now compile:
% cc -o persistent persistent.c `perl -MExtUtils::Embed -e ccopts -e ldopts`
diff --git a/pod/perlfaq.pod b/pod/perlfaq.pod
index 8db316c24b..8cbb343e7b 100644
--- a/pod/perlfaq.pod
+++ b/pod/perlfaq.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq - frequently asked questions about Perl ($Date: 1997/03/17 22:17:56 $)
+perlfaq - frequently asked questions about Perl ($Date: 1997/03/25 18:20:48 $)
=head1 DESCRIPTION
@@ -124,6 +124,23 @@ in respect of this information or its use.
=over 4
+=item 25/March/97
+
+Added more info to the binary distribution section of L<perlfaq2>.
+Added Net::Telnet to L<perlfaq6>. Fixed typos in L<perlfaq8>. Added
+mail sending example to L<perlfaq9>. Added Merlyn's columns to
+L<perlfaq2>.
+
+=item 18/March/97
+
+Added the DATE to the NAME section, indicating which sections have
+changed.
+
+Mentioned SIGPIPE and L<perlipc> in the forking open answer in
+L<perlfaq8>.
+
+Fixed description of a regular expression in L<perlfaq4>.
+
=item 17/March/97 Version
Various typos fixed throughout.
diff --git a/pod/perlfaq1.pod b/pod/perlfaq1.pod
index 2510a4b1f1..ad7c68a124 100644
--- a/pod/perlfaq1.pod
+++ b/pod/perlfaq1.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq1 - General Questions About Perl ($Revision: 1.10 $)
+perlfaq1 - General Questions About Perl ($Revision: 1.11 $, $Date: 1997/03/19 17:23:09 $)
=head1 DESCRIPTION
diff --git a/pod/perlfaq2.pod b/pod/perlfaq2.pod
index b4c3e9f1dc..7fa34d9c27 100644
--- a/pod/perlfaq2.pod
+++ b/pod/perlfaq2.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.13 $)
+perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.15 $, $Date: 1997/03/25 18:15:48 $)
=head1 DESCRIPTION
@@ -39,6 +39,21 @@ grab a binary version of gcc from the net and use that to compile perl
with. CPAN only has binaries for systems that are terribly hard to
get free compilers for, not for Unix systems.
+Your first stop should be http://www.perl.com/CPAN/ports to see what
+information is already available. A simple installation guide for
+MS-DOS is available at http://www.cs.ruu.nl/~piet/perl5dos.html , and
+similarly for Windows 3.1 at http://www.cs.ruu.nl/~piet/perlwin3.html
+.
+
+=head2 I don't have a C compiler on my system. How can I compile perl?
+
+Since you don't have a C compiler, you're doomed and your vendor
+should be sacrificed to the Sun gods. But that doesn't help you.
+
+What you need to do is get a binary version of gcc for your system
+first. Consult the Usenet FAQs for your operating system for
+information on where to get such a binary version.
+
=head2 I copied the Perl binary from one machine to another, but scripts don't work.
That's probably because you forgot libraries, or library paths differ.
@@ -55,6 +70,9 @@ If this command lists any paths which don't exist on your system, then you
may need to move the appropriate libraries to these locations, or create
symlinks, aliases, or shortcuts appropriately.
+You might also want to check out L<perlfaq8/"How do I keep my own
+module/library directory?">.
+
=head2 I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
Read the F<INSTALL> file, which is part of the source distribution.
@@ -222,15 +240,18 @@ It is published (on paper, not online) quarterly by Jon Orwant
(orwant@tpj.com), editor. Subscription information is at http://tpj.com
or via email to subscriptions@tpj.com.
-Beyond this, two other magazines that frequently carry high-quality articles
-on Perl are Web Techniques (see http://www.webtechniques.com/) and
-Unix Review (http://www.unixreview.com/).
+Beyond this, two other magazines that frequently carry high-quality
+articles on Perl are Web Techniques (see
+http://www.webtechniques.com/) and Unix Review
+(http://www.unixreview.com/). Randal Schwartz's Web Technique's
+columns are available on the web at
+http://www.stonehenge.com/merlyn/WebTechniques/ .
=head2 Perl on the Net: FTP and WWW Access
To get the best (and possibly cheapest) performance, pick a site from
the list below and use it to grab the complete list of mirror sites.
->From there you can find the quickest site for you. Remember, the
+From there you can find the quickest site for you. Remember, the
following list is I<not> the complete list of CPAN mirrors.
http://www.perl.com/CPAN (redirects to another mirror)
diff --git a/pod/perlfaq3.pod b/pod/perlfaq3.pod
index 121743ddbf..64dec98234 100644
--- a/pod/perlfaq3.pod
+++ b/pod/perlfaq3.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq3 - Programming Tools ($Revision: 1.19 $)
+perlfaq3 - Programming Tools ($Revision: 1.20 $, $Date: 1997/03/19 17:23:43 $)
=head1 DESCRIPTION
diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod
index 1c1edfa467..34b7e5b0f3 100644
--- a/pod/perlfaq4.pod
+++ b/pod/perlfaq4.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq4 - Data Manipulation ($Revision: 1.15 $)
+perlfaq4 - Data Manipulation ($Revision: 1.17 $, $Date: 1997/03/25 18:16:24 $)
=head1 DESCRIPTION
@@ -254,7 +254,7 @@ Although those with a regexp kind of thought process will likely prefer
You have to keep track. For example, let's say you want
to change the fifth occurrence of "whoever" or "whomever"
-into "whosoever", case insensitively.
+into "whosoever" or "whomsoever", case insensitively.
$count = 0;
s{((whom?)ever)}{
@@ -286,12 +286,15 @@ integers:
=head2 How do I capitalize all the words on one line?
To make the first letter of each word upper case:
+
$line =~ s/\b(\w)/\U$1/g;
To make the whole line upper case:
+
$line = uc($line);
To force each word to be lower case, with the first letter upper case:
+
$line =~ s/(\w+)/\u\L$1/g;
=head2 How can I split a [character] delimited string except when inside
@@ -770,7 +773,7 @@ find one of the associated keys. This may or may not worry you.
If you mean how many keys, then all you have to do is
take the scalar sense of the keys() function:
- $num_keys = scalar keys %hash;
+ $num_keys = scalar keys %hash;
In void context it just resets the iterator, which is faster
for tied hashes.
diff --git a/pod/perlfaq5.pod b/pod/perlfaq5.pod
index c36576ff7f..9c5e842793 100644
--- a/pod/perlfaq5.pod
+++ b/pod/perlfaq5.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq5 - Files and Formats ($Revision: 1.19 $)
+perlfaq5 - Files and Formats ($Revision: 1.20 $, $Date: 1997/03/19 17:24:51 $)
=head1 DESCRIPTION
diff --git a/pod/perlfaq6.pod b/pod/perlfaq6.pod
index 589d89e495..0adebd72fe 100644
--- a/pod/perlfaq6.pod
+++ b/pod/perlfaq6.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq6 - Regexps ($Revision: 1.14 $)
+perlfaq6 - Regexps ($Revision: 1.16 $, $Date: 1997/03/25 18:16:56 $)
=head1 DESCRIPTION
@@ -143,6 +143,26 @@ Actually, you could do this if you don't mind reading the whole file into
undef $/;
@records = split /your_pattern/, <FH>;
+The Net::Telnet module (available from CPAN) has the capability to
+wait for a pattern in the input stream, or timeout if it doesn't
+appear within a certain time.
+
+ ## Create a file with three lines.
+ open FH, ">file";
+ print FH "The first line\nThe second line\nThe third line\n";
+ close FH;
+
+ ## Get a read/write filehandle to it.
+ $fh = new FileHandle "+<file";
+
+ ## Attach it to a "stream" object.
+ use Net::Telnet;
+ $file = new Net::Telnet (-fhopen => $fh);
+
+ ## Search for the second line and print out the third.
+ $file->waitfor('/second line\n/');
+ print $file->getline;
+
=head2 How do I substitute case insensitively on the LHS, but preserving case on the RHS?
It depends on what you mean by "preserving case". The following
@@ -542,7 +562,7 @@ This is a big problem.
Here are a few ways, all painful, to deal with it:
- $martian =~ s/([A-Z][A-Z])/ $1 /g; # Make sure adjacent ``maritan'' bytes
+ $martian =~ s/([A-Z][A-Z])/ $1 /g; # Make sure adjacent ``martian'' bytes
# are no longer adjacent.
print "found GX!\n" if $martian =~ /GX/;
diff --git a/pod/perlfaq7.pod b/pod/perlfaq7.pod
index 14bfc678fc..54380e62a4 100644
--- a/pod/perlfaq7.pod
+++ b/pod/perlfaq7.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq7 - Perl Language Issues ($Revision: 1.15 $)
+perlfaq7 - Perl Language Issues ($Revision: 1.16 $, $Date: 1997/03/19 17:25:23 $)
=head1 DESCRIPTION
@@ -169,7 +169,7 @@ own module. Make sure to change the names appropriately.
# if using RCS/CVS, this next line may be preferred,
# but beware two-digit versions.
- $VERSION = do{my@r=q$Revision: 1.15 $=~/\d+/g;sprintf '%d.'.'%02d'x$#r,@r};
+ $VERSION = do{my@r=q$Revision: 1.16 $=~/\d+/g;sprintf '%d.'.'%02d'x$#r,@r};
@ISA = qw(Exporter);
@EXPORT = qw(&func1 &func2 &func3);
diff --git a/pod/perlfaq8.pod b/pod/perlfaq8.pod
index 6ad5c15750..7250afbca5 100644
--- a/pod/perlfaq8.pod
+++ b/pod/perlfaq8.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq8 - System Interaction ($Revision: 1.15 $)
+perlfaq8 - System Interaction ($Revision: 1.17 $, $Date: 1997/03/25 18:17:12 $)
=head1 DESCRIPTION
@@ -379,6 +379,17 @@ easy-to-use approach that internally uses pipe(), fork(), and exec()
to do the job. Make sure you read the deadlock warnings in its
documentation, though (see L<IPC::Open2>).
+=head2 Why can't I get the output of a command with system()?
+
+You're confusing the purpose of system() and backticks (''). system()
+runs a command and returns exit status information (as a 16 bit value
+-- the low 8 bits are the signal the process died from, if any, and
+the high 8 bits are the actual exit value). Backticks ('') run a
+command and return what it sent to STDOUT.
+
+ $status = system("mail-users");
+ $output = `ls`;
+
=head2 How can I capture STDERR from an external command?
There are three basic ways of running external commands:
@@ -437,7 +448,9 @@ process ID of the child. The child exec()s the command to be piped
to/from. The parent can't know whether the exec() was successful or
not - all it can return is whether the fork() succeeded or not. To
find out if the command succeeded, you have to catch SIGCHLD and
-wait() to get the exit status.
+wait() to get the exit status. You should also catch SIGPIPE if
+you're writing to the child -- you may not have found out the exec()
+failed by the time you write. This is documented in L<perlipc>.
On systems that follow the spawn() paradigm, open() I<might> do what
you expect - unless perl uses a shell to start your command. In this
diff --git a/pod/perlfaq9.pod b/pod/perlfaq9.pod
index e62dac4bd3..2c9a3e063b 100644
--- a/pod/perlfaq9.pod
+++ b/pod/perlfaq9.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq9 - Networking ($Revision: 1.13 $)
+perlfaq9 - Networking ($Revision: 1.15 $, $Date: 1997/03/25 18:17:20 $)
=head1 DESCRIPTION
@@ -229,6 +229,23 @@ not UNIX-centric. Reading mail: use the Mail::Folder module from CPAN
(part of the MailFolder package) or the Mail::Internet module from
CPAN (also part of the MailTools package).
+ # sending mail
+ use Mail::Internet;
+ use Mail::Header;
+ # say which mail host to use
+ $ENV{SMTPHOSTS} = 'mail.frii.com';
+ # create headers
+ $header = new Mail::Header;
+ $header->add('From', 'gnat@frii.com');
+ $header->add('Subject', 'Testing');
+ $header->add('To', 'gnat@frii.com');
+ # create body
+ $body = 'This is a test, ignore';
+ # create mail object
+ $mail = new Mail::Internet(undef, Header => $header, Body => \[$body]);
+ # send it
+ $mail->smtpsend or die;
+
=head2 How do I find out my hostname/domainname/IP address?
A lot of code has historically cavalierly called the C<`hostname`>
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index 866cafb2fc..ff3d6cdc5d 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -162,7 +162,7 @@ bus error, or just weird results. Change the zero to C<&sv_undef> in the first
line and all will be well.
To free an SV that you've created, call C<SvREFCNT_dec(SV*)>. Normally this
-call is not necessary (see the section on L<Reference Counts and Mortality>).
+call is not necessary (see L<Reference Counts and Mortality>).
=head2 What's Really Stored in an SV?
@@ -422,7 +422,7 @@ A reference can be blessed into a package with the following function:
SV* sv_bless(SV* sv, HV* stash);
The C<sv> argument must be a reference. The C<stash> argument specifies
-which class the reference will belong to. See the section on
+which class the reference will belong to. See
L<Stashes and Globs> for information on converting class names into stashes.
/* Still under construction */
@@ -1587,7 +1587,7 @@ C<hv_iterinit>.
char* hv_iterkey _((HE* entry, I32* retlen));
=item hv_iterkeysv
-
+
Returns the key as an C<SV*> from the current position of the hash
iterator. The return value will always be a mortal copy of the
key. Also see C<hv_iterinit>.
diff --git a/pod/perlmod.pod b/pod/perlmod.pod
index 2f1ae5b20e..194cd1125d 100644
--- a/pod/perlmod.pod
+++ b/pod/perlmod.pod
@@ -1428,6 +1428,6 @@ the application could invoked as:
perl -e 'use Module::Name; method(@ARGV)' ...
or
- perl -mModule::Name ... (in perl5.002)
+ perl -mModule::Name ... (in perl5.002 or higher)
=back
diff --git a/pod/perlop.pod b/pod/perlop.pod
index c4a342be7b..a0756678d1 100644
--- a/pod/perlop.pod
+++ b/pod/perlop.pod
@@ -741,10 +741,10 @@ combine several regexps like this to process a string part-by-part,
doing different actions depending on which regexp matched. The next
regexp would step in at the place the previous one left off.
- $_ = <<'EOL';
+ $_ = <<'EOL';
$url = new URI::URL "http://www/"; die if $url eq "xXx";
-EOL
- LOOP:
+ EOL
+ LOOP:
{
print(" digits"), redo LOOP if /\G\d+\b[,.;]?\s*/g;
print(" lowercase"), redo LOOP if /\G[a-z]+\b[,.;]?\s*/g;
diff --git a/pod/perlpod.pod b/pod/perlpod.pod
index ce092214b8..6a13991437 100644
--- a/pod/perlpod.pod
+++ b/pod/perlpod.pod
@@ -95,7 +95,7 @@ treat some of these as synonyms.)
And don't forget, when using any command, that the command lasts up until
the end of the B<paragraph>, not the line. Hence in the examples below, you
-can see the blank lines after each command to end its paragraph.
+can see the empty lines after each command to end its paragraph.
Some examples of lists include:
@@ -188,7 +188,7 @@ documentation with a "=head1" command at the beginning, and end it
with a "=cut" command. Perl will ignore the pod text. See any of the
supplied library modules for examples. If you're going to put your
pods at the end of the file, and you're using an __END__ or __DATA__
-cut mark, make sure to put a blank line there before the first pod
+cut mark, make sure to put an empty line there before the first pod
directive.
__END__
@@ -198,7 +198,7 @@ directive.
modern - I am a modern module
-If you had not had that blank line there, then the translators wouldn't
+If you had not had that empty line there, then the translators wouldn't
have seen it.
=head1 Common Pod Pitfalls
@@ -208,7 +208,7 @@ have seen it.
=item *
Pod translators usually will require paragraphs to be separated by
-completely empty lines. If you have an apparently blank line with
+completely empty lines. If you have an apparently empty line with
some spaces on it, this can cause odd formatting.
=item *
@@ -222,7 +222,7 @@ sensibly.
=item *
The script F<pod/checkpods.PL> in the Perl source distribution
-provides skeletal checking for lines that look blank but aren't
+provides skeletal checking for lines that look empty but aren't
B<only>, but is there as a placeholder until someone writes
Pod::Checker. The best way to check your pod is to pass it through
one or more translators and proofread the result, or print out the
diff --git a/pod/perlsub.pod b/pod/perlsub.pod
index f2a5b8ff0f..6e2309dfb2 100644
--- a/pod/perlsub.pod
+++ b/pod/perlsub.pod
@@ -47,9 +47,17 @@ there's really no difference from the language's perspective.)
Any arguments passed to the routine come in as the array @_. Thus if you
called a function with two arguments, those would be stored in C<$_[0]>
-and C<$_[1]>. The array @_ is a local array, but its values are implicit
-references (predating L<perlref>) to the actual scalar parameters. The
-return value of the subroutine is the value of the last expression
+and C<$_[1]>. The array @_ is a local array, but its elements are
+aliases for the actual scalar parameters. In particular, if an element
+C<$_[0]> is updated, the corresponding argument is updated (or an error
+occurs if it is not updatable). If an argument is an array or hash
+element which did not exist when the function was called, that element is
+created only when (and if) it is modified or if a reference to it is
+taken. (Some earlier versions of Perl created the element whether or not
+it was assigned to.) Note that assigning to the whole array @_ removes
+the aliasing, and does not update any arguments.
+
+The return value of the subroutine is the value of the last expression
evaluated. Alternatively, a return statement may be used to specify the
returned value and exit the subroutine. If you return one or more arrays
and/or hashes, these will be flattened together into one large
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index 4e412bd7b8..baef9320aa 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -38,8 +38,8 @@ expression enhancements, Innumerable Unbundled Modules, Compilability
=item NOTES
-=head2 perlfaq - frequently asked questions about Perl ($Date: 1997/03/17
-22:17:56 $)
+=head2 perlfaq - frequently asked questions about Perl ($Date: 1997/03/25
+18:20:48 $)
=item DESCRIPTION
@@ -76,9 +76,10 @@ authors
=item Changes
-17/March/97 Version, Initial Release: 11/March/97
+25/March/97, 18/March/97, 17/March/97 Version, Initial Release: 11/March/97
-=head2 perlfaq1 - General Questions About Perl ($Revision: 1.10 $)
+=head2 perlfaq1 - General Questions About Perl ($Revision: 1.11 $, $Date:
+1997/03/19 17:23:09 $)
=item DESCRIPTION
@@ -118,7 +119,8 @@ Scheme, or Tcl?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.13 $)
+=head2 perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.15 $,
+$Date: 1997/03/25 18:15:48 $)
=item DESCRIPTION
@@ -128,6 +130,8 @@ Scheme, or Tcl?
=item How can I get a binary version of Perl?
+=item I don't have a C compiler on my system. How can I compile perl?
+
=item I copied the Perl binary from one machine to another, but scripts
don't work.
@@ -171,7 +175,8 @@ MacPerl, Perl5-Porters, NTPerl, Perl-Packrats
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq3 - Programming Tools ($Revision: 1.19 $)
+=head2 perlfaq3 - Programming Tools ($Revision: 1.20 $, $Date: 1997/03/19
+17:23:43 $)
=item DESCRIPTION
@@ -245,7 +250,8 @@ mean?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq4 - Data Manipulation ($Revision: 1.15 $)
+=head2 perlfaq4 - Data Manipulation ($Revision: 1.17 $, $Date: 1997/03/25
+18:16:24 $)
=item DESCRIPTION
@@ -435,7 +441,8 @@ or array of hashes or arrays?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq5 - Files and Formats ($Revision: 1.19 $)
+=head2 perlfaq5 - Files and Formats ($Revision: 1.20 $, $Date: 1997/03/19
+17:24:51 $)
=item DESCRIPTION
@@ -518,7 +525,7 @@ protected files? Isn't this a bug in Perl?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq6 - Regexps ($Revision: 1.14 $)
+=head2 perlfaq6 - Regexps ($Revision: 1.16 $, $Date: 1997/03/25 18:16:56 $)
=item DESCRIPTION
@@ -579,7 +586,8 @@ file?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq7 - Perl Language Issues ($Revision: 1.15 $)
+=head2 perlfaq7 - Perl Language Issues ($Revision: 1.16 $, $Date:
+1997/03/19 17:25:23 $)
=item DESCRIPTION
@@ -645,7 +653,8 @@ is in scope?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq8 - System Interaction ($Revision: 1.15 $)
+=head2 perlfaq8 - System Interaction ($Revision: 1.17 $, $Date: 1997/03/25
+18:17:12 $)
=item DESCRIPTION
@@ -694,6 +703,8 @@ does the error message "Protocol not supported" mean?
=item How can I open a pipe both to and from a command?
+=item Why can't I get the output of a command with system()?
+
=item How can I capture STDERR from an external command?
=item Why doesn't open() return an error when a pipe open fails?
@@ -749,7 +760,8 @@ complete?
=item AUTHOR AND COPYRIGHT
-=head2 perlfaq9 - Networking ($Revision: 1.13 $)
+=head2 perlfaq9 - Networking ($Revision: 1.15 $, $Date: 1997/03/25 18:17:20
+$)
=item DESCRIPTION
@@ -813,7 +825,7 @@ file on another machine?
=item Compilation Option: Binary Compatibility With 5.003
-=item No Autovivification of Subroutine Parameters
+=item Subroutine arguments created only when they're modified
=item Fixed Parsing of $$<digit>, &$<digit>, etc.
@@ -838,8 +850,8 @@ $^E, $^H, $^M
delete on slices, flock, printf and sprintf, keys as an lvalue, my() in
Control Structures, unpack() and pack(), use VERSION, use Module VERSION
LIST, prototype(FUNCTION), srand, $_ as Default, C<m//g> does not trigger a
-pos() reset on failure, nested C<sub{}> closures work now, formats work
-right on changing lexicals
+pos() reset on failure, C<m//x> ignores whitespace before ?*+{}, nested
+C<sub{}> closures work now, formats work right on changing lexicals
=item New Built-in Methods
@@ -2296,38 +2308,34 @@ G_NOARGS, G_SCALAR, gv_fetchmeth, gv_fetchmethod, gv_stashpv, gv_stashsv,
GvSV, HEf_SVKEY, HeHASH, HeKEY, HeKLEN, HePV, HeSVKEY, HeSVKEY_force,
HeSVKEY_set, HeVAL, hv_clear, hv_delayfree_ent, hv_delete, hv_delete_ent,
hv_exists, hv_exists_ent, hv_fetch, hv_fetch_ent, hv_free_ent, hv_iterinit,
-hv_iterkey, hv_iterkeysv
-Returns the key as an C<SV*> from the current position of the hash
-iterator. The return value will always be a mortal copy of the
-key. Also see C<hv_iterinit>, hv_iternext, hv_iternextsv, hv_iterval,
-hv_magic, HvNAME, hv_store, hv_store_ent, hv_undef, isALNUM, isALPHA,
-isDIGIT, isLOWER, isSPACE, isUPPER, items, ix, LEAVE, MARK, mg_clear,
-mg_copy, mg_find, mg_free, mg_get, mg_len, mg_magical, mg_set, Move, na,
-New, Newc, Newz, newAV, newHV, newRV_inc, newRV_noinc, newSV, newSViv,
-newSVnv, newSVpv, newSVrv, newSVsv, newXS, newXSproto, Nullav, Nullch,
-Nullcv, Nullhv, Nullsv, ORIGMARK, perl_alloc, perl_call_argv,
-perl_call_method, perl_call_pv, perl_call_sv, perl_construct,
-perl_destruct, perl_eval_sv, perl_free, perl_get_av, perl_get_cv,
-perl_get_hv, perl_get_sv, perl_parse, perl_require_pv, perl_run, POPi,
-POPl, POPp, POPn, POPs, PUSHMARK, PUSHi, PUSHn, PUSHp, PUSHs, PUTBACK,
-Renew, Renewc, RETVAL, safefree, safemalloc, saferealloc, savepv, savepvn,
-SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE, strGT, strLE, strLT, strNE,
-strnEQ, strnNE, sv_2mortal, sv_bless, sv_catpv, sv_catpvn, sv_catsv,
-sv_cmp, sv_cmp, SvCUR, SvCUR_set, sv_dec, sv_dec, SvEND, sv_eq, SvGROW,
-sv_grow, sv_inc, SvIOK, SvIOK_off, SvIOK_on, SvIOK_only, SvIOK_only,
-SvIOKp, sv_isa, SvIV, sv_isobject, SvIVX, SvLEN, sv_len, sv_len, sv_magic,
-sv_mortalcopy, SvOK, sv_newmortal, sv_no, SvNIOK, SvNIOK_off, SvNIOKp,
-SvNOK, SvNOK_off, SvNOK_on, SvNOK_only, SvNOK_only, SvNOKp, SvNV, SvNVX,
-SvPOK, SvPOK_off, SvPOK_on, SvPOK_only, SvPOK_only, SvPOKp, SvPV, SvPVX,
-SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, SvROK_off, SvROK_on, SvRV,
-sv_setiv, sv_setnv, sv_setpv, sv_setpvn, sv_setref_iv, sv_setref_nv,
-sv_setref_pv, sv_setref_pvn, sv_setsv, SvSTASH, SVt_IV, SVt_PV, SVt_PVAV,
-SVt_PVCV, SVt_PVHV, SVt_PVMG, SVt_NV, SvTRUE, SvTYPE, svtype, SvUPGRADE,
-sv_upgrade, sv_undef, sv_unref, sv_usepvn, sv_yes, THIS, toLOWER, toUPPER,
-warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XS, XSRETURN, XSRETURN_EMPTY,
-XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF,
-XSRETURN_YES, XST_mIV, XST_mNV, XST_mNO, XST_mPV, XST_mUNDEF, XST_mYES,
-XS_VERSION, XS_VERSION_BOOTCHECK, Zero
+hv_iterkey, hv_iterkeysv, hv_iternext, hv_iternextsv, hv_iterval, hv_magic,
+HvNAME, hv_store, hv_store_ent, hv_undef, isALNUM, isALPHA, isDIGIT,
+isLOWER, isSPACE, isUPPER, items, ix, LEAVE, MARK, mg_clear, mg_copy,
+mg_find, mg_free, mg_get, mg_len, mg_magical, mg_set, Move, na, New, Newc,
+Newz, newAV, newHV, newRV_inc, newRV_noinc, newSV, newSViv, newSVnv,
+newSVpv, newSVrv, newSVsv, newXS, newXSproto, Nullav, Nullch, Nullcv,
+Nullhv, Nullsv, ORIGMARK, perl_alloc, perl_call_argv, perl_call_method,
+perl_call_pv, perl_call_sv, perl_construct, perl_destruct, perl_eval_sv,
+perl_free, perl_get_av, perl_get_cv, perl_get_hv, perl_get_sv, perl_parse,
+perl_require_pv, perl_run, POPi, POPl, POPp, POPn, POPs, PUSHMARK, PUSHi,
+PUSHn, PUSHp, PUSHs, PUTBACK, Renew, Renewc, RETVAL, safefree, safemalloc,
+saferealloc, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE,
+strGT, strLE, strLT, strNE, strnEQ, strnNE, sv_2mortal, sv_bless, sv_catpv,
+sv_catpvn, sv_catsv, sv_cmp, sv_cmp, SvCUR, SvCUR_set, sv_dec, sv_dec,
+SvEND, sv_eq, SvGROW, sv_grow, sv_inc, SvIOK, SvIOK_off, SvIOK_on,
+SvIOK_only, SvIOK_only, SvIOKp, sv_isa, SvIV, sv_isobject, SvIVX, SvLEN,
+sv_len, sv_len, sv_magic, sv_mortalcopy, SvOK, sv_newmortal, sv_no, SvNIOK,
+SvNIOK_off, SvNIOKp, SvNOK, SvNOK_off, SvNOK_on, SvNOK_only, SvNOK_only,
+SvNOKp, SvNV, SvNVX, SvPOK, SvPOK_off, SvPOK_on, SvPOK_only, SvPOK_only,
+SvPOKp, SvPV, SvPVX, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK,
+SvROK_off, SvROK_on, SvRV, sv_setiv, sv_setnv, sv_setpv, sv_setpvn,
+sv_setref_iv, sv_setref_nv, sv_setref_pv, sv_setref_pvn, sv_setsv, SvSTASH,
+SVt_IV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SVt_NV, SvTRUE,
+SvTYPE, svtype, SvUPGRADE, sv_upgrade, sv_undef, sv_unref, sv_usepvn,
+sv_yes, THIS, toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XS,
+XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV,
+XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNV, XST_mNO,
+XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK, Zero
=item EDITOR
@@ -4207,8 +4215,7 @@ setlogmask $mask_priority, closelog
=item DESCRIPTION
-E<lt>tabE<gt>Attempts word completion.
-Cannot be changed, ^D, ^U, E<lt>delE<gt>, E<lt>bsE<gt>
+E<lt>tabE<gt>, ^D, ^U, E<lt>delE<gt>, E<lt>bsE<gt>
=item DIAGNOSTICS
@@ -4401,7 +4408,8 @@ function
=item DESCRIPTION
-isa ( TYPE ), can ( METHOD ), VERSION ( [ REQUIRE ] ), isa ( REF, TYPE )
+isa ( TYPE ), can ( METHOD ), VERSION ( [ REQUIRE ] ), isa ( VAL, TYPE ),
+can ( VAL, METHOD )
=head2 User::grent - by-name interface to Perl's built-in getgr*()
functions
diff --git a/pod/pod2html.PL b/pod/pod2html.PL
index 8dafea5d09..1c53f6c090 100644
--- a/pod/pod2html.PL
+++ b/pod/pod2html.PL
@@ -526,7 +526,7 @@ sub find_refs {
for ($$thing) {
#s:L<([a-zA-Z][^\s\/]+)(\([^\)]+\))>:the I<$1>$2 manpage:g;
s@(\S+?://\S*[^.,;!?\s])@noremap(qq{<A HREF="$1">$1</A>})@ge;
- s,([a-z0-9_.-]+\@([a-z0-9_-]+\.)+([a-z0-9_-]+)),noremap(qq{<A HREF="MAILTO:$1">$1</A>}),gie;
+ s,([a-z0-9_.-]+\@([a-z0-9_-]+\.)+([a-z0-9_-]+)),noremap(qq{<A HREF="mailto:$1">$1</A>}),gie;
s/L<([^>]*)>/lrefs($1,$htype)/ge;
s/([CIBF])<(\W*?(-?\w*).*?)>/picrefs($1, $2, $3, $htype)/ge;
s/(S)<([^\/]\W*?(-?\w*).*?)>/picrefs($1, $2, $3, $htype)/ge;
diff --git a/pp_sys.c b/pp_sys.c
index f99bf29ab3..998d271758 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -78,7 +78,11 @@ extern int h_errno;
#endif
#ifdef I_UTIME
-#include <utime.h>
+# ifdef WIN32
+# include <sys/utime.h>
+# else
+# include <utime.h>
+# endif
#endif
#ifdef I_FCNTL
#include <fcntl.h>
diff --git a/proto.h b/proto.h
index 4f8318265d..671c085f5d 100644
--- a/proto.h
+++ b/proto.h
@@ -45,9 +45,10 @@ OP* convert _((I32 optype, I32 flags, OP* op));
char* cpytill _((char* to, char* from, char* fromend, int delim, I32* retlen));
void croak _((const char* pat,...))
__attribute__((format(printf,1,2),noreturn));
+void cv_ckproto _((CV* cv, GV* gv, char* p));
CV* cv_clone _((CV* proto));
-void cv_undef _((CV* cv));
SV* cv_const_sv _((CV* cv));
+void cv_undef _((CV* cv));
#ifdef DEBUGGING
void cx_dump _((CONTEXT* cs));
#endif
diff --git a/sv.c b/sv.c
index 855f608b9c..f8b1904802 100644
--- a/sv.c
+++ b/sv.c
@@ -1261,8 +1261,11 @@ register SV *sv;
}
if (SvPOKp(sv) && SvLEN(sv))
return asIV(sv);
- if (!SvROK(sv))
+ if (!SvROK(sv)) {
+ if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ warn(warn_uninit);
return 0;
+ }
}
if (SvTHINKFIRST(sv)) {
if (SvROK(sv)) {
@@ -1333,8 +1336,11 @@ register SV *sv;
return U_V(SvNVX(sv));
if (SvPOKp(sv) && SvLEN(sv))
return asUV(sv);
- if (!SvROK(sv))
+ if (!SvROK(sv)) {
+ if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ warn(warn_uninit);
return 0;
+ }
}
if (SvTHINKFIRST(sv)) {
if (SvROK(sv)) {
@@ -1404,6 +1410,8 @@ register SV *sv;
if (SvIOKp(sv))
return (double)SvIVX(sv);
if (!SvROK(sv)) {
+ if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ warn(warn_uninit);
return 0;
}
}
@@ -1605,6 +1613,8 @@ STRLEN *lp;
goto tokensave;
}
if (!SvROK(sv)) {
+ if (dowarn && !localizing && !(SvFLAGS(sv) & SVs_PADTMP))
+ warn(warn_uninit);
*lp = 0;
return "";
}
@@ -1985,13 +1995,8 @@ register SV *sstr;
warn("Subroutine %s redefined",
GvENAME((GV*)dstr));
}
- if (SvPOK(cv) != SvPOK(sref)
- || (SvPOK(cv)
- && strNE(SvPVX(cv), SvPVX(sref)))) {
- warn("Prototype mismatch: (%s) vs (%s)",
- SvPOK(cv) ? SvPVX(cv) : "none",
- SvPOK(sref) ? SvPVX(sref) : "none");
- }
+ cv_ckproto(cv, (GV*)dstr,
+ SvPOK(sref) ? SvPVX(sref) : Nullch);
}
GvCV(dstr) = (CV*)sref;
GvCVGEN(dstr) = 0; /* Switch off cacheness. */
diff --git a/t/comp/multiline.t b/t/comp/multiline.t
index 0e022e9992..fc1eedc8d2 100755
--- a/t/comp/multiline.t
+++ b/t/comp/multiline.t
@@ -32,7 +32,7 @@ if ($z eq $y) {print "ok 2\n";} else {print "not ok 2\n";}
if ($count == 3) {print "ok 3\n";} else {print "not ok 3\n";}
-$_ = `cat Comp.try`;
+$_ = ($^O eq 'MSWin32') ? `type Comp.try` : `cat Comp.try`;
if (/.*\n.*\n.*\n$/) {print "ok 4\n";} else {print "not ok 4\n";}
diff --git a/t/comp/redef.t b/t/comp/redef.t
index ad28bfd5e2..07e978bb86 100755
--- a/t/comp/redef.t
+++ b/t/comp/redef.t
@@ -13,6 +13,8 @@ sub ok ($$) {
print "1..18\n";
+my $NEWPROTO = 'Prototype mismatch:';
+
sub sub0 { 1 }
sub sub0 { 2 }
@@ -21,19 +23,19 @@ ok 1, $warn =~ s/Subroutine sub0 redefined[^\n]+\n//s;
sub sub1 { 1 }
sub sub1 () { 2 }
-ok 2, $warn =~ s/Prototype mismatch: \Q(none) vs ()\E[^\n]+\n//s;
+ok 2, $warn =~ s/$NEWPROTO \Qsub main::sub1 vs ()\E[^\n]+\n//s;
ok 3, $warn =~ s/Subroutine sub1 redefined[^\n]+\n//s;
sub sub2 { 1 }
sub sub2 ($) { 2 }
-ok 4, $warn =~ s/Prototype mismatch: \Q(none) vs ($)\E[^\n]+\n//s;
+ok 4, $warn =~ s/$NEWPROTO \Qsub main::sub2 vs ($)\E[^\n]+\n//s;
ok 5, $warn =~ s/Subroutine sub2 redefined[^\n]+\n//s;
sub sub3 () { 1 }
sub sub3 { 2 }
-ok 6, $warn =~ s/Prototype mismatch: \Q() vs (none)\E[^\n]+\n//s;
+ok 6, $warn =~ s/$NEWPROTO \Qsub main::sub3 () vs none\E[^\n]+\n//s;
ok 7, $warn =~ s/Constant subroutine sub3 redefined[^\n]+\n//s;
sub sub4 () { 1 }
@@ -44,19 +46,19 @@ ok 8, $warn =~ s/Constant subroutine sub4 redefined[^\n]+\n//s;
sub sub5 () { 1 }
sub sub5 ($) { 2 }
-ok 9, $warn =~ s/Prototype mismatch: \Q() vs ($)\E[^\n]+\n//s;
+ok 9, $warn =~ s/$NEWPROTO \Qsub main::sub5 () vs ($)\E[^\n]+\n//s;
ok 10, $warn =~ s/Constant subroutine sub5 redefined[^\n]+\n//s;
sub sub6 ($) { 1 }
sub sub6 { 2 }
-ok 11, $warn =~ s/Prototype mismatch: \Q($) vs (none)\E[^\n]+\n//s;
+ok 11, $warn =~ s/$NEWPROTO \Qsub main::sub6 ($) vs none\E[^\n]+\n//s;
ok 12, $warn =~ s/Subroutine sub6 redefined[^\n]+\n//s;
sub sub7 ($) { 1 }
sub sub7 () { 2 }
-ok 13, $warn =~ s/Prototype mismatch: \Q($) vs ()\E[^\n]+\n//s;
+ok 13, $warn =~ s/$NEWPROTO \Qsub main::sub7 ($) vs ()\E[^\n]+\n//s;
ok 14, $warn =~ s/Subroutine sub7 redefined[^\n]+\n//s;
sub sub8 ($) { 1 }
@@ -67,7 +69,7 @@ ok 15, $warn =~ s/Subroutine sub8 redefined[^\n]+\n//s;
sub sub9 ($@) { 1 }
sub sub9 ($) { 2 }
-ok 16, $warn =~ s/Prototype mismatch: \(\$\Q@) vs ($)\E[^\n]+\n//s;
+ok 16, $warn =~ s/$NEWPROTO sub main::sub9 \(\$\Q@) vs ($)\E[^\n]+\n//s;
ok 17, $warn =~ s/Subroutine sub9 redefined[^\n]+\n//s;
ok 18, $_ eq '';
diff --git a/t/lib/db-btree.t b/t/lib/db-btree.t
index 10f585304a..897548585b 100755
--- a/t/lib/db-btree.t
+++ b/t/lib/db-btree.t
@@ -46,17 +46,14 @@ umask(0);
# Check the interface to BTREEINFO
my $dbh = new DB_File::BTREEINFO ;
-ok(1, $dbh->{flags} == 0) ;
-ok(2, $dbh->{cachesize} == 0) ;
-ok(3, $dbh->{psize} == 0) ;
-ok(4, $dbh->{lorder} == 0) ;
-ok(5, $dbh->{minkeypage} == 0) ;
-ok(6, $dbh->{maxkeypage} == 0) ;
-{
- local $^W = 0 ;
- ok(7, $dbh->{compare} == undef) ;
- ok(8, $dbh->{prefix} == undef) ;
-}
+ok(1, ! defined $dbh->{flags}) ;
+ok(2, ! defined $dbh->{cachesize}) ;
+ok(3, ! defined $dbh->{psize}) ;
+ok(4, ! defined $dbh->{lorder}) ;
+ok(5, ! defined $dbh->{minkeypage}) ;
+ok(6, ! defined $dbh->{maxkeypage}) ;
+ok(7, ! defined $dbh->{compare}) ;
+ok(8, ! defined $dbh->{prefix}) ;
$dbh->{flags} = 3000 ;
ok(9, $dbh->{flags} == 3000) ;
diff --git a/t/lib/db-hash.t b/t/lib/db-hash.t
index 9ebd060e0a..9765e2ed86 100755
--- a/t/lib/db-hash.t
+++ b/t/lib/db-hash.t
@@ -32,14 +32,12 @@ umask(0);
my $dbh = new DB_File::HASHINFO ;
-ok(1, $dbh->{bsize} == 0) ;
-ok(2, $dbh->{ffactor} == 0) ;
-ok(3, $dbh->{nelem} == 0) ;
-ok(4, $dbh->{cachesize} == 0) ;
-$^W = 0 ;
-ok(5, $dbh->{hash} == undef) ;
-$^W = 1 ;
-ok(6, $dbh->{lorder} == 0) ;
+ok(1, ! defined $dbh->{bsize}) ;
+ok(2, ! defined $dbh->{ffactor}) ;
+ok(3, ! defined $dbh->{nelem}) ;
+ok(4, ! defined $dbh->{cachesize}) ;
+ok(5, ! defined $dbh->{hash}) ;
+ok(6, ! defined $dbh->{lorder}) ;
$dbh->{bsize} = 3000 ;
ok(7, $dbh->{bsize} == 3000 );
diff --git a/t/lib/db-recno.t b/t/lib/db-recno.t
index b5b4f9404d..5df5af1808 100755
--- a/t/lib/db-recno.t
+++ b/t/lib/db-recno.t
@@ -51,13 +51,13 @@ umask(0);
# Check the interface to RECNOINFO
my $dbh = new DB_File::RECNOINFO ;
-ok(1, $dbh->{bval} == 0 ) ;
-ok(2, $dbh->{cachesize} == 0) ;
-ok(3, $dbh->{psize} == 0) ;
-ok(4, $dbh->{flags} == 0) ;
-ok(5, $dbh->{lorder} == 0);
-ok(6, $dbh->{reclen} == 0);
-ok(7, $dbh->{bfname} eq "");
+ok(1, ! defined $dbh->{bval}) ;
+ok(2, ! defined $dbh->{cachesize}) ;
+ok(3, ! defined $dbh->{psize}) ;
+ok(4, ! defined $dbh->{flags}) ;
+ok(5, ! defined $dbh->{lorder}) ;
+ok(6, ! defined $dbh->{reclen}) ;
+ok(7, ! defined $dbh->{bfname}) ;
$dbh->{bval} = 3000 ;
ok(8, $dbh->{bval} == 3000 );
diff --git a/t/op/magic.t b/t/op/magic.t
index fa19716c14..b338d9600a 100755
--- a/t/op/magic.t
+++ b/t/op/magic.t
@@ -25,7 +25,7 @@ $PERL = ($Is_MSWin32 ? '.\perl' : './perl');
print "1..28\n";
eval '$ENV{"foo"} = "hi there";'; # check that ENV is inited inside eval
-if ($Is_MSWin32) { ok 1, `set foo` eq "foo=hi there\n"; }
+if ($Is_MSWin32) { ok 1, `cmd /x /c set foo` eq "foo=hi there\n"; }
else { ok 1, `echo \$foo` eq "hi there\n"; }
unlink 'ajslkdfpqjsjfk';
diff --git a/t/op/misc.t b/t/op/misc.t
index 02d32bd5c5..1a5afe544a 100755
--- a/t/op/misc.t
+++ b/t/op/misc.t
@@ -95,7 +95,8 @@ EXPECT
########
%@x=0;
EXPECT
-Can't coerce HASH to string in repeat at - line 1.
+Can't modify hash deref in repeat at - line 1, near "0;"
+Execution of - aborted due to compilation errors.
########
$_="foo";
printf(STDOUT "%s\n", $_);
diff --git a/t/op/mkdir.t b/t/op/mkdir.t
index 7db5ec91e4..1ffeaa1d66 100755
--- a/t/op/mkdir.t
+++ b/t/op/mkdir.t
@@ -4,7 +4,7 @@
print "1..7\n";
-`rm -rf blurfl`;
+$^O eq 'MSWin32' ? `cmd /x /c del /s /q blurfl` : `rm -rf blurfl`;
print (mkdir('blurfl',0777) ? "ok 1\n" : "not ok 1\n");
print (mkdir('blurfl',0777) ? "not ok 2\n" : "ok 2\n");
diff --git a/t/op/runlevel.t b/t/op/runlevel.t
index 2fc2174596..336b164f5d 100755
--- a/t/op/runlevel.t
+++ b/t/op/runlevel.t
@@ -17,6 +17,7 @@
chdir 't' if -d 't';
@INC = "../lib";
$Is_VMS = $^O eq 'VMS';
+$Is_MSWin32 = $^O eq 'MSWin32';
$ENV{PERL5LIB} = "../lib" unless $Is_VMS;
$|=1;
@@ -40,7 +41,9 @@ for (@prgs){
close TEST;
my $results = $Is_VMS ?
`MCR $^X "-I[-.lib]" $switch $tmpfile` :
- `sh -c './perl $switch $tmpfile' 2>&1`;
+ $Is_MSWin32 ?
+ `.\\perl -I../lib $switch $tmpfile 2>&1` :
+ `sh -c './perl $switch $tmpfile' 2>&1`;
my $status = $?;
$results =~ s/\n+$//;
# allow expected output to be written as if $prog is on STDIN
diff --git a/t/op/stat.t b/t/op/stat.t
index d7271522c2..0713007db5 100755
--- a/t/op/stat.t
+++ b/t/op/stat.t
@@ -34,7 +34,10 @@ close(FOO);
sleep 2;
-`rm -f Op.stat.tmp2; ln Op.stat.tmp Op.stat.tmp2; chmod 644 Op.stat.tmp`;
+if ($Is_MSWin32) { unlink "Op.stat.tmp2" }
+else {
+ `rm -f Op.stat.tmp2;ln Op.stat.tmp Op.stat.tmp2; chmod 644 Op.stat.tmp`;
+}
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
$blksize,$blocks) = stat('Op.stat.tmp');
@@ -52,19 +55,20 @@ else {
}
print "#4 :$mtime: != :$ctime:\n";
-`rm -f Op.stat.tmp`;
-`touch Op.stat.tmp`;
+unlink "Op.stat.tmp";
+if ($Is_MSWin32) { open F, '>Op.stat.tmp' and close F }
+else { `touch Op.stat.tmp` }
if (-z 'Op.stat.tmp') {print "ok 5\n";} else {print "not ok 5\n";}
if (! -s 'Op.stat.tmp') {print "ok 6\n";} else {print "not ok 6\n";}
-`echo hi >Op.stat.tmp`;
+$Is_MSWin32 ? `cmd /c echo hi > Op.stat.tmp` : `echo hi >Op.stat.tmp`;
if (! -z 'Op.stat.tmp') {print "ok 7\n";} else {print "not ok 7\n";}
if (-s 'Op.stat.tmp') {print "ok 8\n";} else {print "not ok 8\n";}
unlink 'Op.stat.tmp';
$olduid = $>; # can't test -r if uid == 0
-`echo hi >Op.stat.tmp`;
+$Is_MSWin32 ? `cmd /c echo hi > Op.stat.tmp` : `echo hi >Op.stat.tmp`;
chmod 0,'Op.stat.tmp';
eval '$> = 1;'; # so switch uid (may not be implemented)
if (!$> || ! -r 'Op.stat.tmp') {print "ok 9\n";} else {print "not ok 9\n";}
@@ -98,7 +102,7 @@ else {
if (-o 'Op.stat.tmp') {print "ok 26\n";} else {print "not ok 26\n";}
if (-e 'Op.stat.tmp') {print "ok 27\n";} else {print "not ok 27\n";}
-`rm -f Op.stat.tmp Op.stat.tmp2`;
+unlink 'Op.stat.tmp', 'Op.stat.tmp2';
if (! -e 'Op.stat.tmp') {print "ok 28\n";} else {print "not ok 28\n";}
if ($Is_MSWin32)
@@ -169,7 +173,7 @@ else {
}
if (! -t tty) {print "ok 38\n";} else {print "not ok 38\n";}
open(null,"/dev/null");
-if (! -t null || -e '/xenix' || -e '/MachTen')
+if (! -t null || -e '/xenix' || -e '/MachTen' || $Is_MSWin32)
{print "ok 39\n";} else {print "not ok 39\n";}
close(null);
if (-t) {print "ok 40\n";} else {print "not ok 40\n";}
diff --git a/t/op/write.t b/t/op/write.t
index 46ec8130b9..705fa7977b 100755
--- a/t/op/write.t
+++ b/t/op/write.t
@@ -4,6 +4,8 @@
print "1..5\n";
+my $CAT = ($^O eq 'MSWin32') ? 'type' : 'cat';
+
format OUT =
the quick brown @<<
$fox
@@ -42,7 +44,7 @@ the course
of huma...
now is the time for all good men to come to\n";
-if (`cat Op_write.tmp` eq $right)
+if (`$CAT Op_write.tmp` eq $right)
{ print "ok 1\n"; unlink 'Op_write.tmp'; }
else
{ print "not ok 1\n"; }
@@ -84,7 +86,7 @@ becomes
necessary
now is the time for all good men to come to\n";
-if (`cat Op_write.tmp` eq $right)
+if (`$CAT Op_write.tmp` eq $right)
{ print "ok 2\n"; unlink 'Op_write.tmp'; }
else
{ print "not ok 2\n"; }
@@ -128,7 +130,7 @@ becomes
necessary
now is the time for all good men to come to\n";
-if (`cat Op_write.tmp` eq $right)
+if (`$CAT Op_write.tmp` eq $right)
{ print "ok 3\n"; unlink 'Op_write.tmp'; }
else
{ print "not ok 3\n"; }
diff --git a/t/pragma/locale.t b/t/pragma/locale.t
index 05891fad77..d4b73b8f91 100755
--- a/t/pragma/locale.t
+++ b/t/pragma/locale.t
@@ -40,6 +40,7 @@ sub ok {
# even the default locale will taint under 'use locale'.
sub is_tainted { # hello, camel two.
+ local $^W; # no warnings 'undef'
my $dummy;
not eval { $dummy = join("", @_), kill 0; 1 }
}
diff --git a/vms/config.vms b/vms/config.vms
index 5a362c9d50..a189724240 100644
--- a/vms/config.vms
+++ b/vms/config.vms
@@ -76,7 +76,7 @@
* when Perl is built. Please do not change it by hand; make
* any changes to FndVers.Com instead.
*/
-#define ARCHLIB_EXP "/perl_root/lib/VMS_VAX/5_00394" /**/
+#define ARCHLIB_EXP "/perl_root/lib/VMS_VAX/5_00395" /**/
#define ARCHLIB ARCHLIB_EXP /*config-skip*/
/* ARCHNAME:
diff --git a/vms/descrip.mms b/vms/descrip.mms
index 06c523eb48..de8d07a090 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -65,7 +65,7 @@ OBJVAL = $(MMS$TARGET_NAME)$(O)
.endif
# Updated by fndvers.com -- do not edit by hand
-PERL_VERSION = 5_00394#
+PERL_VERSION = 5_00395#
ARCHDIR = [.lib.$(ARCH).$(PERL_VERSION)]
diff --git a/win32/Makefile b/win32/Makefile
index 05c2c48b36..5dbfb3c92f 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -40,7 +40,7 @@ GLOBEXE=..\perlglob.exe
PL2BAT=bin\PL2BAT.BAT
MAKE=nmake /nologo
-XCOPY=xcopy /d /f /r
+XCOPY=xcopy /i /d /f /r
NULL=
#
@@ -117,9 +117,6 @@ $(GLOBEXE):
$(MAKE) -f perlglob.mak CFG="perlglob - Win32 Release"
$(PERLLIB): $(CORE_C)
- attrib -r ..\*.h
- copy dosish.h ..
- copy EXTERN.h ..
$(MAKE) -f libperl.mak CFG="libperl - Win32 $(CFG)"
$(MINIPERL): $(PERLLIB)
@@ -136,8 +133,6 @@ $(PERLDLL): $(MINIPERL) $(PERLLIB)
$(MAKE) -A -f perldll.mak CFG="perldll - Win32 $(CFG)"
$(PERLEXE): $(MINIPERL) modules.lib $(PERLDLL)
- attrib -r perlmain.c
- attrib -r perl.def
# $(MINIPERL) makemain.pl $(STATICLINKMODUES) > perlmain.c
# $(MINIPERL) makeperldef.pl $(STATICLINKMODUES) > perl.def
$(MINIPERL) makeperldef.pl $(NULL) > perl.def
@@ -236,6 +231,14 @@ doc: $(PERLEXE)
$(PERLEXE) pod2html.bat *.pod
cd ..\win32
+utils: $(PERLEXE)
+ cd ..\utils
+ nmake PERL=$(MINIPERL)
+ $(PERLEXE) ..\win32\$(PL2BAT) h2ph splain perlbug pl2pm c2ph \
+ h2xs perldoc pstruct
+ $(XCOPY) *.bat ..\win32\bin\*.*
+ cd ..\win32
+
distclean:
-del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
$(PERLLIB) modules.lib
@@ -249,12 +252,13 @@ distclean:
-rmdir /s /q release
-rmdir /s /q debug
-install : ALL doc
+install : ALL doc utils
if not exist $(INST_TOP) mkdir $(INST_TOP)
echo I $(INST_TOP) L $(LIBDIR)
$(XCOPY) $(PERLEXE) $(INST_BIN)\*.*
$(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
$(XCOPY) $(PERLDLL) $(INST_BIN)\*.*
+ $(XCOPY) bin\*.* $(INST_BIN)\*.*
$(XCOPY) /e ..\lib $(INST_LIB)\*.*
$(XCOPY) ..\pod\*.bat $(INST_BIN)\*.*
$(XCOPY) ..\pod\*.pod $(INST_POD)\*.*
diff --git a/win32/SDBM_File.mak b/win32/SDBM_File.mak
index 379ba26e2e..95f59c0570 100644
--- a/win32/SDBM_File.mak
+++ b/win32/SDBM_File.mak
@@ -211,7 +211,7 @@ LINK32_OBJS= \
SOURCE=..\ext\SDBM_File\SDBM_File.c
DEP_CPP_SDBM_=\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\..\perl.h"\
".\..\XSUB.h"\
".\..\ext\SDBM_File\sdbm\sdbm.h"\
diff --git a/win32/Socket.mak b/win32/Socket.mak
index fd26c99049..6bd318a3f8 100644
--- a/win32/Socket.mak
+++ b/win32/Socket.mak
@@ -116,7 +116,7 @@ ALL : "$(OUTDIR)\Socket.dll"
CLEAN :
-@erase ".\debug\vc40.pdb"
-@erase ".\debug\vc40.idb"
- -@erase ".\debug\Socket.dll"
+ -@erase "..\lib\auto\Socket\Socket.dll"
-@erase ".\debug\Socket.obj"
-@erase ".\debug\Socket.ilk"
-@erase ".\debug\Socket.lib"
@@ -148,8 +148,8 @@ LINK32=link.exe
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
- /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)/Socket.pdb" /debug\
- /machine:I386 /def:".\Socket.def" /out:"$(OUTDIR)/Socket.dll"\
+ /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/Socket.pdb" /debug\
+ /machine:I386 /def:".\Socket.def" /out:"..\lib\auto\Socket\Socket.dll"\
/implib:"$(OUTDIR)/Socket.lib"
DEF_FILE= \
".\Socket.def"
@@ -199,7 +199,7 @@ LINK32_OBJS= \
SOURCE=..\ext\Socket\Socket.c
DEP_CPP_SOCKE=\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\..\perl.h"\
".\..\XSUB.h"\
{$(INCLUDE)}"\sys\Types.h"\
diff --git a/win32/VC-2.0/Fcntl.mak b/win32/VC-2.0/Fcntl.mak
new file mode 100644
index 0000000000..40bebb701a
--- /dev/null
+++ b/win32/VC-2.0/Fcntl.mak
@@ -0,0 +1,247 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+!IF "$(CFG)" == ""
+CFG=Fcntl - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Fcntl - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Fcntl - Win32 Release" && "$(CFG)" != "Fcntl - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Fcntl.mak" CFG="Fcntl - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Fcntl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Fcntl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+CPP=cl.exe
+RSC=rc.exe
+MTL=mktyplib.exe
+
+!IF "$(CFG)" == "Fcntl - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Fcntl___"
+# PROP BASE Intermediate_Dir "Fcntl___"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\Fcntl.dll"
+
+CLEAN :
+ -@erase "..\lib\auto\Fcntl\Fcntl.dll"
+ -@erase ".\Release\Fcntl.obj"
+ -@erase ".\Release\Fcntl.lib"
+ -@erase ".\Release\Fcntl.exp"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /O2 /I ".\include" /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /O2 /I ".\include" /I "." /I ".." /D "WIN32" /D\
+ "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/Fcntl.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\Release/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /win32
+MTL_PROJ=/nologo /D "NDEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/Fcntl.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"../lib/auto/Fcntl/Fcntl.dll"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /pdb:none /machine:I386 /def:".\Fcntl.def"\
+ /out:"../lib/auto/Fcntl/Fcntl.dll" /implib:"$(OUTDIR)/Fcntl.lib"
+DEF_FILE= \
+ ".\Fcntl.def"
+LINK32_OBJS= \
+ ".\Release\Fcntl.obj" \
+ "..\perl.lib"
+
+"$(OUTDIR)\Fcntl.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "Fcntl - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Fcntl__0"
+# PROP BASE Intermediate_Dir "Fcntl__0"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+OUTDIR=.\Debug
+INTDIR=.\Debug
+
+ALL : "$(OUTDIR)\Fcntl.dll"
+
+CLEAN :
+ -@erase "..\lib\auto\Fcntl\Fcntl.dll"
+ -@erase ".\Debug\Fcntl.obj"
+ -@erase ".\Debug\vc40.pdb"
+ -@erase ".\Debug\vc40.idb"
+ -@erase ".\Debug\Fcntl.lib"
+ -@erase ".\Debug\Fcntl.exp"
+ -@erase ".\Debug\Fcntl.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D\
+ "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/Fcntl.pch" /YX /Fo"$(INTDIR)/"\
+ /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /win32
+MTL_PROJ=/nologo /D "_DEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/Fcntl.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"../lib/auto/Fcntl/Fcntl.dll"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/Fcntl.pdb" /debug\
+ /machine:I386 /def:".\Fcntl.def" /out:"../lib/auto/Fcntl/Fcntl.dll"\
+ /implib:"$(OUTDIR)/Fcntl.lib"
+DEF_FILE= \
+ ".\Fcntl.def"
+LINK32_OBJS= \
+ ".\Debug\Fcntl.obj" \
+ "..\perl.lib"
+
+"$(OUTDIR)\Fcntl.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "Fcntl - Win32 Release"
+# Name "Fcntl - Win32 Debug"
+
+!IF "$(CFG)" == "Fcntl - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Fcntl - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=..\ext\Fcntl\Fcntl.c
+NODEP_CPP_FCNTL=\
+ "..\ext\Fcntl\EXTERN.h"\
+ "..\ext\Fcntl\perl.h"\
+ "..\ext\Fcntl\XSUB.h"\
+
+
+!IF "$(CFG)" == "Fcntl - Win32 Release"
+
+
+"$(INTDIR)\Fcntl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "Fcntl - Win32 Debug"
+
+
+"$(INTDIR)\Fcntl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\Fcntl.def
+
+!IF "$(CFG)" == "Fcntl - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Fcntl - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=..\perl.lib
+
+!IF "$(CFG)" == "Fcntl - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Fcntl - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/win32/VC-2.0/IO.mak b/win32/VC-2.0/IO.mak
new file mode 100644
index 0000000000..2b71bc6fb1
--- /dev/null
+++ b/win32/VC-2.0/IO.mak
@@ -0,0 +1,245 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+!IF "$(CFG)" == ""
+CFG=IO - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to IO - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "IO - Win32 Release" && "$(CFG)" != "IO - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "IO.mak" CFG="IO - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "IO - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "IO - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+CPP=cl.exe
+RSC=rc.exe
+MTL=mktyplib.exe
+
+!IF "$(CFG)" == "IO - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "IO___Win"
+# PROP BASE Intermediate_Dir "IO___Win"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\IO.dll"
+
+CLEAN :
+ -@erase "..\lib\auto\IO\IO.dll"
+ -@erase ".\Release\IO.obj"
+ -@erase ".\Release\IO.lib"
+ -@erase ".\Release\IO.exp"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /O2 /I ".\include" /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /O2 /I ".\include" /I "." /I ".." /D "WIN32" /D\
+ "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/IO.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\Release/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /win32
+MTL_PROJ=/nologo /D "NDEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/IO.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"..\lib\auto\IO\IO.dll"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /pdb:none /machine:I386 /def:".\IO.def"\
+ /out:"..\lib\auto\IO\IO.dll" /implib:"$(OUTDIR)/IO.lib"
+DEF_FILE= \
+ ".\IO.def"
+LINK32_OBJS= \
+ ".\Release\IO.obj" \
+ "..\perl.lib"
+
+"$(OUTDIR)\IO.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "IO - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+OUTDIR=.\Debug
+INTDIR=.\Debug
+
+ALL : "$(OUTDIR)\IO.dll"
+
+CLEAN :
+ -@erase ".\Debug\IO.lib"
+ -@erase ".\Debug\IO.obj"
+ -@erase ".\Debug\IO.exp"
+ -@erase ".\Debug\vc40.pdb"
+ -@erase ".\Debug\vc40.idb"
+ -@erase "..\lib\auto\IO\IO.dll"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D\
+ "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/IO.pch" /YX /Fo"$(INTDIR)/"\
+ /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /win32
+MTL_PROJ=/nologo /D "_DEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/IO.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /pdb:none /debug /machine:I386 /out:"..\lib\auto\IO\IO.dll"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /pdb:none /debug /machine:I386 /def:".\IO.def"\
+ /out:"..\lib\auto\IO\IO.dll" /implib:"$(OUTDIR)/IO.lib"
+DEF_FILE= \
+ ".\IO.def"
+LINK32_OBJS= \
+ ".\Debug\IO.obj" \
+ "..\perl.lib"
+
+"$(OUTDIR)\IO.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "IO - Win32 Release"
+# Name "IO - Win32 Debug"
+
+!IF "$(CFG)" == "IO - Win32 Release"
+
+!ELSEIF "$(CFG)" == "IO - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=..\ext\Io\IO.c
+NODEP_CPP_IO_C0=\
+ "..\ext\Io\EXTERN.h"\
+ "..\ext\Io\perl.h"\
+ "..\ext\Io\XSUB.h"\
+
+
+!IF "$(CFG)" == "IO - Win32 Release"
+
+
+"$(INTDIR)\IO.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "IO - Win32 Debug"
+
+
+"$(INTDIR)\IO.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\IO.def
+
+!IF "$(CFG)" == "IO - Win32 Release"
+
+!ELSEIF "$(CFG)" == "IO - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=..\perl.lib
+
+!IF "$(CFG)" == "IO - Win32 Release"
+
+!ELSEIF "$(CFG)" == "IO - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/win32/VC-2.0/Opcode.mak b/win32/VC-2.0/Opcode.mak
new file mode 100644
index 0000000000..8ec2812e6b
--- /dev/null
+++ b/win32/VC-2.0/Opcode.mak
@@ -0,0 +1,247 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+!IF "$(CFG)" == ""
+CFG=Opcode - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Opcode - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Opcode - Win32 Release" && "$(CFG)" != "Opcode - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Opcode.mak" CFG="Opcode - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Opcode - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Opcode - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+CPP=cl.exe
+RSC=rc.exe
+MTL=mktyplib.exe
+
+!IF "$(CFG)" == "Opcode - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Opcode__"
+# PROP BASE Intermediate_Dir "Opcode__"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\Opcode.dll"
+
+CLEAN :
+ -@erase "..\lib\auto\Opcode\Opcode.dll"
+ -@erase ".\Release\Opcode.obj"
+ -@erase ".\Release\Opcode.lib"
+ -@erase ".\Release\Opcode.exp"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /O2 /I ".\include" /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /O2 /I ".\include" /I "." /I ".." /D "WIN32" /D\
+ "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/Opcode.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\Release/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /win32
+MTL_PROJ=/nologo /D "NDEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/Opcode.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /out:"../lib/auto/Opcode/Opcode.dll"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /pdb:none /machine:I386 /def:".\Opcode.def"\
+ /out:"../lib/auto/Opcode/Opcode.dll" /implib:"$(OUTDIR)/Opcode.lib"
+DEF_FILE= \
+ ".\Opcode.def"
+LINK32_OBJS= \
+ ".\Release\Opcode.obj" \
+ "..\perl.lib"
+
+"$(OUTDIR)\Opcode.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "Opcode - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Opcode_0"
+# PROP BASE Intermediate_Dir "Opcode_0"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+OUTDIR=.\Debug
+INTDIR=.\Debug
+
+ALL : "$(OUTDIR)\Opcode.dll"
+
+CLEAN :
+ -@erase "..\lib\auto\Opcode\Opcode.dll"
+ -@erase ".\Debug\Opcode.obj"
+ -@erase ".\Debug\vc40.pdb"
+ -@erase ".\Debug\vc40.idb"
+ -@erase ".\Debug\Opcode.lib"
+ -@erase ".\Debug\Opcode.exp"
+ -@erase ".\Debug\Opcode.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /MT /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D\
+ "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/Opcode.pch" /YX /Fo"$(INTDIR)/"\
+ /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /win32
+MTL_PROJ=/nologo /D "_DEBUG" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/Opcode.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"../lib/auto/Opcode/Opcode.dll"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
+ /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/Opcode.pdb" /debug\
+ /machine:I386 /def:".\Opcode.def" /out:"../lib/auto/Opcode/Opcode.dll"\
+ /implib:"$(OUTDIR)/Opcode.lib"
+DEF_FILE= \
+ ".\Opcode.def"
+LINK32_OBJS= \
+ ".\Debug\Opcode.obj" \
+ "..\perl.lib"
+
+"$(OUTDIR)\Opcode.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "Opcode - Win32 Release"
+# Name "Opcode - Win32 Debug"
+
+!IF "$(CFG)" == "Opcode - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Opcode - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\Opcode.def
+
+!IF "$(CFG)" == "Opcode - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Opcode - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=..\ext\Opcode\Opcode.c
+NODEP_CPP_OPCOD=\
+ "..\ext\Opcode\EXTERN.h"\
+ "..\ext\Opcode\perl.h"\
+ "..\ext\Opcode\XSUB.h"\
+
+
+!IF "$(CFG)" == "Opcode - Win32 Release"
+
+
+"$(INTDIR)\Opcode.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "Opcode - Win32 Debug"
+
+
+"$(INTDIR)\Opcode.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=..\perl.lib
+
+!IF "$(CFG)" == "Opcode - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Opcode - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/win32/VC-2.0/SDBM_File.mak b/win32/VC-2.0/SDBM_File.mak
index 6ebaa15f2f..0eb689727c 100644
--- a/win32/VC-2.0/SDBM_File.mak
+++ b/win32/VC-2.0/SDBM_File.mak
@@ -136,9 +136,9 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-# ADD BASE CPP /nologo /MTd /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
-# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I ".\include" /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "MSDOS" /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /Zi /Od /I ".\include" /I "." /I ".." /D\
+# ADD BASE CPP /nologo /MT /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "MSDOS" /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D\
"_DEBUG" /D "WIN32" /D "_WINDOWS" /D "MSDOS" \
/Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
@@ -211,7 +211,7 @@ LINK32_OBJS= \
SOURCE=..\ext\SDBM_File\SDBM_File.c
DEP_CPP_SDBM_=\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\..\perl.h"\
".\..\XSUB.h"\
".\..\ext\SDBM_File\sdbm\sdbm.h"\
diff --git a/win32/VC-2.0/Socket.mak b/win32/VC-2.0/Socket.mak
index 69a774c279..f7475e2a05 100644
--- a/win32/VC-2.0/Socket.mak
+++ b/win32/VC-2.0/Socket.mak
@@ -116,7 +116,7 @@ ALL : "$(OUTDIR)\Socket.dll"
CLEAN :
-@erase ".\debug\vc40.pdb"
-@erase ".\debug\vc40.idb"
- -@erase ".\debug\Socket.dll"
+ -@erase "..\lib\auto\Socket\Socket.dll"
-@erase ".\debug\Socket.obj"
-@erase ".\debug\Socket.ilk"
-@erase ".\debug\Socket.lib"
@@ -126,9 +126,9 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-# ADD BASE CPP /nologo /MTd /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I ".\include" /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /Zi /Od /I ".\include" /I "." /I ".." /D\
+# ADD BASE CPP /nologo /MT /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I ".\include" /I "." /I ".." /D\
"WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/Socket.pch" /YX /Fo"$(INTDIR)/"\
/Fd"$(INTDIR)/" /c
CPP_OBJS=.\debug/
@@ -148,8 +148,8 @@ LINK32=link.exe
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\
- /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)/Socket.pdb" /debug\
- /machine:I386 /def:".\Socket.def" /out:"$(OUTDIR)/Socket.dll"\
+ /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/Socket.pdb" /debug\
+ /machine:I386 /def:".\Socket.def" /out:"..\lib\auto\Socket\Socket.dll"\
/implib:"$(OUTDIR)/Socket.lib"
DEF_FILE= \
".\Socket.def"
@@ -199,7 +199,7 @@ LINK32_OBJS= \
SOURCE=..\ext\Socket\Socket.c
DEP_CPP_SOCKE=\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\..\perl.h"\
".\..\XSUB.h"\
"$(INCLUDE)\sys\Types.h"\
diff --git a/win32/VC-2.0/libperl.mak b/win32/VC-2.0/libperl.mak
index ab94be02e4..97d31c4f5d 100644
--- a/win32/VC-2.0/libperl.mak
+++ b/win32/VC-2.0/libperl.mak
@@ -189,9 +189,9 @@ CLEAN :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
# ADD BASE CPP /nologo /W3 /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MTd /W3 /Z7 /Od /I ".\include" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Z7 /Od /I ".\include" /I ".." /I "." /D "WIN32"\
- /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/libperl.pch" /YX /Fo"$(INTDIR)/" /c
+# ADD CPP /nologo /MT /W3 /Z7 /Od /I ".\include" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Z7 /Od /I ".\include" /I ".." /I "." /D "WIN32"\
+/D "PERLDLL" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/libperl.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
CPP_SBRS=.\.
BSC32=bscmake.exe
diff --git a/win32/VC-2.0/miniperl.mak b/win32/VC-2.0/miniperl.mak
index 3fce97fde1..241a0eaf2b 100644
--- a/win32/VC-2.0/miniperl.mak
+++ b/win32/VC-2.0/miniperl.mak
@@ -131,9 +131,9 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-# ADD BASE CPP /nologo /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I "." /I ".\include" /I ".." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "PERLDLL" /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /Zi /Od /I "." /I ".\include" /I ".." /D\
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I "." /I ".\include" /I ".." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "PERLDLL" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I "." /I ".\include" /I ".." /D\
"_DEBUG" /D "WIN32" /D "_CONSOLE" /D "PERLDLL" /Fp"$(INTDIR)/miniperl.pch" /YX\
/Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
@@ -293,7 +293,7 @@ DEP_CPP_WIN32=\
".\..\unixish.h"\
".\..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ ".\..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -343,7 +343,7 @@ DEP_CPP_WIN32S=\
".\..\unixish.h"\
".\..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ ".\..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
diff --git a/win32/VC-2.0/modules.mak b/win32/VC-2.0/modules.mak
index 198ca3120f..4340285530 100644
--- a/win32/VC-2.0/modules.mak
+++ b/win32/VC-2.0/modules.mak
@@ -108,8 +108,8 @@ CLEAN :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MTd /W3 /Z7 /Od /I ".\include" /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "MSDOS" /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Z7 /Od /I ".\include" /I "." /I ".." /D "_DEBUG"\
+# ADD CPP /nologo /MT /W3 /Z7 /Od /I ".\include" /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "MSDOS" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Z7 /Od /I ".\include" /I "." /I ".." /D "_DEBUG"\
/D "WIN32" /D "_WINDOWS" /D "MSDOS" /Fp"$(INTDIR)/modules.pch" /YX\
/Fo"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
@@ -201,7 +201,7 @@ DEP_CPP_DYNAL=\
"..\XSUB.h"\
".\..\ext\DynaLoader\dlutils.c"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -250,7 +250,7 @@ DEP_CPP_DYNAL=\
"..\XSUB.h"\
".\..\ext\DynaLoader\dlutils.c"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -308,7 +308,7 @@ DEP_CPP_FCNTL=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -356,7 +356,7 @@ DEP_CPP_FCNTL=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -414,7 +414,7 @@ DEP_CPP_IO_C4=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -462,7 +462,7 @@ DEP_CPP_IO_C4=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -520,7 +520,7 @@ DEP_CPP_OPCOD=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -568,7 +568,7 @@ DEP_CPP_OPCOD=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -624,7 +624,7 @@ DEP_CPP_SDBM_=\
"..\XSUB.h"\
".\..\ext\SDBM_File\sdbm\sdbm.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -675,7 +675,7 @@ DEP_CPP_SOCKE=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\arpa/inet.h"\
".\include\dirent.h"\
".\include\netdb.h"\
diff --git a/win32/VC-2.0/perl.mak b/win32/VC-2.0/perl.mak
index bee99fda0e..7e10283b2c 100644
--- a/win32/VC-2.0/perl.mak
+++ b/win32/VC-2.0/perl.mak
@@ -119,9 +119,9 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-# ADD BASE CPP /nologo /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I "." /I ".\include" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /Zi /Od /I "." /I ".\include" /I ".." /D\
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I "." /I ".\include" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I "." /I ".\include" /I ".." /D\
"WIN32" /D "_DEBUG" /D "_CONSOLE" /Fp"$(INTDIR)/perl.pch" /YX /Fo"$(INTDIR)/"\
/Fd"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
diff --git a/win32/VC-2.0/perldll.mak b/win32/VC-2.0/perldll.mak
index ab9460e2c8..c7fc5a676c 100644
--- a/win32/VC-2.0/perldll.mak
+++ b/win32/VC-2.0/perldll.mak
@@ -145,9 +145,9 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-# ADD BASE CPP /nologo /MTd /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I "." /I ".\include" /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "PERLDLL" /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /Zi /Od /I "." /I ".\include" /I ".." /D\
+# ADD BASE CPP /nologo /MT /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /Zi /Od /I "." /I ".\include" /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "PERLDLL" /YX /c
+CPP_PROJ=/nologo /MT /W3 /Zi /Od /I "." /I ".\include" /I ".." /D\
"_DEBUG" /D "WIN32" /D "_WINDOWS" /D "PERLDLL" /Fp"$(INTDIR)/perldll.pch" /YX\
/Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
CPP_OBJS=.\debug/
@@ -251,7 +251,7 @@ DEP_CPP_PERLL=\
"..\unixish.h"\
"..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -326,7 +326,7 @@ DEP_CPP_WIN32=\
"..\unixish.h"\
"..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -360,7 +360,7 @@ DEP_CPP_WIN32_=\
"..\perlsdio.h"\
"..\perlsfio.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -376,7 +376,7 @@ DEP_CPP_WIN32_=\
DEP_CPP_WIN32_=\
"..\perl.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
"$(INCLUDE)\sys\stat.h"\
"$(INCLUDE)\sys\types.h"\
diff --git a/win32/VC-2.0/perlglob.mak b/win32/VC-2.0/perlglob.mak
new file mode 100644
index 0000000000..f11a8a52b2
--- /dev/null
+++ b/win32/VC-2.0/perlglob.mak
@@ -0,0 +1,201 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+!IF "$(CFG)" == ""
+CFG=perlglob - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to perlglob - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "perlglob - Win32 Release" && "$(CFG)" !=\
+ "perlglob - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "perlglob.mak" CFG="perlglob - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "perlglob - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "perlglob - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "perlglob - Win32 Debug"
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "perlglob - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "perlglob"
+# PROP BASE Intermediate_Dir "perlglob"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "release"
+# PROP Intermediate_Dir "release"
+# PROP Target_Dir ""
+OUTDIR=.\release
+INTDIR=.\release
+
+ALL : "$(OUTDIR)\perlglob.exe"
+
+CLEAN :
+ -@erase "..\perlglob.exe"
+ -@erase ".\release\perlglob.obj"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/perlglob.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\release/
+CPP_SBRS=
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/perlglob.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib setargv.obj /nologo /subsystem:console /machine:I386 /out:"../perlglob.exe"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib setargv.obj /nologo\
+ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/perlglob.pdb" /machine:I386\
+ /out:"../perlglob.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/perlglob.obj"
+
+"$(OUTDIR)\perlglob.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "perlglob - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "perlglo0"
+# PROP BASE Intermediate_Dir "perlglo0"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "debug"
+# PROP Intermediate_Dir "debug"
+# PROP Target_Dir ""
+OUTDIR=.\debug
+INTDIR=.\debug
+
+ALL : "$(OUTDIR)\perlglob.exe"
+
+CLEAN :
+ -@erase "..\perlglob.exe"
+ -@erase ".\debug\perlglob.obj"
+ -@erase "..\perlglob.ilk"
+ -@erase ".\debug\perlglob.pdb"
+ -@erase ".\debug\vc40.pdb"
+ -@erase ".\debug\vc40.idb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MLd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/perlglob.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\debug/
+CPP_SBRS=
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/perlglob.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"..\perlglob.exe"
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib setargv.obj /nologo\
+ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/perlglob.pdb" /debug\
+ /machine:I386 /out:"..\perlglob.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/perlglob.obj"
+
+"$(OUTDIR)\perlglob.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "perlglob - Win32 Release"
+# Name "perlglob - Win32 Debug"
+
+!IF "$(CFG)" == "perlglob - Win32 Release"
+
+!ELSEIF "$(CFG)" == "perlglob - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\perlglob.c
+
+!IF "$(CFG)" == "perlglob - Win32 Release"
+
+
+"$(INTDIR)\perlglob.obj" : $(SOURCE) "$(INTDIR)"
+
+
+!ELSEIF "$(CFG)" == "perlglob - Win32 Debug"
+
+
+"$(INTDIR)\perlglob.obj" : $(SOURCE) "$(INTDIR)"
+
+
+!ENDIF
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/win32/config.H b/win32/config.H
index f71ddc8151..420afcccac 100644
--- a/win32/config.H
+++ b/win32/config.H
@@ -1241,7 +1241,7 @@
* This symbol, if defined, indicates to the C program that it should
* include <utime.h>.
*/
-/*#define I_UTIME /**/
+#define I_UTIME /**/
/* I_STDARG:
* This symbol, if defined, indicates that <stdarg.h> exists and should
diff --git a/win32/config.w32 b/win32/config.w32
index 116762202e..e8a1c03af8 100644
--- a/win32/config.w32
+++ b/win32/config.w32
@@ -342,7 +342,7 @@ i_termio='undef'
i_termios='undef'
i_time='define'
i_unistd='undef'
-i_utime='undef'
+i_utime='define'
i_values='undef'
i_varargs='undef'
i_varhdr='varargs.h'
diff --git a/win32/libperl.mak b/win32/libperl.mak
index 3fe30ffa8d..f25b2c4a66 100644
--- a/win32/libperl.mak
+++ b/win32/libperl.mak
@@ -191,7 +191,7 @@ CLEAN :
# ADD BASE CPP /nologo /W3 /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MTd /W3 /Z7 /Od /I ".\include" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MTd /W3 /Z7 /Od /I ".\include" /I ".." /I "." /D "WIN32"\
- /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/libperl.pch" /YX /Fo"$(INTDIR)/" /c
+/D "PERLDLL" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/libperl.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Debug/
CPP_SBRS=.\.
BSC32=bscmake.exe
diff --git a/win32/miniperl.mak b/win32/miniperl.mak
index 9e6e2a4a15..55fcb5a8af 100644
--- a/win32/miniperl.mak
+++ b/win32/miniperl.mak
@@ -293,7 +293,7 @@ DEP_CPP_WIN32=\
".\..\unixish.h"\
".\..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ ".\..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -343,7 +343,7 @@ DEP_CPP_WIN32S=\
".\..\unixish.h"\
".\..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ ".\..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
diff --git a/win32/modules.mak b/win32/modules.mak
index 8c0a546ec2..2c4b0bf591 100644
--- a/win32/modules.mak
+++ b/win32/modules.mak
@@ -201,7 +201,7 @@ DEP_CPP_DYNAL=\
"..\XSUB.h"\
".\..\ext\DynaLoader\dlutils.c"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -250,7 +250,7 @@ DEP_CPP_DYNAL=\
"..\XSUB.h"\
".\..\ext\DynaLoader\dlutils.c"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -308,7 +308,7 @@ DEP_CPP_FCNTL=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -356,7 +356,7 @@ DEP_CPP_FCNTL=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -414,7 +414,7 @@ DEP_CPP_IO_C4=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -462,7 +462,7 @@ DEP_CPP_IO_C4=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -520,7 +520,7 @@ DEP_CPP_OPCOD=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -568,7 +568,7 @@ DEP_CPP_OPCOD=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -624,7 +624,7 @@ DEP_CPP_SDBM_=\
"..\XSUB.h"\
".\..\ext\SDBM_File\sdbm\sdbm.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -675,7 +675,7 @@ DEP_CPP_SOCKE=\
"..\util.h"\
"..\XSUB.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\arpa/inet.h"\
".\include\dirent.h"\
".\include\netdb.h"\
diff --git a/win32/perldll.mak b/win32/perldll.mak
index eb308771a3..5b589c853b 100644
--- a/win32/perldll.mak
+++ b/win32/perldll.mak
@@ -251,7 +251,7 @@ DEP_CPP_PERLL=\
"..\unixish.h"\
"..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -326,7 +326,7 @@ DEP_CPP_WIN32=\
"..\unixish.h"\
"..\util.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -360,7 +360,7 @@ DEP_CPP_WIN32_=\
"..\perlsdio.h"\
"..\perlsfio.h"\
".\config.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
".\include\dirent.h"\
".\include\netdb.h"\
".\include\sys/socket.h"\
@@ -376,7 +376,7 @@ DEP_CPP_WIN32_=\
DEP_CPP_WIN32_=\
"..\perl.h"\
- ".\EXTERN.h"\
+ "..\EXTERN.h"\
{$(INCLUDE)}"\sys\stat.h"\
{$(INCLUDE)}"\sys\types.h"\
diff --git a/win32/win32.c b/win32/win32.c
index 2e025ce152..5efca7c711 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -41,8 +41,15 @@ char szShellPath[MAX_PATH+1];
char szPerlLibRoot[MAX_PATH+1];
HANDLE PerlDllHandle = INVALID_HANDLE_VALUE;
-#define IsWin95() (Win32System == VER_PLATFORM_WIN32_WINDOWS)
-#define IsWinNT() (Win32System == VER_PLATFORM_WIN32_NT)
+int
+IsWin95(void) {
+ return (Win32System == VER_PLATFORM_WIN32_WINDOWS);
+}
+
+int
+IsWinNT(void) {
+ return (Win32System == VER_PLATFORM_WIN32_NT);
+}
void *
SetIOSubSystem(void *p)
@@ -344,7 +351,8 @@ do_aspawn(void* really, void** mark, void** arglast)
cmd = SvPV(sv, length);
}
else {
- cmd = GetShell();
+ argv[index++] = cmd = GetShell();
+ argv[index++] = "/x"; /* always enable command extensions */
argv[index++] = "/c";
}
@@ -410,6 +418,7 @@ do_spawn(char *cmd)
status = win32_spawnle(P_WAIT,
shell,
shell,
+ "/x",
"/c", cmd, (char*)0, environ);
}
@@ -1039,8 +1048,9 @@ win32_spawnle(int mode, const char *cmdname, const char *arglist,...)
argp = &arglist;
while (*argp++) ;
+ envp = (const char* const*)*argp;
- return pIOSubSystem->pfnspawnvpe(mode, cmdname, &arglist, argp);
+ return pIOSubSystem->pfnspawnvpe(mode, cmdname, &arglist, envp);
}
int
diff --git a/win32/win32.h b/win32/win32.h
index 0a18645d9c..7d252f78e5 100644
--- a/win32/win32.h
+++ b/win32/win32.h
@@ -105,4 +105,11 @@ typedef char * caddr_t; /* In malloc.c (core address). */
#pragma warning(disable: 4018 4035 4101 4102 4244 4245 4761)
+int IsWin95(void);
+int IsWinNT(void);
+
+#ifndef VER_PLATFORM_WIN32_WINDOWS /* VC-2.0 headers dont have this */
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#endif
+
#endif /* _INC_WIN32_PERL5 */
diff --git a/win32/win32aux.c b/win32/win32aux.c
index 526b6999c9..1af2c7abd2 100644
--- a/win32/win32aux.c
+++ b/win32/win32aux.c
@@ -16,6 +16,7 @@ extern "C" {
#include <assert.h>
#include <errno.h>
+#include "win32.h"
#include "win32iop.h"
struct servent*
@@ -24,7 +25,7 @@ win32_savecopyservent(struct servent*d, struct servent*s, const char *proto)
d->s_name = s->s_name;
d->s_aliases = s->s_aliases;
d->s_port = s->s_port;
- if (s->s_proto && strlen(s->s_proto))
+ if (!IsWin95() && s->s_proto && strlen(s->s_proto))
d->s_proto = s->s_proto;
else if (proto && strlen(proto))
d->s_proto = (char *)proto;