[win32] integrate mainline
Gurusamy Sarathy [Wed, 25 Feb 1998 21:46:35 +0000 (21:46 +0000)]
p4raw-id: //depot/win32/perl@588

dosish.h
ext/B/Makefile.PL
sv.c
t/lib/thread.t [changed mode: 0755->0644]
t/op/nothread.t [changed mode: 0755->0644]
win32/Makefile
win32/makefile.mk
win32/win32.c
win32/win32.h
win32/win32thread.h

index 3c7f5b5..cfe253c 100644 (file)
--- a/dosish.h
+++ b/dosish.h
 #  define HAS_UTIME
 #  define HAS_KILL
 #  define HAS_WAIT
+#  define HAS_CHOWN
 /*
  * This provides a layer of functions and macros to ensure extensions will
  * get to use the same RTL functions as the core.
index 88bd4ba..bc42a34 100644 (file)
@@ -4,6 +4,7 @@ use Config;
 my $e = $Config{'exe_ext'};
 my $o = $Config{'obj_ext'};
 my $exeout_flag = '-o ';
+my @extras = ();
 if ($^O eq 'MSWin32') {
     if ($Config{'cc'} =~ /^cl/i) {
        $exeout_flag = '-Fe';
@@ -11,11 +12,19 @@ if ($^O eq 'MSWin32') {
     elsif ($Config{'cc'} =~ /^bcc/i) {
        $exeout_flag = '-e';
     }
+    # XXX this probably applies to everyone else
+    @extras = (
+    OBJECT     => "B$o byterun$o",
+    depend     => {
+       "B$o"           => "B.c ../../bytecode.h ../../byterun.h",
+       "byterun$o"     => "../../byterun.c ../../bytecode.h ../../byterun.h",
+    });
 }
 
 WriteMakefile(
     NAME       => "B",
     VERSION    => "a5",
+    @extras,
     clean      => {
        FILES           => "perl byteperl$e *$o B.c *~"
     }
diff --git a/sv.c b/sv.c
index 0edfdb2..ab9ec14 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -2289,7 +2289,7 @@ sv_usepvn(register SV *sv, register char *ptr, register STRLEN len)
 void
 sv_usepvn_mg(register SV *sv, register char *ptr, register STRLEN len)
 {
-    sv_usepvn_mg(sv,ptr,len);
+    sv_usepvn(sv,ptr,len);
     SvSETMAGIC(sv);
 }
 
@@ -2395,7 +2395,7 @@ sv_catpv(register SV *sv, register char *ptr)
 void
 sv_catpv_mg(register SV *sv, register char *ptr)
 {
-    sv_catpv_mg(sv,ptr);
+    sv_catpv(sv,ptr);
     SvSETMAGIC(sv);
 }
 
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 3e1ad86..ee7e757 100644 (file)
@@ -307,7 +307,7 @@ CORE_H = ..\av.h    \
        .\include\sys\socket.h  \
        .\win32.h
 
-DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread
+DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread B
 STATIC_EXT=DynaLoader
 
 DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader
@@ -318,6 +318,7 @@ SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File
 IO=$(EXTDIR)\IO\IO
 ATTRS=$(EXTDIR)\attrs\attrs
 THREAD=$(EXTDIR)\Thread\Thread
+B=$(EXTDIR)\B\B
 
 SOCKET_DLL=..\lib\auto\Socket\Socket.dll
 FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll
@@ -326,6 +327,7 @@ SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll
 IO_DLL=..\lib\auto\IO\IO.dll
 ATTRS_DLL=..\lib\auto\attrs\attrs.dll
 THREAD_DLL=..\lib\auto\Thread\Thread.dll
+B_DLL=..\lib\auto\B\B.dll
 
 STATICLINKMODULES=DynaLoader
 DYNALOADMODULES=       \
@@ -335,7 +337,8 @@ DYNALOADMODULES=    \
        $(SDBM_FILE_DLL)\
        $(IO_DLL)       \
        $(ATTRS_DLL)    \
-       $(THREAD_DLL)
+       $(THREAD_DLL)   \
+       $(B_DLL)
 
 POD2HTML=$(PODDIR)\pod2html
 POD2MAN=$(PODDIR)\pod2man
@@ -470,7 +473,7 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
-$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
+$(B_DLL): $(PERLEXE) $(B).xs
        cd $(EXTDIR)\$(*B)
        ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
        $(MAKE)
@@ -482,6 +485,11 @@ $(THREAD_DLL): $(PERLEXE) $(THREAD).xs
        $(MAKE)
        cd ..\..\win32
 
+$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
+       cd $(EXTDIR)\$(*B)
+       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+       $(MAKE)
+       cd ..\..\win32
 
 $(IO_DLL): $(PERLEXE) $(CONFIGPM) $(IO).xs
        cd $(EXTDIR)\$(*B)
@@ -539,9 +547,9 @@ distclean: clean
                $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
        -del /f *.def *.map
        -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) $(FCNTL_DLL) \
-               $(OPCODE_DLL) $(ATTRS_DLL) $(THREAD_DLL)
+               $(OPCODE_DLL) $(ATTRS_DLL) $(THREAD_DLL) $(B_DLL)
        -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \
-               $(DYNALOADER).c $(ATTRS).c $(THREAD).c
+               $(DYNALOADER).c $(ATTRS).c $(THREAD).c $(B).c
        -del /f $(PODDIR)\*.html
        -del /f $(PODDIR)\*.bat
        -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c \
index aed9f59..7b2eb7d 100644 (file)
@@ -418,7 +418,7 @@ CORE_H = ..\av.h    \
        .\include\sys\socket.h  \
        .\win32.h
 
-DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread
+DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread B
 STATIC_EXT=DynaLoader
 
 DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader
@@ -429,6 +429,7 @@ SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File
 IO=$(EXTDIR)\IO\IO
 ATTRS=$(EXTDIR)\attrs\attrs
 THREAD=$(EXTDIR)\Thread\Thread
+B=$(EXTDIR)\B\B
 
 SOCKET_DLL=..\lib\auto\Socket\Socket.dll
 FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll
@@ -437,6 +438,7 @@ SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll
 IO_DLL=..\lib\auto\IO\IO.dll
 ATTRS_DLL=..\lib\auto\attrs\attrs.dll
 THREAD_DLL=..\lib\auto\Thread\Thread.dll
+B_DLL=..\lib\auto\B\B.dll
 
 STATICLINKMODULES=DynaLoader
 DYNALOADMODULES=       \
@@ -446,7 +448,8 @@ DYNALOADMODULES=    \
        $(SDBM_FILE_DLL)\
        $(IO_DLL)       \
        $(ATTRS_DLL)    \
-       $(THREAD_DLL)
+       $(THREAD_DLL)   \
+       $(B_DLL)
 
 POD2HTML=$(PODDIR)\pod2html
 POD2MAN=$(PODDIR)\pod2man
@@ -643,6 +646,11 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
+$(B_DLL): $(PERLEXE) $(B).xs
+       cd $(EXTDIR)\$(*B) && \
+       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+       cd $(EXTDIR)\$(*B) && $(MAKE)
+
 $(THREAD_DLL): $(PERLEXE) $(THREAD).xs
        cd $(EXTDIR)\$(*B) && \
        ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
@@ -700,9 +708,9 @@ distclean: clean
                $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
        -del /f *.def *.map
        -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) $(FCNTL_DLL) \
-               $(OPCODE_DLL) $(ATTRS_DLL) $(THREAD_DLL)
+               $(OPCODE_DLL) $(ATTRS_DLL) $(THREAD_DLL) $(B_DLL)
        -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \
-               $(DYNALOADER).c $(ATTRS).c $(THREAD).c
+               $(DYNALOADER).c $(ATTRS).c $(THREAD).c $(B).c
        -del /f $(PODDIR)\*.html
        -del /f $(PODDIR)\*.bat
        -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
index 9d819b5..17029d0 100644 (file)
@@ -681,9 +681,12 @@ getlogin(void)
     return (char*)NULL;
 }
 
-/*
- * pretended kill
- */
+int
+chown(const char *path, uid_t owner, gid_t group)
+{
+    /* XXX noop */
+}
+
 int
 kill(int pid, int sig)
 {
index 0eda0ed..58a0ff3 100644 (file)
@@ -155,6 +155,7 @@ extern  int setgid(gid_t gid);
 extern  int    kill(int pid, int sig);
 extern  void   *sbrk(int need);
 extern char *  getlogin(void);
+extern int     chown(const char *p, uid_t o, gid_t g);
 
 #undef  Stat
 #define  Stat          win32_stat
index acb136c..512e629 100644 (file)
@@ -166,7 +166,8 @@ END_EXTERN_C
 #define JOIN(t, avp)                                                   \
     STMT_START {                                                       \
        if ((WaitForSingleObject((t)->self,INFINITE) == WAIT_FAILED)    \
-            || (GetExitCodeThread((t)->self,(LPDWORD)(avp)) == 0))     \
+            || (GetExitCodeThread((t)->self,(LPDWORD)(avp)) == 0)      \
+            || (CloseHandle((t)->self) == 0))                          \
            croak("panic: JOIN");                                       \
        *avp = (AV *)((t)->i.retv);                                     \
     } STMT_END
@@ -174,7 +175,8 @@ END_EXTERN_C
 #define JOIN(t, avp)                                                   \
     STMT_START {                                                       \
        if ((WaitForSingleObject((t)->self,INFINITE) == WAIT_FAILED)    \
-            || (GetExitCodeThread((t)->self,(LPDWORD)(avp)) == 0))     \
+            || (GetExitCodeThread((t)->self,(LPDWORD)(avp)) == 0)      \
+            || (CloseHandle((t)->self) == 0))                          \
            croak("panic: JOIN");                                       \
     } STMT_END
 #endif /* !USE_RTL_THREAD_API || _MSC_VER */