Change 30281 by [EMAIL PROTECTED] on 2007/02/14 13:33:27
Integrate:
[ 28003]
Subject: Merge WinCE and Win32 directories -- Initial patch
From: demerphq <[EMAIL PROTECTED]>
Date: 27-Apr-2006 23:30
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
... //depot/maint-5.8/perl/win32/config_h.PL#2 integrate
... //depot/maint-5.8/perl/win32/dl_win32.xs#4 integrate
... //depot/maint-5.8/perl/win32/include/sys/socket.h#3 integrate
... //depot/maint-5.8/perl/win32/perlhost.h#8 integrate
... //depot/maint-5.8/perl/win32/perllib.c#5 integrate
... //depot/maint-5.8/perl/win32/vdir.h#2 integrate
... //depot/maint-5.8/perl/win32/vmem.h#3 integrate
... //depot/maint-5.8/perl/win32/win32.h#11 integrate
Differences ...
==== //depot/maint-5.8/perl/win32/config_h.PL#2 (text) ====
Index: perl/win32/config_h.PL
--- perl/win32/config_h.PL#1~17645~ 2002-07-19 12:29:57.000000000 -0700
+++ perl/win32/config_h.PL 2007-02-14 05:33:27.000000000 -0800
@@ -2,8 +2,8 @@
BEGIN { warn "Running ".__FILE__."\n" };
BEGIN
{
- require "../lib/Config.pm";
- die "../Config.pm:$@" if $@;
+ require "Config.pm";
+ die "Config.pm:$@" if $@;
Config::->import;
}
use File::Compare qw(compare);
@@ -18,6 +18,7 @@
}
$opt{CONFIG_H} ||= 'config.h';
+$opt{CORE_DIR} ||= '../lib/CORE';
warn "Writing $opt{CONFIG_H}\n";
@@ -76,9 +77,9 @@
close(SH);
-chmod(0666,"../lib/CORE/config.h");
-copy("$file.new","../lib/CORE/config.h") || die "Cannot copy:$!";
-chmod(0444,"../lib/CORE/config.h");
+chmod(0666,"$opt{CORE_DIR}/$opt{CONFIG_H}");
+copy("$file.new","$opt{CORE_DIR}/$opt{CONFIG_H}") || die "Cannot copy:$!";
+chmod(0444,"$opt{CORE_DIR}/$opt{CONFIG_H}");
if (compare("$file.new",$file))
{
==== //depot/maint-5.8/perl/win32/dl_win32.xs#4 (text) ====
Index: perl/win32/dl_win32.xs
--- perl/win32/dl_win32.xs#3~25539~ 2005-09-21 08:02:51.000000000 -0700
+++ perl/win32/dl_win32.xs 2007-02-14 05:33:27.000000000 -0800
@@ -119,7 +119,7 @@
RETVAL = PerlProc_DynaLoad(filename);
}
else
- RETVAL = (void*) GetModuleHandle(NULL);
+ RETVAL = (void*) Win_GetModuleHandle(NULL);
DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", RETVAL));
ST(0) = sv_newmortal() ;
if (RETVAL == NULL)
==== //depot/maint-5.8/perl/win32/include/sys/socket.h#3 (text) ====
Index: perl/win32/include/sys/socket.h
--- perl/win32/include/sys/socket.h#2~26689~ 2006-01-06 15:03:51.000000000
-0800
+++ perl/win32/include/sys/socket.h 2007-02-14 05:33:27.000000000 -0800
@@ -10,12 +10,50 @@
extern "C" {
#endif
+#ifndef _WINCE
+
#define WIN32_LEAN_AND_MEAN
#ifdef __GNUC__
# define Win32_Winsock
#endif
#include <windows.h>
+#else
+/*_WINCE*/
+#ifndef FAR
+#define FAR
+#endif
+
+#define PASCAL __stdcall
+#define WINAPI __stdcall
+
+#undef WORD
+typedef int BOOL;
+typedef unsigned short WORD;
+typedef void* HANDLE;
+typedef void* HWND;
+typedef int (FAR WINAPI *FARPROC)();
+
+typedef unsigned long DWORD;
+typedef void *PVOID;
+
+#define IN
+#define OUT
+
+#ifndef UNDER_CE
+typedef struct _OVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HANDLE hEvent;
+} OVERLAPPED, *LPOVERLAPPED;
+#endif
+
+#undef HOST_NOT_FOUND
+
+#endif /*_WINCE*/
+
/* Too late to include winsock2.h if winsock.h has already been loaded */
#ifndef _WINSOCKAPI_
# include <winsock2.h>
==== //depot/maint-5.8/perl/win32/perlhost.h#8 (text) ====
Index: perl/win32/perlhost.h
--- perl/win32/perlhost.h#7~30138~ 2007-02-05 11:37:53.000000000 -0800
+++ perl/win32/perlhost.h 2007-02-14 05:33:27.000000000 -0800
@@ -7,12 +7,16 @@
* License or the Artistic License, as specified in the README file.
*/
+#ifndef UNDER_CE
#define CHECK_HOST_INTERP
+#endif
#ifndef ___PerlHost_H___
#define ___PerlHost_H___
+#ifndef UNDER_CE
#include <signal.h>
+#endif
#include "iperlsys.h"
#include "vmem.h"
#include "vdir.h"
@@ -823,6 +827,7 @@
FILE*
PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf)
{
+#ifndef UNDER_CE
FILE* pfdup;
fpos_t pos;
char mode[3];
@@ -870,6 +875,9 @@
fsetpos(pfdup, &pos);
}
return pfdup;
+#else
+ return 0;
+#endif
}
struct IPerlStdIO perlStdIO =
@@ -2118,6 +2126,10 @@
LPSTR*
CPerlHost::Lookup(LPCSTR lpStr)
{
+#ifdef UNDER_CE
+ if (!m_lppEnvList || !m_dwEnvCount)
+ return NULL;
+#endif
if (!lpStr)
return NULL;
return (LPSTR*)bsearch(&lpStr, m_lppEnvList, m_dwEnvCount, sizeof(LPSTR),
lookup);
==== //depot/maint-5.8/perl/win32/perllib.c#5 (text) ====
Index: perl/win32/perllib.c
--- perl/win32/perllib.c#4~30269~ 2007-02-13 13:18:26.000000000 -0800
+++ perl/win32/perllib.c 2007-02-14 05:33:27.000000000 -0800
@@ -40,6 +40,9 @@
#ifdef PERL_IMPLICIT_SYS
+/* WINCE: include replaced by:
+extern "C" void win32_checkTLS(PerlInterpreter *host_perl);
+*/
#include "perlhost.h"
void
@@ -48,11 +51,45 @@
dTHX;
if (host_perl != my_perl) {
int *nowhere = NULL;
- *nowhere = 0;
+#ifdef _WIN_CE
+ printf(" ... bad in win32_checkTLS\n");
+ printf(" %08X ne %08X\n",host_perl,my_perl);
+#endif
abort();
}
}
+#ifdef UNDER_CE
+int GetLogicalDrives() {
+ return 0; /* no logical drives on CE */
+}
+int GetLogicalDriveStrings(int size, char addr[]) {
+ return 0; /* no logical drives on CE */
+}
+/* TBD */
+DWORD GetFullPathNameA(LPCSTR fn, DWORD blen, LPTSTR buf, LPSTR *pfile) {
+ return 0;
+}
+/* TBD */
+DWORD GetFullPathNameW(CONST WCHAR *fn, DWORD blen, WCHAR * buf, WCHAR
**pfile) {
+ return 0;
+}
+/* TBD */
+DWORD SetCurrentDirectoryA(LPSTR pPath) {
+ return 0;
+}
+/* TBD */
+DWORD SetCurrentDirectoryW(CONST WCHAR *pPath) {
+ return 0;
+}
+int xcesetuid(uid_t id){return 0;}
+int xceseteuid(uid_t id){ return 0;}
+int xcegetuid() {return 0;}
+int xcegeteuid(){ return 0;}
+#endif
+
+/* WINCE??: include "perlhost.h" */
+
EXTERN_C void
perl_get_host_info(struct IPerlMemInfo* perlMemInfo,
struct IPerlMemInfo* perlMemSharedInfo,
@@ -177,7 +214,7 @@
* Borland's CRT does the right thing to argv[0] already. */
char szModuleName[MAX_PATH];
- GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
+ Win_GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
(void)win32_longpath(szModuleName);
argv[0] = szModuleName;
#endif
@@ -254,7 +291,11 @@
setmode( fileno( stderr ), O_BINARY );
_fmode = O_BINARY;
#endif
+
+#ifndef UNDER_CE
DisableThreadLibraryCalls((HMODULE)hModule);
+#endif
+
w32_perldll_handle = hModule;
set_w32_module_name();
break;
@@ -290,6 +331,7 @@
return TRUE;
}
+
#if defined(USE_ITHREADS) && defined(PERL_IMPLICIT_SYS)
EXTERN_C PerlInterpreter *
perl_clone_host(PerlInterpreter* proto_perl, UV flags) {
==== //depot/maint-5.8/perl/win32/vdir.h#2 (text) ====
Index: perl/win32/vdir.h
--- perl/win32/vdir.h#1~17645~ 2002-07-19 12:29:57.000000000 -0700
+++ perl/win32/vdir.h 2007-02-14 05:33:27.000000000 -0800
@@ -150,7 +150,7 @@
bManageDirectory = 0;
driveBits = GetLogicalDrives();
if (GetLogicalDriveStrings(sizeof(szBuffer), szBuffer)) {
- char* pEnv = GetEnvironmentStrings();
+ char* pEnv = (char*)GetEnvironmentStrings();
char* ptr = szBuffer;
for (index = 0; index < driveCount; ++index) {
if (driveBits & (1<<index)) {
==== //depot/maint-5.8/perl/win32/vmem.h#3 (text) ====
Index: perl/win32/vmem.h
--- perl/win32/vmem.h#2~18911~ 2003-03-10 23:02:41.000000000 -0800
+++ perl/win32/vmem.h 2007-02-14 05:33:27.000000000 -0800
@@ -21,7 +21,9 @@
#ifndef ___VMEM_H_INC___
#define ___VMEM_H_INC___
+#ifndef _WIN_CE
#define _USE_MSVCRT_MEM_ALLOC
+#endif
#define _USE_LINKED_LIST
// #define _USE_BUDDY_BLOCKS
==== //depot/maint-5.8/perl/win32/win32.h#11 (text) ====
Index: perl/win32/win32.h
--- perl/win32/win32.h#10~30138~ 2007-02-05 11:37:53.000000000 -0800
+++ perl/win32/win32.h 2007-02-14 05:33:27.000000000 -0800
@@ -564,5 +564,17 @@
DllExport void *win32_signal_context(void);
#define PERL_GET_SIG_CONTEXT win32_signal_context()
+#ifdef _WIN_CE
+#define Win_GetModuleHandle XCEGetModuleHandleA
+#define Win_GetProcAddress XCEGetProcAddressA
+#define Win_GetModuleFileName XCEGetModuleFileNameA
+#define Win_CreateSemaphore CreateSemaphoreW
+#else
+#define Win_GetModuleHandle GetModuleHandle
+#define Win_GetProcAddress GetProcAddress
+#define Win_GetModuleFileName GetModuleFileName
+#define Win_CreateSemaphore CreateSemaphore
+#endif
+
#endif /* _INC_WIN32_PERL5 */
End of Patch.