[inseparable changes from match from perl-5.003_94 to perl-5.003_95]
Perl 5 Porters [Sat, 22 Mar 1997 03:34:25 +0000 (15:34 +1200)]
 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

77 files changed:
Changes
INSTALL
MANIFEST
README.win32
doio.c
dosish.h
embed.h
ext/Opcode/Safe.pm
global.sym
lib/ExtUtils/Command.pm
lib/Term/Complete.pm
lib/subs.pm
op.c
patchlevel.h
plan9/buildinfo
pod/perlcall.pod
pod/perldata.pod
pod/perldelta.pod
pod/perldiag.pod
pod/perlembed.pod
pod/perlfaq.pod
pod/perlfaq1.pod
pod/perlfaq2.pod
pod/perlfaq3.pod
pod/perlfaq4.pod
pod/perlfaq5.pod
pod/perlfaq6.pod
pod/perlfaq7.pod
pod/perlfaq8.pod
pod/perlfaq9.pod
pod/perlguts.pod
pod/perlmod.pod
pod/perlop.pod
pod/perlpod.pod
pod/perlsub.pod
pod/perltoc.pod
pod/pod2html.PL
pp_sys.c
proto.h
sv.c
t/comp/multiline.t
t/comp/redef.t
t/lib/db-btree.t
t/lib/db-hash.t
t/lib/db-recno.t
t/op/magic.t
t/op/misc.t
t/op/mkdir.t
t/op/runlevel.t
t/op/stat.t
t/op/write.t
t/pragma/locale.t
vms/config.vms
vms/descrip.mms
win32/Makefile
win32/SDBM_File.mak
win32/Socket.mak
win32/VC-2.0/Fcntl.mak [new file with mode: 0644]
win32/VC-2.0/IO.mak [new file with mode: 0644]
win32/VC-2.0/Opcode.mak [new file with mode: 0644]
win32/VC-2.0/SDBM_File.mak
win32/VC-2.0/Socket.mak
win32/VC-2.0/libperl.mak
win32/VC-2.0/miniperl.mak
win32/VC-2.0/modules.mak
win32/VC-2.0/perl.mak
win32/VC-2.0/perldll.mak
win32/VC-2.0/perlglob.mak [new file with mode: 0644]
win32/config.H
win32/config.w32
win32/libperl.mak
win32/miniperl.mak
win32/modules.mak
win32/perldll.mak
win32/win32.c
win32/win32.h
win32/win32aux.c

diff --git a/Changes b/Changes
index b7f1ad5..62c1b45 100644 (file)
--- 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 bc21709..3376508 100644 (file)
--- 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
index 987d22c..a0585d5 100644 (file)
--- 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
index 36953ec..82c9bac 100644 (file)
@@ -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 8c4c267..271de28 100644 (file)
--- a/doio.c
+++ b/doio.c
 #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>
index 58fdb28..dfc5e35 100644 (file)
--- 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 3beabb6..a408584 100644 (file)
--- a/embed.h
+++ b/embed.h
 #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
index 2277279..c9d7416 100644 (file)
@@ -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;
 }
index ddfe931..9137270 100644 (file)
@@ -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
index 8c4fd7a..7bdbea9 100644 (file)
@@ -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 
index e3c290a..275aade 100644 (file)
@@ -29,6 +29,7 @@ The following command characters are defined:
 =over 4
 
 =item E<lt>tabE<gt>
+
 Attempts word completion.
 Cannot be changed.
 
index aa4c7e7..512bc9b 100644 (file)
@@ -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 55b0422..7aa4cbd 100644 (file)
--- 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);
index f7cc9dd..6d4fe6e 100644 (file)
@@ -1,5 +1,5 @@
 #define PATCHLEVEL 3
-#define SUBVERSION 94
+#define SUBVERSION 95
 
 /*
        local_patches -- list of locally applied less-than-subversion patches.
index 49489ad..9981846 100644 (file)
@@ -1 +1 @@
-p9pvers = 5.003_94
+p9pvers = 5.003_95
index 1ff71fc..8236102 100644 (file)
@@ -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()
index f0837b3..b69e77e 100644 (file)
@@ -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.
 
index 958bee3..46bd59b 100644 (file)
@@ -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
index e0a23b0..90b811f 100644 (file)
@@ -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
 
index 4b88754..7752156 100644 (file)
@@ -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` 
index 8db316c..8cbb343 100644 (file)
@@ -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.
index 2510a4b..ad7c68a 100644 (file)
@@ -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
 
index b4c3e9f..7fa34d9 100644 (file)
@@ -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)
index 121743d..64dec98 100644 (file)
@@ -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
 
index 1c1edfa..34b7e5b 100644 (file)
@@ -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.
index c36576f..9c5e842 100644 (file)
@@ -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
 
index 589d89e..0adebd7 100644 (file)
@@ -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/;
 
index 14bfc67..54380e6 100644 (file)
@@ -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);
index 6ad5c15..7250afb 100644 (file)
@@ -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
index e62dac4..2c9a3e0 100644 (file)
@@ -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`>
index 866cafb..ff3d6cd 100644 (file)
@@ -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>.
index 2f1ae5b..194cd11 100644 (file)
@@ -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
index c4a342b..a075667 100644 (file)
@@ -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;
index ce09221..6a13991 100644 (file)
@@ -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
index f2a5b8f..6e2309d 100644 (file)
@@ -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
index 4e412bd..baef932 100644 (file)
@@ -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
index 8dafea5..1c53f6c 100644 (file)
@@ -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;
index f99bf29..998d271 100644 (file)
--- 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 4f83182..671c085 100644 (file)
--- 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 855f608..f8b1904 100644 (file)
--- 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. */
index 0e022e9..fc1eedc 100755 (executable)
@@ -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";}
 
index ad28bfd..07e978b 100755 (executable)
@@ -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 '';
index 10f5853..8975485 100755 (executable)
@@ -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) ;
index 9ebd060..9765e2e 100755 (executable)
@@ -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 );
index b5b4f94..5df5af1 100755 (executable)
@@ -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 );
index fa19716..b338d96 100755 (executable)
@@ -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';
index 02d32bd..1a5afe5 100755 (executable)
@@ -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", $_);
index 7db5ec9..1ffeaa1 100755 (executable)
@@ -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");
index 2fc2174..336b164 100755 (executable)
@@ -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
index d727152..0713007 100755 (executable)
@@ -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";}
index 46ec813..705fa79 100755 (executable)
@@ -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"; }
index 05891fa..d4b73b8 100755 (executable)
@@ -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 }
 }
index 5a362c9..a189724 100644 (file)
@@ -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:
index 06c523e..de8d07a 100644 (file)
@@ -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)]
index 05c2c48..5dbfb3c 100644 (file)
@@ -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)\*.*
index 379ba26..95f59c0 100644 (file)
@@ -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"\
index fd26c99..6bd318a 100644 (file)
@@ -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 (file)
index 0000000..40bebb7
--- /dev/null
@@ -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 (file)
index 0000000..2b71bc6
--- /dev/null
@@ -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 (file)
index 0000000..8ec2812
--- /dev/null
@@ -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
+################################################################################
index 6ebaa15..0eb6897 100644 (file)
@@ -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"\
index 69a774c..f7475e2 100644 (file)
@@ -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"\
index ab94be0..97d31c4 100644 (file)
@@ -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
index 3fce97f..241a0ea 100644 (file)
@@ -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"\
index 198ca31..4340285 100644 (file)
@@ -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"\
index bee99fd..7e10283 100644 (file)
@@ -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/
index ab9460e..c7fc5a6 100644 (file)
@@ -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 (file)
index 0000000..f11a8a5
--- /dev/null
@@ -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
+################################################################################
index f71ddc8..420afcc 100644 (file)
  *     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
index 1167622..e8a1c03 100644 (file)
@@ -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'
index 3fe30ff..f25b2c4 100644 (file)
@@ -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
index 9e6e2a4..55fcb5a 100644 (file)
@@ -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"\
index 8c0a546..2c4b0bf 100644 (file)
@@ -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"\
index eb30877..5b589c8 100644 (file)
@@ -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"\
        
index 2e025ce..5efca7c 100644 (file)
@@ -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
index 0a18645..7d252f7 100644 (file)
@@ -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 */
index 526b699..1af2c7a 100644 (file)
@@ -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;