diff options
Diffstat (limited to 'win32')
-rw-r--r-- | win32/GNUmakefile | 3 | ||||
-rw-r--r-- | win32/Makefile | 3 | ||||
-rw-r--r-- | win32/Makefile.ce | 1077 | ||||
-rw-r--r-- | win32/ce-helpers/cecopy-lib.pl | 207 | ||||
-rw-r--r-- | win32/ce-helpers/comp.pl | 84 | ||||
-rw-r--r-- | win32/ce-helpers/compile-all.bat | 62 | ||||
-rw-r--r-- | win32/ce-helpers/compile.bat | 42 | ||||
-rw-r--r-- | win32/ce-helpers/makedist.pl | 297 | ||||
-rw-r--r-- | win32/ce-helpers/registry.bat | 28 | ||||
-rw-r--r-- | win32/ce-helpers/sdsdkenv.bat | 3 | ||||
-rw-r--r-- | win32/config.ce | 1137 | ||||
-rw-r--r-- | win32/config_H.ce | 4206 | ||||
-rw-r--r-- | win32/include/sys/errno2.h | 7 | ||||
-rw-r--r-- | win32/include/sys/socket.h | 255 | ||||
-rw-r--r-- | win32/makefile.mk | 3 | ||||
-rw-r--r-- | win32/perl.rc | 36 | ||||
-rw-r--r-- | win32/perlhost.h | 12 | ||||
-rw-r--r-- | win32/perllib.c | 40 | ||||
-rw-r--r-- | win32/perlmaince.c | 40 | ||||
-rw-r--r-- | win32/vmem.h | 2 | ||||
-rw-r--r-- | win32/win32.h | 14 | ||||
-rw-r--r-- | win32/win32ceio.c | 379 | ||||
-rw-r--r-- | win32/win32iop-o.h | 327 | ||||
-rw-r--r-- | win32/win32iop.h | 154 | ||||
-rw-r--r-- | win32/wince.c | 2877 | ||||
-rw-r--r-- | win32/wince.h | 146 | ||||
-rw-r--r-- | win32/wincesck.c | 495 |
27 files changed, 132 insertions, 11804 deletions
diff --git a/win32/GNUmakefile b/win32/GNUmakefile index 97f84382d6..a350fa1dd4 100644 --- a/win32/GNUmakefile +++ b/win32/GNUmakefile @@ -1733,7 +1733,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.amiga ..\pod\perlamiga.pod copy ..\README.android ..\pod\perlandroid.pod copy ..\README.bs2000 ..\pod\perlbs2000.pod - copy ..\README.ce ..\pod\perlce.pod copy ..\README.cn ..\pod\perlcn.pod copy ..\README.cygwin ..\pod\perlcygwin.pod copy ..\README.dos ..\pod\perldos.pod @@ -1861,7 +1860,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ perl5311delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ - perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \ + perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \ perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ diff --git a/win32/Makefile b/win32/Makefile index 176e2a152a..3dea8c5ba6 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1254,7 +1254,6 @@ utils: $(PERLEXE) ..\utils\Makefile copy ..\README.amiga ..\pod\perlamiga.pod copy ..\README.android ..\pod\perlandroid.pod copy ..\README.bs2000 ..\pod\perlbs2000.pod - copy ..\README.ce ..\pod\perlce.pod copy ..\README.cn ..\pod\perlcn.pod copy ..\README.cygwin ..\pod\perlcygwin.pod copy ..\README.dos ..\pod\perldos.pod @@ -1383,7 +1382,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ perl5311delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ - perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \ + perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \ perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ diff --git a/win32/Makefile.ce b/win32/Makefile.ce deleted file mode 100644 index d518c1063d..0000000000 --- a/win32/Makefile.ce +++ /dev/null @@ -1,1077 +0,0 @@ -# -# perl makefile for wince -# During the cross-compilation, it first uses Makefile file to build -# miniperl on HOST and then build required platform -# - -SRCDIR = .. -PV = 531 - -# INSTALL_ROOT specifies a path where this perl will be installed on CE device -INSTALL_ROOT=/netzwerk/sprache/perl -INST_TOP=$(INSTALL_ROOT) -INST_VER= - -# PERLCEDIR shoud be set to current directory -PERLCEDIR = $(MAKEDIR) - -# WCEROOT is a directory where Windows CE Tools was installed -WCEROOT = D:\Windows CE Tools - -# HPERL stands for host perl, which is perl on local desktop machine -# which is usually ..\miniperl.exe -#HPERL = N:\Programme\perl\bin\perl.exe -HPERL = $(MAKEDIR)\..\miniperl.exe - -CEPATH = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN -CELIBDLLDIR = h:\src\wince\celib-palm-3.0 -CECONSOLEDIR = h:\src\wince\w32console - -# specify following options to build perl on local machine, by MSVC -MSVCDIR = D:\MSVStudio\VC98 -CCHOME = $(MSVCDIR) -CCINCDIR = $(CCHOME)\include -CCLIBDIR = $(CCHOME)\lib - -# cecopy program. Make shure it is in your path, as well as cemkdir, cedel -CECOPY = cecopy - -# -# comment this out if you want the legacy default behavior of including '.' at -# the end of @INC. -# -DEFAULT_INC_EXCLUDES_DOT = define - -# -# set this if you wish to use perl's malloc -# This will make perl run few times faster -# WARNING: Turning this on/off WILL break binary compatibility with extensions -# you may have compiled with/without it. -# -PERL_MALLOC = define - - -NOOP = @echo -# keep this untouched! -NULL = - -# -# uncomment exactly one of the following -# -# Embedded Visual C++ 4 and older -CCTYPE = MSVC60 -# Smart Devices for Visual C++ 2005 (aka Visual C++ 8.x) (full version) -#CCTYPE = MSVC80 -# Smart Devices for Visual C++ 2008 (aka Visual C++ 9.x) (full version) -#CCTYPE = MSVC90 - -#CFG=DEBUG -CFG=RELEASE - -!if "$(MACHINE)" == "" -MACHINE=wince-arm-hpc-wce300 -#MACHINE=wince-arm-hpc-wce211 -#MACHINE=wince-sh3-hpc-wce211 -#MACHINE=wince-mips-hpc-wce211 -#MACHINE=wince-sh3-hpc-wce200 -#MACHINE=wince-mips-hpc-wce200 -#MACHINE=wince-arm-pocket-wce300 -#MACHINE=wince-mips-pocket-wce300 -#MACHINE=wince-sh3-pocket-wce300 -#MACHINE=wince-x86em-pocket-wce300 -#MACHINE=wince-mips-palm-wce211 -#MACHINE=wince-sh3-palm-wce211 -#MACHINE=wince-x86em-palm-wce211 -#MACHINE=wince-x86-hpc-wce300 -#MACHINE=wince-arm-pocket-wce400 -!endif - -# set this to your email address -# -#EMAIL = - -##################### CHANGE THESE ONLY IF YOU MUST ##################### - -###################################################################### -# machines - -!if "$(MACHINE)" == "wince-sh3-hpc-wce211" -CC = shcl.exe -ARCH = SH3 -CPU = SH3 -TARGETCPU = SH3 -CEVersion = 211 -OSVERSION = WCE211 -PLATFORM = MS HPC Pro -MCFLAGS = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.11 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-mips-hpc-wce211" -CC = clmips.exe -ARCH = MIPS -CPU = MIPS -TARGETCPU = MIPS -CEVersion = 211 -OSVERSION = WCE211 -PLATFORM = MS HPC Pro -MCFLAGS = -D _MT -D _DLL \ - -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \ - -D PALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.11 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-mips-hpc-wce200" -CC = clmips.exe -ARCH = MIPS -CPU = MIPS -TARGETCPU = MIPS -CEVersion = 200 -OSVERSION = WCE200 -PLATFORM = MS HPC -# MUST USE -MD to get the right FPE stuff... -MCFLAGS = -D _MT -D _DLL -MD \ - -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \ - -D PALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-sh3-hpc-wce200" -CC = shcl.exe -ARCH = SH3 -CPU = SH3 -TARGETCPU = SH3 -CEVersion = 200 -OSVERSION = WCE200 -PLATFORM = MS HPC -# MUST USE -MD to get the right FPE stuff... -MCFLAGS = -D _MT -D _DLL -MD \ - -D SH3 -D sh3 -D _SH3_ -D _sh3_ -D SHx -DPROCESSOR_SH3 \ - -D PALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-arm-hpc-wce211" -CC = clarm.exe -ARCH = ARM -CPU = ARM -TARGETCPU = ARM -CEVersion = 211 -OSVERSION = WCE211 -PLATFORM = MS HPC Pro -MCFLAGS = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \ - -DPROCESSOR_ARM -DPALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.11 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-arm-hpc-wce300" -CC = clarm.exe -ARCH = ARM -CPU = ARM -TARGETCPU = ARM -CEVersion = 300 -OSVERSION = WCE300 -#PLATFORM = HPC2000 -MCFLAGS = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \ - -DPROCESSOR_ARM -DPALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,3.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-mips-palm-wce211" -CC = clmips.exe -ARCH = MIPS -CPU = MIPS -TARGETCPU = MIPS -CEVersion = 211 -OSVERSION = WCE211 -PLATFORM = MS Palm Size PC -MCFLAGS = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.11 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-sh3-palm-wce211" -CC = shcl.exe -ARCH = SH3 -CPU = SH3 -TARGETCPU = SH3 -CEVersion = 211 -OSVERSION = WCE211 -PLATFORM = MS Palm Size PC -MCFLAGS = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \ - -I $(CELIBDLLDIR)\inc -SUBSYS = -subsystem:windowsce,2.11 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-x86em-palm-wce211" -CC = cl.exe -ARCH = X86EM -CPU = X86 -TARGETCPU = X86 -CEVersion = 211 -OSVERSION = WCE211 -PLATFORM = MS Palm Size PC -MCFLAGS = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \ - -D_WIN32_WCE_EMULATION -DPALM_SIZE \ - -I $(CELIBDLLDIR)\inc -MACH = -machine:x86 -SUBSYS = -subsystem:windows -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-x86em-pocket-wce300" -CC = cl.exe -ARCH = X86EM -CPU = X86 -TARGETCPU = X86 -CEVersion = 300 -OSVERSION = WCE300 -PLATFORM = MS Pocket PC -MCFLAGS = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \ - -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \ - -I $(CELIBDLLDIR)\inc -MACH = -machine:x86 -SUBSYS = -subsystem:windows -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-mips-pocket-wce300" -CC = clmips.exe -ARCH = MIPS -CPU = MIPS -TARGETCPU = MIPS -CEVersion = 300 -OSVERSION = WCE300 -PLATFORM = MS Pocket PC -MCFLAGS = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \ - -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \ - -I $(CELIBDLLDIR)\inc -MACH = -machine:mips -SUBSYS = -subsystem:windowsce,3.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -#STDLIBPATH = $(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(CPU) -LDLIBPATH = -libpath:$(CELIBPATH) -#"-libpath:$(STDLIBPATH)" -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-sh3-pocket-wce300" -CC = shcl.exe -ARCH = SH3 -CPU = SH3 -TARGETCPU = SH3 -CEVersion = 300 -OSVERSION = WCE300 -PLATFORM = MS Pocket PC -MCFLAGS = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \ - -DPALM_SIZE -DPOCKET_SIZE \ - -I $(CELIBDLLDIR)\inc -MACH = -machine:sh3 -SUBSYS = -subsystem:windowsce,3.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-arm-pocket-wce300" -CC = clarm.exe -ARCH = ARM -CPU = ARM -TARGETCPU = ARM -CEVersion = 300 -OSVERSION = WCE300 -PLATFORM = MS Pocket PC -MCFLAGS = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \ - -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \ - -I $(CELIBDLLDIR)\inc -MACH = -machine:arm -SUBSYS = -subsystem:windowsce,3.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-x86-hpc-wce300" -CC = cl.exe -ARCH = X86EM -CPU = X86 -TARGETCPU = X86 -CEVersion = 400 -OSVERSION = WCE400 -PLATFORM = MS Pocket PC -MCFLAGS = -DX86 -D_X86_ -Dx86 -DPROCESSOR_X86 -D _MT -D _DLL \ - -DPALM_SIZE -DPOCKET_SIZE -I $(CELIBDLLDIR)\inc -MACH = -machine:IX86 -SUBSYS = -subsystem:windowsce,2.0 -CELIBPATH = $(CELIBDLLDIR)\wince-x86-hpc-wce300-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - -!if "$(MACHINE)" == "wince-arm-pocket-wce400" -#CC = clarm.exe #set in WCEARMV4.BAT -ARCH = ARM -CPU = ARM -TARGETCPU = ARM -CEVersion = 400 -#OSVERSION = WCE300 #set in WCEARMV4.BAT -PLATFORM = MS Pocket PC -MCFLAGS = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \ - -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \ - -I $(CELIBDLLDIR)\inc -MACH = -machine:arm -SUBSYS = -subsystem:windowsce,4.00 -CELIBPATH = $(CELIBDLLDIR)\$(MACHINE)-release -LDLIBPATH = -libpath:$(CELIBPATH) -STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \ - $(CECONSOLEDIR)/$(MACHINE)/w32console.obj -!endif - - -###################################################################### -# common section - -CEDEFS = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \ - $(MCFLAGS) -D PERL - -CECFLAGS = $(CEDEFS) -Zi - -!if "$(CFG)" == "DEBUG" -CECFLAGS = $(CECFLAGS) -Od -!endif - -!if "$(CFG)" == "RELEASE" -# -O2 and -Ot give internal compiler error in perl.c and lexer. -# Also the dll cannot be loaded by perl.exe... -!if "$(CPU)" == "SH3" -!else -CECFLAGS = $(CECFLAGS) -O1 -!endif -! IF "$(CCTYPE)" != "MSVC60" -#turn on LTCG optimization for CCs that have it -CECFLAGS = $(CECFLAGS) -GL -! ENDIF -! IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC90" -#no stack security cookie for CCs where its on by default -CECFLAGS = $(CECFLAGS) -GS- -! ENDIF -!endif - -RCDEFS = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \ - /d _WIN32_WCE=$(CEVersion) - -#PATH=$(CEPATH);$(PATH) - -# attention, for eVC 4, these paths are not generated correctly since the -# WinCE SDK is organized differently from eVC 3, replace the next 2 macros -# with absolute paths to the correct directories on your system -#INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include -#LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH) - -###################################################################### - -!message -!message Compiling for $(MACHINE) -!message LIB=$(LIB) -!message INCLUDE=$(INCLUDE) -!message PATH=$(CEPATH) -!message - -###################################################################### -# -# Additional compiler flags can be specified here. -# - -BUILDOPT = $(BUILDOPT) $(CECFLAGS) -DUSE_CROSS_COMPILE - - -!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == "" -D_CRYPT = undef -!ELSE -D_CRYPT = define -CRYPT_FLAG = -DHAVE_DES_FCRYPT -!ENDIF - -!IF "$(PERL_MALLOC)" == "" -PERL_MALLOC = undef -!ENDIF - -!IF "$(DEFAULT_INC_EXCLUDES_DOT)" == "" -DEFAULT_INC_EXCLUDES_DOT = undef -!ENDIF - -!IF "$(USE_MULTI)" == "" -USE_MULTI = undef -!ENDIF - -!IF "$(USE_ITHREADS)" == "" -USE_ITHREADS = undef -!ENDIF - -!IF "$(USE_IMP_SYS)" == "" -USE_IMP_SYS = undef -!ENDIF - -!IF "$(USE_PERLCRT)" == "" -USE_PERLCRT = undef -!ENDIF - -!IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef" -USE_MULTI = define -!ENDIF - -!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef" -USE_MULTI = define -!ENDIF - -!IF "$(USE_MULTI)" != "undef" -BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT -!ENDIF - -!IF "$(USE_IMP_SYS)" != "undef" -BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS -!ENDIF - -!IF "$(CROSS_NAME)" == "" -CROSS_NAME = $(MACHINE) -!ENDIF - -# new option - automatically defined in perl.h... -#BUILDOPT = $(BUILDOPT) -DUSE_ENVIRON_ARRAY - -PROCESSOR_ARCHITECTURE = $(TARGETCPU) -ARCHNAME = $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE) -ARCHDIR = ..\lib\$(ARCHNAME) -COREDIR = ..\lib\CORE -AUTODIR = ..\lib\auto -LIBDIR = ..\lib -EXTDIR = ..\ext -DISTDIR = ..\dist -CPANDIR = ..\cpan -PODDIR = ..\pod -EXTUTILSDIR = $(LIBDIR)\ExtUtils - -LINK32 = link -LIB32 = $(LINK32) -lib -RSC = rc - -INCLUDES = -I.\include -I. -I.. -DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS) -LOCDEFS = -DPERLDLL -DPERL_CORE -CXX_FLAG = -TP - -PERLEXE_RES = perl.res -PERLDLL_RES = - -!if "$(CFG)" == "RELEASE" -CELIB = celib.lib -!endif - -!if "$(CFG)" == "DEBUG" -CELIB = celib.lib -!endif - -#use ws2.lib instead of winsock.lib for WSAGetLastError -CELIBS = -nodefaultlib \ - ws2.lib $(CELIB) coredll.lib - -#this libc's purpose is WinCE entrypoint to main wrapper, not a real C std lib -!if $(CEVersion) > 200 -LIBC = corelibc.lib -!else -LIBC = msvcrt.lib -!endif - -LIBBASEFILES = $(CRYPT_LIB) $(CELIBS) - -LIBFILES = $(LIBBASEFILES) $(LIBC) - -CFLAGS = -nologo -GF -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ - $(PCHFLAGS) $(OPTIMIZE) - -LINK_FLAGS = -nologo -debug -opt:ref,icf -machine:$(PROCESSOR_ARCHITECTURE) - -!if "$(CFG)" == "RELEASE" && "$(CCTYPE)" != "MSVC60" -#see matching flag in CECFLAGS -LINK_FLAGS = $(LINK_FLAGS) -ltcg -!endif - -OBJOUT_FLAG = -Fo -EXEOUT_FLAG = -Fe - -CFLAGS_O = $(CFLAGS) $(BUILDOPT) - -o = .obj - -# -# Rules -# - -.SUFFIXES : .c $(o) .dll .lib .exe .rc .res - -.c$(o): - $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $< - -.c.i: - $(CC) -c -I$(<D) $(CFLAGS_O) -P $(OBJOUT_FLAG)$@ $< - -.y.c: - $(NOOP) - -$(o).dll: - $(LINK32) -dll $(SUBSYS) $(LDLIBPATH) \ - -implib:$(*B).lib -def:$(*B).def \ - -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL) - -.rc.res: - $(RSC) -i.. $< - -# This must be relative to ../lib/CORE, else the ext dll build fails... -PERLIMPLIB_EXP = perl$(PV).lib -PERLIMPLIB = $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib -PERLDLL = $(MACHINE)\perl$(PV).dll - -DLLDIR = $(MACHINE)\dll -PERLEXE = $(MACHINE)\perl.exe - -CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl -GENUUDMAP = ..\generate_uudmap.exe - -UUDMAP_H = ..\uudmap.h -BITCOUNT_H = ..\bitcount.h -MG_DATA_H = ..\mg_data.h -GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) - -# Unicode data files generated by mktables -FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl -UNIDATAFILES = ..\lib\unicore\Decomposition.pl \ - ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \ - ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \ - ..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \ - ..\lib\unicore\TestProp.pl - -PERLEXE_MANIFEST= .\perlexe.manifest -PERLEXE_ICO = .\perlexe.ico -PERLEXE_RES = .\perlexe.res -PERLDLL_RES = - -# Directories of Unicode data files generated by mktables -UNIDATADIR1 = ..\lib\unicore\To -UNIDATADIR2 = ..\lib\unicore\lib - -# Nominate a target which causes extensions to be re-built -# This used to be $(PERLEXE), but at worst it is the .dll that they depend -# on and really only the interface - i.e. the .def file used to export symbols -# from the .dll -PERLDEP = perldll.def - -MAKE = nmake -nologo -MAKE_BARE = nmake - -CFGSH_TMPL = config.ce -CFGH_TMPL = config_H.ce - -XCOPY = xcopy /f /r /i /d /y -RCOPY = xcopy /f /r /i /e /d /y -NOOP = @rem -NULL = - -DEL = del - -MICROCORE_SRC = \ - ..\av.c \ - ..\caretx.c \ - ..\deb.c \ - ..\doio.c \ - ..\doop.c \ - ..\dquote.c \ - ..\dump.c \ - ..\globals.c \ - ..\gv.c \ - ..\mro_core.c \ - ..\hv.c \ - ..\locale.c \ - ..\keywords.c \ - ..\mathoms.c \ - ..\mg.c \ - ..\numeric.c \ - ..\op.c \ - ..\pad.c \ - ..\perl.c \ - ..\perlapi.c \ - ..\perly.c \ - ..\pp.c \ - ..\pp_ctl.c \ - ..\pp_hot.c \ - ..\pp_pack.c \ - ..\pp_sort.c \ - ..\pp_sys.c \ - ..\reentr.c \ - ..\regcomp.c \ - ..\regexec.c \ - ..\run.c \ - ..\scope.c \ - ..\sv.c \ - ..\taint.c \ - ..\time64.c \ - ..\toke.c \ - ..\universal.c \ - ..\utf8.c \ - ..\util.c - -EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c - -!IF "$(PERL_MALLOC)" == "define" -EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c -!ENDIF - -EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c .\win32io.c - -WIN32_SRC = \ - .\wince.c \ - .\wincesck.c \ - .\win32thread.c - -!IF "$(CRYPT_SRC)" != "" -WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC) -!ENDIF - -CORE_NOCFG_H = \ - ..\av.h \ - ..\cop.h \ - ..\cv.h \ - ..\dosish.h \ - ..\embed.h \ - ..\form.h \ - ..\gv.h \ - ..\handy.h \ - ..\hv.h \ - ..\hv_func.h \ - ..\iperlsys.h \ - ..\mg.h \ - ..\nostdio.h \ - ..\op.h \ - ..\opcode.h \ - ..\perl.h \ - ..\perlapi.h \ - ..\perlsdio.h \ - ..\perly.h \ - ..\pp.h \ - ..\proto.h \ - ..\regexp.h \ - ..\scope.h \ - ..\sv.h \ - ..\thread.h \ - ..\unixish.h \ - ..\utf8.h \ - ..\util.h \ - ..\warnings.h \ - ..\XSUB.h \ - ..\EXTERN.h \ - ..\perlvars.h \ - ..\intrpvar.h \ - .\include\dirent.h \ - .\include\netdb.h \ - .\include\sys\errno2.h \ - .\include\sys\socket.h \ - .\win32.h - -DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attributes B re \ - Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \ - Sys/Hostname - -STATIC_EXT = DynaLoader - -DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader - -ERRNO_PM = $(LIBDIR)\Errno.pm - - -EXTENSION_PM = \ - $(ERRNO_PM) - -CFG_VARS = \ - "INST_TOP=$(INST_TOP)" \ - "INST_VER=$(INST_VER)" \ - "INST_ARCH=$(INST_ARCH)" \ - "archname=$(ARCHNAME)" \ - "cc=$(CC)" \ - "ld=$(LINK32)" \ - "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \ - "cppflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \ - "cf_by=vkon" \ - "cf_email=$(EMAIL)" \ -#9cef8306 - "d_mymalloc=$(PERL_MALLOC)" \ - "libs=$(LIBFILES)" \ - "incpath=$(CCINCDIR)" \ - "libperl=$(PERLIMPLIB_EXP)" \ - "libpth=$(LIBPATH)" \ - "libc=$(LIBC)" \ - "make=$(MAKE_BARE)" \ - "static_ext=$(STATIC_EXT)" \ - "dynamic_ext=$(DYNAMIC_EXT)" \ - "usethreads=$(USE_ITHREADS)" \ - "useithreads=$(USE_ITHREADS)" \ - "usemultiplicity=$(USE_MULTI)" \ - "use64bitint=undef" \ - "uselargefiles=undef" \ - "default_inc_excludes_dot=$(DEFAULT_INC_EXCLUDES_DOT)" \ - "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \ - "optimize=$(OPTIMIZE)" \ - "WIN64=$(WIN64)" - -# -# filenames given to xsubpp must have forward slashes (since it puts -# full pathnames in #line strings) -XSUBPP = $(HPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ - -C++ -prototypes - - -# -# Top targets -# - -all: hostminiperl force_config_h ..\lib\buildcustomize.pl .\config.h ..\git_version.h $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort Extensions PostExt - -$(DYNALOADER)$(o) : $(DYNALOADER).c config.h $(EXTDIR)\DynaLoader\dlutils.c - -#convenience target -configpm_targ : $(CONFIGPM) - -force_config_h: - -@$(DEL) /f config.h - -@$(DEL) /f config.sh - -@$(DEL) /f ..\config.h - -@$(DEL) /f ..\config.sh - -@$(DEL) $(PERLEXE_RES) - -@mkdir ..\host - -@copy $(HPERL) ..\host\miniperl.exe - -@copy $(GENUUDMAP) ..\host\generate_uudmap.exe - -@$(MAKE) -f Makefile distclean - -@copy ..\host\miniperl.exe $(HPERL) - -@copy ..\host\generate_uudmap.exe $(GENUUDMAP) - $(GENUUDMAP) $(GENERATED_HEADERS) - type NUL > force_config_h - -$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H) - -$(BITCOUNT_H) : - $(GENUUDMAP) $(GENERATED_HEADERS) - -$(CONFIGPM) : $(HPERL) ..\config.sh config_h.PL ..\git_version.h - cd .. && $(HPERL) -Ilib configpm --no-glossary - if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL) - $(XCOPY) ..\*.h $(COREDIR)\*.* - $(XCOPY) *.h $(COREDIR)\*.* - $(RCOPY) include $(COREDIR)\*.* - if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM) - -.\config.h: $(CONFIGPM) ..\config.sh - -@$(DEL) /f config.h - -$(HPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(COREDIR)" "CONFIG_H=config.h" - copy config.h ..\config.h - -..\config.sh : config.ce config_sh.PL FindExt.pm - -@$(DEL) /f config.sh - $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh - -..\git_version.h : ..\make_patchnum.pl - cd .. && $(HPERL) -Ilib make_patchnum.pl && cd win32 - -# make sure that we recompile perl.c if the git version changes -$(DLLDIR)\perl.obj : ..\git_version.h - -MakePPPort: $(HPERL) $(CONFIGPM) Extensions_nonxs - $(HPERL) -I..\lib ..\mkppport - -MakePPPort_clean: - -if exist $(HPERL) $(HPERL) -I..\lib ..\mkppport --clean - -#---------------------------------------------------------------------------------- -NOT_COMPILE_EXT = -!if "$(MACHINE)" == "wince-sh3-palm-wce211" -NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap -!endif -!if "$(MACHINE)" == "wince-mips-palm-wce211" -NOT_COMPILE_EXT = $(NOT_COMPILE_EXT) !XS/Typemap -!endif - -Extensions: ..\make_ext.pl $(CONFIGPM) - $(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all \ - !POSIX !Win32 !Win32API/File !Time/HiRes !Time/Piece !re !SDBM_File $(NOT_COMPILE_EXT) - - -Extensions_nonxs: ..\make_ext.pl ..\lib\buildcustomize.pl $(CONFIGPM) ..\pod\perlfunc.pod - $(XCOPY) ..\*.h $(COREDIR)\*.* - $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --nonxs - -Extensions_clean: - -if exist $(HPERL) $(HPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=clean - -PostExt: rebuild_storable - -rebuild_storable: $(PERLEXE) - $(PERLEXE) -I..\lib -I. ..\dist\Storable\stacksize --core - cd ..\dist\Storable - $(MAKE) PERL_CORE=1 - cd ..\..\win32 - -#---------------------------------------------------------------------------------- - -$(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO) - rc $(RCDEFS) perlexe.rc - -clean: Extensions_clean - -if exist .\$(MACHINE)\dll rmdir /s /q .\$(MACHINE)\dll - -@$(DEL) .\$(MACHINE)\*.obj - -@$(DEL) .\$(MACHINE)\*.exe - -@$(DEL) .\$(MACHINE)\*.dll - -@$(DEL) .\$(MACHINE)\*.lib - -@$(DEL) .\$(MACHINE)\*.exp - -@$(DEL) .\$(MACHINE)\*.pdb - -@$(DEL) ..\git_version.h - -@$(DEL) config.h perl.res - -@$(DEL) ..\t\test_state - -XDLLOBJS = \ -$(DLLDIR)\av.obj \ -$(DLLDIR)\caretx.obj \ -$(DLLDIR)\deb.obj \ -$(DLLDIR)\doio.obj \ -$(DLLDIR)\doop.obj \ -$(DLLDIR)\dquote.obj \ -$(DLLDIR)\dump.obj \ -$(DLLDIR)\globals.obj \ -$(DLLDIR)\gv.obj \ -$(DLLDIR)\mro_core.obj \ -$(DLLDIR)\hv.obj \ -$(DLLDIR)\locale.obj \ -$(DLLDIR)\keywords.obj \ -$(DLLDIR)\mathoms.obj \ -$(DLLDIR)\mg.obj \ -$(DLLDIR)\numeric.obj \ -$(DLLDIR)\op.obj \ -$(DLLDIR)\pad.obj \ -$(DLLDIR)\perl.obj \ -$(DLLDIR)\perlapi.obj \ -$(DLLDIR)\perlio.obj \ -$(DLLDIR)\perly.obj \ -$(DLLDIR)\pp.obj \ -$(DLLDIR)\pp_ctl.obj \ -$(DLLDIR)\pp_hot.obj \ -$(DLLDIR)\pp_pack.obj \ -$(DLLDIR)\pp_sort.obj \ -$(DLLDIR)\pp_sys.obj \ -$(DLLDIR)\reentr.obj \ -$(DLLDIR)\regcomp.obj \ -$(DLLDIR)\regexec.obj \ -$(DLLDIR)\run.obj \ -$(DLLDIR)\scope.obj \ -$(DLLDIR)\sv.obj \ -$(DLLDIR)\taint.obj \ -$(DLLDIR)\time64.obj \ -$(DLLDIR)\toke.obj \ -$(DLLDIR)\universal.obj \ -$(DLLDIR)\utf8.obj \ -$(DLLDIR)\util.obj \ -$(DLLDIR)\win32thread.obj \ -$(DLLDIR)\wince.obj \ -$(DLLDIR)\win32io.obj \ -$(DLLDIR)\wincesck.obj \ -$(DLLDIR)\perllib.obj \ -$(DLLDIR)\DynaLoader.obj -!IF "$(PERL_MALLOC)" == "define" -XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\malloc.obj -!ENDIF -!IF "$(CRYPT_SRC)" != "" -XDLLOBJS = $(XDLLOBJS) $(DLLDIR)\fcrypt.obj -!ENDIF - -#sanity checks to make sure all our external files (celib, w32console, and -#MS CE SDK) are locatable -lib_check : - @if not exist $(CECONSOLEDIR)\$(MACHINE)\w32console.obj cmd /k \ - "echo w32console.obj doesn't seem to exist, check your w32console directory \ - & exit 1" - @if not exist $(CELIBDLLDIR)\$(MACHINE)-release\celib.lib cmd /k \ - "echo celib.lib doesn't seem to exist, check your celib directory \ - & exit 1" - @for %X in ( $(LIBC) ) do @if exist %~^$LIB:X ( exit 0 ) \ - else ( echo $(LIBC) doesn't seem to exist, check your build enviroment & exit 1 ) - -#specific header files to check picked at random -header_check : - @if not exist $(CELIBDLLDIR)\inc\cewin32.h cmd /k \ - "echo cewin32.h doesn't seem to exist, check your celib directory \ - & exit 1" - @for %X in (ceconfig.h) do @if exist %~^$INCLUDE:X ( exit 0 ) \ - else ( echo ceconfig.h doesn't seem to exist, check your build enviroment & exit 1 ) - -{$(SRCDIR)}.c{$(DLLDIR)}.obj: - $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $< - -# compiler explains that it will optimize toke.c if we'll give it an -# option -QMOb<num> with num>=4178 -$(DLLDIR)\toke.obj: - $(CC) -c $(CFLAGS_O) -QMOb9000 -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ ..\toke.c - -{$(SRCDIR)/win32}.c{$(DLLDIR)}.obj: - $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $< - -# -DPERL_IMPLICIT_SYS needs C++ for perllib.c -# This is the only file that depends on perlhost.h, vmem.h, and vdir.h -!IF "$(USE_IMP_SYS)" == "define" -$(DLLDIR)\perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h - $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c - rem (frustrated) mv perllib.obj $(DLLDIR) -!ENDIF - -perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl .\config.h - $(HPERL) -I..\lib create_perllibst_h.pl - $(HPERL) -I..\lib -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \ - CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def - -$(PERLDLL) : header_check lib_check $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES) - $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ \ - $(SUBSYS) $(LDLIBPATH) \ - $(LINK_FLAGS) $(LIBFILES) \ - $(XDLLOBJS) $(PERLDLL_RES) - -$(DLLDIR) : - if not exist "$(DLLDIR)" mkdir "$(DLLDIR)" - -$(EXTDIR)\DynaLoader\DynaLoader.c : - $(HPERL) -I..\lib -I. ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(EXTDIR) --dynaloader - -$(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c - $(CC) -c $(CFLAGS_O) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \ - $(EXTDIR)\DynaLoader\DynaLoader.c - -XPERLEXEOBJS = \ -$(MACHINE)\perlmaince.obj - -..\lib\buildcustomize.pl : - $(HPERL) -I..\lib -f ..\write_buildcustomize.pl .. - -$(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS) - $(XCOPY) $(MACHINE)\*.lib $(COREDIR) - $(LINK32) $(SUBSYS) $(LDLIBPATH) \ - -entry:wWinMainCRTStartup \ - -out:$(MACHINE)\perl.exe \ - -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \ - $(PERLIMPLIB) $(PERLEXE_RES) $(LIBFILES) - -$(MACHINE)\perlmaince.obj : perlmaince.c - $(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmaince.c - -iodll: $(IO_DLL) -socketdll: $(SOCKET_DLL) -dumperdll: $(DUMPER_DLL) - -dlls: socketdll iodll dumperdll - -xmkdir -p $(MACHINE)/lib/auto/IO - copy ../lib/auto/IO/IO.bs $(MACHINE)/lib/auto/IO - copy ../lib/auto/IO/IO.dll $(MACHINE)/lib/auto/IO - -xmkdir $(MACHINE)/lib/auto/Socket - copy ../lib/auto/Socket/Socket.bs $(MACHINE)/lib/auto/Socket - copy ../lib/auto/Socket/Socket.dll $(MACHINE)/lib/auto/Socket - -xmkdir -p $(MACHINE)/lib/auto/Data/Dumper - copy ../lib/auto/Data/Dumper/Dumper.bs $(MACHINE)/lib/auto/Data/Dumper - copy ../lib/auto/Data/Dumper/Dumper.dll $(MACHINE)/lib/auto/Data/Dumper - -makedist: all dlls - $(COPY) $(CELIBPATH)\celib.dll $(MACHINE) - copy perl.txt $(MACHINE) - copy registry.bat $(MACHINE) - copy ../lib/Config.pm $(MACHINE)/lib - cd $(MACHINE) - -@$(DEL) perl-$(MACHINE).tar.gz - sh -c "tar cf perl-$(MACHINE).tar *.exe *.dll *.txt *.bat lib" - gzip -9 perl-$(MACHINE).tar - mv perl-$(MACHINE).tar.gz h:/freenet/new - cd .. - -install: all - -cemkdir "$(INSTALL_ROOT)" - -cemkdir "$(INSTALL_ROOT)\bin" - -cemkdir "$(INSTALL_ROOT)\lib" - $(CECOPY) "pc:$(MACHINE)/perl.exe" "ce:$(INSTALL_ROOT)/bin" - $(CECOPY) "pc:$(MACHINE)/perl$(PV).dll" "ce:$(INSTALL_ROOT)/bin" - $(CECOPY) "pc:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib" - -$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables MakePPPort - cd ..\lib\unicore && \ - $(HPERL) -I.. -I..\..\lib mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE) - -dist: all - $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) - -zipdist: all - $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) - $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip - -zip: - $(HPERL) -I..\lib ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME) --zip - -hostminiperl: ..\miniperl.exe - -..\miniperl.exe: - set PATH=$(CCHOME)\bin;$(PATH) - $(MAKE) -f Makefile "CCHOME=$(MSVCDIR)" "CCINCDIR=$(CCHOME)\include" "CCLIBDIR=$(CCHOME)\lib" "INCLUDE=$(CCHOME)\include" "LIB=$(CCHOME)\lib" "LINK_FLAGS=" .\config.h ..\miniperl.exe - -host-install: - perl -MConfig -MExtUtils::Install -we "install({'../lib/CORE', qq#$$Config{installprefixexp}/lib/CORE#},1)" - perl -MConfig -MExtUtils::Install -we "install({'../lib', qq#$$Config{installprefixexp}/lib#},1)" - perl -MConfig -MFile::Copy -we "copy qq#./$(MACHINE)/perl$(PV).lib#, qq#$$Config{installprefixexp}/lib/CORE#" - perl -MConfig -we "system qq#perl -pi.bak -we \"s{((arch^|priv)libexp)='.*'}{\$$1='# . \ - quotemeta($$Config{installprefixexp}) . \ - qq#/lib'}\" $$Config{installprefixexp}/lib/Config.pm#" diff --git a/win32/ce-helpers/cecopy-lib.pl b/win32/ce-helpers/cecopy-lib.pl deleted file mode 100644 index cb68bc7418..0000000000 --- a/win32/ce-helpers/cecopy-lib.pl +++ /dev/null @@ -1,207 +0,0 @@ -# just copy modules -# TODO: copy tests and try to run them... -# this file may be used as example on how to use comp.pl - -my @files; - -my %dirs; -sub mk { - my $r = shift; - return if exists $dirs{$r}; - if ($r=~/\//) { - $r=~/^(.*)\/[^\/]*?$/; - mk($1); - } - print STDERR "..\\miniperl.exe -MCross comp.pl --do cemkdir [p]\\lib\\$r\n"; - system("..\\miniperl.exe -I..\\lib -MCross comp.pl --do cemkdir [p]\\lib\\$r"); - $dirs{$r}++; -} -for (@files) { - if (/\//) { - /^(.*)\/[^\/]*?$/; - mk($1); - } - # currently no stripping POD - system("..\\miniperl.exe -I..\\lib -MCross comp.pl --copy pc:..\\lib\\$_ ce:[p]\\lib\\$_"); -} - -sub BEGIN { - @files = qw( - attributes.pm - AutoLoader.pm - AutoSplit.pm - autouse.pm - base.pm - Benchmark.pm - bigint.pm - bignum.pm - bigrat.pm - blib.pm - bytes.pm - Carp.pm - charnames.pm - _charnames.pm - Config.pm - constant.pm - Cwd.pm - DB.pm - diagnostics.pm - Digest.pm - DirHandle.pm - Dumpvalue.pm - DynaLoader.pm - English.pm - Env.pm - Exporter.pm - Fatal.pm - fields.pm - FileCache.pm - FileHandle.pm - filetest.pm - FindBin.pm - if.pm - integer.pm - less.pm - locale.pm - Memoize.pm - NEXT.pm - open.pm - overload.pm - PerlIO.pm - re.pm - SelectSaver.pm - SelfLoader.pm - Shell.pm - sigtrap.pm - sort.pm - strict.pm - subs.pm - Switch.pm - Symbol.pm - Test.pm - UNIVERSAL.pm - utf8.pm - vars.pm - vmsish.pm - warnings.pm - XSLoader.pm - warnings/register.pm - Unicode/Collate.pm - Unicode/UCD.pm - Time/gmtime.pm - Time/Local.pm - Time/localtime.pm - Time/tm.pm - Tie/Array.pm - Tie/File.pm - Tie/Handle.pm - Tie/Hash.pm - Tie/Memoize.pm - Tie/RefHash.pm - Tie/Scalar.pm - Tie/SubstrHash.pm - Text/Abbrev.pm - Text/Balanced.pm - Text/ParseWords.pm - Text/Soundex.pm - Text/Tabs.pm - Text/Wrap.pm - Test/Builder.pm - Test/Harness.pm - Test/More.pm - Test/Simple.pm - Test/Harness/Assert.pm - Test/Harness/Iterator.pm - Test/Harness/Straps.pm - Term/ANSIColor.pm - Term/Cap.pm - Term/Complete.pm - Term/ReadLine.pm - Search/Dict.pm - Pod/Checker.pm - Pod/Find.pm - Pod/Functions.pm - Pod/Html.pm - Pod/InputObjects.pm - Pod/LaTeX.pm - Pod/Man.pm - Pod/ParseLink.pm - Pod/Parser.pm - Pod/ParseUtils.pm - Pod/Plainer.pm - Pod/Select.pm - Pod/Text.pm - Pod/Usage.pm - Pod/Text/Color.pm - Pod/Text/Overstrike.pm - Pod/Text/Termcap.pm - Math/BigFloat.pm - Math/BigInt.pm - Math/BigRat.pm - Math/Complex.pm - Math/Trig.pm - Math/BigInt/Calc.pm - Math/BigInt/Trace.pm - Math/BigFloat/Trace.pm - Locale/Constants.pm - Locale/Country.pm - Locale/Currency.pm - Locale/Language.pm - Locale/Maketext.pm - Locale/Script.pm - IPC/Open2.pm - IPC/Open3.pm - I18N/Collate.pm - I18N/LangTags.pm - I18N/LangTags/List.pm - Hash/Util.pm - Getopt/Long.pm - Getopt/Std.pm - Filter/Simple.pm - File/Basename.pm - File/CheckTree.pm - File/Compare.pm - File/Copy.pm - File/DosGlob.pm - File/Find.pm - File/Path.pm - File/Spec.pm - File/stat.pm - File/Temp.pm - File/Spec/Functions.pm - File/Spec/Mac.pm - File/Spec/Unix.pm - File/Spec/Win32.pm - ExtUtils/Command.pm - ExtUtils/Constant.pm - ExtUtils/Embed.pm - ExtUtils/Install.pm - ExtUtils/Installed.pm - ExtUtils/Liblist.pm - ExtUtils/MakeMaker.pm - ExtUtils/Manifest.pm - ExtUtils/Miniperl.pm - ExtUtils/Mkbootstrap.pm - ExtUtils/Mksymlists.pm - ExtUtils/MM.pm - ExtUtils/MM_Any.pm - ExtUtils/MM_DOS.pm - ExtUtils/MM_Unix.pm - ExtUtils/MM_UWIN.pm - ExtUtils/MM_Win32.pm - ExtUtils/MM_Win95.pm - ExtUtils/MY.pm - ExtUtils/Packlist.pm - ExtUtils/testlib.pm - ExtUtils/Liblist/Kid.pm - ExtUtils/Command/MM.pm - Exporter/Heavy.pm - Devel/SelfStubber.pm - Class/Struct.pm - Carp/Heavy.pm - Attribute/Handlers.pm - Attribute/Handlers/demo/Demo.pm - Attribute/Handlers/demo/Descriptions.pm - Attribute/Handlers/demo/MyClass.pm - ); -} diff --git a/win32/ce-helpers/comp.pl b/win32/ce-helpers/comp.pl deleted file mode 100644 index f19350fc1b..0000000000 --- a/win32/ce-helpers/comp.pl +++ /dev/null @@ -1,84 +0,0 @@ -=begin comment - -helper script to make life for PerlCE easier. - -There are different modes for running this script: - perl comp.pl --run [any-command-line-arguments] -and - perl comp.pl --do [any-command-line-arguments] -and - perl comp.pl --copy pc:[pc-location] ce:[ce-location] - ---run executes this build of perl on CE device with arguments provided ---run=test will display a predefined messagebox that say everything is ok. - ---do Executes on local computer command that is presented by arguments - immediately following after --do - Most reason why you may want to execute script in this mode is that - arguments preprocessed to replace [p] occurrences into current perl - location. Typically it is handy to run - perl comp.pl --do cecopy pc:..\lib\Exporter.pm ce:[p]\lib - ---copy copies file to CE device - here also [p] will be expanded to current PerlCE path, and additionally - when --copy=compact specified then, if filename looks like perl module, - then POD will be stripped away from that file - modules - - -=cut - -use strict; -use Cross; -use Config; - -# edit value of $inst_root variable to reflect your desired location of -# built perl -my $inst_root = $Config{prefix}; - -my %opts = ( - # %known_opts enumerates allowed opts as well as specifies default and initial values - my %known_opts = ( - 'do' => '', - 'run' => '', - 'copy' => '', - ), - #options itself - my %specified_opts = ( - (map {/^--([\-_\w]+)=(.*)$/} @ARGV), # --opt=smth - (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV), # --opt --no-opt --noopt - ), -); -die "option '$_' is not recognized" for grep {!exists $known_opts{$_}} keys %specified_opts; -@ARGV = grep {!/^--/} @ARGV; - -if ($opts{'do'}) { - s/\[p\]/$inst_root/g for @ARGV; - system(@ARGV); -} -elsif ($opts{'run'}) { - if ($opts{'run'} eq 'test') { - system("ceexec","$inst_root\\bin\\perl","-we","Win32::MessageBox(\$].qq(\n).join'','cc'..'dx')"); - } - else { - system("ceexec","$inst_root\\bin\\perl", map {/^".*"$/s?$_:"\"$_\""} @ARGV); - } -} -elsif ($opts{'copy'}) { - if ($opts{'copy'} eq 'compact') { - die "todo"; - } - s/\[p\]/$inst_root/g for @ARGV; - if ($ARGV[0]=~/^pc:/i) {system("cedel",$ARGV[1])} - system("cecopy",@ARGV); -} -else { - # todo -} - - -=head1 AUTHOR - - Vadim Konovalov. - -=cut diff --git a/win32/ce-helpers/compile-all.bat b/win32/ce-helpers/compile-all.bat deleted file mode 100644 index c546bb201e..0000000000 --- a/win32/ce-helpers/compile-all.bat +++ /dev/null @@ -1,62 +0,0 @@ -@echo off -rem -rem Normally you do not need to run this file. -rem Instead you should edit and execute compile.bat . -rem -rem This file assumes that you have a set of appropriate -rem bat-files that prepare environment variables for build process -rem and execute commands passed as arguments -rem - -call wcearm-300 compile.bat "MACHINE=wince-arm-hpc-wce300" -call wcearm-300 compile.bat "MACHINE=wince-arm-hpc-wce300" zipdist -..\miniperl makedist.pl --clean-exts - -call wcearm-211 compile.bat "MACHINE=wince-arm-hpc-wce211" -call wcearm-211 compile.bat "MACHINE=wince-arm-hpc-wce211" zipdist -..\miniperl makedist.pl --clean-exts - -call wcesh3-211 compile.bat "MACHINE=wince-sh3-hpc-wce211" -call wcesh3-211 compile.bat "MACHINE=wince-sh3-hpc-wce211" zipdist -..\miniperl makedist.pl --clean-exts - -call wcemips-211 compile.bat "MACHINE=wince-mips-hpc-wce211" -call wcemips-211 compile.bat "MACHINE=wince-mips-hpc-wce211" zipdist -..\miniperl makedist.pl --clean-exts - -rem TODO call wcesh3-200 compile.bat "MACHINE=wince-sh3-hpc-wce200" -rem TODO call wcesh3-200 compile.bat "MACHINE=wince-sh3-hpc-wce200" zipdist -rem TODO ..\miniperl makedist.pl --clean-exts - -rem TODO call compile.bat "MACHINE=wince-mips-hpc-wce200" -rem TODO call compile.bat "MACHINE=wince-mips-hpc-wce200" zipdist -rem TODO ..\miniperl makedist.pl --clean-exts - -call WCEARM-p300 compile.bat "MACHINE=wince-arm-pocket-wce300" -call WCEARM-p300 compile.bat "MACHINE=wince-arm-pocket-wce300" zipdist -..\miniperl makedist.pl --clean-exts - -call WCEMIPS-300 compile.bat "MACHINE=wince-mips-pocket-wce300" -call WCEMIPS-300 compile.bat "MACHINE=wince-mips-pocket-wce300" zipdist -..\miniperl makedist.pl --clean-exts - -call WCESH3-300 compile.bat "MACHINE=wince-sh3-pocket-wce300" -call WCESH3-300 compile.bat "MACHINE=wince-sh3-pocket-wce300" zipdist -..\miniperl makedist.pl --clean-exts - -call WCEx86-300 compile.bat "MACHINE=wince-x86em-pocket-wce300" -call WCEx86-300 compile.bat "MACHINE=wince-x86em-pocket-wce300" zipdist -..\miniperl makedist.pl --clean-exts - -call WCEMIPS-palm211 compile.bat "MACHINE=wince-mips-palm-wce211" -call WCEMIPS-palm211 compile.bat "MACHINE=wince-mips-palm-wce211" zipdist -..\miniperl makedist.pl --clean-exts - -call WCESH3-palm211 compile.bat "MACHINE=wince-sh3-palm-wce211" -call WCESH3-palm211 compile.bat "MACHINE=wince-sh3-palm-wce211" zipdist -..\miniperl makedist.pl --clean-exts - -call WCEx86-palm211 compile.bat "MACHINE=wince-x86em-palm-wce211" -call WCEx86-palm211 compile.bat "MACHINE=wince-x86em-palm-wce211" zipdist -..\miniperl makedist.pl --clean-exts - diff --git a/win32/ce-helpers/compile.bat b/win32/ce-helpers/compile.bat deleted file mode 100644 index 79ed2fb80c..0000000000 --- a/win32/ce-helpers/compile.bat +++ /dev/null @@ -1,42 +0,0 @@ -@echo off -rem -rem edit ARG-xxx variable to reflect your system and run -rem compile.bat [target] [additional parameters for nmake] -rem - -set ARG-1=PV= -set ARG-2=INST_VER= -set ARG-3=INSTALL_ROOT=\Storage Card\perl58m -set ARG-4=WCEROOT=%SDKROOT% -set ARG-5=CEPATH=%WCEROOT% -set ARG-6=CELIBDLLDIR=d:\personal\pocketPC\celib-palm-3.0 -set ARG-7=CECONSOLEDIR=d:\personal\pocketPC\w32console - -rem Only for WIN2000 -set ARG-8=YES=/y - -set ARG-9=CFG=RELEASE - -rem -rem uncomment one of following lines that matches your configuration - -rem set ARG-10=MACHINE=wince-mips-pocket-wce300 -rem set ARG-10=MACHINE=wince-arm-hpc-wce300 -rem set ARG-10=MACHINE=wince-arm-hpc-wce211 -rem set ARG-10=MACHINE=wince-sh3-hpc-wce211 -rem set ARG-10=MACHINE=wince-mips-hpc-wce211 -rem set ARG-10=MACHINE=wince-sh3-hpc-wce200 -rem set ARG-10=MACHINE=wince-mips-hpc-wce200 -rem set ARG-10=MACHINE=wince-arm-pocket-wce300 -rem set ARG-10=MACHINE=wince-mips-pocket-wce300 -rem set ARG-10=MACHINE=wince-sh3-pocket-wce300 -rem set ARG-10=MACHINE=wince-x86em-pocket-wce300 -rem set ARG-10=MACHINE=wince-mips-palm-wce211 -rem set ARG-10=MACHINE=wince-sh3-palm-wce211 -rem set ARG-10=MACHINE=wince-x86em-palm-wce211 - -set ARG-11=PERLCEDIR=$(MAKEDIR) -set ARG-12=MSVCDIR=D:\MSVStudio\VC98 -set ARG-13=CECOPY=$(HPERL) -I$(PERLCEDIR)\lib $(PERLCEDIR)\comp.pl --copy - -nmake -f Makefile.ce "%ARG-1%" "%ARG-2%" "%ARG-3%" "%ARG-4%" "%ARG-5%" "%ARG-6%" "%ARG-7%" "%ARG-8%" "%ARG-9%" "%ARG-10%" "%ARG-11%" "%ARG-12%" "%ARG-13%" %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/win32/ce-helpers/makedist.pl b/win32/ce-helpers/makedist.pl deleted file mode 100644 index daf4f3e96c..0000000000 --- a/win32/ce-helpers/makedist.pl +++ /dev/null @@ -1,297 +0,0 @@ -use strict; -use Cwd; -use File::Path; -use File::Find; - -my %opts = ( - #defaults - 'verbose' => 1, # verbose level, in range from 0 to 2 - 'distdir' => 'distdir', - 'unicode' => 1, # include unicode by default - 'minimal' => 0, # minimal possible distribution. - # actually this is just perl.exe and perlXX.dll - # but can be extended by additional exts - # ... (as soon as this will be implemented :) - 'cross-name' => 'wince', - 'strip-pod' => 0, # strip POD from perl modules - 'adaptation' => 1, # do some adaptation, such as stripping such - # occurrences as "if ($^O eq 'VMS'){...}" for Dynaloader.pm - 'zip' => 0, # perform zip - 'clean-exts' => 0, - #options itself - (map {/^--([\-_\w]+)=(.*)$/} @ARGV), # --opt=smth - (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV), # --opt --no-opt --noopt - ); - -# TODO -# -- error checking. When something goes wrong, just exit with rc!=0 -# -- may be '--zip' option should be made differently? - -my $cwd = cwd; - -if ($opts{'clean-exts'}) { - # unfortunately, unlike perl58.dll and like, extensions for different - # platforms are built in same directory, therefore we must be able to clean - # them often - unlink '../config.sh'; # delete cache config file, which remembers our previous config - chdir '../ext'; - find({no_chdir=>1,wanted => sub{ - unlink if /((?:\.obj|\/makefile|\/errno\.pm))$/i; - } - },'.'); - exit; -} - -# zip -if ($opts{'zip'}) { - if ($opts{'verbose'} >=1) { - print STDERR "zipping...\n"; - } - chdir $opts{'distdir'}; - unlink <*.zip>; - `zip -R perl-$opts{'cross-name'} *`; - exit; -} - -my (%libexclusions, %extexclusions); -my @lfiles; -sub copy($$); - -# lib -chdir '../lib'; -find({no_chdir=>1,wanted=>sub{push @lfiles, $_ if /\.p[lm]$/}},'.'); -chdir $cwd; -# exclusions -@lfiles = grep {!exists $libexclusions{$_}} @lfiles; -#inclusions -#... -#copy them -if ($opts{'verbose'} >=1) { - print STDERR "Copying perl lib files...\n"; -} -for (@lfiles) { - /^(.*)\/[^\/]+$/; - mkpath "$opts{distdir}/lib/$1"; - copy "../lib/$_", "$opts{distdir}/lib/$_"; -} - -#ext -my @efiles; -chdir '../ext'; -find({no_chdir=>1,wanted=>sub{push @efiles, $_ if /\.pm$/}},'.'); -chdir $cwd; -# exclusions -#... -#inclusions -#... -#copy them -#{s[/(\w+)/\1\.pm][/$1.pm]} @efiles; -if ($opts{'verbose'} >=1) { - print STDERR "Copying perl core extensions...\n"; -} -for (@efiles) { - if (m#^.*?/lib/(.*)$#) { - copy "../ext/$_", "$opts{distdir}/lib/$1"; - } - else { - /^(.*)\/([^\/]+)\/([^\/]+)$/; - copy "../ext/$_", "$opts{distdir}/lib/$1/$3"; - } -} -my ($dynaloader_pm); -if ($opts{adaptation}) { - # let's copy our Dynaloader.pm (make this optional?) - open my $fhdyna, '>', "$opts{distdir}/lib/Dynaloader.pm"; - print $fhdyna $dynaloader_pm; - close $fhdyna; -} - -# Config.pm, perl binaries -if ($opts{'verbose'} >=1) { - print STDERR "Copying Config.pm, perl.dll and perl.exe...\n"; -} -copy "../lib/Config.pm", "$opts{distdir}/lib/Config.pm"; -copy "$opts{'cross-name'}/perl.exe", "$opts{distdir}/bin/perl.exe"; -copy "$opts{'cross-name'}/perl.dll", "$opts{distdir}/bin/perl.dll"; -# how do we know exact name of perl.dll? - -# auto -my %aexcl = (socket=>'Socket_1'); -# Socket.dll and may be some other conflict with same file in \windows dir -# on WinCE, %aexcl needed to replace it with a different name that however -# will be found by Dynaloader -my @afiles; -chdir "../lib/auto"; -find({no_chdir=>1,wanted=>sub{push @afiles, $_ if /\.(dll|bs)$/}},'.'); -chdir $cwd; -if ($opts{'verbose'} >=1) { - print STDERR "Copying binaries for perl core extensions...\n"; -} -for (@afiles) { - if (/^(.*)\/(\w+)\.dll$/i && exists $aexcl{lc($2)}) { - copy "../lib/auto/$_", "$opts{distdir}/lib/auto/$1/$aexcl{lc($2)}.dll"; - } - else { - copy "../lib/auto/$_", "$opts{distdir}/lib/auto/$_"; - } -} - -sub copy($$) { - my ($fnfrom, $fnto) = @_; - open my $fh, '<', $fnfrom or die "can not open $fnfrom: $!"; - binmode $fh; - local $/; - my $ffrom = <$fh>; - if ($opts{'strip-pod'}) { - # actually following regexp is suspicious to not work everywhere. - # but we've checked on our set of modules, and it's fit for our purposes - $ffrom =~ s/^=\w+.*?^=cut(?:\n|\Z)//msg; - unless ($ffrom=~/\bAutoLoader\b/) { - # this logic actually strip less than could be stripped, but we're - # not risky. Just strip only of no mention of AutoLoader - $ffrom =~ s/^__END__.*\Z//msg; - } - } - mkpath $1 if $fnto=~/^(.*)\/([^\/]+)$/; - open my $fhout, '>', $fnto; - binmode $fhout; - print $fhout $ffrom; - if ($opts{'verbose'} >=2) { - print STDERR "copying $fnfrom=>$fnto\n"; - } -} - -BEGIN { -%libexclusions = map {$_=>1} split/\s/, <<"EOS"; -abbrev.pl bigfloat.pl bigint.pl bigrat.pl cacheout.pl complete.pl ctime.pl -dotsh.pl exceptions.pl fastcwd.pl flush.pl ftp.pl getcwd.pl getopt.pl -getopts.pl hostname.pl look.pl newgetopt.pl pwd.pl termcap.pl -EOS -%extexclusions = map {$_=>1} split/\s/, <<"EOS"; -EOS -$dynaloader_pm=<<'EOS'; -# This module designed *only* for WinCE -# if you encounter a problem with this file, try using original Dynaloader.pm -# from perl distribution, it's larger but essentially the same. -package DynaLoader; -our $VERSION = 1.04; - -$dl_debug ||= 0; - -@dl_require_symbols = (); # names of symbols we need - -#@dl_librefs = (); # things we have loaded -#@dl_modules = (); # Modules we have loaded - -boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); - -print STDERR "DynaLoader not linked into this perl\n" - unless defined(&boot_DynaLoader); - -1; # End of main code - -sub croak{require Carp;Carp::croak(@_)} -sub bootstrap_inherit { - my $module = $_[0]; - local *isa = *{"$module\::ISA"}; - local @isa = (@isa, 'DynaLoader'); - bootstrap(@_); -} -sub bootstrap { - # use local vars to enable $module.bs script to edit values - local(@args) = @_; - local($module) = $args[0]; - local(@dirs, $file); - - unless ($module) { - require Carp; - Carp::confess("Usage: DynaLoader::bootstrap(module)"); - } - - croak("Can't load module $module, dynamic loading not available in this perl.\n") - unless defined(&dl_load_file); - - my @modparts = split(/::/,$module); - my $modfname = $modparts[-1]; - my $modpname = join('/',@modparts); - - for (@INC) { - my $dir = "$_/auto/$modpname"; - next unless -d $dir; - my $try = "$dir/$modfname.dll"; - last if $file = ( (-f $try) && $try); - - $try = "$dir/${modfname}_1.dll"; - last if $file = ( (-f $try) && $try); - push @dirs, $dir; - } - $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file; - - croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)") - unless $file; - - (my $bootname = "boot_$module") =~ s/\W/_/g; - @dl_require_symbols = ($bootname); - - # optional '.bootstrap' perl script - my $bs = $file; - $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; - if (-s $bs) { # only read file if it's not empty - local @INC = ('.'); - do $bs; - warn "$bs: $@\n" if $@; - } - - my $libref = dl_load_file($file, 0) or - croak("Can't load '$file' for module $module: ".dl_error()); - - push(@dl_librefs,$libref); # record loaded object - - my @unresolved = dl_undef_symbols(); - if (@unresolved) { - require Carp; - Carp::carp("Undefined symbols present after loading $file: @unresolved\n"); - } - - my $boot_symbol_ref = dl_find_symbol($libref, $bootname) or - croak("Can't find '$bootname' symbol in $file\n"); - - push(@dl_modules, $module); - - boot: - my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); - &$xs(@args); -} - -sub dl_findfile { - my (@args) = @_; - my (@dirs, $dir); - my (@found); - - arg: foreach(@args) { - if (m:/: && -f $_) { - push(@found,$_); - last arg unless wantarray; - next; - } - - if (s:^-L::) {push(@dirs, $_); next;} - if (m:/: && -d $_) {push(@dirs, $_); next;} - - for $dir (@dirs) { - next unless -d $dir; - for my $name (/\.dll$/i?($_):("$_.dll",$_)) { - print STDERR " checking in $dir for $name\n" if $dl_debug; - if (-f "$dir/$name") { - push(@found, "$dir/$name"); - next arg; - } - } - } - } - return $found[0] unless wantarray; - @found; -} -EOS -} - diff --git a/win32/ce-helpers/registry.bat b/win32/ce-helpers/registry.bat deleted file mode 100644 index 0fd58c3d3c..0000000000 --- a/win32/ce-helpers/registry.bat +++ /dev/null @@ -1,28 +0,0 @@ -@echo off - -::- This script must be executed on the PC with an ActiveSync -::- connection. If it does not work, create the entries with -::- a remote registry editor or get a registry editor for your -::- devices. -::- -::- You need my cereg.exe program. - -::- My paths... -set perlexe=\speicherkarte2\bin\perl.exe -set perllib=\speicherkarte2\usr\lib\perl5 - -::- PERL5LIB -cereg -k "HKLM\Environment" -n "PERL5LIB" -v "%perllib%" - -::- For ShellExecute -cereg -k "HKCR\.pl" -n "" -v "perlfile" -cereg -k "HKCR\perlfile" -n "" -v "Perl Script" -cereg -k "HKCR\perlfile\DefaultIcon" -n "" -v "%perlexe%,-1" - -::- You might need to fix the quotes if your paths contain spaces! -cereg -k "HKCR\perlfile\Shell\open\command" -n "" -v "%perlexe% %%1" - -cereg -k "HKLM\Environment" -n "ROWS" -v "10" -cereg -k "HKLM\Environment" -n "COLS" -v "75" -cereg -k "HKLM\Environment" -n "PATH" -v "/Speicherkarte2/bin" -cereg -k "HKLM\Environment" -n "UNIXROOTDIR" -v "/Speicherkarte2" diff --git a/win32/ce-helpers/sdsdkenv.bat b/win32/ce-helpers/sdsdkenv.bat deleted file mode 100644 index fe72309a76..0000000000 --- a/win32/ce-helpers/sdsdkenv.bat +++ /dev/null @@ -1,3 +0,0 @@ -set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\PocketPC2003\Include -set LIB=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\lib\armv4;C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\PocketPC2003\Lib\armv4 -set PATH=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH% diff --git a/win32/config.ce b/win32/config.ce deleted file mode 100644 index 2f2d67c231..0000000000 --- a/win32/config.ce +++ /dev/null @@ -1,1137 +0,0 @@ -## Configured by: ~cf_email~ -## Target system: WINCE -Author='' -Date='$Date' -Header='' -Id='$Id' -Locker='' -Log='$Log' -Mcc='Mcc' -RCSfile='$RCSfile' -Revision='$Revision' -Source='' -State='' -_a='.lib' # keep this for WinCE, as it is used by some mods... -_exe='.exe' -_o='.obj' -afs='false' -alignbytes='8' -aphostname='' -api_revision='~PERL_API_REVISION~' -api_subversion='~PERL_API_SUBVERSION~' -api_version='~PERL_API_VERSION~' -api_versionstring='~PERL_API_REVISION~.~PERL_API_VERSION~.~PERL_API_SUBVERSION~' -ar='lib' -archlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~' -archlibexp='~INST_TOP~~INST_VER~\lib~INST_ARCH~' -archname64='' -archname='wince' -archobjs='' -asctime_r_proto='0' -awk='awk' -baserev='5' -bash='' -bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -bison='' -bootstrap_charset='undef' -byacc='byacc' -byteorder='1234' -c='' -castflags='0' -cat='type' -cc='~cc~' -cccdlflags=' ' -ccdlflags=' ' -ccflags='-DWIN32' -ccsymbols='' -cf_by='nobody' -cf_email='nobody@no.where.net' -cf_time='' -charbits='8' -chgrp='' -chmod='' -chown='' -clocktype='clock_t' -comm='' -compress='' -contains='grep' -cp='copy' -cpio='' -cpp='~cc~ -nologo -E' -cpp_stuff='42' -cppccsymbols='' -cppflags='-DWIN32' -cpplast='' -cppminus='' -cpprun='~cc~ -nologo -E' -cppstdin='~cc~ -nologo -E' -cppsymbols='' -crosscompile='undef' -crypt_r_proto='0' -cryptlib='' -csh='undef' -ctermid_r_proto='0' -ctime_r_proto='0' -d_Gconvert='sprintf((b),"%.*g",(n),(x))' -d_PRIEldbl='undef' -d_PRIFldbl='undef' -d_PRIGldbl='undef' -d_PRIX64='undef' -d_PRId64='undef' -d_PRIeldbl='undef' -d_PRIfldbl='undef' -d_PRIgldbl='undef' -d_PRIi64='undef' -d_PRIo64='undef' -d_PRIu64='undef' -d_PRIx64='undef' -d_SCNfldbl='undef' -d__fwalk='undef' -d_accept4='undef' -d_access='define' -d_accessx='undef' -d_acosh='undef' -d_aintl='undef' -d_alarm='undef' -d_archlib='define' -d_asctime64='undef' -d_asctime_r='undef' -d_asinh='undef' -d_atanh='undef' -d_atolf='undef' -d_atoll='undef' -d_attribute_deprecated='undef' -d_attribute_format='undef' -d_attribute_malloc='undef' -d_attribute_nonnull='undef' -d_attribute_noreturn='undef' -d_attribute_pure='undef' -d_attribute_unused='undef' -d_attribute_warn_unused_result='undef' -d_backtrace='undef' -d_bsd='define' -d_bsdgetpgrp='undef' -d_bsdsetpgrp='undef' -d_builtin_add_overflow='undef' -d_builtin_choose_expr='undef' -d_builtin_expect='undef' -d_builtin_mul_overflow='undef' -d_builtin_sub_overflow='undef' -d_c99_variadic_macros='undef' -d_casti32='undef' -d_castneg='define' -d_cbrt='undef' -d_chown='undef' -d_chroot='undef' -d_chsize='define' -d_class='undef' -d_clearenv='undef' -d_closedir='define' -d_cmsghdr_s='undef' -d_copysign='undef' -d_copysignl='undef' -d_cplusplus='undef' -d_crypt='undef' -d_crypt_r='undef' -d_csh='undef' -d_ctermid='undef' -d_ctermid_r='undef' -d_ctime64='undef' -d_ctime_r='undef' -d_cuserid='undef' -d_dbl_dig='define' -d_dbminitproto='undef' -d_difftime64='undef' -d_difftime='define' -d_dir_dd_fd='undef' -d_dirfd='undef' -d_dirnamlen='define' -d_dladdr='undef' -d_dlerror='define' -d_dlopen='define' -d_dlsymun='undef' -d_dosuid='undef' -d_double_has_inf='define' -d_double_has_nan='define' -d_double_has_negative_zero='define' -d_double_has_subnormals='define' -d_double_style_cray='undef' -d_double_style_ibm='undef' -d_double_style_ieee='define' -d_double_style_vax='undef' -d_drand48_r='undef' -d_drand48proto='undef' -d_dup2='define' -d_dup3='undef' -d_duplocale='undef' -d_eaccess='undef' -d_endgrent='undef' -d_endgrent_r='undef' -d_endhent='undef' -d_endhostent_r='undef' -d_endnent='undef' -d_endnetent_r='undef' -d_endpent='undef' -d_endprotoent_r='undef' -d_endpwent='undef' -d_endpwent_r='undef' -d_endsent='undef' -d_endservent_r='undef' -d_endspent='undef' -d_eofnblk='define' -d_erf='undef' -d_erfc='undef' -d_eunice='undef' -d_exp2='undef' -d_expm1='undef' -d_faststdio='undef' -d_fchdir='undef' -d_fchmod='undef' -d_fchmodat='undef' -d_fchown='undef' -d_fcntl='undef' -d_fcntl_can_lock='undef' -d_fd_macros='define' -d_fd_set='define' -d_fdclose='undef' -d_fdim='undef' -d_fds_bits='define' -d_fegetround='undef' -d_fgetpos='define' -d_finite='undef' -d_finitel='undef' -d_flexfnam='define' -d_flock='undef' -d_flockproto='undef' -d_fma='undef' -d_fmax='undef' -d_fmin='undef' -d_fork='undef' -d_fp_class='undef' -d_fp_classify='undef' -d_fp_classl='undef' -d_fpathconf='undef' -d_fpclass='undef' -d_fpclassify='undef' -d_fpclassl='undef' -d_fpgetround='undef' -d_fpos64_t='undef' -d_freelocale='undef' -d_frexpl='undef' -d_fs_data_s='undef' -d_fseeko='undef' -d_fsetpos='define' -d_fstatfs='undef' -d_fstatvfs='undef' -d_fsync='undef' -d_ftello='undef' -d_ftime='define' -d_futimes='undef' -d_gai_strerror='undef' -d_gdbm_ndbm_h_uses_prototypes='undef' -d_gdbmndbm_h_uses_prototypes='undef' -d_getaddrinfo='undef' -d_getcwd='define' -d_getespwnam='undef' -d_getfsstat='undef' -d_getgrent='undef' -d_getgrent_r='undef' -d_getgrgid_r='undef' -d_getgrnam_r='undef' -d_getgrps='undef' -d_gethbyaddr='define' -d_gethbyname='define' -d_gethent='undef' -d_gethname='define' -d_gethostbyaddr_r='undef' -d_gethostbyname_r='undef' -d_gethostent_r='undef' -d_gethostprotos='define' -d_getitimer='undef' -d_getlogin='define' -d_getlogin_r='undef' -d_getmnt='undef' -d_getmntent='undef' -d_getnameinfo='undef' -d_getnbyaddr='undef' -d_getnbyname='undef' -d_getnent='undef' -d_getnetbyaddr_r='undef' -d_getnetbyname_r='undef' -d_getnetent_r='undef' -d_getnetprotos='undef' -d_getpagsz='undef' -d_getpbyname='define' -d_getpbynumber='define' -d_getpent='undef' -d_getpgid='undef' -d_getpgrp2='undef' -d_getpgrp='undef' -d_getppid='undef' -d_getprior='undef' -d_getprotobyname_r='undef' -d_getprotobynumber_r='undef' -d_getprotoent_r='undef' -d_getprotoprotos='define' -d_getprpwnam='undef' -d_getpwent='undef' -d_getpwent_r='undef' -d_getpwnam_r='undef' -d_getpwuid_r='undef' -d_getsbyname='define' -d_getsbyport='define' -d_getsent='undef' -d_getservbyname_r='undef' -d_getservbyport_r='undef' -d_getservent_r='undef' -d_getservprotos='define' -d_getspent='undef' -d_getspnam='undef' -d_getspnam_r='undef' -d_gettimeod='undef' -d_gmtime64='undef' -d_gmtime_r='undef' -d_gnulibc='undef' -d_grpasswd='undef' -d_has_C_UTF8='undef' -d_hasmntopt='undef' -d_htonl='define' -d_hypot='undef' -d_ilogb='undef' -d_ilogbl='undef' -d_inc_version_list='undef' -d_index='undef' -d_inetaton='undef' -d_inetntop='undef' -d_inetpton='undef' -d_int64_t='undef' -d_ip_mreq='undef' -d_ip_mreq_source='undef' -d_ipv6_mreq='undef' -d_ipv6_mreq_source='undef' -d_isascii='define' -d_isblank='undef' -d_isfinite='undef' -d_isfinitel='undef' -d_isinf='undef' -d_isinfl='undef' -d_isless='undef' -d_isnan='define' -d_isnanl='undef' -d_isnormal='undef' -d_j0='undef' -d_j0l='undef' -d_killpg='undef' -d_lc_monetary_2008='undef' -d_lchown='undef' -d_ldbl_dig='define' -d_ldexpl='undef' -d_lgamma='undef' -d_lgamma_r='undef' -d_libm_lib_version='undef' -d_link='define' -d_linkat='undef' -d_llrint='undef' -d_llrintl='undef' -d_llround='undef' -d_llroundl='undef' -d_localeconv_l='undef' -d_localtime64='undef' -d_localtime_r='undef' -d_localtime_r_needs_tzset='undef' -d_locconv='undef' -d_lockf='undef' -d_log1p='undef' -d_log2='undef' -d_logb='undef' -d_long_double_style_ieee='undef' -d_long_double_style_ieee_doubledouble='undef' -d_long_double_style_ieee_extended='undef' -d_long_double_style_ieee_std='undef' -d_long_double_style_vax='undef' -d_longdbl='undef' -d_longlong='undef' -d_lrint='undef' -d_lrintl='undef' -d_lround='undef' -d_lroundl='undef' -d_lseekproto='define' -d_lstat='undef' -d_madvise='undef' -d_malloc_good_size='undef' -d_malloc_size='undef' -d_mblen='define' -d_mbrlen='undef' -d_mbrtowc='undef' -d_mbstowcs='define' -d_mbtowc='define' -d_memmem='undef' -d_memrchr='undef' -d_mkdir='define' -d_mkdtemp='undef' -d_mkfifo='undef' -d_mkostemp='undef' -d_mkstemp='undef' -d_mkstemps='undef' -d_mktime64='undef' -d_mktime='define' -d_mmap='undef' -d_modfl='undef' -d_modfl_pow32_bug='undef' -d_modflproto='undef' -d_mprotect='undef' -d_msg='undef' -d_msg_ctrunc='undef' -d_msg_dontroute='undef' -d_msg_oob='undef' -d_msg_peek='undef' -d_msg_proxy='undef' -d_msgctl='undef' -d_msgget='undef' -d_msghdr_s='undef' -d_msgrcv='undef' -d_msgsnd='undef' -d_msync='undef' -d_munmap='undef' -d_mymalloc='~PERL_MALLOC~' -d_nan='undef' -d_nanosleep='undef' -d_ndbm_h_uses_prototypes='undef' -d_nearbyint='undef' -d_newlocale='undef' -d_nextafter='undef' -d_nexttoward='undef' -d_nice='undef' -d_nl_langinfo='undef' -d_nv_preserves_uv='define' -d_nv_zero_is_allbits_zero='undef' -d_off64_t='undef' -d_old_pthread_create_joinable='undef' -d_oldpthreads='undef' -d_oldsock='undef' -d_open3='undef' -d_openat='undef' -d_pathconf='undef' -d_pause='define' -d_perl_otherlibdirs='undef' -d_phostname='undef' -d_pipe2='undef' -d_pipe='undef' -d_poll='undef' -d_portable='define' -d_prctl='undef' -d_prctl_set_name='undef' -d_printf_format_null='undef' -d_procselfexe='undef' -d_pseudofork='undef' -d_pthread_atfork='undef' -d_pthread_attr_setscope='undef' -d_pthread_yield='undef' -d_ptrdiff_t='define' -d_pwage='undef' -d_pwchange='undef' -d_pwclass='undef' -d_pwcomment='undef' -d_pwexpire='undef' -d_pwgecos='undef' -d_pwpasswd='undef' -d_pwquota='undef' -d_qgcvt='undef' -d_quad='undef' -d_querylocale='undef' -d_random_r='undef' -d_readdir64_r='undef' -d_readdir='define' -d_readdir_r='undef' -d_readlink='undef' -d_readv='undef' -d_recvmsg='undef' -d_regcomp='undef' -d_remainder='undef' -d_remquo='undef' -d_rename='define' -d_renameat='undef' -d_rewinddir='define' -d_rint='undef' -d_rmdir='define' -d_round='undef' -d_sbrkproto='undef' -d_scalbn='undef' -d_scalbnl='undef' -d_sched_yield='undef' -d_scm_rights='undef' -d_seekdir='define' -d_select='define' -d_sem='undef' -d_semctl='undef' -d_semctl_semid_ds='undef' -d_semctl_semun='undef' -d_semget='undef' -d_semop='undef' -d_sendmsg='undef' -d_setegid='undef' -d_seteuid='undef' -d_setgrent='undef' -d_setgrent_r='undef' -d_setgrps='undef' -d_sethent='undef' -d_sethostent_r='undef' -d_setitimer='undef' -d_setlinebuf='undef' -d_setlocale='define' -d_setlocale_accepts_any_locale_name='undef' -d_setlocale_r='undef' -d_setnent='undef' -d_setnetent_r='undef' -d_setpent='undef' -d_setpgid='undef' -d_setpgrp2='undef' -d_setpgrp='undef' -d_setprior='undef' -d_setproctitle='undef' -d_setprotoent_r='undef' -d_setpwent='undef' -d_setpwent_r='undef' -d_setregid='undef' -d_setresgid='undef' -d_setresuid='undef' -d_setreuid='undef' -d_setrgid='undef' -d_setruid='undef' -d_setsent='undef' -d_setservent_r='undef' -d_setsid='undef' -d_setspent='undef' -d_setvbuf='undef' -d_shm='undef' -d_shmat='undef' -d_shmatprototype='undef' -d_shmctl='undef' -d_shmdt='undef' -d_shmget='undef' -d_sigaction='undef' -d_siginfo_si_addr='undef' -d_siginfo_si_band='undef' -d_siginfo_si_errno='undef' -d_siginfo_si_pid='undef' -d_siginfo_si_status='undef' -d_siginfo_si_uid='undef' -d_siginfo_si_value='undef' -d_signbit='undef' -d_sigprocmask='undef' -d_sigsetjmp='undef' -d_sin6_scope_id='undef' -d_sitearch='define' -d_snprintf='undef' -d_sockaddr_in6='undef' -d_sockaddr_sa_len='undef' -d_sockatmark='undef' -d_sockatmarkproto='undef' -d_socket='define' -d_socklen_t='undef' -d_sockpair='undef' -d_socks5_init='undef' -d_sqrtl='undef' -d_srand48_r='undef' -d_srandom_r='undef' -d_sresgproto='undef' -d_sresuproto='undef' -d_stat='define' -d_statblks='undef' -d_statfs_f_flags='undef' -d_statfs_s='undef' -d_static_inline='undef' -d_statvfs='undef' -d_stdio_cnt_lval='undef' -d_stdio_ptr_lval='undef' -d_stdio_ptr_lval_nochange_cnt='undef' -d_stdio_ptr_lval_sets_cnt='undef' -d_stdio_stream_array='undef' -d_stdiobase='undef' -d_stdstdio='undef' -d_strcoll='define' -d_strerror_l='undef' -d_strerror_r='undef' -d_strftime='undef' -d_strlcat='undef' -d_strlcpy='undef' -d_strnlen='undef' -d_strtod='define' -d_strtod_l='undef' -d_strtol='define' -d_strtold='undef' -d_strtold_l='undef' -d_strtoll='undef' -d_strtoq='undef' -d_strtoul='define' -d_strtoull='undef' -d_strtouq='undef' -d_strxfrm='undef' -d_suidsafe='undef' -d_symlink='undef' -d_syscall='undef' -d_syscallproto='undef' -d_sysconf='undef' -d_sysernlst='' -d_syserrlst='define' -d_system='define' -d_tcgetpgrp='undef' -d_tcsetpgrp='undef' -d_telldir='define' -d_telldirproto='define' -d_tgamma='undef' -d_thread_safe_nl_langinfo_l='undef' -d_time='define' -d_timegm='undef' -d_times='define' -d_tm_tm_gmtoff='undef' -d_tm_tm_zone='undef' -d_tmpnam_r='undef' -d_towlower='undef' -d_towupper='undef' -d_trunc='undef' -d_truncate='undef' -d_truncl='undef' -d_ttyname_r='undef' -d_tzname='define' -d_u32align='undef' -d_ualarm='undef' -d_umask='define' -d_uname='define' -d_union_semun='define' -d_unlinkat='undef' -d_unordered='undef' -d_unsetenv='undef' -d_uselocale='undef' -d_usleep='undef' -d_usleepproto='undef' -d_ustat='undef' -d_vendorarch='undef' -d_vendorbin='undef' -d_vendorlib='undef' -d_vfork='undef' -d_void_closedir='undef' -d_voidsig='define' -d_voidtty='' -d_vsnprintf='undef' -d_wait4='undef' -d_waitpid='define' -d_wcscmp='undef' -d_wcstombs='define' -d_wcsxfrm='undef' -d_wctomb='define' -d_writev='undef' -d_xenix='undef' -date='date' -db_hashtype='int' -db_prefixtype='int' -db_version_major='0' -db_version_minor='0' -db_version_patch='0' -default_inc_excludes_dot='undef' -direntrytype='struct direct' -dlext='dll' -dlsrc='dl_win32.xs' -doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' -doublekind='3' -doublemantbits='52' -doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f' -doublesize='8' -drand01='Perl_drand48()' -drand48_r_proto='0' -dtrace='' -dynamic_ext='Socket IO Fcntl Opcode SDBM_File attributes' -eagain='EAGAIN' -ebcdic='undef' -echo='echo' -egrep='egrep' -emacs='' -endgrent_r_proto='0' -endhostent_r_proto='0' -endnetent_r_proto='0' -endprotoent_r_proto='0' -endpwent_r_proto='0' -endservent_r_proto='0' -eunicefix=':' -exe_ext='.exe' -expr='expr' -extensions='~static_ext~ ~dynamic_ext~ ~nonxs_ext~' -fflushNULL='define' -fflushall='undef' -find='find' -firstmakefile='makefile' -flex='' -fpossize='4' -fpostype='fpos_t' -freetype='void' -full_ar='' -full_csh='' -full_sed='' -gccversion='' -getgrent_r_proto='0' -getgrgid_r_proto='0' -getgrnam_r_proto='0' -gethostbyaddr_r_proto='0' -gethostbyname_r_proto='0' -gethostent_r_proto='0' -getlogin_r_proto='0' -getnetbyaddr_r_proto='0' -getnetbyname_r_proto='0' -getnetent_r_proto='0' -getprotobyname_r_proto='0' -getprotobynumber_r_proto='0' -getprotoent_r_proto='0' -getpwent_r_proto='0' -getpwnam_r_proto='0' -getpwuid_r_proto='0' -getservbyname_r_proto='0' -getservbyport_r_proto='0' -getservent_r_proto='0' -getspnam_r_proto='0' -gidformat='"ld"' -gidsign='-1' -gidsize='4' -gidtype='gid_t' -glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib ' -gmtime_r_proto='0' -grep='grep' -groupcat='' -groupstype='gid_t' -gzip='gzip' -h_fcntl='true' -h_sysfile='true' -hint='recommended' -hostcat='ypcat hosts' -huge='' -i16size='2' -i16type='short' -i32size='4' -i32type='long' -i64size='8' -i64type='__int64' -i8size='1' -i8type='char' -i_arpainet='define' -i_bfd='undef' -i_bsdioctl='' -i_crypt='undef' -i_db='undef' -i_dbm='undef' -i_dirent='define' -i_dlfcn='define' -i_execinfo='undef' -i_fcntl='define' -i_fenv='undef' -i_fp='undef' -i_fp_class='undef' -i_gdbm='undef' -i_gdbm_ndbm='undef' -i_gdbmndbm='undef' -i_grp='undef' -i_ieeefp='undef' -i_inttypes='undef' -i_langinfo='undef' -i_libutil='undef' -i_locale='define' -i_machcthr='undef' -i_malloc='define' -i_mallocmalloc='undef' -i_mntent='undef' -i_ndbm='undef' -i_netdb='undef' -i_neterrno='undef' -i_netinettcp='undef' -i_niin='undef' -i_poll='undef' -i_prot='undef' -i_pthread='undef' -i_pwd='undef' -i_quadmath='undef' -i_rpcsvcdbm='undef' -i_sgtty='undef' -i_shadow='undef' -i_socks='undef' -i_stdbool='undef' -i_stdint='undef' -i_stdlib='define' -i_sunmath='undef' -i_sysaccess='undef' -i_sysdir='undef' -i_sysfile='undef' -i_sysfilio='define' -i_sysin='undef' -i_sysioctl='undef' -i_syslog='undef' -i_sysmman='undef' -i_sysmode='undef' -i_sysmount='undef' -i_sysndir='undef' -i_sysparam='undef' -i_syspoll='undef' -i_sysresrc='undef' -i_syssecrt='undef' -i_sysselct='undef' -i_syssockio='undef' -i_sysstat='define' -i_sysstatfs='undef' -i_sysstatvfs='undef' -i_systime='undef' -i_systimek='undef' -i_systimes='undef' -i_systypes='undef' -i_sysuio='undef' -i_sysun='undef' -i_sysutsname='undef' -i_sysvfs='undef' -i_syswait='undef' -i_termio='undef' -i_termios='undef' -i_time='undef' -i_unistd='undef' -i_ustat='undef' -i_utime='define' -i_vfork='undef' -i_wchar='undef' -i_wctype='undef' -i_xlocale='undef' -ignore_versioned_solibs='' -inc_version_list='' -inc_version_list_init='0' -incpath='' -inews='' -installarchlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~' -installbin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -installhtmldir='~INST_TOP~~INST_VER~\html' -installhtmlhelpdir='~INST_TOP~~INST_VER~\htmlhelp' -installman1dir='~INST_TOP~~INST_VER~\man\man1' -installman3dir='~INST_TOP~~INST_VER~\man\man3' -installprefix='~INST_TOP~~INST_VER~' -installprefixexp='~INST_TOP~~INST_VER~' -installprivlib='~INST_TOP~~INST_VER~\lib' -installscript='~INST_TOP~~INST_VER~\bin' -installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -installsitebin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -installsitelib='~INST_TOP~\site~INST_VER~\lib' -installstyle='lib' -installusrbinperl='undef' -installvendorarch='' -installvendorbin='' -installvendorlib='' -intsize='4' -ivdformat='"ld"' -ivsize='4' -ivtype='long' -known_extensions='~static_ext~ ~dynamic_ext~ ~nonxs_ext~' -ksh='' -large='' -ld='link' -lddlflags='-dll ~LINK_FLAGS~' -ldflags='~LINK_FLAGS~' -ldlibpthname='' -less='less' -lib_ext='.lib' -libc='msvcrt.lib' -libperl='perl.lib' -libpth='' -libs='' -libsdirs='' -libsfiles='' -libsfound='' -libspath='' -libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x' -line='line' -lint='' -lkflags='' -ln='' -lns='copy' -localtime_r_proto='0' -locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' -loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' -longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f' -longdblkind='3' -longdblmantbits='64' -longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f' -longdblsize='10' -longlongsize='8' -longsize='4' -lp='' -lpr='' -ls='dir' -lseeksize='4' -lseektype='long' -mad='undef' -mail='' -mailx='' -make='nmake' -make_set_make='#' -mallocobj='malloc.o' -mallocsrc='malloc.c' -malloctype='void *' -man1dir='~INST_TOP~~INST_VER~\man\man1' -man1direxp='~INST_TOP~~INST_VER~\man\man1' -man1ext='1' -man3dir='~INST_TOP~~INST_VER~\man\man3' -man3direxp='~INST_TOP~~INST_VER~\man\man3' -man3ext='3' -medium='' -mips_type='' -mkdir='mkdir' -mmaptype='void *' -models='none' -modetype='mode_t' -more='more /e' -multiarch='undef' -mv='' -myarchname='wince' -mydomain='' -myhostname='' -myuname='' -n='-n' -need_va_copy='undef' -netdb_hlen_type='int' -netdb_host_type='char *' -netdb_name_type='char *' -netdb_net_type='long' -nm='' -nm_opt='' -nm_so_opt='' -nonxs_ext='Errno' -nroff='' -nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' -nv_preserves_uv_bits='32' -nveformat='"e"' -nvfformat='"f"' -nvgformat='"g"' -nvmantbits='52' -nvsize='8' -nvtype='double' -o_nonblock='O_NONBLOCK' -obj_ext='.obj' -old_pthread_create_joinable='' -optimize='-O' -orderlib='false' -osname='MSWin32' -osvers='4.0' -otherlibdirs='' -package='perl5' -pager='more /e' -passcat='' -patchlevel='~PERL_VERSION~' -path_sep=';' -perl5='' -perl='perl' -perl_patchlevel='~PERL_PATCHLEVEL~' -perl_static_inline='static' -perladmin='' -perlpath='~INST_TOP~~INST_VER~\bin~INST_ARCH~\perl.exe' -pg='' -phostname='hostname' -pidtype='int' -plibpth='' -pmake='' -pr='' -prefix='~INST_TOP~' -prefixexp='~INST_TOP~' -privlib='~INST_TOP~~INST_VER~\lib' -privlibexp='~INST_TOP~~INST_VER~\lib' -procselfexe='' -prototype='define' -ptrsize='4' -quadkind='5' -quadtype='__int64' -randbits='48' -randfunc='Perl_drand48' -random_r_proto='0' -randseedtype='U32' -ranlib='rem' -rd_nodata='-1' -readdir64_r_proto='0' -readdir_r_proto='0' -revision='5' -rm='del' -rmail='' -runnm='true' -sGMTIME_max='2147483647' -sGMTIME_min='0' -sLOCALTIME_max='2147483647' -sLOCALTIME_min='0' -sPRIEldbl='"E"' -sPRIFldbl='"F"' -sPRIGldbl='"G"' -sPRIX64='"lX"' -sPRId64='"ld"' -sPRIeldbl='"e"' -sPRIfldbl='"f"' -sPRIgldbl='"g"' -sPRIi64='"li"' -sPRIo64='"lo"' -sPRIu64='"lu"' -sPRIx64='"lx"' -sSCNfldbl='' -sched_yield='' -scriptdir='~INST_TOP~~INST_VER~\bin' -scriptdirexp='~INST_TOP~~INST_VER~\bin' -sed='sed' -seedfunc='Perl_drand48_init' -selectminbits='32' -selecttype='Perl_fd_set *' -sendmail='blat' -setgrent_r_proto='0' -sethostent_r_proto='0' -setlocale_r_proto='0' -setnetent_r_proto='0' -setprotoent_r_proto='0' -setpwent_r_proto='0' -setservent_r_proto='0' -sh='cmd /x /c' -shar='' -sharpbang='#!' -shmattype='void *' -shortsize='2' -shrpenv='' -shsharp='true' -sig_count='26' -sig_name='ZERO NUM01 INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD' -sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0' -sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0' -sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0' -sig_size='27' -signal_t='void' -sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -sitearchexp='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -sitebin='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' -sitebinexp='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' -sitelib='~INST_TOP~\site~INST_VER~\lib' -sitelib_stem='' -sitelibexp='~INST_TOP~\site~INST_VER~\lib' -siteprefix='~INST_TOP~\site~INST_VER~' -siteprefixexp='~INST_TOP~\site~INST_VER~' -sizesize='4' -sizetype='size_t' -sleep='' -smail='' -small='' -so='dll' -sockethdr='' -socketlib='' -socksizetype='int' -sort='sort' -spackage='Perl5' -spitshell='' -split='' -srand48_r_proto='0' -srandom_r_proto='0' -src='' -ssizetype='int' -st_ino_sign='1' -st_ino_size='4' -startperl='#!perl' -startsh='#!/bin/sh' -static_ext='DynaLoader' -stdchar='char' -stdio_base='' -stdio_bufsiz='' -stdio_cnt='' -stdio_filbuf='' -stdio_ptr='' -stdio_stream_array='' -strerror_r_proto='0' -strings='/usr/include/string.h' -submit='' -subversion='~PERL_SUBVERSION~' -sysman='/usr/man/man1' -tail='' -tar='' -targetarch='wince' -targetsh='cmd /x /c' -tbl='' -tee='' -test='' -timeincl='/usr/include/sys/time.h ' -timetype='time_t' -tmpnam_r_proto='0' -touch='touch' -tr='' -trnl='\012' -troff='' -ttyname_r_proto='0' -u16size='2' -u16type='unsigned short' -u32size='4' -u32type='unsigned long' -u64size='8' -u64type='unsigned __int64' -u8size='1' -u8type='unsigned char' -uidformat='"ld"' -uidsign='-1' -uidsize='4' -uidtype='uid_t' -uname='uname' -uniq='uniq' -uquadtype='unsigned __int64' -use5005threads='undef' -use64bitall='undef' -use64bitint='undef' -usecbacktrace='undef' -usecrosscompile='define' -usedevel='undef' -usedl='define' -usedtrace='undef' -usefaststdio='undef' -useithreads='~USE_ITHREADS~' -usekernprocpathname='undef' -uselargefiles='undef' -uselongdouble='undef' -usemallocwrap='define' -usemorebits='undef' -usemultiplicity='undef' -usemymalloc='n' -usenm='false' -usensgetexecutablepath='undef' -useopcode='true' -useperlio='define' -useposix='true' -usequadmath='undef' -usereentrant='undef' -userelocatableinc='undef' -useshrplib='true' -usesitecustomize='undef' -usesocks='undef' -usethreads='undef' -usevendorprefix='undef' -usevfork='false' -usrinc='/usr/include' -uuname='' -uvXUformat='"lX"' -uvoformat='"lo"' -uvsize='4' -uvtype='unsigned long' -uvuformat='"lu"' -uvxformat='"lx"' -vendorarch='' -vendorarchexp='' -vendorbin='' -vendorbinexp='' -vendorlib='' -vendorlib_stem='' -vendorlibexp='' -vendorprefix='' -vendorprefixexp='' -version='' -versiononly='undef' -vi='' -xlibpth='/usr/lib/386 /lib/386' -zcat='' -zip='zip' -PERL_REVISION='~PERL_REVISION~' -PERL_SUBVERSION='~PERL_SUBVERSION~' -PERL_VERSION='~PERL_VERSION~' -PERL_API_REVISION='~PERL_API_REVISION~' -PERL_API_SUBVERSION='~PERL_API_SUBVERSION~' -PERL_API_VERSION='~PERL_API_VERSION~' -PATCHLEVEL='~PERL_VERSION~' -PERL_PATCHLEVEL='~PERL_PATCHLEVEL~' -PERL_CONFIG_SH='true' -CONFIGDOTSH='true' diff --git a/win32/config_H.ce b/win32/config_H.ce deleted file mode 100644 index b8b8aeb937..0000000000 --- a/win32/config_H.ce +++ /dev/null @@ -1,4206 +0,0 @@ -/* - * This file was produced by running the config_h.SH script, which - * gets its values from undef, which is generally produced by - * running Configure. - * - * Feel free to modify any of this as the need arises. Note, however, - * that running config_h.SH again will wipe out any changes you've made. - * For a more permanent change edit undef and rerun config_h.SH. - * - * $Id: Config_h.U,v 3.0.1.5 1997/02/28 14:57:43 ram Exp $ - */ - -/* - * Package name : perl5 - * Source directory : - * Configuration time: Thu Nov 10 20:47:18 2005 - * Configured by : vkon - * Target system : - */ - -#ifndef _config_h_ -#define _config_h_ - -/* LOC_SED: - * This symbol holds the complete pathname to the sed program. - */ -#define LOC_SED "" /**/ - -/* HAS_ALARM: - * This symbol, if defined, indicates that the alarm routine is - * available. - */ -/*#define HAS_ALARM /**/ - -/* HAS_CHOWN: - * This symbol, if defined, indicates that the chown routine is - * available. - */ -/*#define HAS_CHOWN /**/ - -/* HAS_CHROOT: - * This symbol, if defined, indicates that the chroot routine is - * available. - */ -/*#define HAS_CHROOT /**/ - -/* HAS_CHSIZE: - * This symbol, if defined, indicates that the chsize routine is available - * to truncate files. You might need a -lx to get this routine. - */ -#define HAS_CHSIZE /**/ - -/* HAS_CUSERID: - * This symbol, if defined, indicates that the cuserid routine is - * available to get character login names. - */ -/*#define HAS_CUSERID /**/ - -/* HAS_DIFFTIME: - * This symbol, if defined, indicates that the difftime routine is - * available. - */ -#define HAS_DIFFTIME /**/ - -/* HAS_DLERROR: - * This symbol, if defined, indicates that the dlerror routine is - * available to return a string describing the last error that - * occurred from a call to dlopen(), dlclose() or dlsym(). - */ -#define HAS_DLERROR /**/ - -/* HAS_DUP2: - * This symbol, if defined, indicates that the dup2 routine is - * available to duplicate file descriptors. - */ -#define HAS_DUP2 /**/ - -/* HAS_FCHMOD: - * This symbol, if defined, indicates that the fchmod routine is available - * to change mode of opened files. If unavailable, use chmod(). - */ -/*#define HAS_FCHMOD /**/ - -/* HAS_FCHOWN: - * This symbol, if defined, indicates that the fchown routine is available - * to change ownership of opened files. If unavailable, use chown(). - */ -/*#define HAS_FCHOWN /**/ - -/* HAS_FCNTL: - * This symbol, if defined, indicates to the C program that - * the fcntl() function exists. - */ -/*#define HAS_FCNTL /**/ - -/* HAS_FGETPOS: - * This symbol, if defined, indicates that the fgetpos routine is - * available to get the file position indicator, similar to ftell(). - */ -#define HAS_FGETPOS /**/ - -/* HAS_FLOCK: - * This symbol, if defined, indicates that the flock routine is - * available to do file locking. - */ -/*#define HAS_FLOCK /**/ - -/* HAS_FORK: - * This symbol, if defined, indicates that the fork routine is - * available. - */ -/*#define HAS_FORK /**/ - -/* HAS_FSETPOS: - * This symbol, if defined, indicates that the fsetpos routine is - * available to set the file position indicator, similar to fseek(). - */ -#define HAS_FSETPOS /**/ - -/* HAS_GETTIMEOFDAY: - * This symbol, if defined, indicates that the gettimeofday() system - * call is available for a sub-second accuracy clock. Usually, the file - * <sys/resource.h> needs to be included (see I_SYS_RESOURCE). - * The type "Timeval" should be used to refer to "struct timeval". - */ -/*#define HAS_GETTIMEOFDAY /**/ -#ifdef HAS_GETTIMEOFDAY -#define Timeval struct timeval /* Structure used by gettimeofday() */ -#endif - -/* HAS_GETGROUPS: - * This symbol, if defined, indicates that the getgroups() routine is - * available to get the list of process groups. If unavailable, multiple - * groups are probably not supported. - */ -/*#define HAS_GETGROUPS /**/ - -/* HAS_GETLOGIN: - * This symbol, if defined, indicates that the getlogin routine is - * available to get the login name. - */ -#define HAS_GETLOGIN /**/ - -/* HAS_GETPGID: - * This symbol, if defined, indicates to the C program that - * the getpgid(pid) function is available to get the - * process group id. - */ -/*#define HAS_GETPGID /**/ - -/* HAS_GETPGRP2: - * This symbol, if defined, indicates that the getpgrp2() (as in DG/UX) - * routine is available to get the current process group. - */ -/*#define HAS_GETPGRP2 /**/ - -/* HAS_GETPPID: - * This symbol, if defined, indicates that the getppid routine is - * available to get the parent process ID. - */ -/*#define HAS_GETPPID /**/ - -/* HAS_GETPRIORITY: - * This symbol, if defined, indicates that the getpriority routine is - * available to get a process's priority. - */ -/*#define HAS_GETPRIORITY /**/ - -/* HAS_INET_ATON: - * This symbol, if defined, indicates to the C program that the - * inet_aton() function is available to parse IP address "dotted-quad" - * strings. - */ -/*#define HAS_INET_ATON /**/ - -/* HAS_KILLPG: - * This symbol, if defined, indicates that the killpg routine is available - * to kill process groups. If unavailable, you probably should use kill - * with a negative process number. - */ -/*#define HAS_KILLPG /**/ - -/* HAS_LINK: - * This symbol, if defined, indicates that the link routine is - * available to create hard links. - */ -#define HAS_LINK /**/ - -/* HAS_LOCALECONV: - * This symbol, if defined, indicates that the localeconv routine is - * available for numeric and monetary formatting conventions. - */ -/*#define HAS_LOCALECONV /**/ - -/* HAS_LOCKF: - * This symbol, if defined, indicates that the lockf routine is - * available to do file locking. - */ -/*#define HAS_LOCKF /**/ - -/* HAS_LSTAT: - * This symbol, if defined, indicates that the lstat routine is - * available to do file stats on symbolic links. - */ -/*#define HAS_LSTAT /**/ - -/* HAS_MBLEN: - * This symbol, if defined, indicates that the mblen routine is available - * to find the number of bytes in a multibye character. - */ -#define HAS_MBLEN /**/ - -/* HAS_MBSTOWCS: - * This symbol, if defined, indicates that the mbstowcs routine is - * available to covert a multibyte string into a wide character string. - */ -#define HAS_MBSTOWCS /**/ - -/* HAS_MBTOWC: - * This symbol, if defined, indicates that the mbtowc routine is available - * to covert a multibyte to a wide character. - */ -#define HAS_MBTOWC /**/ - -/* HAS_MKDIR: - * This symbol, if defined, indicates that the mkdir routine is available - * to create directories. Otherwise you should fork off a new process to - * exec /bin/mkdir. - */ -#define HAS_MKDIR /**/ - -/* HAS_MKFIFO: - * This symbol, if defined, indicates that the mkfifo routine is - * available to create FIFOs. Otherwise, mknod should be able to - * do it for you. However, if mkfifo is there, mknod might require - * super-user privileges which mkfifo will not. - */ -/*#define HAS_MKFIFO /**/ - -/* HAS_MKTIME: - * This symbol, if defined, indicates that the mktime routine is - * available. - */ -#define HAS_MKTIME /**/ - -/* HAS_MSYNC: - * This symbol, if defined, indicates that the msync system call is - * available to synchronize a mapped file. - */ -/*#define HAS_MSYNC /**/ - -/* HAS_MUNMAP: - * This symbol, if defined, indicates that the munmap system call is - * available to unmap a region, usually mapped by mmap(). - */ -/*#define HAS_MUNMAP /**/ - -/* HAS_NICE: - * This symbol, if defined, indicates that the nice routine is - * available. - */ -/*#define HAS_NICE /**/ - -/* HAS_PATHCONF: - * This symbol, if defined, indicates that pathconf() is available - * to determine file-system related limits and options associated - * with a given filename. - */ -/* HAS_FPATHCONF: - * This symbol, if defined, indicates that pathconf() is available - * to determine file-system related limits and options associated - * with a given open file descriptor. - */ -/*#define HAS_PATHCONF /**/ -/*#define HAS_FPATHCONF /**/ - -/* HAS_PAUSE: - * This symbol, if defined, indicates that the pause routine is - * available to suspend a process until a signal is received. - */ -#define HAS_PAUSE /**/ - -/* HAS_PIPE: - * This symbol, if defined, indicates that the pipe routine is - * available to create an inter-process channel. - */ -/*#define HAS_PIPE /**/ - -/* HAS_POLL: - * This symbol, if defined, indicates that the poll routine is - * available to poll active file descriptors. You may safely - * include <poll.h> when this symbol is defined. - */ -/*#define HAS_POLL /**/ - -/* HAS_READDIR: - * This symbol, if defined, indicates that the readdir routine is - * available to read directory entries. You may have to include - * <dirent.h>. See I_DIRENT. - */ -#define HAS_READDIR /**/ - -/* HAS_SEEKDIR: - * This symbol, if defined, indicates that the seekdir routine is - * available. You may have to include <dirent.h>. See I_DIRENT. - */ -#define HAS_SEEKDIR /**/ - -/* HAS_TELLDIR: - * This symbol, if defined, indicates that the telldir routine is - * available. You may have to include <dirent.h>. See I_DIRENT. - */ -#define HAS_TELLDIR /**/ - -/* HAS_REWINDDIR: - * This symbol, if defined, indicates that the rewinddir routine is - * available. You may have to include <dirent.h>. See I_DIRENT. - */ -#define HAS_REWINDDIR /**/ - -/* HAS_READLINK: - * This symbol, if defined, indicates that the readlink routine is - * available to read the value of a symbolic link. - */ -/*#define HAS_READLINK /**/ - -/* HAS_RENAME: - * This symbol, if defined, indicates that the rename routine is available - * to rename files. Otherwise you should do the unlink(), link(), unlink() - * trick. - */ -#define HAS_RENAME /**/ - -/* HAS_RMDIR: - * This symbol, if defined, indicates that the rmdir routine is - * available to remove directories. Otherwise you should fork off a - * new process to exec /bin/rmdir. - */ -#define HAS_RMDIR /**/ - -/* HAS_SELECT: - * This symbol, if defined, indicates that the select routine is - * available to select active file descriptors. If the timeout field - * is used, <sys/time.h> may need to be included. - */ -#define HAS_SELECT /**/ - -/* HAS_SETEGID: - * This symbol, if defined, indicates that the setegid routine is available - * to change the effective gid of the current program. - */ -/*#define HAS_SETEGID /**/ - -/* HAS_SETEUID: - * This symbol, if defined, indicates that the seteuid routine is available - * to change the effective uid of the current program. - */ -/*#define HAS_SETEUID /**/ - -/* HAS_SETLINEBUF: - * This symbol, if defined, indicates that the setlinebuf routine is - * available to change stderr or stdout from block-buffered or unbuffered - * to a line-buffered mode. - */ -/*#define HAS_SETLINEBUF /**/ - -/* HAS_SETLOCALE: - * This symbol, if defined, indicates that the setlocale routine is - * available to handle locale-specific ctype implementations. - */ -#define HAS_SETLOCALE /**/ - -/* HAS_SETPGID: - * This symbol, if defined, indicates that the setpgid(pid, gpid) - * routine is available to set process group ID. - */ -/*#define HAS_SETPGID /**/ - -/* HAS_SETPGRP2: - * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX) - * routine is available to set the current process group. - */ -/*#define HAS_SETPGRP2 /**/ - -/* HAS_SETPRIORITY: - * This symbol, if defined, indicates that the setpriority routine is - * available to set a process's priority. - */ -/*#define HAS_SETPRIORITY /**/ - -/* HAS_SETREGID: - * This symbol, if defined, indicates that the setregid routine is - * available to change the real and effective gid of the current - * process. - */ -/* HAS_SETRESGID: - * This symbol, if defined, indicates that the setresgid routine is - * available to change the real, effective and saved gid of the current - * process. - */ -/*#define HAS_SETREGID /**/ -/*#define HAS_SETRESGID /**/ - -/* HAS_SETREUID: - * This symbol, if defined, indicates that the setreuid routine is - * available to change the real and effective uid of the current - * process. - */ -/* HAS_SETRESUID: - * This symbol, if defined, indicates that the setresuid routine is - * available to change the real, effective and saved uid of the current - * process. - */ -/*#define HAS_SETREUID /**/ -/*#define HAS_SETRESUID /**/ - -/* HAS_SETRGID: - * This symbol, if defined, indicates that the setrgid routine is available - * to change the real gid of the current program. - */ -/*#define HAS_SETRGID /**/ - -/* HAS_SETRUID: - * This symbol, if defined, indicates that the setruid routine is available - * to change the real uid of the current program. - */ -/*#define HAS_SETRUID /**/ - -/* HAS_SETSID: - * This symbol, if defined, indicates that the setsid routine is - * available to set the process group ID. - */ -/*#define HAS_SETSID /**/ - -/* HAS_STRCOLL: - * This symbol, if defined, indicates that the strcoll routine is - * available to compare strings using collating information. - */ -#define HAS_STRCOLL /**/ - -/* HAS_STRTOD: - * This symbol, if defined, indicates that the strtod routine is - * available to provide better numeric string conversion than atof(). - */ -#define HAS_STRTOD /**/ - -/* HAS_STRTOL: - * This symbol, if defined, indicates that the strtol routine is available - * to provide better numeric string conversion than atoi() and friends. - */ -#define HAS_STRTOL /**/ - -/* HAS_STRXFRM: - * This symbol, if defined, indicates that the strxfrm() routine is - * available to transform strings. - */ -/*#define HAS_STRXFRM /**/ - -/* HAS_SYMLINK: - * This symbol, if defined, indicates that the symlink routine is available - * to create symbolic links. - */ -/*#define HAS_SYMLINK /**/ - -/* HAS_SYSCALL: - * This symbol, if defined, indicates that the syscall routine is - * available to call arbitrary system calls. If undefined, that's tough. - */ -/*#define HAS_SYSCALL /**/ - -/* HAS_SYSCONF: - * This symbol, if defined, indicates that sysconf() is available - * to determine system related limits and options. - */ -/*#define HAS_SYSCONF /**/ - -/* HAS_SYSTEM: - * This symbol, if defined, indicates that the system routine is - * available to issue a shell command. - */ -#define HAS_SYSTEM /**/ - -/* HAS_TCGETPGRP: - * This symbol, if defined, indicates that the tcgetpgrp routine is - * available to get foreground process group ID. - */ -/*#define HAS_TCGETPGRP /**/ - -/* HAS_TCSETPGRP: - * This symbol, if defined, indicates that the tcsetpgrp routine is - * available to set foreground process group ID. - */ -/*#define HAS_TCSETPGRP /**/ - -/* HAS_TRUNCATE: - * This symbol, if defined, indicates that the truncate routine is - * available to truncate files. - */ -/*#define HAS_TRUNCATE /**/ - -/* HAS_TZNAME: - * This symbol, if defined, indicates that the tzname[] array is - * available to access timezone names. - */ -#define HAS_TZNAME /**/ - -/* HAS_UMASK: - * This symbol, if defined, indicates that the umask routine is - * available to set and get the value of the file creation mask. - */ -#define HAS_UMASK /**/ - -/* HAS_USLEEP: - * This symbol, if defined, indicates that the usleep routine is - * available to let the process sleep on a sub-second accuracy. - */ -/*#define HAS_USLEEP /**/ - -/* HAS_WAIT4: - * This symbol, if defined, indicates that wait4() exists. - */ -/*#define HAS_WAIT4 /**/ - -/* HAS_WAITPID: - * This symbol, if defined, indicates that the waitpid routine is - * available to wait for child process. - */ -#define HAS_WAITPID /**/ - -/* HAS_WCSTOMBS: - * This symbol, if defined, indicates that the wcstombs routine is - * available to convert wide character strings to multibyte strings. - */ -#define HAS_WCSTOMBS /**/ - -/* HAS_WCTOMB: - * This symbol, if defined, indicates that the wctomb routine is available - * to covert a wide character to a multibyte. - */ -#define HAS_WCTOMB /**/ - -/* I_ARPA_INET: - * This symbol, if defined, indicates to the C program that it should - * include <arpa/inet.h> to get inet_addr and friends declarations. - */ -#define I_ARPA_INET /**/ - -/* I_DBM: - * This symbol, if defined, indicates that <dbm.h> exists and should - * be included. - */ -/* I_RPCSVC_DBM: - * This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and - * should be included. - */ -/*#define I_DBM /**/ -/*#define I_RPCSVC_DBM / **/ - -/* I_DIRENT: - * This symbol, if defined, indicates to the C program that it should - * include <dirent.h>. Using this symbol also triggers the definition - * of the Direntry_t define which ends up being 'struct dirent' or - * 'struct direct' depending on the availability of <dirent.h>. - */ -/* DIRNAMLEN: - * This symbol, if defined, indicates to the C program that the length - * of directory entry names is provided by a d_namlen field. Otherwise - * you need to do strlen() on the d_name field. - */ -/* Direntry_t: - * This symbol is set to 'struct direct' or 'struct dirent' depending on - * whether dirent is available or not. You should use this pseudo type to - * portably declare your directory entries. - */ -#define I_DIRENT /**/ -#define DIRNAMLEN /**/ -#define Direntry_t struct direct - -/* I_DLFCN: - * This symbol, if defined, indicates that <dlfcn.h> exists and should - * be included. - */ -#define I_DLFCN /**/ - -/* I_FCNTL: - * This manifest constant tells the C program to include <fcntl.h>. - */ -#define I_FCNTL /**/ - -/* I_LOCALE: - * This symbol, if defined, indicates to the C program that it should - * include <locale.h>. - */ -/*#define I_LOCALE /**/ - -/* I_NET_ERRNO: - * This symbol, if defined, indicates that <net/errno.h> exists and - * should be included. - */ -/*#define I_NET_ERRNO /**/ - -/* I_NETINET_IN: - * This symbol, if defined, indicates to the C program that it should - * include <netinet/in.h>. Otherwise, you may try <sys/in.h>. - */ -/*#define I_NETINET_IN /**/ - -/* I_SYS_DIR: - * This symbol, if defined, indicates to the C program that it should - * include <sys/dir.h>. - */ -/*#define I_SYS_DIR /**/ - -/* I_SYS_FILE: - * This symbol, if defined, indicates to the C program that it should - * include <sys/file.h> to get definition of R_OK and friends. - */ -/*#define I_SYS_FILE /**/ - -/* I_SYS_IOCTL: - * This symbol, if defined, indicates that <sys/ioctl.h> exists and should - * be included. Otherwise, include <sgtty.h> or <termio.h>. - */ -/* I_SYS_SOCKIO: - * This symbol, if defined, indicates the <sys/sockio.h> should be included - * to get socket ioctl options, like SIOCATMARK. - */ -/*#define I_SYS_IOCTL /**/ -/*#define I_SYS_SOCKIO /**/ - -/* I_SYS_NDIR: - * This symbol, if defined, indicates to the C program that it should - * include <sys/ndir.h>. - */ -/*#define I_SYS_NDIR /**/ - -/* I_SYS_PARAM: - * This symbol, if defined, indicates to the C program that it should - * include <sys/param.h>. - */ -/*#define I_SYS_PARAM /**/ - -/* I_SYS_RESOURCE: - * This symbol, if defined, indicates to the C program that it should - * include <sys/resource.h>. - */ -/*#define I_SYS_RESOURCE /**/ - -/* I_SYS_SELECT: - * This symbol, if defined, indicates to the C program that it should - * include <sys/select.h> in order to get definition of struct timeval. - */ -/*#define I_SYS_SELECT /**/ - -/* I_SYS_STAT: - * This symbol, if defined, indicates to the C program that it should - * include <sys/stat.h>. - */ -#define I_SYS_STAT /**/ - -/* I_SYS_TIMES: - * This symbol, if defined, indicates to the C program that it should - * include <sys/times.h>. - */ -/*#define I_SYS_TIMES /**/ - -/* I_SYS_TYPES: - * This symbol, if defined, indicates to the C program that it should - * include <sys/types.h>. - */ -/*#define I_SYS_TYPES /**/ - -/* I_SYS_UN: - * This symbol, if defined, indicates to the C program that it should - * include <sys/un.h> to get UNIX domain socket definitions. - */ -/*#define I_SYS_UN /**/ - -/* I_SYS_WAIT: - * This symbol, if defined, indicates to the C program that it should - * include <sys/wait.h>. - */ -/*#define I_SYS_WAIT /**/ - -/* I_TERMIO: - * This symbol, if defined, indicates that the program should include - * <termio.h> rather than <sgtty.h>. There are also differences in - * the ioctl() calls that depend on the value of this symbol. - */ -/* I_TERMIOS: - * This symbol, if defined, indicates that the program should include - * the POSIX termios.h rather than sgtty.h or termio.h. - * There are also differences in the ioctl() calls that depend on the - * value of this symbol. - */ -/* I_SGTTY: - * This symbol, if defined, indicates that the program should include - * <sgtty.h> rather than <termio.h>. There are also differences in - * the ioctl() calls that depend on the value of this symbol. - */ -/*#define I_TERMIO /**/ -/*#define I_TERMIOS /**/ -/*#define I_SGTTY /**/ - -/* I_UNISTD: - * This symbol, if defined, indicates to the C program that it should - * include <unistd.h>. - */ -/*#define I_UNISTD /**/ - -/* I_UTIME: - * This symbol, if defined, indicates to the C program that it should - * include <utime.h>. - */ -#define I_UTIME /**/ - -/* I_VFORK: - * This symbol, if defined, indicates to the C program that it should - * include vfork.h. - */ -/*#define I_VFORK /**/ - -/* HAS_ACCESSX: - * This symbol, if defined, indicates that the accessx routine is - * available to do extended access checks. - */ -/*#define HAS_ACCESSX /**/ - -/* HAS_EACCESS: - * This symbol, if defined, indicates that the eaccess routine is - * available to do extended access checks. - */ -/*#define HAS_EACCESS /**/ - -/* I_SYS_ACCESS: - * This symbol, if defined, indicates to the C program that it should - * include <sys/access.h>. - */ -/*#define I_SYS_ACCESS /**/ - -/* I_SYS_SECURITY: - * This symbol, if defined, indicates to the C program that it should - * include <sys/security.h>. - */ -/*#define I_SYS_SECURITY /**/ - -/* OSNAME: - * This symbol contains the name of the operating system, as determined - * by Configure. You shouldn't rely on it too much; the specific - * feature tests from Configure are generally more reliable. - */ -/* OSVERS: - * This symbol contains the version of the operating system, as determined - * by Configure. You shouldn't rely on it too much; the specific - * feature tests from Configure are generally more reliable. - */ -#define OSNAME "MSWin32" /**/ -#define OSVERS "4.0" /**/ - -/* USE_CROSS_COMPILE: - * This symbol, if defined, indicates that Perl is being cross-compiled. - */ -/* PERL_TARGETARCH: - * This symbol, if defined, indicates the target architecture - * Perl has been cross-compiled to. Undefined if not a cross-compile. - */ -#ifndef USE_CROSS_COMPILE -#define USE_CROSS_COMPILE /**/ -#define PERL_TARGETARCH "wince" /**/ -#endif - -/* MULTIARCH: - * This symbol, if defined, signifies that the build - * process will produce some binary files that are going to be - * used in a cross-platform environment. This is the case for - * example with the NeXT "fat" binaries that contain executables - * for several CPUs. - */ -/*#define MULTIARCH /**/ - -/* MEM_ALIGNBYTES: - * This symbol contains the number of bytes required to align a - * double, or a long double when applicable. Usual values are 2, - * 4 and 8. The default is eight, for safety. - */ -#if defined(MULTIARCH) -# define MEM_ALIGNBYTES 8 -#else -#define MEM_ALIGNBYTES 8 -#endif - -/* ARCHLIB: - * This variable, if defined, holds the name of the directory in - * which the user wants to put architecture-dependent public - * library files for perl5. It is most often a local directory - * such as /usr/local/lib. Programs using this variable must be - * prepared to deal with filename expansion. If ARCHLIB is the - * same as PRIVLIB, it is not defined, since presumably the - * program already searches PRIVLIB. - */ -/* ARCHLIB_EXP: - * This symbol contains the ~name expanded version of ARCHLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -#define ARCHLIB "\\Storage Card\\perl58m\\lib" /**/ -/*#define ARCHLIB_EXP "" /**/ - -/* ARCHNAME: - * This symbol holds a string representing the architecture name. - * It may be used to construct an architecture-dependant pathname - * where library files may be held under a private library, for - * instance. - */ -#define ARCHNAME "MS Pocket PC-WCE300-ARM" /**/ - -/* HAS_ATOLF: - * This symbol, if defined, indicates that the atolf routine is - * available to convert strings into long doubles. - */ -/*#define HAS_ATOLF /**/ - -/* HAS_ATOLL: - * This symbol, if defined, indicates that the atoll routine is - * available to convert strings into long longs. - */ -/*#define HAS_ATOLL /**/ - -/* BIN: - * This symbol holds the path of the bin directory where the package will - * be installed. Program must be prepared to deal with ~name substitution. - */ -/* BIN_EXP: - * This symbol is the filename expanded version of the BIN symbol, for - * programs that do not want to deal with that at run-time. - */ -#define BIN "\\Storage Card\\perl58m\\bin" /**/ -#define BIN_EXP "\\Storage Card\\perl58m\\bin" /**/ - -/* INTSIZE: - * This symbol contains the value of sizeof(int) so that the C - * preprocessor can make decisions based on it. - */ -/* LONGSIZE: - * This symbol contains the value of sizeof(long) so that the C - * preprocessor can make decisions based on it. - */ -/* SHORTSIZE: - * This symbol contains the value of sizeof(short) so that the C - * preprocessor can make decisions based on it. - */ -#define INTSIZE 4 /**/ -#define LONGSIZE 4 /**/ -#define SHORTSIZE 2 /**/ - -/* BYTEORDER: - * This symbol holds the hexadecimal constant defined in byteorder, - * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... - * If the compiler supports cross-compiling or multiple-architecture - * binaries (eg. on NeXT systems), use compiler-defined macros to - * determine the byte order. - * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture - * Binaries (MAB) on either big endian or little endian machines. - * The endian-ness is available at compile-time. This only matters - * for perl, where the config.h can be generated and installed on - * one system, and used by a different architecture to build an - * extension. Older versions of NeXT that might not have - * defined either *_ENDIAN__ were all on Motorola 680x0 series, - * so the default case (for NeXT) is big endian to catch them. - * This might matter for NeXT 3.0. - */ -#if defined(MULTIARCH) -# ifdef __LITTLE_ENDIAN__ -# if LONGSIZE == 4 -# define BYTEORDER 0x1234 -# else -# if LONGSIZE == 8 -# define BYTEORDER 0x12345678 -# endif -# endif -# else -# ifdef __BIG_ENDIAN__ -# if LONGSIZE == 4 -# define BYTEORDER 0x4321 -# else -# if LONGSIZE == 8 -# define BYTEORDER 0x87654321 -# endif -# endif -# endif -# endif -# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__)) -# define BYTEORDER 0x4321 -# endif -#else -#define BYTEORDER 0x1234 /* large digits for MSB */ -#endif /* NeXT */ - -/* CHARBITS: - * This symbol contains the size of a char, so that the C preprocessor - * can make decisions based on it. - */ -#define CHARBITS 8 /**/ - -/* CAT2: - * This macro concatenates 2 tokens together. - */ -/* STRINGIFY: - * This macro surrounds its token with double quotes. - */ -#if 42 == 1 -#define CAT2(a,b) a/**/b -#define STRINGIFY(a) "a" - /* If you can get stringification with catify, tell me how! */ -#endif -#if 42 == 42 -#define PeRl_CaTiFy(a, b) a ## b -#define PeRl_StGiFy(a) #a -/* the additional level of indirection enables these macros to be - * used as arguments to other macros. See K&R 2nd ed., page 231. */ -#define CAT2(a,b) PeRl_CaTiFy(a,b) -#define StGiFy(a) PeRl_StGiFy(a) -#define STRINGIFY(a) PeRl_StGiFy(a) -#endif -#if 42 != 1 && 42 != 42 -# include "Bletch: How does this C preprocessor concatenate tokens?" -#endif - -/* CPPSTDIN: - * This symbol contains the first part of the string which will invoke - * the C preprocessor on the standard input and produce to standard - * output. Typical value of "cc -E" or "/lib/cpp", but it can also - * call a wrapper. See CPPRUN. - */ -/* CPPMINUS: - * This symbol contains the second part of the string which will invoke - * the C preprocessor on the standard input and produce to standard - * output. This symbol will have the value "-" if CPPSTDIN needs a minus - * to specify standard input, otherwise the value is "". - */ -/* CPPRUN: - * This symbol contains the string which will invoke a C preprocessor on - * the standard input and produce to standard output. It needs to end - * with CPPLAST, after all other preprocessor flags have been specified. - * The main difference with CPPSTDIN is that this program will never be a - * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is - * available directly to the user. Note that it may well be different from - * the preprocessor used to compile the C program. - */ -/* CPPLAST: - * This symbol is intended to be used along with CPPRUN in the same manner - * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". - */ -#define CPPSTDIN "clarm.exe -nologo -E" -#define CPPMINUS "" -#define CPPRUN "clarm.exe -nologo -E" -#define CPPLAST "" - -/* HAS__FWALK: - * This symbol, if defined, indicates that the _fwalk system call is - * available to apply a function to all the file handles. - */ -/*#define HAS__FWALK /**/ - -/* HAS_ACCESS: - * This manifest constant lets the C program know that the access() - * system call is available to check for accessibility using real UID/GID. - * (always present on UNIX.) - */ -#define HAS_ACCESS /**/ - -/* HAS_ASCTIME_R: - * This symbol, if defined, indicates that the asctime_r routine - * is available to asctime re-entrantly. - */ -/* ASCTIME_R_PROTO: - * This symbol encodes the prototype of asctime_r. - * It is zero if d_asctime_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r - * is defined. - */ -/*#define HAS_ASCTIME_R /**/ -#define ASCTIME_R_PROTO 0 /**/ - -/* CASTI32: - * This symbol is defined if the C compiler can cast negative - * or large floating point numbers to 32-bit ints. - */ -/*#define CASTI32 /**/ - -/* CASTNEGFLOAT: - * This symbol is defined if the C compiler can cast negative - * numbers to unsigned longs, ints and shorts. - */ -/* CASTFLAGS: - * This symbol contains flags that say what difficulties the compiler - * has casting odd floating values to unsigned long: - * 0 = ok - * 1 = couldn't cast < 0 - * 2 = couldn't cast >= 0x80000000 - * 4 = couldn't cast in argument expression list - */ -#define CASTNEGFLOAT /**/ -#define CASTFLAGS 0 /**/ - -/* HAS_CLASS: - * This symbol, if defined, indicates that the class routine is - * available to classify doubles. Available for example in AIX. - * The returned values are defined in <float.h> and are: - * - * FP_PLUS_NORM Positive normalized, nonzero - * FP_MINUS_NORM Negative normalized, nonzero - * FP_PLUS_DENORM Positive denormalized, nonzero - * FP_MINUS_DENORM Negative denormalized, nonzero - * FP_PLUS_ZERO +0.0 - * FP_MINUS_ZERO -0.0 - * FP_PLUS_INF +INF - * FP_MINUS_INF -INF - * FP_NANS Signaling Not a Number (NaNS) - * FP_NANQ Quiet Not a Number (NaNQ) - */ -/*#define HAS_CLASS /**/ - -/* VOID_CLOSEDIR: - * This symbol, if defined, indicates that the closedir() routine - * does not return a value. - */ -/*#define VOID_CLOSEDIR /**/ - -/* HAS_STRUCT_CMSGHDR: - * This symbol, if defined, indicates that the struct cmsghdr - * is supported. - */ -/*#define HAS_STRUCT_CMSGHDR /**/ - -/* HAS_CRYPT_R: - * This symbol, if defined, indicates that the crypt_r routine - * is available to crypt re-entrantly. - */ -/* CRYPT_R_PROTO: - * This symbol encodes the prototype of crypt_r. - * It is zero if d_crypt_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r - * is defined. - */ -/*#define HAS_CRYPT_R /**/ -#define CRYPT_R_PROTO 0 /**/ - -/* HAS_CSH: - * This symbol, if defined, indicates that the C-shell exists. - */ -/* CSH: - * This symbol, if defined, contains the full pathname of csh. - */ -/*#define HAS_CSH /**/ -#ifdef HAS_CSH -#define CSH "" /**/ -#endif - -/* HAS_CTIME_R: - * This symbol, if defined, indicates that the ctime_r routine - * is available to ctime re-entrantly. - */ -/* CTIME_R_PROTO: - * This symbol encodes the prototype of ctime_r. - * It is zero if d_ctime_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r - * is defined. - */ -/*#define HAS_CTIME_R /**/ -#define CTIME_R_PROTO 0 /**/ - -/* DLSYM_NEEDS_UNDERSCORE: - * This symbol, if defined, indicates that we need to prepend an - * underscore to the symbol name before calling dlsym(). This only - * makes sense if you *have* dlsym, which we will presume is the - * case if you're using dl_dlopen.xs. - */ -/*#define DLSYM_NEEDS_UNDERSCORE /**/ - -/* HAS_DRAND48_R: - * This symbol, if defined, indicates that the drand48_r routine - * is available to drand48 re-entrantly. - */ -/* DRAND48_R_PROTO: - * This symbol encodes the prototype of drand48_r. - * It is zero if d_drand48_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r - * is defined. - */ -/*#define HAS_DRAND48_R /**/ -#define DRAND48_R_PROTO 0 /**/ - -/* HAS_DRAND48_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the drand48() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern double drand48(void); - */ -/*#define HAS_DRAND48_PROTO /**/ - -/* HAS_ENDGRENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for finalizing sequential access of the group database. - */ -/*#define HAS_ENDGRENT /**/ - -/* HAS_ENDGRENT_R: - * This symbol, if defined, indicates that the endgrent_r routine - * is available to endgrent re-entrantly. - */ -/* ENDGRENT_R_PROTO: - * This symbol encodes the prototype of endgrent_r. - * It is zero if d_endgrent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r - * is defined. - */ -/*#define HAS_ENDGRENT_R /**/ -#define ENDGRENT_R_PROTO 0 /**/ - -/* HAS_ENDHOSTENT: - * This symbol, if defined, indicates that the endhostent() routine is - * available to close whatever was being used for host queries. - */ -/*#define HAS_ENDHOSTENT /**/ - -/* HAS_ENDNETENT: - * This symbol, if defined, indicates that the endnetent() routine is - * available to close whatever was being used for network queries. - */ -/*#define HAS_ENDNETENT /**/ - -/* HAS_ENDPROTOENT: - * This symbol, if defined, indicates that the endprotoent() routine is - * available to close whatever was being used for protocol queries. - */ -/*#define HAS_ENDPROTOENT /**/ - -/* HAS_ENDPWENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for finalizing sequential access of the passwd database. - */ -/*#define HAS_ENDPWENT /**/ - -/* HAS_ENDPWENT_R: - * This symbol, if defined, indicates that the endpwent_r routine - * is available to endpwent re-entrantly. - */ -/* ENDPWENT_R_PROTO: - * This symbol encodes the prototype of endpwent_r. - * It is zero if d_endpwent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r - * is defined. - */ -/*#define HAS_ENDPWENT_R /**/ -#define ENDPWENT_R_PROTO 0 /**/ - -/* HAS_ENDSERVENT: - * This symbol, if defined, indicates that the endservent() routine is - * available to close whatever was being used for service queries. - */ -/*#define HAS_ENDSERVENT /**/ - -/* HAS_FCHDIR: - * This symbol, if defined, indicates that the fchdir routine is - * available to change directory using a file descriptor. - */ -/*#define HAS_FCHDIR /**/ - -/* FCNTL_CAN_LOCK: - * This symbol, if defined, indicates that fcntl() can be used - * for file locking. Normally on Unix systems this is defined. - * It may be undefined on VMS. - */ -/*#define FCNTL_CAN_LOCK /**/ - -/* HAS_FD_SET: - * This symbol, when defined, indicates presence of the fd_set typedef - * in <sys/types.h> - */ -#define HAS_FD_SET /**/ - -/* HAS_FINITE: - * This symbol, if defined, indicates that the finite routine is - * available to check whether a double is finite (non-infinity non-NaN). - */ -/*#define HAS_FINITE /**/ - -/* HAS_FINITEL: - * This symbol, if defined, indicates that the finitel routine is - * available to check whether a long double is finite - * (non-infinity non-NaN). - */ -/*#define HAS_FINITEL /**/ - -/* FLEXFILENAMES: - * This symbol, if defined, indicates that the system supports filenames - * longer than 14 characters. - */ -#define FLEXFILENAMES /**/ - -/* HAS_FP_CLASS: - * This symbol, if defined, indicates that the fp_class routine is - * available to classify doubles. Available for example in Digital UNIX. - * The returned values are defined in <math.h> and are: - * - * FP_SNAN Signaling NaN (Not-a-Number) - * FP_QNAN Quiet NaN (Not-a-Number) - * FP_POS_INF +infinity - * FP_NEG_INF -infinity - * FP_POS_NORM Positive normalized - * FP_NEG_NORM Negative normalized - * FP_POS_DENORM Positive denormalized - * FP_NEG_DENORM Negative denormalized - * FP_POS_ZERO +0.0 (positive zero) - * FP_NEG_ZERO -0.0 (negative zero) - */ -/*#define HAS_FP_CLASS /**/ - -/* HAS_FPCLASS: - * This symbol, if defined, indicates that the fpclass routine is - * available to classify doubles. Available for example in Solaris/SVR4. - * The returned values are defined in <ieeefp.h> and are: - * - * FP_SNAN signaling NaN - * FP_QNAN quiet NaN - * FP_NINF negative infinity - * FP_PINF positive infinity - * FP_NDENORM negative denormalized non-zero - * FP_PDENORM positive denormalized non-zero - * FP_NZERO negative zero - * FP_PZERO positive zero - * FP_NNORM negative normalized non-zero - * FP_PNORM positive normalized non-zero - */ -/*#define HAS_FPCLASS /**/ - -/* HAS_FPCLASSIFY: - * This symbol, if defined, indicates that the fpclassify routine is - * available to classify doubles. Available for example in HP-UX. - * The returned values are defined in <math.h> and are - * - * FP_NORMAL Normalized - * FP_ZERO Zero - * FP_INFINITE Infinity - * FP_SUBNORMAL Denormalized - * FP_NAN NaN - * - */ -/*#define HAS_FPCLASSIFY /**/ - -/* HAS_FPOS64_T: - * This symbol will be defined if the C compiler supports fpos64_t. - */ -/*#define HAS_FPOS64_T /**/ - -/* HAS_FREXPL: - * This symbol, if defined, indicates that the frexpl routine is - * available to break a long double floating-point number into - * a normalized fraction and an integral power of 2. - */ -/*#define HAS_FREXPL /**/ - -/* HAS_STRUCT_FS_DATA: - * This symbol, if defined, indicates that the struct fs_data - * to do statfs() is supported. - */ -/*#define HAS_STRUCT_FS_DATA /**/ - -/* HAS_FSEEKO: - * This symbol, if defined, indicates that the fseeko routine is - * available to fseek beyond 32 bits (useful for ILP32 hosts). - */ -/*#define HAS_FSEEKO /**/ - -/* HAS_FSTATFS: - * This symbol, if defined, indicates that the fstatfs routine is - * available to stat filesystems by file descriptors. - */ -/*#define HAS_FSTATFS /**/ - -/* HAS_FSYNC: - * This symbol, if defined, indicates that the fsync routine is - * available to write a file's modified data and attributes to - * permanent storage. - */ -/*#define HAS_FSYNC /**/ - -/* HAS_FTELLO: - * This symbol, if defined, indicates that the ftello routine is - * available to ftell beyond 32 bits (useful for ILP32 hosts). - */ -/*#define HAS_FTELLO /**/ - -/* HAS_FUTIMES: - * This symbol, if defined, indicates that the futimes routine is - * available to change file descriptor time stamps with struct timevals. - */ -/*#define HAS_FUTIMES /**/ - -/* Gconvert: - * This preprocessor macro is defined to convert a floating point - * number to a string without a trailing decimal point. This - * emulates the behavior of sprintf("%g"), but is sometimes much more - * efficient. If gconvert() is not available, but gcvt() drops the - * trailing decimal point, then gcvt() is used. If all else fails, - * a macro using sprintf("%g") is used. Arguments for the Gconvert - * macro are: value, number of digits, whether trailing zeros should - * be retained, and the output buffer. - * The usual values are: - * d_Gconvert='gconvert((x),(n),(t),(b))' - * d_Gconvert='gcvt((x),(n),(b))' - * d_Gconvert='sprintf((b),"%.*g",(n),(x))' - * The last two assume trailing zeros should not be kept. - */ -#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) - -/* HAS_GETCWD: - * This symbol, if defined, indicates that the getcwd routine is - * available to get the current working directory. - */ -#define HAS_GETCWD /**/ - -/* HAS_GETESPWNAM: - * This symbol, if defined, indicates that the getespwnam system call is - * available to retrieve enchanced (shadow) password entries by name. - */ -/*#define HAS_GETESPWNAM /**/ - -/* HAS_GETFSSTAT: - * This symbol, if defined, indicates that the getfsstat routine is - * available to stat filesystems in bulk. - */ -/*#define HAS_GETFSSTAT /**/ - -/* HAS_GETGRENT: - * This symbol, if defined, indicates that the getgrent routine is - * available for sequential access of the group database. - */ -/*#define HAS_GETGRENT /**/ - -/* HAS_GETGRENT_R: - * This symbol, if defined, indicates that the getgrent_r routine - * is available to getgrent re-entrantly. - */ -/* GETGRENT_R_PROTO: - * This symbol encodes the prototype of getgrent_r. - * It is zero if d_getgrent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r - * is defined. - */ -/*#define HAS_GETGRENT_R /**/ -#define GETGRENT_R_PROTO 0 /**/ - -/* HAS_GETGRGID_R: - * This symbol, if defined, indicates that the getgrgid_r routine - * is available to getgrgid re-entrantly. - */ -/* GETGRGID_R_PROTO: - * This symbol encodes the prototype of getgrgid_r. - * It is zero if d_getgrgid_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r - * is defined. - */ -/*#define HAS_GETGRGID_R /**/ -#define GETGRGID_R_PROTO 0 /**/ - -/* HAS_GETGRNAM_R: - * This symbol, if defined, indicates that the getgrnam_r routine - * is available to getgrnam re-entrantly. - */ -/* GETGRNAM_R_PROTO: - * This symbol encodes the prototype of getgrnam_r. - * It is zero if d_getgrnam_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r - * is defined. - */ -/*#define HAS_GETGRNAM_R /**/ -#define GETGRNAM_R_PROTO 0 /**/ - -/* HAS_GETHOSTBYADDR: - * This symbol, if defined, indicates that the gethostbyaddr() routine is - * available to look up hosts by their IP addresses. - */ -#define HAS_GETHOSTBYADDR /**/ - -/* HAS_GETHOSTBYNAME: - * This symbol, if defined, indicates that the gethostbyname() routine is - * available to look up host names in some data base or other. - */ -#define HAS_GETHOSTBYNAME /**/ - -/* HAS_GETHOSTENT: - * This symbol, if defined, indicates that the gethostent() routine is - * available to look up host names in some data base or another. - */ -/*#define HAS_GETHOSTENT /**/ - -/* HAS_GETHOSTNAME: - * This symbol, if defined, indicates that the C program may use the - * gethostname() routine to derive the host name. See also HAS_UNAME - * and PHOSTNAME. - */ -/* HAS_UNAME: - * This symbol, if defined, indicates that the C program may use the - * uname() routine to derive the host name. See also HAS_GETHOSTNAME - * and PHOSTNAME. - */ -/* PHOSTNAME: - * This symbol, if defined, indicates the command to feed to the - * popen() routine to derive the host name. See also HAS_GETHOSTNAME - * and HAS_UNAME. Note that the command uses a fully qualified path, - * so that it is safe even if used by a process with super-user - * privileges. - */ -/* HAS_PHOSTNAME: - * This symbol, if defined, indicates that the C program may use the - * contents of PHOSTNAME as a command to feed to the popen() routine - * to derive the host name. - */ -#define HAS_GETHOSTNAME /**/ -#define HAS_UNAME /**/ -/*#define HAS_PHOSTNAME /**/ -#ifdef HAS_PHOSTNAME -#define PHOSTNAME "" /* How to get the host name */ -#endif - -/* HAS_GETHOST_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for gethostent(), gethostbyname(), and - * gethostbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -#define HAS_GETHOST_PROTOS /**/ - -/* HAS_GETITIMER: - * This symbol, if defined, indicates that the getitimer routine is - * available to return interval timers. - */ -/*#define HAS_GETITIMER /**/ - -/* HAS_GETLOGIN_R: - * This symbol, if defined, indicates that the getlogin_r routine - * is available to getlogin re-entrantly. - */ -/* GETLOGIN_R_PROTO: - * This symbol encodes the prototype of getlogin_r. - * It is zero if d_getlogin_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r - * is defined. - */ -/*#define HAS_GETLOGIN_R /**/ -#define GETLOGIN_R_PROTO 0 /**/ - -/* HAS_GETMNT: - * This symbol, if defined, indicates that the getmnt routine is - * available to get filesystem mount info by filename. - */ -/*#define HAS_GETMNT /**/ - -/* HAS_GETMNTENT: - * This symbol, if defined, indicates that the getmntent routine is - * available to iterate through mounted file systems to get their info. - */ -/*#define HAS_GETMNTENT /**/ - -/* HAS_GETNETBYADDR: - * This symbol, if defined, indicates that the getnetbyaddr() routine is - * available to look up networks by their IP addresses. - */ -/*#define HAS_GETNETBYADDR /**/ - -/* HAS_GETNETBYNAME: - * This symbol, if defined, indicates that the getnetbyname() routine is - * available to look up networks by their names. - */ -/*#define HAS_GETNETBYNAME /**/ - -/* HAS_GETNETENT: - * This symbol, if defined, indicates that the getnetent() routine is - * available to look up network names in some data base or another. - */ -/*#define HAS_GETNETENT /**/ - -/* HAS_GETNET_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getnetent(), getnetbyname(), and - * getnetbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -/*#define HAS_GETNET_PROTOS /**/ - -/* HAS_GETPAGESIZE: - * This symbol, if defined, indicates that the getpagesize system call - * is available to get system page size, which is the granularity of - * many memory management calls. - */ -/*#define HAS_GETPAGESIZE /**/ - -/* HAS_GETPROTOENT: - * This symbol, if defined, indicates that the getprotoent() routine is - * available to look up protocols in some data base or another. - */ -/*#define HAS_GETPROTOENT /**/ - -/* HAS_GETPGRP: - * This symbol, if defined, indicates that the getpgrp routine is - * available to get the current process group. - */ -/* USE_BSD_GETPGRP: - * This symbol, if defined, indicates that getpgrp needs one - * arguments whereas USG one needs none. - */ -/*#define HAS_GETPGRP /**/ -/*#define USE_BSD_GETPGRP /**/ - -/* HAS_GETPROTOBYNAME: - * This symbol, if defined, indicates that the getprotobyname() - * routine is available to look up protocols by their name. - */ -/* HAS_GETPROTOBYNUMBER: - * This symbol, if defined, indicates that the getprotobynumber() - * routine is available to look up protocols by their number. - */ -#define HAS_GETPROTOBYNAME /**/ -#define HAS_GETPROTOBYNUMBER /**/ - -/* HAS_GETPROTO_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getprotoent(), getprotobyname(), and - * getprotobyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -#define HAS_GETPROTO_PROTOS /**/ - -/* HAS_GETPRPWNAM: - * This symbol, if defined, indicates that the getprpwnam system call is - * available to retrieve protected (shadow) password entries by name. - */ -/*#define HAS_GETPRPWNAM /**/ - -/* HAS_GETPWENT: - * This symbol, if defined, indicates that the getpwent routine is - * available for sequential access of the passwd database. - * If this is not available, the older getpw() function may be available. - */ -/*#define HAS_GETPWENT /**/ - -/* HAS_GETPWENT_R: - * This symbol, if defined, indicates that the getpwent_r routine - * is available to getpwent re-entrantly. - */ -/* GETPWENT_R_PROTO: - * This symbol encodes the prototype of getpwent_r. - * It is zero if d_getpwent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r - * is defined. - */ -/*#define HAS_GETPWENT_R /**/ -#define GETPWENT_R_PROTO 0 /**/ - -/* HAS_GETPWNAM_R: - * This symbol, if defined, indicates that the getpwnam_r routine - * is available to getpwnam re-entrantly. - */ -/* GETPWNAM_R_PROTO: - * This symbol encodes the prototype of getpwnam_r. - * It is zero if d_getpwnam_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r - * is defined. - */ -/*#define HAS_GETPWNAM_R /**/ -#define GETPWNAM_R_PROTO 0 /**/ - -/* HAS_GETPWUID_R: - * This symbol, if defined, indicates that the getpwuid_r routine - * is available to getpwuid re-entrantly. - */ -/* GETPWUID_R_PROTO: - * This symbol encodes the prototype of getpwuid_r. - * It is zero if d_getpwuid_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r - * is defined. - */ -/*#define HAS_GETPWUID_R /**/ -#define GETPWUID_R_PROTO 0 /**/ - -/* HAS_GETSERVENT: - * This symbol, if defined, indicates that the getservent() routine is - * available to look up network services in some data base or another. - */ -/*#define HAS_GETSERVENT /**/ - -/* HAS_GETSERV_PROTOS: - * This symbol, if defined, indicates that <netdb.h> includes - * prototypes for getservent(), getservbyname(), and - * getservbyaddr(). Otherwise, it is up to the program to guess - * them. See netdbtype.U for probing for various Netdb_xxx_t types. - */ -#define HAS_GETSERV_PROTOS /**/ - -/* HAS_GETSPNAM: - * This symbol, if defined, indicates that the getspnam system call is - * available to retrieve SysV shadow password entries by name. - */ -/*#define HAS_GETSPNAM /**/ - -/* HAS_GETSPNAM_R: - * This symbol, if defined, indicates that the getspnam_r routine - * is available to getspnam re-entrantly. - */ -/* GETSPNAM_R_PROTO: - * This symbol encodes the prototype of getspnam_r. - * It is zero if d_getspnam_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r - * is defined. - */ -/*#define HAS_GETSPNAM_R /**/ -#define GETSPNAM_R_PROTO 0 /**/ - -/* HAS_GETSERVBYNAME: - * This symbol, if defined, indicates that the getservbyname() - * routine is available to look up services by their name. - */ -/* HAS_GETSERVBYPORT: - * This symbol, if defined, indicates that the getservbyport() - * routine is available to look up services by their port. - */ -#define HAS_GETSERVBYNAME /**/ -#define HAS_GETSERVBYPORT /**/ - -/* HAS_GMTIME_R: - * This symbol, if defined, indicates that the gmtime_r routine - * is available to gmtime re-entrantly. - */ -/* GMTIME_R_PROTO: - * This symbol encodes the prototype of gmtime_r. - * It is zero if d_gmtime_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r - * is defined. - */ -/*#define HAS_GMTIME_R /**/ -#define GMTIME_R_PROTO 0 /**/ - -/* HAS_GNULIBC: - * This symbol, if defined, indicates to the C program that - * the GNU C library is being used. A better check is to use - * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. - */ -/*#define HAS_GNULIBC /**/ -#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) -# define _GNU_SOURCE -#endif -/* HAS_HASMNTOPT: - * This symbol, if defined, indicates that the hasmntopt routine is - * available to query the mount options of file systems. - */ -/*#define HAS_HASMNTOPT /**/ - -/* HAS_HTONL: - * This symbol, if defined, indicates that the htonl() routine (and - * friends htons() ntohl() ntohs()) are available to do network - * order byte swapping. - */ -/* HAS_HTONS: - * This symbol, if defined, indicates that the htons() routine (and - * friends htonl() ntohl() ntohs()) are available to do network - * order byte swapping. - */ -/* HAS_NTOHL: - * This symbol, if defined, indicates that the ntohl() routine (and - * friends htonl() htons() ntohs()) are available to do network - * order byte swapping. - */ -/* HAS_NTOHS: - * This symbol, if defined, indicates that the ntohs() routine (and - * friends htonl() htons() ntohl()) are available to do network - * order byte swapping. - */ -#define HAS_HTONL /**/ -#define HAS_HTONS /**/ -#define HAS_NTOHL /**/ -#define HAS_NTOHS /**/ - -/* HAS_INT64_T: - * This symbol will defined if the C compiler supports int64_t. - * Usually the <inttypes.h> needs to be included, but sometimes - * <sys/types.h> is enough. - */ -/*#define HAS_INT64_T /**/ - -/* HAS_ISASCII: - * This manifest constant lets the C program know that isascii - * is available. - */ -#define HAS_ISASCII /**/ - -/* HAS_ISFINITE: - * This symbol, if defined, indicates that the isfinite routine is - * available to check whether a double is finite (non-infinity non-NaN). - */ -/*#define HAS_ISFINITE /**/ - -/* HAS_ISINF: - * This symbol, if defined, indicates that the isinf routine is - * available to check whether a double is an infinity. - */ -/*#define HAS_ISINF /**/ - -/* HAS_ISNAN: - * This symbol, if defined, indicates that the isnan routine is - * available to check whether a double is a NaN. - */ -#define HAS_ISNAN /**/ - -/* HAS_ISNANL: - * This symbol, if defined, indicates that the isnanl routine is - * available to check whether a long double is a NaN. - */ -/*#define HAS_ISNANL /**/ - -/* HAS_LCHOWN: - * This symbol, if defined, indicates that the lchown routine is - * available to operate on a symbolic link (instead of following the - * link). - */ -/*#define HAS_LCHOWN /**/ - -/* HAS_LDBL_DIG: - * This symbol, if defined, indicates that this system's <float.h> - * or <limits.h> defines the symbol LDBL_DIG, which is the number - * of significant digits in a long double precision number. Unlike - * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined. - */ -#define HAS_LDBL_DIG /**/ - -/* HAS_LOCALTIME_R: - * This symbol, if defined, indicates that the localtime_r routine - * is available to localtime re-entrantly. - */ -/* LOCALTIME_R_NEEDS_TZSET: - * Many libc's localtime_r implementations do not call tzset, - * making them differ from localtime(), and making timezone - * changes using \undef{TZ} without explicitly calling tzset - * impossible. This symbol makes us call tzset before localtime_r - */ -/*#define LOCALTIME_R_NEEDS_TZSET /**/ -#ifdef LOCALTIME_R_NEEDS_TZSET -#define L_R_TZSET tzset(), -#else -#define L_R_TZSET -#endif - -/* LOCALTIME_R_PROTO: - * This symbol encodes the prototype of localtime_r. - * It is zero if d_localtime_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r - * is defined. - */ -/*#define HAS_LOCALTIME_R /**/ -#define LOCALTIME_R_PROTO 0 /**/ - -/* HAS_LONG_DOUBLE: - * This symbol will be defined if the C compiler supports long - * doubles. - */ -/* LONG_DOUBLESIZE: - * This symbol contains the size of a long double, so that the - * C preprocessor can make decisions based on it. It is only - * defined if the system supports long doubles. - */ -/*#define HAS_LONG_DOUBLE /**/ -#ifdef HAS_LONG_DOUBLE -#define LONG_DOUBLESIZE 10 /**/ -#endif - -/* HAS_LONG_LONG: - * This symbol will be defined if the C compiler supports long long. - */ -/* LONGLONGSIZE: - * This symbol contains the size of a long long, so that the - * C preprocessor can make decisions based on it. It is only - * defined if the system supports long long. - */ -/*#define HAS_LONG_LONG /**/ -#ifdef HAS_LONG_LONG -#define LONGLONGSIZE 8 /**/ -#endif - -/* HAS_LSEEK_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the lseek() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern off_t lseek(int, off_t, int); - */ -#define HAS_LSEEK_PROTO /**/ - -/* HAS_MADVISE: - * This symbol, if defined, indicates that the madvise system call is - * available to map a file into memory. - */ -/*#define HAS_MADVISE /**/ - -/* HAS_MALLOC_SIZE: - * This symbol, if defined, indicates that the malloc_size - * routine is available for use. - */ -/*#define HAS_MALLOC_SIZE /**/ - -/* HAS_MALLOC_GOOD_SIZE: - * This symbol, if defined, indicates that the malloc_good_size - * routine is available for use. - */ -/*#define HAS_MALLOC_GOOD_SIZE /**/ - -/* HAS_MKDTEMP: - * This symbol, if defined, indicates that the mkdtemp routine is - * available to exclusively create a uniquely named temporary directory. - */ -/*#define HAS_MKDTEMP /**/ - -/* HAS_MKSTEMP: - * This symbol, if defined, indicates that the mkstemp routine is - * available to exclusively create and open a uniquely named - * temporary file. - */ -/*#define HAS_MKSTEMP /**/ - -/* HAS_MKSTEMPS: - * This symbol, if defined, indicates that the mkstemps routine is - * available to excluslvely create and open a uniquely named - * (with a suffix) temporary file. - */ -/*#define HAS_MKSTEMPS /**/ - -/* HAS_MMAP: - * This symbol, if defined, indicates that the mmap system call is - * available to map a file into memory. - */ -/* Mmap_t: - * This symbol holds the return type of the mmap() system call - * (and simultaneously the type of the first argument). - * Usually set to 'void *' or 'cadd_t'. - */ -/*#define HAS_MMAP /**/ -#define Mmap_t void * /**/ - -/* HAS_MODFL: - * This symbol, if defined, indicates that the modfl routine is - * available to split a long double x into a fractional part f and - * an integer part i such that |f| < 1.0 and (f + i) = x. - */ -/* HAS_MODFL_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the modfl() function. Otherwise, it is up - * to the program to supply one. - */ -/*#define HAS_MODFL /**/ -/*#define HAS_MODFL_PROTO /**/ - -/* HAS_MPROTECT: - * This symbol, if defined, indicates that the mprotect system call is - * available to modify the access protection of a memory mapped file. - */ -/*#define HAS_MPROTECT /**/ - -/* HAS_MSG: - * This symbol, if defined, indicates that the entire msg*(2) library is - * supported (IPC mechanism based on message queues). - */ -/*#define HAS_MSG /**/ - -/* HAS_STRUCT_MSGHDR: - * This symbol, if defined, indicates that the struct msghdr - * is supported. - */ -/*#define HAS_STRUCT_MSGHDR /**/ - -/* HAS_OFF64_T: - * This symbol will be defined if the C compiler supports off64_t. - */ -/*#define HAS_OFF64_T /**/ - -/* HAS_OPEN3: - * This manifest constant lets the C program know that the three - * argument form of open(2) is available. - */ -/*#define HAS_OPEN3 /**/ - -/* OLD_PTHREAD_CREATE_JOINABLE: - * This symbol, if defined, indicates how to create pthread - * in joinable (aka undetached) state. NOTE: not defined - * if pthread.h already has defined PTHREAD_CREATE_JOINABLE - * (the new version of the constant). - * If defined, known values are PTHREAD_CREATE_UNDETACHED - * and __UNDETACHED. - */ -/*#define OLD_PTHREAD_CREATE_JOINABLE /**/ - -/* HAS_PTHREAD_YIELD: - * This symbol, if defined, indicates that the pthread_yield - * routine is available to yield the execution of the current - * thread. sched_yield is preferable to pthread_yield. - */ -/* SCHED_YIELD: - * This symbol defines the way to yield the execution of - * the current thread. Known ways are sched_yield, - * pthread_yield, and pthread_yield with NULL. - */ -/* HAS_SCHED_YIELD: - * This symbol, if defined, indicates that the sched_yield - * routine is available to yield the execution of the current - * thread. sched_yield is preferable to pthread_yield. - */ -/*#define HAS_PTHREAD_YIELD /**/ -#define SCHED_YIELD /**/ -/*#define HAS_SCHED_YIELD /**/ - -/* HAS_RANDOM_R: - * This symbol, if defined, indicates that the random_r routine - * is available to random re-entrantly. - */ -/* RANDOM_R_PROTO: - * This symbol encodes the prototype of random_r. - * It is zero if d_random_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r - * is defined. - */ -/*#define HAS_RANDOM_R /**/ -#define RANDOM_R_PROTO 0 /**/ - -/* HAS_READDIR_R: - * This symbol, if defined, indicates that the readdir_r routine - * is available to readdir re-entrantly. - */ -/* READDIR_R_PROTO: - * This symbol encodes the prototype of readdir_r. - * It is zero if d_readdir_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r - * is defined. - */ -/*#define HAS_READDIR_R /**/ -#define READDIR_R_PROTO 0 /**/ - -/* HAS_READV: - * This symbol, if defined, indicates that the readv routine is - * available to do gather reads. You will also need <sys/uio.h> - * and there I_SYSUIO. - */ -/*#define HAS_READV /**/ - -/* HAS_RECVMSG: - * This symbol, if defined, indicates that the recvmsg routine is - * available to send structured socket messages. - */ -/*#define HAS_RECVMSG /**/ - -/* HAS_SBRK_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the sbrk() function. Otherwise, it is up - * to the program to supply one. Good guesses are - * extern void* sbrk(int); - * extern void* sbrk(size_t); - */ -/*#define HAS_SBRK_PROTO /**/ - -/* HAS_SEM: - * This symbol, if defined, indicates that the entire sem*(2) library is - * supported. - */ -/*#define HAS_SEM /**/ - -/* HAS_SENDMSG: - * This symbol, if defined, indicates that the sendmsg routine is - * available to send structured socket messages. - */ -/*#define HAS_SENDMSG /**/ - -/* HAS_SETGRENT: - * This symbol, if defined, indicates that the setgrent routine is - * available for initializing sequential access of the group database. - */ -/*#define HAS_SETGRENT /**/ - -/* HAS_SETGRENT_R: - * This symbol, if defined, indicates that the setgrent_r routine - * is available to setgrent re-entrantly. - */ -/* SETGRENT_R_PROTO: - * This symbol encodes the prototype of setgrent_r. - * It is zero if d_setgrent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r - * is defined. - */ -/*#define HAS_SETGRENT_R /**/ -#define SETGRENT_R_PROTO 0 /**/ - -/* HAS_SETGROUPS: - * This symbol, if defined, indicates that the setgroups() routine is - * available to set the list of process groups. If unavailable, multiple - * groups are probably not supported. - */ -/*#define HAS_SETGROUPS /**/ - -/* HAS_SETHOSTENT: - * This symbol, if defined, indicates that the sethostent() routine is - * available. - */ -/*#define HAS_SETHOSTENT /**/ - -/* HAS_SETITIMER: - * This symbol, if defined, indicates that the setitimer routine is - * available to set interval timers. - */ -/*#define HAS_SETITIMER /**/ - -/* HAS_SETNETENT: - * This symbol, if defined, indicates that the setnetent() routine is - * available. - */ -/*#define HAS_SETNETENT /**/ - -/* HAS_SETPROTOENT: - * This symbol, if defined, indicates that the setprotoent() routine is - * available. - */ -/*#define HAS_SETPROTOENT /**/ - -/* HAS_SETPGRP: - * This symbol, if defined, indicates that the setpgrp routine is - * available to set the current process group. - */ -/* USE_BSD_SETPGRP: - * This symbol, if defined, indicates that setpgrp needs two - * arguments whereas USG one needs none. See also HAS_SETPGID - * for a POSIX interface. - */ -/*#define HAS_SETPGRP /**/ -/*#define USE_BSD_SETPGRP /**/ - -/* HAS_SETPROCTITLE: - * This symbol, if defined, indicates that the setproctitle routine is - * available to set process title. - */ -/*#define HAS_SETPROCTITLE /**/ - -/* HAS_SETPWENT: - * This symbol, if defined, indicates that the setpwent routine is - * available for initializing sequential access of the passwd database. - */ -/*#define HAS_SETPWENT /**/ - -/* HAS_SETPWENT_R: - * This symbol, if defined, indicates that the setpwent_r routine - * is available to setpwent re-entrantly. - */ -/* SETPWENT_R_PROTO: - * This symbol encodes the prototype of setpwent_r. - * It is zero if d_setpwent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r - * is defined. - */ -/*#define HAS_SETPWENT_R /**/ -#define SETPWENT_R_PROTO 0 /**/ - -/* HAS_SETSERVENT: - * This symbol, if defined, indicates that the setservent() routine is - * available. - */ -/*#define HAS_SETSERVENT /**/ - -/* HAS_SETVBUF: - * This symbol, if defined, indicates that the setvbuf routine is - * available to change buffering on an open stdio stream. - * to a line-buffered mode. - */ -/*#define HAS_SETVBUF /**/ - -/* HAS_SHM: - * This symbol, if defined, indicates that the entire shm*(2) library is - * supported. - */ -/*#define HAS_SHM /**/ - -/* HAS_SIGACTION: - * This symbol, if defined, indicates that Vr4's sigaction() routine - * is available. - */ -/*#define HAS_SIGACTION /**/ - -/* HAS_SIGSETJMP: - * This variable indicates to the C program that the sigsetjmp() - * routine is available to save the calling process's registers - * and stack environment for later use by siglongjmp(), and - * to optionally save the process's signal mask. See - * Sigjmp_buf, Sigsetjmp, and Siglongjmp. - */ -/* Sigjmp_buf: - * This is the buffer type to be used with Sigsetjmp and Siglongjmp. - */ -/* Sigsetjmp: - * This macro is used in the same way as sigsetjmp(), but will invoke - * traditional setjmp() if sigsetjmp isn't available. - * See HAS_SIGSETJMP. - */ -/* Siglongjmp: - * This macro is used in the same way as siglongjmp(), but will invoke - * traditional longjmp() if siglongjmp isn't available. - * See HAS_SIGSETJMP. - */ -/*#define HAS_SIGSETJMP /**/ -#ifdef HAS_SIGSETJMP -#define Sigjmp_buf sigjmp_buf -#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) -#define Siglongjmp(buf,retval) siglongjmp((buf),(retval)) -#else -#define Sigjmp_buf jmp_buf -#define Sigsetjmp(buf,save_mask) setjmp((buf)) -#define Siglongjmp(buf,retval) longjmp((buf),(retval)) -#endif - -/* HAS_STATIC_INLINE: - * This symbol, if defined, indicates that the C compiler supports - * C99-style static inline. That is, the function can't be called - * from another translation unit. - */ -/* PERL_STATIC_INLINE: - * This symbol gives the best-guess incantation to use for static - * inline functions. If HAS_STATIC_INLINE is defined, this will - * give C99-style inline. If HAS_STATIC_INLINE is not defined, - * this will give a plain 'static'. It will always be defined - * to something that gives static linkage. - * Possibilities include - * static inline (c99) - * static __inline__ (gcc -ansi) - * static __inline (MSVC) - * static _inline (older MSVC) - * static (c89 compilers) - */ -/*#define HAS_STATIC_INLINE / **/ -#define PERL_STATIC_INLINE static /**/ - -/* USE_SITECUSTOMIZE: - * This symbol, if defined, indicates that sitecustomize should - * be used. - */ -/*#define USE_SITECUSTOMIZE /**/ - -/* HAS_SOCKET: - * This symbol, if defined, indicates that the BSD socket interface is - * supported. - */ -/* HAS_SOCKETPAIR: - * This symbol, if defined, indicates that the BSD socketpair() call is - * supported. - */ -#define HAS_SOCKET /**/ -/*#define HAS_SOCKETPAIR /**/ - -/* HAS_SOCKS5_INIT: - * This symbol, if defined, indicates that the socks5_init routine is - * available to initialize SOCKS 5. - */ -/*#define HAS_SOCKS5_INIT /**/ - -/* HAS_SQRTL: - * This symbol, if defined, indicates that the sqrtl routine is - * available to do long double square roots. - */ -/*#define HAS_SQRTL /**/ - -/* HAS_SRAND48_R: - * This symbol, if defined, indicates that the srand48_r routine - * is available to srand48 re-entrantly. - */ -/* SRAND48_R_PROTO: - * This symbol encodes the prototype of srand48_r. - * It is zero if d_srand48_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r - * is defined. - */ -/*#define HAS_SRAND48_R /**/ -#define SRAND48_R_PROTO 0 /**/ - -/* HAS_SRANDOM_R: - * This symbol, if defined, indicates that the srandom_r routine - * is available to srandom re-entrantly. - */ -/* SRANDOM_R_PROTO: - * This symbol encodes the prototype of srandom_r. - * It is zero if d_srandom_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r - * is defined. - */ -/*#define HAS_SRANDOM_R /**/ -#define SRANDOM_R_PROTO 0 /**/ - -/* USE_STAT_BLOCKS: - * This symbol is defined if this system has a stat structure declaring - * st_blksize and st_blocks. - */ -#ifndef USE_STAT_BLOCKS -/*#define USE_STAT_BLOCKS /**/ -#endif - -/* HAS_STRUCT_STATFS_F_FLAGS: - * This symbol, if defined, indicates that the struct statfs - * does have the f_flags member containing the mount flags of - * the filesystem containing the file. - * This kind of struct statfs is coming from <sys/mount.h> (BSD 4.3), - * not from <sys/statfs.h> (SYSV). Older BSDs (like Ultrix) do not - * have statfs() and struct statfs, they have ustat() and getmnt() - * with struct ustat and struct fs_data. - */ -/*#define HAS_STRUCT_STATFS_F_FLAGS /**/ - -/* HAS_STRUCT_STATFS: - * This symbol, if defined, indicates that the struct statfs - * to do statfs() is supported. - */ -/*#define HAS_STRUCT_STATFS /**/ - -/* HAS_FSTATVFS: - * This symbol, if defined, indicates that the fstatvfs routine is - * available to stat filesystems by file descriptors. - */ -/*#define HAS_FSTATVFS /**/ - -/* USE_STDIO_PTR: - * This symbol is defined if the _ptr and _cnt fields (or similar) - * of the stdio FILE structure can be used to access the stdio buffer - * for a file handle. If this is defined, then the FILE_ptr(fp) - * and FILE_cnt(fp) macros will also be defined and should be used - * to access these fields. - */ -/* FILE_ptr: - * This macro is used to access the _ptr field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_PTR is defined. - */ -/* STDIO_PTR_LVALUE: - * This symbol is defined if the FILE_ptr macro can be used as an - * lvalue. - */ -/* FILE_cnt: - * This macro is used to access the _cnt field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_PTR is defined. - */ -/* STDIO_CNT_LVALUE: - * This symbol is defined if the FILE_cnt macro can be used as an - * lvalue. - */ -/* STDIO_PTR_LVAL_SETS_CNT: - * This symbol is defined if using the FILE_ptr macro as an lvalue - * to increase the pointer by n has the side effect of decreasing the - * value of File_cnt(fp) by n. - */ -/* STDIO_PTR_LVAL_NOCHANGE_CNT: - * This symbol is defined if using the FILE_ptr macro as an lvalue - * to increase the pointer by n leaves File_cnt(fp) unchanged. - */ -/*#define USE_STDIO_PTR /**/ -#ifdef USE_STDIO_PTR -#define FILE_ptr(fp) -/*#define STDIO_PTR_LVALUE /**/ -#define FILE_cnt(fp) -/*#define STDIO_CNT_LVALUE /**/ -/*#define STDIO_PTR_LVAL_SETS_CNT /**/ -/*#define STDIO_PTR_LVAL_NOCHANGE_CNT /**/ -#endif - -/* USE_STDIO_BASE: - * This symbol is defined if the _base field (or similar) of the - * stdio FILE structure can be used to access the stdio buffer for - * a file handle. If this is defined, then the FILE_base(fp) macro - * will also be defined and should be used to access this field. - * Also, the FILE_bufsiz(fp) macro will be defined and should be used - * to determine the number of bytes in the buffer. USE_STDIO_BASE - * will never be defined unless USE_STDIO_PTR is. - */ -/* FILE_base: - * This macro is used to access the _base field (or equivalent) of the - * FILE structure pointed to by its argument. This macro will always be - * defined if USE_STDIO_BASE is defined. - */ -/* FILE_bufsiz: - * This macro is used to determine the number of bytes in the I/O - * buffer pointed to by _base field (or equivalent) of the FILE - * structure pointed to its argument. This macro will always be defined - * if USE_STDIO_BASE is defined. - */ -/*#define USE_STDIO_BASE /**/ -#ifdef USE_STDIO_BASE -#define FILE_base(fp) -#define FILE_bufsiz(fp) -#endif - -/* HAS_SYS_ERRLIST: - * This symbol, if defined, indicates that the sys_errlist array is - * available to translate error numbers to strings. The extern int - * sys_nerr gives the size of that table. - */ -#define HAS_SYS_ERRLIST /**/ - -/* HAS_STRERROR_R: - * This symbol, if defined, indicates that the strerror_r routine - * is available to strerror re-entrantly. - */ -/* STRERROR_R_PROTO: - * This symbol encodes the prototype of strerror_r. - * It is zero if d_strerror_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r - * is defined. - */ -/*#define HAS_STRERROR_R /**/ -#define STRERROR_R_PROTO 0 /**/ - -/* HAS_STRTOLD: - * This symbol, if defined, indicates that the strtold routine is - * available to convert strings to long doubles. - */ -/*#define HAS_STRTOLD /**/ - -/* HAS_STRTOLL: - * This symbol, if defined, indicates that the strtoll routine is - * available to convert strings to long longs. - */ -/*#define HAS_STRTOLL /**/ - -/* HAS_STRTOQ: - * This symbol, if defined, indicates that the strtoq routine is - * available to convert strings to long longs (quads). - */ -/*#define HAS_STRTOQ /**/ - -/* HAS_STRTOUL: - * This symbol, if defined, indicates that the strtoul routine is - * available to provide conversion of strings to unsigned long. - */ -#define HAS_STRTOUL /**/ - -/* HAS_STRTOULL: - * This symbol, if defined, indicates that the strtoull routine is - * available to convert strings to unsigned long longs. - */ -/*#define HAS_STRTOULL /**/ - -/* HAS_STRTOUQ: - * This symbol, if defined, indicates that the strtouq routine is - * available to convert strings to unsigned long longs (quads). - */ -/*#define HAS_STRTOUQ /**/ - -/* HAS_TELLDIR_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the telldir() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern long telldir(DIR*); - */ -#define HAS_TELLDIR_PROTO /**/ - -/* HAS_TIME: - * This symbol, if defined, indicates that the time() routine exists. - */ -/* Time_t: - * This symbol holds the type returned by time(). It can be long, - * or time_t on BSD sites (in which case <sys/types.h> should be - * included). - */ -#define HAS_TIME /**/ -#define Time_t time_t /* Time type */ - -/* HAS_TIMES: - * This symbol, if defined, indicates that the times() routine exists. - * Note that this became obsolete on some systems (SUNOS), which now - * use getrusage(). It may be necessary to include <sys/times.h>. - */ -#define HAS_TIMES /**/ - -/* HAS_TMPNAM_R: - * This symbol, if defined, indicates that the tmpnam_r routine - * is available to tmpnam re-entrantly. - */ -/* TMPNAM_R_PROTO: - * This symbol encodes the prototype of tmpnam_r. - * It is zero if d_tmpnam_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r - * is defined. - */ -/*#define HAS_TMPNAM_R /**/ -#define TMPNAM_R_PROTO 0 /**/ - -/* HAS_UALARM: - * This symbol, if defined, indicates that the ualarm routine is - * available to do alarms with microsecond granularity. - */ -/*#define HAS_UALARM /**/ - -/* HAS_UNION_SEMUN: - * This symbol, if defined, indicates that the union semun is - * defined by including <sys/sem.h>. If not, the user code - * probably needs to define it as: - * union semun { - * int val; - * struct semid_ds *buf; - * unsigned short *array; - * } - */ -/* USE_SEMCTL_SEMUN: - * This symbol, if defined, indicates that union semun is - * used for semctl IPC_STAT. - */ -/* USE_SEMCTL_SEMID_DS: - * This symbol, if defined, indicates that struct semid_ds * is - * used for semctl IPC_STAT. - */ -#define HAS_UNION_SEMUN /**/ -/*#define USE_SEMCTL_SEMUN /**/ -/*#define USE_SEMCTL_SEMID_DS /**/ - -/* HAS_UNORDERED: - * This symbol, if defined, indicates that the unordered routine is - * available to check whether two doubles are unordered - * (effectively: whether either of them is NaN) - */ -/*#define HAS_UNORDERED /**/ - -/* HAS_UNSETENV: - * This symbol, if defined, indicates that the unsetenv () routine is - * available for use. - */ -/*#define HAS_UNSETENV /**/ - -/* HAS_USTAT: - * This symbol, if defined, indicates that the ustat system call is - * available to query file system statistics by dev_t. - */ -/*#define HAS_USTAT /**/ - -/* HAS_VFORK: - * This symbol, if defined, indicates that vfork() exists. - */ -/*#define HAS_VFORK /**/ - -/* Signal_t: - * This symbol's value is either "void" or "int", corresponding to the - * appropriate return type of a signal handler. Thus, you can declare - * a signal handler using "Signal_t (*handler)()", and define the - * handler using "Signal_t handler(sig)". - */ -#define Signal_t void /* Signal handler's return type */ - -/* HAS_WRITEV: - * This symbol, if defined, indicates that the writev routine is - * available to do scatter writes. - */ -/*#define HAS_WRITEV /**/ - -/* DEFAULT_INC_EXCLUDES_DOT: - * This symbol, if defined, removes the legacy default behavior of - * including '.' at the end of @INC. - */ -/*#define DEFAULT_INC_EXCLUDES_DOT /**/ - -/* USE_DYNAMIC_LOADING: - * This symbol, if defined, indicates that dynamic loading of - * some sort is available. - */ -#define USE_DYNAMIC_LOADING /**/ - -/* DOUBLESIZE: - * This symbol contains the size of a double, so that the C preprocessor - * can make decisions based on it. - */ -#define DOUBLESIZE 8 /**/ - -/* DOUBLE_STYLE_IEEE - * This symbol, if defined, indicates that the double is - * the 64-bit IEEE 754. - */ -/* DOUBLE_HAS_INF - * This symbol, if defined, indicates that the double has - * the infinity. - */ -/* DOUBLE_HAS_NAN - * This symbol, if defined, indicates that the double has - * the not-a-number. - */ -/* DOUBLE_HAS_NEGATIVE_ZERO - * This symbol, if defined, indicates that the double has - * the negative_zero. - */ -/* DOUBLE_HAS_SUBNORMALS - * This symbol, if defined, indicates that the double has - * the subnormals (denormals). - */ -#define DOUBLE_STYLE_IEEE -#define DOUBLE_HAS_INF -#define DOUBLE_HAS_INF -#define DOUBLE_HAS_NEGATIVE_ZERO -#define DOUBLE_HAS_SUBNORMALS - -/* DOUBLEINFBYTES: - * This symbol, if defined, is a comma-separated list of - * hexadecimal bytes for the double precision infinity. - */ -/* DOUBLENANBYTES: - * This symbol, if defined, is a comma-separated list of - * hexadecimal bytes (0xHH) for the double precision not-a-number. - */ -/* LONGDBLINFBYTES: - * This symbol, if defined, is a comma-separated list of - * hexadecimal bytes for the long double precision infinity. - */ -/* LONGDBLNANBYTES: - * This symbol, if defined, is a comma-separated list of - * hexadecimal bytes (0xHH) for the long double precision not-a-number. - */ -#define DOUBLEINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f /**/ -#define DOUBLENANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f /**/ -#define LONGDBLINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f /**/ -#define LONGDBLNANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f /**/ - -/* DOUBLEMANTBITS: - * This symbol, if defined, tells how many mantissa bits - * there are in double precision floating point format. - * Note that this is usually DBL_MANT_DIG minus one, since - * with the standard IEEE 754 formats DBL_MANT_DIG includes - * the implicit bit, which doesn't really exist. - */ -#define DOUBLEMANTBITS 52 - -/* LONGDBLMANTBITS: - * This symbol, if defined, tells how many mantissa bits - * there are in long double precision floating point format. - * Note that this can be LDBL_MANT_DIG minus one, - * since LDBL_MANT_DIG can include the IEEE 754 implicit bit. - * The common x86-style 80-bit long double does not have - * an implicit bit. - */ -#define LONGDBLMANTBITS 52 - -/* EBCDIC: - * This symbol, if defined, indicates that this system uses - * EBCDIC encoding. - */ -/*#define EBCDIC /**/ - -/* FFLUSH_NULL: - * This symbol, if defined, tells that fflush(NULL) does flush - * all pending stdio output. - */ -/* FFLUSH_ALL: - * This symbol, if defined, tells that to flush - * all pending stdio output one must loop through all - * the stdio file handles stored in an array and fflush them. - * Note that if fflushNULL is defined, fflushall will not - * even be probed for and will be left undefined. - */ -#define FFLUSH_NULL /**/ -/*#define FFLUSH_ALL /**/ - -/* Fpos_t: - * This symbol holds the type used to declare file positions in libc. - * It can be fpos_t, long, uint, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Fpos_t fpos_t /* File position type */ - -/* Gid_t_f: - * This symbol defines the format string used for printing a Gid_t. - */ -#define Gid_t_f "ld" /**/ - -/* Gid_t_sign: - * This symbol holds the signedess of a Gid_t. - * 1 for unsigned, -1 for signed. - */ -#define Gid_t_sign -1 /* GID sign */ - -/* Gid_t_size: - * This symbol holds the size of a Gid_t in bytes. - */ -#define Gid_t_size 4 /* GID size */ - -/* Gid_t: - * This symbol holds the return type of getgid() and the type of - * argument to setrgid() and related functions. Typically, - * it is the type of group ids in the kernel. It can be int, ushort, - * gid_t, etc... It may be necessary to include <sys/types.h> to get - * any typedef'ed information. - */ -#define Gid_t gid_t /* Type for getgid(), etc... */ - -/* Groups_t: - * This symbol holds the type used for the second argument to - * getgroups() and setgroups(). Usually, this is the same as - * gidtype (gid_t) , but sometimes it isn't. - * It can be int, ushort, gid_t, etc... - * It may be necessary to include <sys/types.h> to get any - * typedef'ed information. This is only required if you have - * getgroups() or setgroups().. - */ -#if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS) -#define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */ -#endif - -/* DB_Prefix_t: - * This symbol contains the type of the prefix structure element - * in the <db.h> header file. In older versions of DB, it was - * int, while in newer ones it is u_int32_t. - */ -/* DB_Hash_t: - * This symbol contains the type of the prefix structure element - * in the <db.h> header file. In older versions of DB, it was - * int, while in newer ones it is size_t. - */ -/* DB_VERSION_MAJOR_CFG: - * This symbol, if defined, defines the major version number of - * Berkeley DB found in the <db.h> header when Perl was configured. - */ -/* DB_VERSION_MINOR_CFG: - * This symbol, if defined, defines the minor version number of - * Berkeley DB found in the <db.h> header when Perl was configured. - * For DB version 1 this is always 0. - */ -/* DB_VERSION_PATCH_CFG: - * This symbol, if defined, defines the patch version number of - * Berkeley DB found in the <db.h> header when Perl was configured. - * For DB version 1 this is always 0. - */ -#define DB_Hash_t int /**/ -#define DB_Prefix_t int /**/ -#define DB_VERSION_MAJOR_CFG undef /**/ -#define DB_VERSION_MINOR_CFG undef /**/ -#define DB_VERSION_PATCH_CFG undef /**/ - -/* I_FP_CLASS: - * This symbol, if defined, indicates that <fp_class.h> exists and - * should be included. - */ -/*#define I_FP_CLASS /**/ - -/* I_GRP: - * This symbol, if defined, indicates to the C program that it should - * include <grp.h>. - */ -/* GRPASSWD: - * This symbol, if defined, indicates to the C program that struct group - * in <grp.h> contains gr_passwd. - */ -/*#define I_GRP /**/ -/*#define GRPASSWD /**/ - -/* I_IEEEFP: - * This symbol, if defined, indicates that <ieeefp.h> exists and - * should be included. - */ -/*#define I_IEEEFP /**/ - -/* I_INTTYPES: - * This symbol, if defined, indicates to the C program that it should - * include <inttypes.h>. - */ -/*#define I_INTTYPES /**/ - -/* I_LIBUTIL: - * This symbol, if defined, indicates that <libutil.h> exists and - * should be included. - */ -/*#define I_LIBUTIL /**/ - -/* I_MACH_CTHREADS: - * This symbol, if defined, indicates to the C program that it should - * include <mach/cthreads.h>. - */ -/*#define I_MACH_CTHREADS /**/ - -/* I_MNTENT: - * This symbol, if defined, indicates that <mntent.h> exists and - * should be included. - */ -/*#define I_MNTENT /**/ - -/* I_NETDB: - * This symbol, if defined, indicates that <netdb.h> exists and - * should be included. - */ -/*#define I_NETDB /**/ - -/* I_NETINET_TCP: - * This symbol, if defined, indicates to the C program that it should - * include <netinet/tcp.h>. - */ -/*#define I_NETINET_TCP /**/ - -/* I_POLL: - * This symbol, if defined, indicates that <poll.h> exists and - * should be included. - */ -/*#define I_POLL /**/ - -/* I_PROT: - * This symbol, if defined, indicates that <prot.h> exists and - * should be included. - */ -/*#define I_PROT /**/ - -/* I_PTHREAD: - * This symbol, if defined, indicates to the C program that it should - * include <pthread.h>. - */ -/*#define I_PTHREAD /**/ - -/* I_PWD: - * This symbol, if defined, indicates to the C program that it should - * include <pwd.h>. - */ -/* PWQUOTA: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_quota. - */ -/* PWAGE: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_age. - */ -/* PWCHANGE: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_change. - */ -/* PWCLASS: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_class. - */ -/* PWEXPIRE: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_expire. - */ -/* PWCOMMENT: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_comment. - */ -/* PWGECOS: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_gecos. - */ -/* PWPASSWD: - * This symbol, if defined, indicates to the C program that struct passwd - * contains pw_passwd. - */ -/*#define I_PWD /**/ -/*#define PWQUOTA /**/ -/*#define PWAGE /**/ -/*#define PWCHANGE /**/ -/*#define PWCLASS /**/ -/*#define PWEXPIRE /**/ -/*#define PWCOMMENT /**/ -/*#define PWGECOS /**/ -/*#define PWPASSWD /**/ - -/* I_SHADOW: - * This symbol, if defined, indicates that <shadow.h> exists and - * should be included. - */ -/*#define I_SHADOW /**/ - -/* I_SOCKS: - * This symbol, if defined, indicates that <socks.h> exists and - * should be included. - */ -/*#define I_SOCKS /**/ - -/* I_SUNMATH: - * This symbol, if defined, indicates that <sunmath.h> exists and - * should be included. - */ -/*#define I_SUNMATH /**/ - -/* I_SYSLOG: - * This symbol, if defined, indicates that <syslog.h> exists and - * should be included. - */ -/*#define I_SYSLOG /**/ - -/* I_SYSMODE: - * This symbol, if defined, indicates that <sys/mode.h> exists and - * should be included. - */ -/*#define I_SYSMODE /**/ - -/* I_SYS_MOUNT: - * This symbol, if defined, indicates that <sys/mount.h> exists and - * should be included. - */ -/*#define I_SYS_MOUNT /**/ - -/* I_SYS_STATFS: - * This symbol, if defined, indicates that <sys/statfs.h> exists. - */ -/*#define I_SYS_STATFS /**/ - -/* I_SYS_STATVFS: - * This symbol, if defined, indicates that <sys/statvfs.h> exists and - * should be included. - */ -/*#define I_SYS_STATVFS /**/ - -/* I_SYSUIO: - * This symbol, if defined, indicates that <sys/uio.h> exists and - * should be included. - */ -/*#define I_SYSUIO /**/ - -/* I_SYSUTSNAME: - * This symbol, if defined, indicates that <sys/utsname.h> exists and - * should be included. - */ -/*#define I_SYSUTSNAME /**/ - -/* I_SYS_VFS: - * This symbol, if defined, indicates that <sys/vfs.h> exists and - * should be included. - */ -/*#define I_SYS_VFS /**/ - -/* I_TIME: - * This symbol, if defined, indicates to the C program that it should - * include <time.h>. - */ -/* I_SYS_TIME: - * This symbol, if defined, indicates to the C program that it should - * include <sys/time.h>. - */ -/* I_SYS_TIME_KERNEL: - * This symbol, if defined, indicates to the C program that it should - * include <sys/time.h> with KERNEL defined. - */ -/* HAS_TM_TM_ZONE: - * This symbol, if defined, indicates to the C program that - * the struct tm has a tm_zone field. - */ -/* HAS_TM_TM_GMTOFF: - * This symbol, if defined, indicates to the C program that - * the struct tm has a tm_gmtoff field. - */ -/*#define I_TIME /**/ -/*#define I_SYS_TIME /**/ -/*#define I_SYS_TIME_KERNEL /**/ -/*#define HAS_TM_TM_ZONE /**/ -/*#define HAS_TM_TM_GMTOFF /**/ - -/* I_USTAT: - * This symbol, if defined, indicates that <ustat.h> exists and - * should be included. - */ -/*#define I_USTAT /**/ - -/* PERL_INC_VERSION_LIST: - * This variable specifies the list of subdirectories in over - * which perl.c:incpush() and lib/lib.pm will automatically - * search when adding directories to @INC, in a format suitable - * for a C initialization string. See the inc_version_list entry - * in Porting/Glossary for more details. - */ -#define PERL_INC_VERSION_LIST 0 /**/ - -/* INSTALL_USR_BIN_PERL: - * This symbol, if defined, indicates that Perl is to be installed - * also as /usr/bin/perl. - */ -/*#define INSTALL_USR_BIN_PERL /**/ - -/* PERL_PRIfldbl: - * This symbol, if defined, contains the string used by stdio to - * format long doubles (format 'f') for output. - */ -/* PERL_PRIgldbl: - * This symbol, if defined, contains the string used by stdio to - * format long doubles (format 'g') for output. - */ -/* PERL_PRIeldbl: - * This symbol, if defined, contains the string used by stdio to - * format long doubles (format 'e') for output. - */ -/* PERL_SCNfldbl: - * This symbol, if defined, contains the string used by stdio to - * format long doubles (format 'f') for input. - */ -/*#define PERL_PRIfldbl "f" /**/ -/*#define PERL_PRIgldbl "g" /**/ -/*#define PERL_PRIeldbl "e" /**/ -/*#define PERL_SCNfldbl undef /**/ - -/* Off_t: - * This symbol holds the type used to declare offsets in the kernel. - * It can be int, long, off_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -/* LSEEKSIZE: - * This symbol holds the number of bytes used by the Off_t. - */ -/* Off_t_size: - * This symbol holds the number of bytes used by the Off_t. - */ -#define Off_t long /* <offset> type */ -#define LSEEKSIZE 4 /* <offset> size */ -#define Off_t_size 4 /* <offset> size */ - -/* Free_t: - * This variable contains the return type of free(). It is usually - * void, but occasionally int. - */ -/* Malloc_t: - * This symbol is the type of pointer returned by malloc and realloc. - */ -#define Malloc_t void * /**/ -#define Free_t void /**/ - -/* PERL_MALLOC_WRAP: - * This symbol, if defined, indicates that we'd like malloc wrap checks. - */ -#define PERL_MALLOC_WRAP /**/ - -/* MYMALLOC: - * This symbol, if defined, indicates that we're using our own malloc. - */ -#define MYMALLOC /**/ - -/* Mode_t: - * This symbol holds the type used to declare file modes - * for systems calls. It is usually mode_t, but may be - * int or unsigned short. It may be necessary to include <sys/types.h> - * to get any typedef'ed information. - */ -#define Mode_t mode_t /* file mode parameter for system calls */ - -/* VAL_O_NONBLOCK: - * This symbol is to be used during open() or fcntl(F_SETFL) to turn on - * non-blocking I/O for the file descriptor. Note that there is no way - * back, i.e. you cannot turn it blocking again this way. If you wish to - * alternatively switch between blocking and non-blocking, use the - * ioctl(FIOSNBIO) call instead, but that is not supported by all devices. - */ -/* VAL_EAGAIN: - * This symbol holds the errno error code set by read() when no data was - * present on the non-blocking file descriptor. - */ -/* RD_NODATA: - * This symbol holds the return code from read() when no data is present - * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is - * not defined, then you can't distinguish between no data and EOF by - * issuing a read(). You'll have to find another way to tell for sure! - */ -/* EOF_NONBLOCK: - * This symbol, if defined, indicates to the C program that a read() on - * a non-blocking file descriptor will return 0 on EOF, and not the value - * held in RD_NODATA (-1 usually, in that case!). - */ -#define VAL_O_NONBLOCK O_NONBLOCK -#define VAL_EAGAIN EAGAIN -#define RD_NODATA -1 -#define EOF_NONBLOCK - -/* NEED_VA_COPY: - * This symbol, if defined, indicates that the system stores - * the variable argument list datatype, va_list, in a format - * that cannot be copied by simple assignment, so that some - * other means must be used when copying is required. - * As such systems vary in their provision (or non-provision) - * of copying mechanisms, handy.h defines a platform- - * independent macro, Perl_va_copy(src, dst), to do the job. - */ -/*#define NEED_VA_COPY /**/ - -/* Netdb_host_t: - * This symbol holds the type used for the 1st argument - * to gethostbyaddr(). - */ -/* Netdb_hlen_t: - * This symbol holds the type used for the 2nd argument - * to gethostbyaddr(). - */ -/* Netdb_name_t: - * This symbol holds the type used for the argument to - * gethostbyname(). - */ -/* Netdb_net_t: - * This symbol holds the type used for the 1st argument to - * getnetbyaddr(). - */ -#define Netdb_host_t char * /**/ -#define Netdb_hlen_t int /**/ -#define Netdb_name_t char * /**/ -#define Netdb_net_t long /**/ - -/* PERL_OTHERLIBDIRS: - * This variable contains a colon-separated set of paths for the perl - * binary to search for additional library files or modules. - * These directories will be tacked to the end of @INC. - * Perl will automatically search below each path for version- - * and architecture-specific directories. See PERL_INC_VERSION_LIST - * for more details. - */ -/*#define PERL_OTHERLIBDIRS "" /**/ - -/* HAS_QUAD: - * This symbol, if defined, tells that there's a 64-bit integer type, - * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one - * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T. - */ -/*#define HAS_QUAD /**/ -#ifdef HAS_QUAD -# define Quad_t __int64 /**/ -# define Uquad_t unsigned __int64 /**/ -# define QUADKIND 5 /**/ -# define QUAD_IS_INT 1 -# define QUAD_IS_LONG 2 -# define QUAD_IS_LONG_LONG 3 -# define QUAD_IS_INT64_T 4 -#endif - -/* IVTYPE: - * This symbol defines the C type used for Perl's IV. - */ -/* UVTYPE: - * This symbol defines the C type used for Perl's UV. - */ -/* I8TYPE: - * This symbol defines the C type used for Perl's I8. - */ -/* U8TYPE: - * This symbol defines the C type used for Perl's U8. - */ -/* I16TYPE: - * This symbol defines the C type used for Perl's I16. - */ -/* U16TYPE: - * This symbol defines the C type used for Perl's U16. - */ -/* I32TYPE: - * This symbol defines the C type used for Perl's I32. - */ -/* U32TYPE: - * This symbol defines the C type used for Perl's U32. - */ -/* I64TYPE: - * This symbol defines the C type used for Perl's I64. - */ -/* U64TYPE: - * This symbol defines the C type used for Perl's U64. - */ -/* NVTYPE: - * This symbol defines the C type used for Perl's NV. - */ -/* IVSIZE: - * This symbol contains the sizeof(IV). - */ -/* UVSIZE: - * This symbol contains the sizeof(UV). - */ -/* I8SIZE: - * This symbol contains the sizeof(I8). - */ -/* U8SIZE: - * This symbol contains the sizeof(U8). - */ -/* I16SIZE: - * This symbol contains the sizeof(I16). - */ -/* U16SIZE: - * This symbol contains the sizeof(U16). - */ -/* I32SIZE: - * This symbol contains the sizeof(I32). - */ -/* U32SIZE: - * This symbol contains the sizeof(U32). - */ -/* I64SIZE: - * This symbol contains the sizeof(I64). - */ -/* U64SIZE: - * This symbol contains the sizeof(U64). - */ -/* NVSIZE: - * This symbol contains the sizeof(NV). - */ -/* NV_PRESERVES_UV: - * This symbol, if defined, indicates that a variable of type NVTYPE - * can preserve all the bits of a variable of type UVTYPE. - */ -/* NV_PRESERVES_UV_BITS: - * This symbol contains the number of bits a variable of type NVTYPE - * can preserve of a variable of type UVTYPE. - */ -/* NV_OVERFLOWS_INTEGERS_AT - * This symbol gives the largest integer value that NVs can hold. This - * value + 1.0 cannot be stored accurately. It is expressed as constant - * floating point expression to reduce the chance of decimale/binary - * conversion issues. If it can not be determined, the value 0 is given. - */ -/* NV_ZERO_IS_ALLBITS_ZERO - * This symbol, if defined, indicates that a variable of type NVTYPE - * stores 0.0 in memory as all bits zero. - */ -#define IVTYPE long /**/ -#define UVTYPE unsigned long /**/ -#define I8TYPE char /**/ -#define U8TYPE unsigned char /**/ -#define I16TYPE short /**/ -#define U16TYPE unsigned short /**/ -#define I32TYPE long /**/ -#define U32TYPE unsigned long /**/ -#ifdef HAS_QUAD -#define I64TYPE __int64 /**/ -#define U64TYPE unsigned __int64 /**/ -#endif -#define NVTYPE double /**/ -#define IVSIZE 4 /**/ -#define UVSIZE 4 /**/ -#define I8SIZE 1 /**/ -#define U8SIZE 1 /**/ -#define I16SIZE 2 /**/ -#define U16SIZE 2 /**/ -#define I32SIZE 4 /**/ -#define U32SIZE 4 /**/ -#ifdef HAS_QUAD -#define I64SIZE 8 /**/ -#define U64SIZE 8 /**/ -#endif -#define NVSIZE 8 /**/ -#define NV_PRESERVES_UV -#define NV_PRESERVES_UV_BITS undef -#define NV_OVERFLOWS_INTEGERS_AT 256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0 -#undef NV_ZERO_IS_ALLBITS_ZERO -#if UVSIZE == 8 -# ifdef BYTEORDER -# if BYTEORDER == 0x1234 -# undef BYTEORDER -# define BYTEORDER 0x12345678 -# else -# if BYTEORDER == 0x4321 -# undef BYTEORDER -# define BYTEORDER 0x87654321 -# endif -# endif -# endif -#endif - -/* IVdf: - * This symbol defines the format string used for printing a Perl IV - * as a signed decimal integer. - */ -/* UVuf: - * This symbol defines the format string used for printing a Perl UV - * as an unsigned decimal integer. - */ -/* UVof: - * This symbol defines the format string used for printing a Perl UV - * as an unsigned octal integer. - */ -/* UVxf: - * This symbol defines the format string used for printing a Perl UV - * as an unsigned hexadecimal integer in lowercase abcdef. - */ -/* UVXf: - * This symbol defines the format string used for printing a Perl UV - * as an unsigned hexadecimal integer in uppercase ABCDEF. - */ -/* NVef: - * This symbol defines the format string used for printing a Perl NV - * using %e-ish floating point format. - */ -/* NVff: - * This symbol defines the format string used for printing a Perl NV - * using %f-ish floating point format. - */ -/* NVgf: - * This symbol defines the format string used for printing a Perl NV - * using %g-ish floating point format. - */ -#define IVdf "ld" /**/ -#define UVuf "lu" /**/ -#define UVof "lo" /**/ -#define UVxf "lx" /**/ -#define UVXf "lX" /**/ -#define NVef "e" /**/ -#define NVff "f" /**/ -#define NVgf "g" /**/ - -/* Pid_t: - * This symbol holds the type used to declare process ids in the kernel. - * It can be int, uint, pid_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Pid_t int /* PID type */ - -/* PRIVLIB: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - */ -/* PRIVLIB_EXP: - * This symbol contains the ~name expanded version of PRIVLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -#define PRIVLIB "\\Storage Card\\perl58m\\lib" /**/ -#define PRIVLIB_EXP (PerlEnv_lib_path(PERL_VERSION_STRING, NULL)) /**/ - -/* PTRSIZE: - * This symbol contains the size of a pointer, so that the C preprocessor - * can make decisions based on it. It will be sizeof(void *) if - * the compiler supports (void *); otherwise it will be - * sizeof(char *). - */ -#define PTRSIZE 4 /**/ - -/* Drand01: - * This macro is to be used to generate uniformly distributed - * random numbers over the range [0., 1.[. You may have to supply - * an 'extern double drand48();' in your program since SunOS 4.1.3 - * doesn't provide you with anything relevant in its headers. - * See HAS_DRAND48_PROTO. - */ -/* Rand_seed_t: - * This symbol defines the type of the argument of the - * random seed function. - */ -/* seedDrand01: - * This symbol defines the macro to be used in seeding the - * random number generator (see Drand01). - */ -/* RANDBITS: - * This symbol indicates how many bits are produced by the - * function used to generate normalized random numbers. - * Values include 15, 16, 31, and 48. - */ -#define Drand01() (rand()/(double)((unsigned)1<<RANDBITS)) /**/ -#define Rand_seed_t unsigned /**/ -#define seedDrand01(x) srand((Rand_seed_t)x) /**/ -#define RANDBITS 15 /**/ - -/* SELECT_MIN_BITS: - * This symbol holds the minimum number of bits operated by select. - * That is, if you do select(n, ...), how many bits at least will be - * cleared in the masks if some activity is detected. Usually this - * is either n or 32*ceil(n/32), especially many little-endians do - * the latter. This is only useful if you have select(), naturally. - */ -#define SELECT_MIN_BITS 32 /**/ - -/* Select_fd_set_t: - * This symbol holds the type used for the 2nd, 3rd, and 4th - * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET - * is defined, and 'int *' otherwise. This is only useful if you - * have select(), of course. - */ -#define Select_fd_set_t Perl_fd_set * /**/ - -/* SIG_NAME: - * This symbol contains a list of signal names in order of - * signal number. This is intended - * to be used as a static array initialization, like this: - * char *sig_name[] = { SIG_NAME }; - * The signals in the list are separated with commas, and each signal - * is surrounded by double quotes. There is no leading SIG in the signal - * name, i.e. SIGQUIT is known as "QUIT". - * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn, - * etc., where nn is the actual signal number (e.g. NUM37). - * The signal number for sig_name[i] is stored in sig_num[i]. - * The last element is 0 to terminate the list with a NULL. This - * corresponds to the 0 at the end of the sig_name_init list. - * Note that this variable is initialized from the sig_name_init, - * not from sig_name (which is unused). - */ -/* SIG_NUM: - * This symbol contains a list of signal numbers, in the same order as the - * SIG_NAME list. It is suitable for static array initialization, as in: - * int sig_num[] = { SIG_NUM }; - * The signals in the list are separated with commas, and the indices - * within that list and the SIG_NAME list match, so it's easy to compute - * the signal name from a number or vice versa at the price of a small - * dynamic linear lookup. - * Duplicates are allowed, but are moved to the end of the list. - * The signal number corresponding to sig_name[i] is sig_number[i]. - * if (i < NSIG) then sig_number[i] == i. - * The last element is 0, corresponding to the 0 at the end of - * the sig_name_init list. - * Note that this variable is initialized from the sig_num_init, - * not from sig_num (which is unused). - */ -/* SIG_SIZE: - * This variable contains the number of elements of the SIG_NAME - * and SIG_NUM arrays, excluding the final NULL entry. - */ -#define SIG_NAME "ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0 /**/ -#define SIG_NUM 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0 /**/ -#define SIG_SIZE 27 /**/ - -/* SITEARCH: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - * The standard distribution will put nothing in this directory. - * After perl has been installed, users may install their own local - * architecture-dependent modules in this directory with - * MakeMaker Makefile.PL - * or equivalent. See INSTALL for details. - */ -/* SITEARCH_EXP: - * This symbol contains the ~name expanded version of SITEARCH, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -#define SITEARCH "\\Storage Card\\perl58m\\site\\lib" /**/ -/*#define SITEARCH_EXP "" /**/ - -/* SITELIB: - * This symbol contains the name of the private library for this package. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. The program - * should be prepared to do ~ expansion. - * The standard distribution will put nothing in this directory. - * After perl has been installed, users may install their own local - * architecture-independent modules in this directory with - * MakeMaker Makefile.PL - * or equivalent. See INSTALL for details. - */ -/* SITELIB_EXP: - * This symbol contains the ~name expanded version of SITELIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/* SITELIB_STEM: - * This define is SITELIB_EXP with any trailing version-specific component - * removed. The elements in inc_version_list (inc_version_list.U) can - * be tacked onto this variable to generate a list of directories to search. - */ -#define SITELIB "\\Storage Card\\perl58m\\site\\lib" /**/ -#define SITELIB_EXP (PerlEnv_sitelib_path(PERL_VERSION_STRING, NULL)) /**/ -#define SITELIB_STEM "" /**/ - -/* Size_t_size: - * This symbol holds the size of a Size_t in bytes. - */ -#define Size_t_size 4 /**/ - -/* Size_t: - * This symbol holds the type used to declare length parameters - * for string functions. It is usually size_t, but may be - * unsigned long, int, etc. It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Size_t size_t /* length paramater for string functions */ - -/* Sock_size_t: - * This symbol holds the type used for the size argument of - * various socket calls (just the base type, not the pointer-to). - */ -#define Sock_size_t int /**/ - -/* SSize_t: - * This symbol holds the type used by functions that return - * a count of bytes or an error condition. It must be a signed type. - * It is usually ssize_t, but may be long or int, etc. - * It may be necessary to include <sys/types.h> or <unistd.h> - * to get any typedef'ed information. - * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). - */ -#define SSize_t int /* signed count of bytes */ - -/* STARTPERL: - * This variable contains the string to put in front of a perl - * script to make sure (one hopes) that it runs with perl and not - * some shell. - */ -#define STARTPERL "#!perl" /**/ - -/* STDCHAR: - * This symbol is defined to be the type of char used in stdio.h. - * It has the values "unsigned char" or "char". - */ -#define STDCHAR char /**/ - -/* HAS_STDIO_STREAM_ARRAY: - * This symbol, if defined, tells that there is an array - * holding the stdio streams. - */ -/* STDIO_STREAM_ARRAY: - * This symbol tells the name of the array holding the stdio streams. - * Usual values include _iob, __iob, and __sF. - */ -/*#define HAS_STDIO_STREAM_ARRAY /**/ -#define STDIO_STREAM_ARRAY - -/* Uid_t_f: - * This symbol defines the format string used for printing a Uid_t. - */ -#define Uid_t_f "ld" /**/ - -/* Uid_t_sign: - * This symbol holds the signedess of a Uid_t. - * 1 for unsigned, -1 for signed. - */ -#define Uid_t_sign -1 /* UID sign */ - -/* Uid_t_size: - * This symbol holds the size of a Uid_t in bytes. - */ -#define Uid_t_size 4 /* UID size */ - -/* Uid_t: - * This symbol holds the type used to declare user ids in the kernel. - * It can be int, ushort, uid_t, etc... It may be necessary to include - * <sys/types.h> to get any typedef'ed information. - */ -#define Uid_t uid_t /* UID type */ - -/* USE_64_BIT_INT: - * This symbol, if defined, indicates that 64-bit integers should - * be used when available. If not defined, the native integers - * will be employed (be they 32 or 64 bits). The minimal possible - * 64-bitness is used, just enough to get 64-bit integers into Perl. - * This may mean using for example "long longs", while your memory - * may still be limited to 2 gigabytes. - */ -/* USE_64_BIT_ALL: - * This symbol, if defined, indicates that 64-bit integers should - * be used when available. If not defined, the native integers - * will be used (be they 32 or 64 bits). The maximal possible - * 64-bitness is employed: LP64 or ILP64, meaning that you will - * be able to use more than 2 gigabytes of memory. This mode is - * even more binary incompatible than USE_64_BIT_INT. You may not - * be able to run the resulting executable in a 32-bit CPU at all or - * you may need at least to reboot your OS to 64-bit mode. - */ -#ifndef USE_64_BIT_INT -/*#define USE_64_BIT_INT /**/ -#endif - -#ifndef USE_64_BIT_ALL -/*#define USE_64_BIT_ALL /**/ -#endif - -/* USE_LARGE_FILES: - * This symbol, if defined, indicates that large file support - * should be used when available. - */ -#ifndef USE_LARGE_FILES -/*#define USE_LARGE_FILES /**/ -#endif - -/* USE_LONG_DOUBLE: - * This symbol, if defined, indicates that long doubles should - * be used when available. - */ -#ifndef USE_LONG_DOUBLE -/*#define USE_LONG_DOUBLE /**/ -#endif - -/* USE_MORE_BITS: - * This symbol, if defined, indicates that 64-bit interfaces and - * long doubles should be used when available. - */ -#ifndef USE_MORE_BITS -/*#define USE_MORE_BITS /**/ -#endif - -/* MULTIPLICITY: - * This symbol, if defined, indicates that Perl should - * be built to use multiplicity. - */ -#ifndef MULTIPLICITY -/*#define MULTIPLICITY /**/ -#endif - -/* USE_PERLIO: - * This symbol, if defined, indicates that the PerlIO abstraction should - * be used throughout. If not defined, stdio should be - * used in a fully backward compatible manner. - */ -#ifndef USE_PERLIO -#define USE_PERLIO /**/ -#endif - -/* USE_SOCKS: - * This symbol, if defined, indicates that Perl should - * be built to use socks. - */ -#ifndef USE_SOCKS -/*#define USE_SOCKS /**/ -#endif - -/* USE_ITHREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the interpreter-based threading implementation. - */ -/* USE_5005THREADS: - * This symbol, if defined, indicates that Perl should be built to - * use the 5.005-based threading implementation. - */ -/* OLD_PTHREADS_API: - * This symbol, if defined, indicates that Perl should - * be built to use the old draft POSIX threads API. - */ -/* USE_REENTRANT_API: - * This symbol, if defined, indicates that Perl should - * try to use the various _r versions of library functions. - * This is extremely experimental. - */ -/*#define USE_5005THREADS /**/ -/*#define USE_ITHREADS /**/ -#if defined(USE_5005THREADS) && !defined(USE_ITHREADS) -#define USE_THREADS /* until src is revised*/ -#endif -/*#define OLD_PTHREADS_API /**/ -/*#define USE_REENTRANT_API /**/ - -/* USE_DTRACE - * This symbol, if defined, indicates that Perl should - * be built with support for DTrace. - */ -/*#define USE_DTRACE / **/ - -/* PERL_VENDORARCH: - * If defined, this symbol contains the name of a private library. - * The library is private in the sense that it needn't be in anyone's - * execution path, but it should be accessible by the world. - * It may have a ~ on the front. - * The standard distribution will put nothing in this directory. - * Vendors who distribute perl may wish to place their own - * architecture-dependent modules and extensions in this directory with - * MakeMaker Makefile.PL INSTALLDIRS=vendor - * or equivalent. See INSTALL for details. - */ -/* PERL_VENDORARCH_EXP: - * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/*#define PERL_VENDORARCH "" /**/ -/*#define PERL_VENDORARCH_EXP "" /**/ - -/* PERL_VENDORLIB_EXP: - * This symbol contains the ~name expanded version of VENDORLIB, to be used - * in programs that are not prepared to deal with ~ expansion at run-time. - */ -/* PERL_VENDORLIB_STEM: - * This define is PERL_VENDORLIB_EXP with any trailing version-specific component - * removed. The elements in inc_version_list (inc_version_list.U) can - * be tacked onto this variable to generate a list of directories to search. - */ -/*#define PERL_VENDORLIB_EXP "" /**/ -/*#define PERL_VENDORLIB_STEM "" /**/ - -/* HASATTRIBUTE_FORMAT: - * Can we handle GCC attribute for checking printf-style formats - */ -/* HASATTRIBUTE_MALLOC: - * Can we handle GCC attribute for malloc-style functions. - */ -/* HASATTRIBUTE_NONNULL: - * Can we handle GCC attribute for nonnull function parms. - */ -/* HASATTRIBUTE_NORETURN: - * Can we handle GCC attribute for functions that do not return - */ -/* HASATTRIBUTE_PURE: - * Can we handle GCC attribute for pure functions - */ -/* HASATTRIBUTE_UNUSED: - * Can we handle GCC attribute for unused variables and arguments - */ -/* HASATTRIBUTE_WARN_UNUSED_RESULT: - * Can we handle GCC attribute for warning on unused results - */ -/*#define HASATTRIBUTE_FORMAT /**/ -/*#define HASATTRIBUTE_NORETURN /**/ -/*#define HASATTRIBUTE_MALLOC /**/ -/*#define HASATTRIBUTE_NONNULL /**/ -/*#define HASATTRIBUTE_PURE /**/ -/*#define HASATTRIBUTE_UNUSED /**/ -/*#define HASATTRIBUTE_WARN_UNUSED_RESULT /**/ - -/* HAS_CRYPT: - * This symbol, if defined, indicates that the crypt routine is available - * to encrypt passwords and the like. - */ -/*#define HAS_CRYPT /**/ - -/* SETUID_SCRIPTS_ARE_SECURE_NOW: - * This symbol, if defined, indicates that the bug that prevents - * setuid scripts from being secure is not present in this kernel. - */ -/* DOSUID: - * This symbol, if defined, indicates that the C program should - * check the script that it is executing for setuid/setgid bits, and - * attempt to emulate setuid/setgid on systems that have disabled - * setuid #! scripts because the kernel can't do it securely. - * It is up to the package designer to make sure that this emulation - * is done securely. Among other things, it should do an fstat on - * the script it just opened to make sure it really is a setuid/setgid - * script, it should make sure the arguments passed correspond exactly - * to the argument on the #! line, and it should not trust any - * subprocesses to which it must pass the filename rather than the - * file descriptor of the script to be executed. - */ -/*#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/ -/*#define DOSUID /**/ - -/* Shmat_t: - * This symbol holds the return type of the shmat() system call. - * Usually set to 'void *' or 'char *'. - */ -/* HAS_SHMAT_PROTOTYPE: - * This symbol, if defined, indicates that the sys/shm.h includes - * a prototype for shmat(). Otherwise, it is up to the program to - * guess one. Shmat_t shmat(int, Shmat_t, int) is a good guess, - * but not always right so it should be emitted by the program only - * when HAS_SHMAT_PROTOTYPE is not defined to avoid conflicting defs. - */ -#define Shmat_t void * /**/ -/*#define HAS_SHMAT_PROTOTYPE /**/ - -/* I_NDBM: - * This symbol, if defined, indicates that <ndbm.h> exists and should - * be included. - */ -/*#define I_NDBM /**/ - -/* SH_PATH: - * This symbol contains the full pathname to the shell used on this - * on this system to execute Bourne shell scripts. Usually, this will be - * /bin/sh, though it's possible that some systems will have /bin/ksh, - * /bin/pdksh, /bin/ash, /bin/bash, or even something such as - * D:/bin/sh.exe. - */ -#define SH_PATH "cmd /x /c" /**/ - -/* HAS_AINTL: - * This symbol, if defined, indicates that the aintl routine is - * available. If copysignl is also present we can emulate modfl. - */ -/*#define HAS_AINTL /**/ - -/* HAS_CLEARENV: - * This symbol, if defined, indicates that the clearenv () routine is - * available for use. - */ -/*#define HAS_CLEARENV /**/ - -/* HAS_COPYSIGNL: - * This symbol, if defined, indicates that the copysignl routine is - * available. If aintl is also present we can emulate modfl. - */ -/*#define HAS_COPYSIGNL /**/ - -/* USE_CPLUSPLUS: - * This symbol, if defined, indicates that a C++ compiler was - * used to compiled Perl and will be used to compile extensions. - */ -/*#define USE_CPLUSPLUS /**/ - -/* HAS_DBMINIT_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the dbminit() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern int dbminit(char *); - */ -/*#define HAS_DBMINIT_PROTO /**/ - -/* HAS_DIRFD: - * This manifest constant lets the C program know that dirfd - * is available. - */ -/*#define HAS_DIRFD /**/ - -/* HAS_FAST_STDIO: - * This symbol, if defined, indicates that the "fast stdio" - * is available to manipulate the stdio buffers directly. - */ -/*#define HAS_FAST_STDIO /**/ - -/* HAS_FLOCK_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the flock() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern int flock(int, int); - */ -/*#define HAS_FLOCK_PROTO /**/ - -/* HAS_FPCLASSL: - * This symbol, if defined, indicates that the fpclassl routine is - * available to classify long doubles. Available for example in IRIX. - * The returned values are defined in <ieeefp.h> and are: - * - * FP_SNAN signaling NaN - * FP_QNAN quiet NaN - * FP_NINF negative infinity - * FP_PINF positive infinity - * FP_NDENORM negative denormalized non-zero - * FP_PDENORM positive denormalized non-zero - * FP_NZERO negative zero - * FP_PZERO positive zero - * FP_NNORM negative normalized non-zero - * FP_PNORM positive normalized non-zero - */ -/*#define HAS_FPCLASSL /**/ - -/* HAS_ILOGBL: - * This symbol, if defined, indicates that the ilogbl routine is - * available. If scalbnl is also present we can emulate frexpl. - */ -/*#define HAS_ILOGBL /**/ - -/* LIBM_LIB_VERSION: - * This symbol, if defined, indicates that libm exports _LIB_VERSION - * and that math.h defines the enum to manipulate it. - */ -/*#define LIBM_LIB_VERSION /**/ - -/* HAS_NL_LANGINFO: - * This symbol, if defined, indicates that the nl_langinfo routine is - * available to return local data. You will also need <langinfo.h> - * and therefore I_LANGINFO. - */ -/*#define HAS_NL_LANGINFO /**/ - -/* HAS_PROCSELFEXE: - * This symbol is defined if PROCSELFEXE_PATH is a symlink - * to the absolute pathname of the executing program. - */ -/* PROCSELFEXE_PATH: - * If HAS_PROCSELFEXE is defined this symbol is the filename - * of the symbolic link pointing to the absolute pathname of - * the executing program. - */ -/*#define HAS_PROCSELFEXE /**/ -#if defined(HAS_PROCSELFEXE) && !defined(PROCSELFEXE_PATH) -#define PROCSELFEXE_PATH /**/ -#endif - -/* HAS_PTHREAD_ATTR_SETSCOPE: - * This symbol, if defined, indicates that the pthread_attr_setscope - * system call is available to set the contention scope attribute of - * a thread attribute object. - */ -/*#define HAS_PTHREAD_ATTR_SETSCOPE /**/ - -/* HAS_SCALBNL: - * This symbol, if defined, indicates that the scalbnl routine is - * available. If ilogbl is also present we can emulate frexpl. - */ -/*#define HAS_SCALBNL /**/ - -/* HAS_SIGPROCMASK: - * This symbol, if defined, indicates that the sigprocmask - * system call is available to examine or change the signal mask - * of the calling process. - */ -/*#define HAS_SIGPROCMASK /**/ - -/* HAS_SOCKATMARK: - * This symbol, if defined, indicates that the sockatmark routine is - * available to test whether a socket is at the out-of-band mark. - */ -/*#define HAS_SOCKATMARK /**/ - -/* HAS_SOCKATMARK_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the sockatmark() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern int sockatmark(int); - */ -/*#define HAS_SOCKATMARK_PROTO /**/ - -/* HAS_SETRESGID_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the setresgid() function. Otherwise, it is up - * to the program to supply one. Good guesses are - * extern int setresgid(uid_t ruid, uid_t euid, uid_t suid); - */ -/*#define HAS_SETRESGID_PROTO /**/ - -/* HAS_SETRESUID_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the setresuid() function. Otherwise, it is up - * to the program to supply one. Good guesses are - * extern int setresuid(uid_t ruid, uid_t euid, uid_t suid); - */ -/*#define HAS_SETRESUID_PROTO /**/ - -/* HAS_STRFTIME: - * This symbol, if defined, indicates that the strftime routine is - * available to do time formatting. - */ -/*#define HAS_STRFTIME /**/ - -/* HAS_STRLCAT: - * This symbol, if defined, indicates that the strlcat () routine is - * available to do string concatenation. - */ -/*#define HAS_STRLCAT /**/ - -/* HAS_STRLCPY: - * This symbol, if defined, indicates that the strlcpy () routine is - * available to do string copying. - */ -/*#define HAS_STRLCPY /**/ - -/* HAS_SYSCALL_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the syscall() function. Otherwise, it is up - * to the program to supply one. Good guesses are - * extern int syscall(int, ...); - * extern int syscall(long, ...); - */ -/*#define HAS_SYSCALL_PROTO /**/ - -/* U32_ALIGNMENT_REQUIRED: - * This symbol, if defined, indicates that you must access - * character data through U32-aligned pointers. - */ -#ifndef U32_ALIGNMENT_REQUIRED -/*#define U32_ALIGNMENT_REQUIRED /**/ -#endif - -/* HAS_USLEEP_PROTO: - * This symbol, if defined, indicates that the system provides - * a prototype for the usleep() function. Otherwise, it is up - * to the program to supply one. A good guess is - * extern int usleep(useconds_t); - */ -/*#define HAS_USLEEP_PROTO /**/ - -/* I_CRYPT: - * This symbol, if defined, indicates that <crypt.h> exists and - * should be included. - */ -/*#define I_CRYPT /**/ - -/* I_FP: - * This symbol, if defined, indicates that <fp.h> exists and - * should be included. - */ -/*#define I_FP /**/ - -/* I_LANGINFO: - * This symbol, if defined, indicates that <langinfo.h> exists and - * should be included. - */ -/*#define I_LANGINFO /**/ - -/* USE_FAST_STDIO: - * This symbol, if defined, indicates that Perl should - * be built to use 'fast stdio'. - * Defaults to define in Perls 5.8 and earlier, to undef later. - */ -#ifndef USE_FAST_STDIO -/*#define USE_FAST_STDIO /**/ -#endif - -/* PERL_RELOCATABLE_INC: - * This symbol, if defined, indicates that we'd like to relocate entries - * in @INC at run time based on the location of the perl binary. - */ -#define PERL_RELOCATABLE_INC "undef" /**/ - -/* HAS_CTERMID_R: - * This symbol, if defined, indicates that the ctermid_r routine - * is available to ctermid re-entrantly. - */ -/* CTERMID_R_PROTO: - * This symbol encodes the prototype of ctermid_r. - * It is zero if d_ctermid_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r - * is defined. - */ -/*#define HAS_CTERMID_R /**/ -#define CTERMID_R_PROTO 0 /**/ - -/* HAS_ENDHOSTENT_R: - * This symbol, if defined, indicates that the endhostent_r routine - * is available to endhostent re-entrantly. - */ -/* ENDHOSTENT_R_PROTO: - * This symbol encodes the prototype of endhostent_r. - * It is zero if d_endhostent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r - * is defined. - */ -/*#define HAS_ENDHOSTENT_R /**/ -#define ENDHOSTENT_R_PROTO 0 /**/ - -/* HAS_ENDNETENT_R: - * This symbol, if defined, indicates that the endnetent_r routine - * is available to endnetent re-entrantly. - */ -/* ENDNETENT_R_PROTO: - * This symbol encodes the prototype of endnetent_r. - * It is zero if d_endnetent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r - * is defined. - */ -/*#define HAS_ENDNETENT_R /**/ -#define ENDNETENT_R_PROTO 0 /**/ - -/* HAS_ENDPROTOENT_R: - * This symbol, if defined, indicates that the endprotoent_r routine - * is available to endprotoent re-entrantly. - */ -/* ENDPROTOENT_R_PROTO: - * This symbol encodes the prototype of endprotoent_r. - * It is zero if d_endprotoent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r - * is defined. - */ -/*#define HAS_ENDPROTOENT_R /**/ -#define ENDPROTOENT_R_PROTO 0 /**/ - -/* HAS_ENDSERVENT_R: - * This symbol, if defined, indicates that the endservent_r routine - * is available to endservent re-entrantly. - */ -/* ENDSERVENT_R_PROTO: - * This symbol encodes the prototype of endservent_r. - * It is zero if d_endservent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r - * is defined. - */ -/*#define HAS_ENDSERVENT_R /**/ -#define ENDSERVENT_R_PROTO 0 /**/ - -/* HAS_GETHOSTBYADDR_R: - * This symbol, if defined, indicates that the gethostbyaddr_r routine - * is available to gethostbyaddr re-entrantly. - */ -/* GETHOSTBYADDR_R_PROTO: - * This symbol encodes the prototype of gethostbyaddr_r. - * It is zero if d_gethostbyaddr_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r - * is defined. - */ -/*#define HAS_GETHOSTBYADDR_R /**/ -#define GETHOSTBYADDR_R_PROTO 0 /**/ - -/* HAS_GETHOSTBYNAME_R: - * This symbol, if defined, indicates that the gethostbyname_r routine - * is available to gethostbyname re-entrantly. - */ -/* GETHOSTBYNAME_R_PROTO: - * This symbol encodes the prototype of gethostbyname_r. - * It is zero if d_gethostbyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r - * is defined. - */ -/*#define HAS_GETHOSTBYNAME_R /**/ -#define GETHOSTBYNAME_R_PROTO 0 /**/ - -/* HAS_GETHOSTENT_R: - * This symbol, if defined, indicates that the gethostent_r routine - * is available to gethostent re-entrantly. - */ -/* GETHOSTENT_R_PROTO: - * This symbol encodes the prototype of gethostent_r. - * It is zero if d_gethostent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r - * is defined. - */ -/*#define HAS_GETHOSTENT_R /**/ -#define GETHOSTENT_R_PROTO 0 /**/ - -/* HAS_GETNETBYADDR_R: - * This symbol, if defined, indicates that the getnetbyaddr_r routine - * is available to getnetbyaddr re-entrantly. - */ -/* GETNETBYADDR_R_PROTO: - * This symbol encodes the prototype of getnetbyaddr_r. - * It is zero if d_getnetbyaddr_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r - * is defined. - */ -/*#define HAS_GETNETBYADDR_R /**/ -#define GETNETBYADDR_R_PROTO 0 /**/ - -/* HAS_GETNETBYNAME_R: - * This symbol, if defined, indicates that the getnetbyname_r routine - * is available to getnetbyname re-entrantly. - */ -/* GETNETBYNAME_R_PROTO: - * This symbol encodes the prototype of getnetbyname_r. - * It is zero if d_getnetbyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r - * is defined. - */ -/*#define HAS_GETNETBYNAME_R /**/ -#define GETNETBYNAME_R_PROTO 0 /**/ - -/* HAS_GETNETENT_R: - * This symbol, if defined, indicates that the getnetent_r routine - * is available to getnetent re-entrantly. - */ -/* GETNETENT_R_PROTO: - * This symbol encodes the prototype of getnetent_r. - * It is zero if d_getnetent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r - * is defined. - */ -/*#define HAS_GETNETENT_R /**/ -#define GETNETENT_R_PROTO 0 /**/ - -/* HAS_GETPROTOBYNAME_R: - * This symbol, if defined, indicates that the getprotobyname_r routine - * is available to getprotobyname re-entrantly. - */ -/* GETPROTOBYNAME_R_PROTO: - * This symbol encodes the prototype of getprotobyname_r. - * It is zero if d_getprotobyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r - * is defined. - */ -/*#define HAS_GETPROTOBYNAME_R /**/ -#define GETPROTOBYNAME_R_PROTO 0 /**/ - -/* HAS_GETPROTOBYNUMBER_R: - * This symbol, if defined, indicates that the getprotobynumber_r routine - * is available to getprotobynumber re-entrantly. - */ -/* GETPROTOBYNUMBER_R_PROTO: - * This symbol encodes the prototype of getprotobynumber_r. - * It is zero if d_getprotobynumber_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r - * is defined. - */ -/*#define HAS_GETPROTOBYNUMBER_R /**/ -#define GETPROTOBYNUMBER_R_PROTO 0 /**/ - -/* HAS_GETPROTOENT_R: - * This symbol, if defined, indicates that the getprotoent_r routine - * is available to getprotoent re-entrantly. - */ -/* GETPROTOENT_R_PROTO: - * This symbol encodes the prototype of getprotoent_r. - * It is zero if d_getprotoent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r - * is defined. - */ -/*#define HAS_GETPROTOENT_R /**/ -#define GETPROTOENT_R_PROTO 0 /**/ - -/* HAS_GETSERVBYNAME_R: - * This symbol, if defined, indicates that the getservbyname_r routine - * is available to getservbyname re-entrantly. - */ -/* GETSERVBYNAME_R_PROTO: - * This symbol encodes the prototype of getservbyname_r. - * It is zero if d_getservbyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r - * is defined. - */ -/*#define HAS_GETSERVBYNAME_R /**/ -#define GETSERVBYNAME_R_PROTO 0 /**/ - -/* HAS_GETSERVBYPORT_R: - * This symbol, if defined, indicates that the getservbyport_r routine - * is available to getservbyport re-entrantly. - */ -/* GETSERVBYPORT_R_PROTO: - * This symbol encodes the prototype of getservbyport_r. - * It is zero if d_getservbyport_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r - * is defined. - */ -/*#define HAS_GETSERVBYPORT_R /**/ -#define GETSERVBYPORT_R_PROTO 0 /**/ - -/* HAS_GETSERVENT_R: - * This symbol, if defined, indicates that the getservent_r routine - * is available to getservent re-entrantly. - */ -/* GETSERVENT_R_PROTO: - * This symbol encodes the prototype of getservent_r. - * It is zero if d_getservent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r - * is defined. - */ -/*#define HAS_GETSERVENT_R /**/ -#define GETSERVENT_R_PROTO 0 /**/ - -/* HAS_PTHREAD_ATFORK: - * This symbol, if defined, indicates that the pthread_atfork routine - * is available to setup fork handlers. - */ -/*#define HAS_PTHREAD_ATFORK /**/ - -/* HAS_READDIR64_R: - * This symbol, if defined, indicates that the readdir64_r routine - * is available to readdir64 re-entrantly. - */ -/* READDIR64_R_PROTO: - * This symbol encodes the prototype of readdir64_r. - * It is zero if d_readdir64_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r - * is defined. - */ -/*#define HAS_READDIR64_R /**/ -#define READDIR64_R_PROTO 0 /**/ - -/* HAS_SETHOSTENT_R: - * This symbol, if defined, indicates that the sethostent_r routine - * is available to sethostent re-entrantly. - */ -/* SETHOSTENT_R_PROTO: - * This symbol encodes the prototype of sethostent_r. - * It is zero if d_sethostent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r - * is defined. - */ -/*#define HAS_SETHOSTENT_R /**/ -#define SETHOSTENT_R_PROTO 0 /**/ - -/* HAS_SETLOCALE_R: - * This symbol, if defined, indicates that the setlocale_r routine - * is available to setlocale re-entrantly. - */ -/* SETLOCALE_R_PROTO: - * This symbol encodes the prototype of setlocale_r. - * It is zero if d_setlocale_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r - * is defined. - */ -/*#define HAS_SETLOCALE_R /**/ -#define SETLOCALE_R_PROTO 0 /**/ - -/* HAS_SETNETENT_R: - * This symbol, if defined, indicates that the setnetent_r routine - * is available to setnetent re-entrantly. - */ -/* SETNETENT_R_PROTO: - * This symbol encodes the prototype of setnetent_r. - * It is zero if d_setnetent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r - * is defined. - */ -/*#define HAS_SETNETENT_R /**/ -#define SETNETENT_R_PROTO 0 /**/ - -/* HAS_SETPROTOENT_R: - * This symbol, if defined, indicates that the setprotoent_r routine - * is available to setprotoent re-entrantly. - */ -/* SETPROTOENT_R_PROTO: - * This symbol encodes the prototype of setprotoent_r. - * It is zero if d_setprotoent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r - * is defined. - */ -/*#define HAS_SETPROTOENT_R /**/ -#define SETPROTOENT_R_PROTO 0 /**/ - -/* HAS_SETSERVENT_R: - * This symbol, if defined, indicates that the setservent_r routine - * is available to setservent re-entrantly. - */ -/* SETSERVENT_R_PROTO: - * This symbol encodes the prototype of setservent_r. - * It is zero if d_setservent_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r - * is defined. - */ -/*#define HAS_SETSERVENT_R /**/ -#define SETSERVENT_R_PROTO 0 /**/ - -/* HAS_TTYNAME_R: - * This symbol, if defined, indicates that the ttyname_r routine - * is available to ttyname re-entrantly. - */ -/* TTYNAME_R_PROTO: - * This symbol encodes the prototype of ttyname_r. - * It is zero if d_ttyname_r is undef, and one of the - * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r - * is defined. - */ -/*#define HAS_TTYNAME_R /**/ -#define TTYNAME_R_PROTO 0 /**/ -/* GMTIME_MAX: - * This symbol contains the maximum value for the time_t offset that - * the system function gmtime () accepts, and defaults to 0 - */ -/* GMTIME_MIN: - * This symbol contains the minimum value for the time_t offset that - * the system function gmtime () accepts, and defaults to 0 - */ -/* LOCALTIME_MAX: - * This symbol contains the maximum value for the time_t offset that - * the system function localtime () accepts, and defaults to 0 - */ -/* LOCALTIME_MIN: - * This symbol contains the minimum value for the time_t offset that - * the system function localtime () accepts, and defaults to 0 - */ -#define GMTIME_MAX 2147483647 /**/ -#define GMTIME_MIN 0 /**/ -#define LOCALTIME_MAX 2147483647 /**/ -#define LOCALTIME_MIN 0 /**/ - -#endif diff --git a/win32/include/sys/errno2.h b/win32/include/sys/errno2.h index 3ca85e33ae..09d42c6b82 100644 --- a/win32/include/sys/errno2.h +++ b/win32/include/sys/errno2.h @@ -3,12 +3,7 @@ /* Too late to include winsock2.h if winsock.h has already been loaded */ #ifndef _WINSOCKAPI_ -# if defined(UNDER_CE) && UNDER_CE <= 300 - /* winsock2 only for 4.00+ */ -# include <winsock.h> -# else -# include <winsock2.h> -# endif +# include <winsock2.h> #endif /* Ensure all the Exxx constants required by convert_wsa_error_to_errno() in diff --git a/win32/include/sys/socket.h b/win32/include/sys/socket.h index d658913f8b..301aa29351 100644 --- a/win32/include/sys/socket.h +++ b/win32/include/sys/socket.h @@ -14,47 +14,43 @@ /* Too late to include winsock2.h if winsock.h has already been loaded */ #ifndef _WINSOCKAPI_ -# if defined(UNDER_CE) && UNDER_CE <= 300 - /* winsock2 only for 4.00+ */ -# include <winsock.h> -# else -# include <winsock2.h> - /* We need to include ws2tcpip.h to get the IPv6 definitions. - * It will in turn include wspiapi.h. Later versions of that - * header in the Windows SDK generate C++ template code that - * can't be compiled with VC6 anymore. The _WSPIAPI_COUNTOF - * definition below prevents wspiapi.h from generating this - * incompatible code. +# include <winsock2.h> + /* We need to include ws2tcpip.h to get the IPv6 definitions. + * It will in turn include wspiapi.h. Later versions of that + * header in the Windows SDK generate C++ template code that + * can't be compiled with VC6 anymore. The _WSPIAPI_COUNTOF + * definition below prevents wspiapi.h from generating this + * incompatible code. + */ +# define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0])) +# include <ws2tcpip.h> + +# ifndef SIO_GET_INTERFACE_LIST_EX + +# ifndef MSG_WAITALL +# define MSG_WAITALL 0x8 +# endif + + /* The ws2tcpip.h header included in VC6 doesn't define the + * sin6_scope_id member of sockaddr_in6. We define our own + * version and redefine sockaddr_in6 to point to this one + * instead for compiling e.g. Socket.xs. */ -# define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0])) -# include <ws2tcpip.h> - -# ifndef SIO_GET_INTERFACE_LIST_EX - -# ifndef MSG_WAITALL -# define MSG_WAITALL 0x8 -# endif - - /* The ws2tcpip.h header included in VC6 doesn't define the - * sin6_scope_id member of sockaddr_in6. We define our own - * version and redefine sockaddr_in6 to point to this one - * instead for compiling e.g. Socket.xs. - */ - - struct my_sockaddr_in6 { - short sin6_family; /* AF_INET6 */ - u_short sin6_port; /* Transport level port number */ - u_long sin6_flowinfo; /* IPv6 flow information */ - struct in_addr6 sin6_addr; /* IPv6 address */ - u_long sin6_scope_id; /* set of interfaces for a scope */ - }; -# define sockaddr_in6 my_sockaddr_in6 - - /* Provide implementations of IN6ADDR_SETANY() and IN6ADDR_SETLOOPBACK - * that also initialize the sin6_scope_id field. - */ -# undef IN6ADDR_SETANY -# define IN6ADDR_SETANY(x) {\ + + struct my_sockaddr_in6 { + short sin6_family; /* AF_INET6 */ + u_short sin6_port; /* Transport level port number */ + u_long sin6_flowinfo; /* IPv6 flow information */ + struct in_addr6 sin6_addr; /* IPv6 address */ + u_long sin6_scope_id; /* set of interfaces for a scope */ + }; +# define sockaddr_in6 my_sockaddr_in6 + + /* Provide implementations of IN6ADDR_SETANY() and IN6ADDR_SETLOOPBACK + * that also initialize the sin6_scope_id field. + */ +# undef IN6ADDR_SETANY +# define IN6ADDR_SETANY(x) {\ (x)->sin6_family = AF_INET6; \ (x)->sin6_port = 0; \ (x)->sin6_flowinfo = 0; \ @@ -65,8 +61,8 @@ (x)->sin6_scope_id = 0; \ } -# undef IN6ADDR_SETLOOPBACK -# define IN6ADDR_SETLOOPBACK(x) {\ +# undef IN6ADDR_SETLOOPBACK +# define IN6ADDR_SETLOOPBACK(x) {\ (x)->sin6_family = AF_INET6; \ (x)->sin6_port = 0; \ (x)->sin6_flowinfo = 0; \ @@ -77,98 +73,97 @@ (x)->sin6_scope_id = 0; \ } -# ifndef IPV6_HDRINCL -# define IPV6_HDRINCL 2 -# endif -# ifndef IPV6_UNICAST_HOPS -# define IPV6_UNICAST_HOPS 4 -# endif -# ifndef IPV6_MULTICAST_IF -# define IPV6_MULTICAST_IF 9 -# endif -# ifndef IPV6_MULTICAST_HOPS -# define IPV6_MULTICAST_HOPS 10 -# endif -# ifndef IPV6_MULTICAST_LOOP -# define IPV6_MULTICAST_LOOP 11 -# endif -# ifndef IPV6_ADD_MEMBERSHIP -# define IPV6_ADD_MEMBERSHIP 12 -# endif -# ifndef IPV6_DROP_MEMBERSHIP -# define IPV6_DROP_MEMBERSHIP 13 -# endif -# ifndef IPV6_JOIN_GROUP -# define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP -# endif -# ifndef IPV6_LEAVE_GROUP -# define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP -# endif -# ifndef IPV6_PKTINFO -# define IPV6_PKTINFO 19 -# endif -# ifndef IPV6_HOPLIMIT -# define IPV6_HOPLIMIT 21 -# endif -# ifndef IPV6_PROTECTION_LEVEL -# define IPV6_PROTECTION_LEVEL 23 -# endif - - /* The ws2tcpip.h header included in MinGW includes ipv6_mreq already */ -# ifndef __GNUC__ - typedef struct ipv6_mreq { - struct in_addr6 ipv6mr_multiaddr; - unsigned int ipv6mr_interface; - } IPV6_MREQ; -# endif - -# ifndef EAI_AGAIN -# define EAI_AGAIN WSATRY_AGAIN -# endif -# ifndef EAI_BADFLAGS -# define EAI_BADFLAGS WSAEINVAL -# endif -# ifndef EAI_FAIL -# define EAI_FAIL WSANO_RECOVERY -# endif -# ifndef EAI_FAMILY -# define EAI_FAMILY WSAEAFNOSUPPORT -# endif -# ifndef EAI_MEMORY -# define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY -# endif -# ifndef EAI_NODATA -# define EAI_NODATA WSANO_DATA -# endif -# ifndef EAI_NONAME -# define EAI_NONAME WSAHOST_NOT_FOUND -# endif -# ifndef EAI_SERVICE -# define EAI_SERVICE WSATYPE_NOT_FOUND -# endif -# ifndef EAI_SOCKTYPE -# define EAI_SOCKTYPE WSAESOCKTNOSUPPORT -# endif - -# ifndef NI_NOFQDN -# define NI_NOFQDN 0x01 -# endif -# ifndef NI_NUMERICHOST -# define NI_NUMERICHOST 0x02 -# endif -# ifndef NI_NAMEREQD -# define NI_NAMEREQD 0x04 -# endif -# ifndef NI_NUMERICSERV -# define NI_NUMERICSERV 0x08 -# endif -# ifndef NI_DGRAM -# define NI_DGRAM 0x10 -# endif +# ifndef IPV6_HDRINCL +# define IPV6_HDRINCL 2 +# endif +# ifndef IPV6_UNICAST_HOPS +# define IPV6_UNICAST_HOPS 4 +# endif +# ifndef IPV6_MULTICAST_IF +# define IPV6_MULTICAST_IF 9 +# endif +# ifndef IPV6_MULTICAST_HOPS +# define IPV6_MULTICAST_HOPS 10 +# endif +# ifndef IPV6_MULTICAST_LOOP +# define IPV6_MULTICAST_LOOP 11 +# endif +# ifndef IPV6_ADD_MEMBERSHIP +# define IPV6_ADD_MEMBERSHIP 12 +# endif +# ifndef IPV6_DROP_MEMBERSHIP +# define IPV6_DROP_MEMBERSHIP 13 +# endif +# ifndef IPV6_JOIN_GROUP +# define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP +# endif +# ifndef IPV6_LEAVE_GROUP +# define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP +# endif +# ifndef IPV6_PKTINFO +# define IPV6_PKTINFO 19 +# endif +# ifndef IPV6_HOPLIMIT +# define IPV6_HOPLIMIT 21 +# endif +# ifndef IPV6_PROTECTION_LEVEL +# define IPV6_PROTECTION_LEVEL 23 +# endif + /* The ws2tcpip.h header included in MinGW includes ipv6_mreq already */ +# ifndef __GNUC__ + typedef struct ipv6_mreq { + struct in_addr6 ipv6mr_multiaddr; + unsigned int ipv6mr_interface; + } IPV6_MREQ; +# endif + +# ifndef EAI_AGAIN +# define EAI_AGAIN WSATRY_AGAIN +# endif +# ifndef EAI_BADFLAGS +# define EAI_BADFLAGS WSAEINVAL +# endif +# ifndef EAI_FAIL +# define EAI_FAIL WSANO_RECOVERY +# endif +# ifndef EAI_FAMILY +# define EAI_FAMILY WSAEAFNOSUPPORT +# endif +# ifndef EAI_MEMORY +# define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY +# endif +# ifndef EAI_NODATA +# define EAI_NODATA WSANO_DATA +# endif +# ifndef EAI_NONAME +# define EAI_NONAME WSAHOST_NOT_FOUND +# endif +# ifndef EAI_SERVICE +# define EAI_SERVICE WSATYPE_NOT_FOUND +# endif +# ifndef EAI_SOCKTYPE +# define EAI_SOCKTYPE WSAESOCKTNOSUPPORT +# endif + +# ifndef NI_NOFQDN +# define NI_NOFQDN 0x01 +# endif +# ifndef NI_NUMERICHOST +# define NI_NUMERICHOST 0x02 +# endif +# ifndef NI_NAMEREQD +# define NI_NAMEREQD 0x04 +# endif +# ifndef NI_NUMERICSERV +# define NI_NUMERICSERV 0x08 +# endif +# ifndef NI_DGRAM +# define NI_DGRAM 0x10 # endif # endif + #endif /* Early Platform SDKs have an incorrect definition of EAI_NODATA */ diff --git a/win32/makefile.mk b/win32/makefile.mk index 56136a0634..e3f2d4b995 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1650,7 +1650,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.amiga ..\pod\perlamiga.pod copy ..\README.android ..\pod\perlandroid.pod copy ..\README.bs2000 ..\pod\perlbs2000.pod - copy ..\README.ce ..\pod\perlce.pod copy ..\README.cn ..\pod\perlcn.pod copy ..\README.cygwin ..\pod\perlcygwin.pod copy ..\README.dos ..\pod\perldos.pod @@ -1778,7 +1777,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ perl5311delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ - perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \ + perlapi.pod perlbs2000.pod perlcn.pod perlcygwin.pod \ perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ diff --git a/win32/perl.rc b/win32/perl.rc deleted file mode 100644 index 02507c1317..0000000000 --- a/win32/perl.rc +++ /dev/null @@ -1,36 +0,0 @@ -#include <windows.h> - -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -1 ICON DISCARDABLE "perl.ico" - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 5,6,0,0 - PRODUCTVERSION 5,6,0,0 - FILEFLAGSMASK 0x3FL - FILEFLAGS 0x0L - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "CompanyName", "Paranoyaxc Inc\0" - VALUE "FileDescription", "Perl for WindowsCE\0" - VALUE "FileVersion", "1, 0, 0, 0\0" - VALUE "InternalName", "PerlCE\0" - VALUE "LegalCopyright", "Copyright (C) Larry Wall\0" - VALUE "OriginalFilename", "perl.exe" - VALUE "ProductName", "Perl\0" - VALUE "ProductVersion", "5, 7, 2, 0\0" - VALUE "OLESelfRegister", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/win32/perlhost.h b/win32/perlhost.h index 6dd269efa7..23a85d309f 100644 --- a/win32/perlhost.h +++ b/win32/perlhost.h @@ -7,16 +7,12 @@ * 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" @@ -829,7 +825,6 @@ PerlStdIOGetOSfhandle(struct IPerlStdIO* piPerl, int filenum) FILE* PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf) { -#ifndef UNDER_CE FILE* pfdup; fpos_t pos; char mode[3]; @@ -861,9 +856,6 @@ PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf) fsetpos(pfdup, &pos); } return pfdup; -#else - return 0; -#endif } const struct IPerlStdIO perlStdIO = @@ -2132,10 +2124,6 @@ lookup(const void *arg1, const void *arg2) 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); diff --git a/win32/perllib.c b/win32/perllib.c index 246f67aa1a..755477c63a 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -44,9 +44,6 @@ xs_init(pTHX) #ifdef PERL_IMPLICIT_SYS -/* WINCE: include replaced by: -extern "C" void win32_checkTLS(PerlInterpreter *host_perl); -*/ #include "perlhost.h" void @@ -55,45 +52,10 @@ win32_checkTLS(PerlInterpreter *host_perl) dTHX; if (host_perl != my_perl) { int *nowhere = NULL; -#ifdef UNDER_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, @@ -287,9 +249,7 @@ DllMain(HINSTANCE hModule, /* DLL module handle */ * initialization or a call to LoadLibrary. */ case DLL_PROCESS_ATTACH: -#ifndef UNDER_CE DisableThreadLibraryCalls((HMODULE)hModule); -#endif w32_perldll_handle = hModule; set_w32_module_name(); diff --git a/win32/perlmaince.c b/win32/perlmaince.c deleted file mode 100644 index ced3b86cc0..0000000000 --- a/win32/perlmaince.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Time-stamp: <01/08/01 20:58:19 keuchel@w2k> */ - -#include "EXTERN.h" -#include "perl.h" - -#ifdef __GNUC__ - -/* Mingw32 defaults to globing command line - * This is inconsistent with other Win32 ports and - * seems to cause trouble with passing -DXSVERSION=\"1.6\" - * So we turn it off like this: - */ -int _CRT_glob = 0; - -#endif - -/* Called from w32console/wmain.c */ - -extern int w32console_usefunctionkeys; - -int -main(int argc, char **argv, char **env) -{ - int res; - - if(argc == 1) - XCEShowMessageA("Starting perl with no args is currently\r\n" - "not useful on Windows CE"); - - w32console_usefunctionkeys = 0; /* this allows backspace key to work */ - - res = RunPerl(argc, argv, env); - - if(res != 0) - XCEShowMessageA("Exitcode: %d", res); - - return res; -} - - diff --git a/win32/vmem.h b/win32/vmem.h index c662887bca..3fd7e169fc 100644 --- a/win32/vmem.h +++ b/win32/vmem.h @@ -21,9 +21,7 @@ #ifndef ___VMEM_H_INC___ #define ___VMEM_H_INC___ -#ifndef UNDER_CE #define _USE_MSVCRT_MEM_ALLOC -#endif #define _USE_LINKED_LIST // #define _USE_BUDDY_BLOCKS diff --git a/win32/win32.h b/win32/win32.h index 73aa67a3be..6db4dc0536 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -85,7 +85,7 @@ /* now even GCC supports __declspec() */ /* miniperl has no reason to export anything */ -#if defined(PERL_IS_MINIPERL) && !defined(UNDER_CE) +#if defined(PERL_IS_MINIPERL) # define DllExport #else # if defined(PERLDLL) @@ -265,18 +265,13 @@ struct utsname { #ifdef _MSC_VER /* Microsoft Visual C++ */ -#ifndef UNDER_CE typedef long uid_t; typedef long gid_t; typedef unsigned short mode_t; -#endif #if _MSC_VER < 1800 #define isnan _isnan /* Defined already in VC++ 12.0 */ #endif -#ifdef UNDER_CE /* revisit what function this becomes celib vs corelibc, prv warning here*/ -# undef snprintf -#endif #define snprintf _snprintf #define vsnprintf _vsnprintf @@ -735,17 +730,10 @@ EXTERN_C _CRTIMP ioinfo* __pioinfo[]; DllExport void *win32_signal_context(void); #define PERL_GET_SIG_CONTEXT win32_signal_context() -#ifdef UNDER_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 */ diff --git a/win32/win32ceio.c b/win32/win32ceio.c deleted file mode 100644 index aa916a18fe..0000000000 --- a/win32/win32ceio.c +++ /dev/null @@ -1,379 +0,0 @@ -#define PERL_NO_GET_CONTEXT -#define WIN32_LEAN_AND_MEAN -#define WIN32IO_IS_STDIO -#include <tchar.h> -#ifdef __GNUC__ -#define Win32_Winsock -#endif -#include <windows.h> -#include <cewin32.h> - -#include <sys/stat.h> -#include "EXTERN.h" -#include "perl.h" - -#ifdef PERLIO_LAYERS - -#include "perliol.h" - -#define NO_XSLOCKS -#include "XSUB.h" - - -/* Bottom-most level for Win32 case */ - -typedef struct -{ - struct _PerlIO base; /* The generic part */ - HANDLE h; /* OS level handle */ - IV refcnt; /* REFCNT for the "fd" this represents */ - int fd; /* UNIX like file descriptor - index into fdtable */ -} PerlIOWin32; - -PerlIOWin32 *fdtable[256]; -IV max_open_fd = -1; - -IV -PerlIOWin32_popped(pTHX_ PerlIO *f) -{ - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - if (--s->refcnt > 0) - { - *f = PerlIOBase(f)->next; - return 1; - } - fdtable[s->fd] = NULL; - return 0; -} - -IV -PerlIOWin32_fileno(pTHX_ PerlIO *f) -{ - return PerlIOSelf(f,PerlIOWin32)->fd; -} - -IV -PerlIOWin32_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) -{ - IV code = PerlIOBase_pushed(aTHX_ f,mode,arg,tab); - if (*PerlIONext(f)) - { - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - s->fd = PerlIO_fileno(PerlIONext(f)); - } - PerlIOBase(f)->flags |= PERLIO_F_OPEN; - return code; -} - -PerlIO * -PerlIOWin32_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, IV n, const char *mode, int fd, int imode, int perm, PerlIO *f, int narg, SV **args) -{ - const char *tmode = mode; - HANDLE h = INVALID_HANDLE_VALUE; - if (f) - { - /* Close if already open */ - if (PerlIOBase(f)->flags & PERLIO_F_OPEN) - (*PerlIOBase(f)->tab->Close)(aTHX_ f); - } - if (narg > 0) - { - char *path = SvPV_nolen(*args); - DWORD access = 0; - DWORD share = 0; - DWORD create = -1; - DWORD attr = FILE_ATTRIBUTE_NORMAL; - if (*mode == '#') - { - /* sysopen - imode is UNIX-like O_RDONLY etc. - - do_open has converted that back to string form in mode as well - - perm is UNIX like permissions - */ - mode++; - } - else - { - /* Normal open - decode mode string */ - } - switch(*mode) - { - case 'r': - access = GENERIC_READ; - create = OPEN_EXISTING; - if (*++mode == '+') - { - access |= GENERIC_WRITE; - create = OPEN_ALWAYS; - mode++; - } - break; - - case 'w': - access = GENERIC_WRITE; - create = TRUNCATE_EXISTING; - if (*++mode == '+') - { - access |= GENERIC_READ; - mode++; - } - break; - - case 'a': - access = GENERIC_WRITE; - create = OPEN_ALWAYS; - if (*++mode == '+') - { - access |= GENERIC_READ; - mode++; - } - break; - } - if (*mode == 'b') - { - mode++; - } - else if (*mode == 't') - { - mode++; - } - if (*mode || create == -1) - { - //FIX-ME: SETERRNO(EINVAL,LIB$_INVARG); - XCEMessageBoxA(NULL, "NEED TO IMPLEMENT a place in ../wince/win32io.c", "Perl(developer)", 0); - return NULL; - } - if (!(access & GENERIC_WRITE)) - share = FILE_SHARE_READ; - h = CreateFileW(path,access,share,NULL,create,attr,NULL); - if (h == INVALID_HANDLE_VALUE) - { - if (create == TRUNCATE_EXISTING) - h = CreateFileW(path,access,share,NULL,(create = OPEN_ALWAYS),attr,NULL); - } - } - else - { - /* fd open */ - h = INVALID_HANDLE_VALUE; - if (fd >= 0 && fd <= max_open_fd) - { - PerlIOWin32 *s = fdtable[fd]; - if (s) - { - s->refcnt++; - if (!f) - f = PerlIO_allocate(aTHX); - *f = &s->base; - return f; - } - } - if (*mode == 'I') - { - mode++; - switch(fd) - { - case 0: - h = XCEGetStdHandle(STD_INPUT_HANDLE); - break; - case 1: - h = XCEGetStdHandle(STD_OUTPUT_HANDLE); - break; - case 2: - h = XCEGetStdHandle(STD_ERROR_HANDLE); - break; - } - } - } - if (h != INVALID_HANDLE_VALUE) - fd = win32_open_osfhandle((intptr_t) h, PerlIOUnix_oflags(tmode)); - if (fd >= 0) - { - PerlIOWin32 *s; - if (!f) - f = PerlIO_allocate(aTHX); - s = PerlIOSelf(PerlIO_push(aTHX_ f,self,tmode,PerlIOArg),PerlIOWin32); - s->h = h; - s->fd = fd; - s->refcnt = 1; - if (fd >= 0) - { - fdtable[fd] = s; - if (fd > max_open_fd) - max_open_fd = fd; - } - return f; - } - if (f) - { - /* FIXME: pop layers ??? */ - } - return NULL; -} - -SSize_t -PerlIOWin32_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) -{ - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - DWORD len; - if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD)) - return 0; - if (ReadFile(s->h,vbuf,count,&len,NULL)) - { - return len; - } - else - { - if (GetLastError() != NO_ERROR) - { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - PerlIO_save_errno(f); - return -1; - } - else - { - if (count != 0) - PerlIOBase(f)->flags |= PERLIO_F_EOF; - return 0; - } - } -} - -SSize_t -PerlIOWin32_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) -{ - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - DWORD len; - if (WriteFile(s->h,vbuf,count,&len,NULL)) - { - return len; - } - else - { - PerlIOBase(f)->flags |= PERLIO_F_ERROR; - PerlIO_save_errno(f); - return -1; - } -} - -IV -PerlIOWin32_seek(pTHX_ PerlIO *f, Off_t offset, int whence) -{ - static const DWORD where[3] = { FILE_BEGIN, FILE_CURRENT, FILE_END }; - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - DWORD high = (sizeof(offset) > sizeof(DWORD)) ? (DWORD)(offset >> 32) : 0; - DWORD low = (DWORD) offset; - DWORD res = SetFilePointer(s->h,low,&high,where[whence]); - if (res != 0xFFFFFFFF || GetLastError() != NO_ERROR) - { - return 0; - } - else - { - return -1; - } -} - -Off_t -PerlIOWin32_tell(pTHX_ PerlIO *f) -{ - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - DWORD high = 0; - DWORD res = SetFilePointer(s->h,0,&high,FILE_CURRENT); - if (res != 0xFFFFFFFF || GetLastError() != NO_ERROR) - { - return ((Off_t) high << 32) | res; - } - return (Off_t) -1; -} - -IV -PerlIOWin32_close(pTHX_ PerlIO *f) -{ - PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32); - if (s->refcnt == 1) - { - IV code = 0; -#if 0 - /* This does not do pipes etc. correctly */ - if (!CloseHandle(s->h)) - { - s->h = INVALID_HANDLE_VALUE; - return -1; - } -#else - PerlIOBase(f)->flags &= ~PERLIO_F_OPEN; - return win32_close(s->fd); -#endif - } - return 0; -} - -PerlIO * -PerlIOWin32_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *params, int flags) -{ - PerlIOWin32 *os = PerlIOSelf(f,PerlIOWin32); - HANDLE proc = GetCurrentProcess(); - HANDLE new; - if (DuplicateHandle(proc, os->h, proc, &new, 0, FALSE, DUPLICATE_SAME_ACCESS)) - { - char mode[8]; - int fd = win32_open_osfhandle((intptr_t) new, PerlIOUnix_oflags(PerlIO_modestr(o,mode))); - if (fd >= 0) - { - f = PerlIOBase_dup(aTHX_ f, o, params, flags); - if (f) - { - PerlIOWin32 *fs = PerlIOSelf(f,PerlIOWin32); - fs->h = new; - fs->fd = fd; - fs->refcnt = 1; - fdtable[fd] = fs; - if (fd > max_open_fd) - max_open_fd = fd; - } - else - { - win32_close(fd); - } - } - else - { - CloseHandle(new); - } - } - return f; -} - -PerlIO_funcs PerlIO_win32 = { - sizeof(PerlIO_funcs), - "win32", - sizeof(PerlIOWin32), - PERLIO_K_RAW, - PerlIOWin32_pushed, - PerlIOWin32_popped, - PerlIOWin32_open, - PerlIOBase_binmode, - NULL, /* getarg */ - PerlIOWin32_fileno, - PerlIOWin32_dup, - PerlIOWin32_read, - PerlIOBase_unread, - PerlIOWin32_write, - PerlIOWin32_seek, - PerlIOWin32_tell, - PerlIOWin32_close, - PerlIOBase_noop_ok, /* flush */ - PerlIOBase_noop_fail, /* fill */ - PerlIOBase_eof, - PerlIOBase_error, - PerlIOBase_clearerr, - PerlIOBase_setlinebuf, - NULL, /* get_base */ - NULL, /* get_bufsiz */ - NULL, /* get_ptr */ - NULL, /* get_cnt */ - NULL, /* set_ptrcnt */ -}; - -#endif - diff --git a/win32/win32iop-o.h b/win32/win32iop-o.h deleted file mode 100644 index 2b766dc554..0000000000 --- a/win32/win32iop-o.h +++ /dev/null @@ -1,327 +0,0 @@ -/* Time-stamp: <01/08/01 21:00:16 keuchel@w2k> */ - -#ifndef WIN32IOP_H -#define WIN32IOP_H - -#ifndef START_EXTERN_C -#ifdef __cplusplus -# define START_EXTERN_C extern "C" { -# define END_EXTERN_C } -# define EXTERN_C extern "C" -#else -# define START_EXTERN_C -# define END_EXTERN_C -# define EXTERN_C -#endif -#endif - -#ifndef UNDER_CE -#include <sys/utime.h> -#endif - -/* - * defines for flock emulation - */ -#define LOCK_SH 1 -#define LOCK_EX 2 -#define LOCK_NB 4 -#define LOCK_UN 8 - -/* - * Make this as close to original stdio as possible. - */ - -/* - * function prototypes for our own win32io layer - */ -START_EXTERN_C - -DllExport int * win32_errno(void); -DllExport char *** win32_environ(void); -DllExport FILE* win32_stdin(void); -DllExport FILE* win32_stdout(void); -DllExport FILE* win32_stderr(void); -DllExport int win32_ferror(FILE *fp); -DllExport int win32_feof(FILE *fp); -DllExport char* win32_strerror(int e); - -DllExport int win32_fprintf(FILE *pf, const char *format, ...); -DllExport int win32_printf(const char *format, ...); -DllExport int win32_vfprintf(FILE *pf, const char *format, va_list arg); -DllExport int win32_vprintf(const char *format, va_list arg); -DllExport size_t win32_fread(void *buf, size_t size, size_t count, FILE *pf); -DllExport size_t win32_fwrite(const void *buf, size_t size, size_t count, FILE *pf); -DllExport FILE* win32_fopen(const char *path, const char *mode); -DllExport FILE* win32_fdopen(int fh, const char *mode); -DllExport FILE* win32_freopen(const char *path, const char *mode, FILE *pf); -DllExport int win32_fclose(FILE *pf); -DllExport int win32_fputs(const char *s,FILE *pf); -DllExport int win32_fputc(int c,FILE *pf); -DllExport int win32_ungetc(int c,FILE *pf); -DllExport int win32_getc(FILE *pf); -DllExport int win32_fileno(FILE *pf); -DllExport void win32_clearerr(FILE *pf); -DllExport int win32_fflush(FILE *pf); -DllExport long win32_ftell(FILE *pf); -DllExport int win32_fseek(FILE *pf,long offset,int origin); -DllExport int win32_fgetpos(FILE *pf,fpos_t *p); -DllExport int win32_fsetpos(FILE *pf,const fpos_t *p); -DllExport void win32_rewind(FILE *pf); -DllExport FILE* win32_tmpfile(void); -DllExport int win32_tmpfd(void); -DllExport void win32_abort(void); -DllExport int win32_fstat(int fd,struct stat *sbufptr); -DllExport int win32_stat(const char *name,struct stat *sbufptr); -DllExport int win32_pipe( int *phandles, unsigned int psize, int textmode ); -DllExport PerlIO* win32_popen( const char *command, const char *mode ); -DllExport PerlIO* win32_popenlist(const char *mode, IV narg, SV **args); -DllExport int win32_pclose( FILE *pf); -DllExport int win32_rename( const char *oname, const char *newname); -DllExport int win32_setmode( int fd, int mode); -DllExport int win32_chsize(int fd, Off_t size); -DllExport long win32_lseek( int fd, long offset, int origin); -DllExport long win32_tell( int fd); -DllExport int win32_dup( int fd); -DllExport int win32_dup2(int h1, int h2); -DllExport int win32_open(const char *path, int oflag,...); -DllExport int win32_close(int fd); -DllExport int win32_eof(int fd); -DllExport int win32_read(int fd, void *buf, unsigned int cnt); -DllExport int win32_write(int fd, const void *buf, unsigned int cnt); -DllExport int win32_spawnvp(int mode, const char *cmdname, - const char *const *argv); -DllExport int win32_mkdir(const char *dir, int mode); -DllExport int win32_rmdir(const char *dir); -DllExport int win32_chdir(const char *dir); -DllExport int win32_flock(int fd, int oper); -DllExport int win32_execv(const char *cmdname, const char *const *argv); -DllExport int win32_execvp(const char *cmdname, const char *const *argv); -DllExport void win32_perror(const char *str); -DllExport void win32_setbuf(FILE *pf, char *buf); -DllExport int win32_setvbuf(FILE *pf, char *buf, int type, size_t size); -DllExport int win32_flushall(void); -DllExport int win32_fcloseall(void); -DllExport char* win32_fgets(char *s, int n, FILE *pf); -DllExport char* win32_gets(char *s); -DllExport int win32_fgetc(FILE *pf); -DllExport int win32_putc(int c, FILE *pf); -DllExport int win32_puts(const char *s); -DllExport int win32_getchar(void); -DllExport int win32_putchar(int c); -DllExport void* win32_malloc(size_t size); -DllExport void* win32_calloc(size_t numitems, size_t size); -DllExport void* win32_realloc(void *block, size_t size); -DllExport void win32_free(void *block); - -DllExport int win32_open_osfhandle(long handle, int flags); -DllExport long win32_get_osfhandle(int fd); - -DllExport DIR* win32_opendir(char *filename); -DllExport struct direct* win32_readdir(DIR *dirp); -DllExport long win32_telldir(DIR *dirp); -DllExport void win32_seekdir(DIR *dirp, long loc); -DllExport void win32_rewinddir(DIR *dirp); -DllExport int win32_closedir(DIR *dirp); - -DllExport char* win32_getenv(const char *name); -DllExport int win32_putenv(const char *name); - -DllExport unsigned win32_sleep(unsigned int); -DllExport int win32_times(struct tms *timebuf); -DllExport unsigned win32_alarm(unsigned int sec); -DllExport int win32_stat(const char *path, struct stat *buf); -DllExport char* win32_longpath(char *path); -DllExport int win32_ioctl(int i, unsigned int u, char *data); -DllExport int win32_link(const char *oldname, const char *newname); -DllExport int win32_gettimeofday(struct timeval *tp, void *not_used); -DllExport int win32_unlink(const char *f); -DllExport int win32_utime(const char *f, struct utimbuf *t); -DllExport int win32_uname(struct utsname *n); -DllExport int win32_wait(int *status); -DllExport int win32_waitpid(int pid, int *status, int flags); -DllExport int win32_kill(int pid, int sig); -DllExport unsigned long win32_os_id(void); -DllExport void* win32_dynaload(const char*filename); -DllExport int win32_access(const char *path, int mode); -DllExport int win32_chmod(const char *path, int mode); -DllExport int win32_getpid(void); -DllExport Sighandler_t win32_signal(int sig, Sighandler_t subcode); - -DllExport char * win32_crypt(const char *txt, const char *salt); - -END_EXTERN_C - -/* - * the following six(6) is #define in stdio.h - */ -#ifndef WIN32IO_IS_STDIO -#undef errno -#undef environ -#undef stderr -#undef stdin -#undef stdout -#undef ferror -#undef feof -#undef fclose -#undef pipe -#undef pause -#undef sleep -#undef times -#undef alarm -#undef ioctl -#undef unlink -#undef utime -#undef uname -#undef wait - -#define stderr win32_stderr() -#define stdout win32_stdout() -#define stdin win32_stdin() -#define feof(f) win32_feof(f) -#define ferror(f) win32_ferror(f) -#define errno (*win32_errno()) -#define environ (*win32_environ()) -#define strerror win32_strerror - -/* - * redirect to our own version - */ -#undef fprintf -#define fprintf win32_fprintf -#undef vfprintf -#define vfprintf win32_vfprintf -#undef printf -#define printf win32_printf -#undef vprintf -#define vprintf win32_vprintf -#undef fread -#define fread(buf,size,count,f) win32_fread(buf,size,count,f) -#undef fwrite -#define fwrite(buf,size,count,f) win32_fwrite(buf,size,count,f) -#undef fopen -#define fopen win32_fopen -#undef fdopen -#define fdopen win32_fdopen -#undef freopen -#define freopen win32_freopen -#define fclose(f) win32_fclose(f) -#undef fputs -#define fputs(s,f) win32_fputs(s,f) -#undef fputc -#define fputc(c,f) win32_fputc(c,f) -#undef ungetc -#define ungetc(c,f) win32_ungetc(c,f) -#undef getc -#define getc(f) win32_getc(f) -#undef fileno -#define fileno(f) win32_fileno(f) -#undef clearerr -#define clearerr(f) win32_clearerr(f) -#undef fflush -#define fflush(f) win32_fflush(f) -#undef ftell -#define ftell(f) win32_ftell(f) -#undef fseek -#define fseek(f,o,w) win32_fseek(f,o,w) -#undef fgetpos -#define fgetpos(f,p) win32_fgetpos(f,p) -#undef fsetpos -#define fsetpos(f,p) win32_fsetpos(f,p) -#undef rewind -#define rewind(f) win32_rewind(f) -#define tmpfile() win32_tmpfile() -#define abort() win32_abort() -#define fstat(fd,bufptr) win32_fstat(fd,bufptr) -#define stat(pth,bufptr) win32_stat(pth,bufptr) -#define longpath(pth) win32_longpath(pth) -#define rename(old,new) win32_rename(old,new) -#define setmode(fd,mode) win32_setmode(fd,mode) -#define lseek(fd,offset,orig) win32_lseek(fd,offset,orig) -#define tell(fd) win32_tell(fd) -#define dup(fd) win32_dup(fd) -#define dup2(fd1,fd2) win32_dup2(fd1,fd2) -#define open win32_open -#define close(fd) win32_close(fd) -#define eof(fd) win32_eof(fd) -#define read(fd,b,s) win32_read(fd,b,s) -#define write(fd,b,s) win32_write(fd,b,s) -#define _open_osfhandle win32_open_osfhandle -#define _get_osfhandle win32_get_osfhandle -#define spawnvp win32_spawnvp -#define mkdir win32_mkdir -#define rmdir win32_rmdir -#define chdir win32_chdir -#define flock(fd,o) win32_flock(fd,o) -#define execv win32_execv -#define execvp win32_execvp -#define perror win32_perror -#define setbuf win32_setbuf -#undef setvbuf -#define setvbuf win32_setvbuf -#undef flushall -#define flushall win32_flushall -#undef fcloseall -#define fcloseall win32_fcloseall -#undef fgets -#define fgets win32_fgets -#undef gets -#define gets win32_gets -#undef fgetc -#define fgetc win32_fgetc -#undef putc -#define putc win32_putc -#undef puts -#define puts win32_puts -#undef getchar -#define getchar win32_getchar -#undef putchar -#define putchar win32_putchar -#define access(p,m) win32_access(p,m) -#define chmod(p,m) win32_chmod(p,m) - - -#if !defined(MYMALLOC) || !defined(PERL_CORE) -#undef malloc -#undef calloc -#undef realloc -#undef free -#define malloc win32_malloc -#define calloc win32_calloc -#define realloc win32_realloc -#define free win32_free -#endif - -#define pipe(fd) win32_pipe((fd), 512, O_BINARY) -#define pause() win32_sleep((32767L << 16) + 32767) -#define sleep win32_sleep -#define times win32_times -#define alarm win32_alarm -#define ioctl win32_ioctl -#define link win32_link -#define unlink win32_unlink -#define utime win32_utime -#define uname win32_uname -#define wait win32_wait -#define waitpid win32_waitpid -#define kill win32_kill - -#define opendir win32_opendir -#define readdir win32_readdir -#define telldir win32_telldir -#define seekdir win32_seekdir -#define rewinddir win32_rewinddir -#define closedir win32_closedir -#define os_id win32_os_id -#define getpid win32_getpid - -#undef crypt -#define crypt(t,s) win32_crypt(t,s) - -#undef getenv -#define getenv win32_getenv -#undef putenv -#define putenv win32_putenv - -#endif /* WIN32IO_IS_STDIO */ -#endif /* WIN32IOP_H */ - diff --git a/win32/win32iop.h b/win32/win32iop.h index a9235d3595..53330e5951 100644 --- a/win32/win32iop.h +++ b/win32/win32iop.h @@ -207,210 +207,81 @@ END_EXTERN_C */ #undef fprintf #define fprintf win32_fprintf -#ifdef UNDER_CE /* celib also makes these be macros to celib's x* symbols */ -# undef vfprintf -#endif #define vfprintf win32_vfprintf -#ifdef UNDER_CE -# undef printf -#endif #define printf win32_printf -#ifdef UNDER_CE -# undef vprintf -#endif #define vprintf win32_vprintf -#ifdef UNDER_CE -# undef fread -#endif #define fread(buf,size,count,f) win32_fread(buf,size,count,f) -#ifdef UNDER_CE -# undef fwrite -#endif #define fwrite(buf,size,count,f) win32_fwrite(buf,size,count,f) -#ifdef UNDER_CE -# undef fopen -#endif #define fopen win32_fopen #undef fdopen #define fdopen win32_fdopen -#ifdef UNDER_CE -# undef freopen -#endif #define freopen win32_freopen #define fclose(f) win32_fclose(f) -#ifdef UNDER_CE -# undef fputs -#endif #define fputs(s,f) win32_fputs(s,f) -#ifdef UNDER_CE -# undef fputc -#endif #define fputc(c,f) win32_fputc(c,f) -#ifdef UNDER_CE -# undef ungetc -#endif #define ungetc(c,f) win32_ungetc(c,f) #undef getc #define getc(f) win32_getc(f) -#ifdef UNDER_CE -# undef fileno -#endif #define fileno(f) win32_fileno(f) -#ifdef UNDER_CE -# undef clearerr -#endif #define clearerr(f) win32_clearerr(f) -#ifdef UNDER_CE -# undef fflush -#endif #define fflush(f) win32_fflush(f) -#ifdef UNDER_CE -# undef ftell -#endif #define ftell(f) win32_ftell(f) -#ifdef UNDER_CE -# undef fseek -#endif #define fseek(f,o,w) win32_fseek(f,o,w) -#ifdef UNDER_CE -# undef fgetpos -#endif #define fgetpos(f,p) win32_fgetpos(f,p) -#ifdef UNDER_CE -# undef fsetpos -#endif #define fsetpos(f,p) win32_fsetpos(f,p) -#ifdef UNDER_CE -# undef rewind -#endif #define rewind(f) win32_rewind(f) #define tmpfile() win32_tmpfile() -#ifdef UNDER_CE -# undef abort -#endif #define abort() win32_abort() -#if defined(UNDER_CE) || defined(__MINGW32__) +#ifdef __MINGW32__ # undef fstat #endif #define fstat(fd,bufptr) win32_fstat(fd,bufptr) -#if defined(UNDER_CE) || defined(__MINGW32__) +#ifdef __MINGW32__ # undef stat #endif #define stat(pth,bufptr) win32_stat(pth,bufptr) #define longpath(pth) win32_longpath(pth) #define ansipath(pth) win32_ansipath(pth) -#ifdef UNDER_CE -# undef rename -#endif #define rename(old,new) win32_rename(old,new) -#ifdef UNDER_CE -# undef setmode -#endif #define setmode(fd,mode) win32_setmode(fd,mode) #define chsize(fd,sz) win32_chsize(fd,sz) -#ifdef UNDER_CE -# undef lseek -#endif #define lseek(fd,offset,orig) win32_lseek(fd,offset,orig) #define tell(fd) win32_tell(fd) -#ifdef UNDER_CE -# undef dup -#endif #define dup(fd) win32_dup(fd) -#ifdef UNDER_CE -# undef dup2 -#endif #define dup2(fd1,fd2) win32_dup2(fd1,fd2) -#ifdef UNDER_CE -# undef open -#endif #define open win32_open -#ifdef UNDER_CE -# undef close -#endif #define close(fd) win32_close(fd) #define eof(fd) win32_eof(fd) -#ifdef UNDER_CE -# undef isatty -#endif #define isatty(fd) win32_isatty(fd) -#ifdef UNDER_CE -# undef read -#endif #define read(fd,b,s) win32_read(fd,b,s) -#ifdef UNDER_CE -# undef write -#endif #define write(fd,b,s) win32_write(fd,b,s) #define _open_osfhandle win32_open_osfhandle -#ifdef UNDER_CE -# undef _get_osfhandle -#endif #define _get_osfhandle win32_get_osfhandle #define spawnvp win32_spawnvp -#ifdef UNDER_CE -# undef mkdir -#endif #define mkdir win32_mkdir -#ifdef UNDER_CE -# undef rmdir -#endif #define rmdir win32_rmdir -#ifdef UNDER_CE -# undef chdir -#endif #define chdir win32_chdir #define flock(fd,o) win32_flock(fd,o) -#ifdef UNDER_CE -# undef execv -#endif #define execv win32_execv -#ifdef UNDER_CE -# undef execvp -#endif #define execvp win32_execvp -#ifdef UNDER_CE -# undef perror -#endif #define perror win32_perror #define setbuf win32_setbuf -#ifdef UNDER_CE -# undef setvbuf -#endif #define setvbuf win32_setvbuf #undef flushall #define flushall win32_flushall #undef fcloseall #define fcloseall win32_fcloseall -#ifdef UNDER_CE -# undef fgets -#endif #define fgets win32_fgets -#ifdef UNDER_CE -# undef gets -#endif #define gets win32_gets -#ifdef UNDER_CE -# undef fgetc -#endif #define fgetc win32_fgetc #undef putc #define putc win32_putc -#ifdef UNDER_CE -# undef puts -#endif #define puts win32_puts #undef getchar #define getchar win32_getchar #undef putchar #define putchar win32_putchar -#ifdef UNDER_CE -# undef access -#endif #define access(p,m) win32_access(p,m) -#ifdef UNDER_CE -# undef chmod -#endif #define chmod(p,m) win32_chmod(p,m) @@ -437,42 +308,21 @@ END_EXTERN_C #define link win32_link #define unlink win32_unlink #define utime win32_utime -#ifdef UNDER_CE -# undef gettimeofday -#endif #define gettimeofday win32_gettimeofday #define uname win32_uname #define wait win32_wait #define waitpid win32_waitpid -#ifdef UNDER_CE -# undef kill -#endif #define kill win32_kill -#ifdef UNDER_CE -# undef killpg -#endif #define killpg(pid, sig) win32_kill(pid, -(sig)) -#ifdef UNDER_CE -# undef opendir -#endif #define opendir win32_opendir -#ifdef UNDER_CE -# undef readdir -#endif #define readdir win32_readdir #define telldir win32_telldir #define seekdir win32_seekdir #define rewinddir win32_rewinddir -#ifdef UNDER_CE -# undef closedir -#endif #define closedir win32_closedir #define os_id win32_os_id -#ifdef UNDER_CE -# undef getpid -#endif #define getpid win32_getpid #undef crypt diff --git a/win32/wince.c b/win32/wince.c deleted file mode 100644 index 0758595240..0000000000 --- a/win32/wince.c +++ /dev/null @@ -1,2877 +0,0 @@ -/* WINCE.C - stuff for Windows CE - * - * Time-stamp: <26/10/01 15:25:20 keuchel@keuchelnt> - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file. - */ - -#define WIN32_LEAN_AND_MEAN -#define WIN32IO_IS_STDIO -#include <windows.h> -#include <signal.h> - -#define PERLIO_NOT_STDIO 0 - -#define PerlIO FILE - -#define wince_private -#include "errno.h" - -#include "EXTERN.h" -#include "perl.h" - -#define NO_XSLOCKS -#define PERL_NO_GET_CONTEXT -#include "XSUB.h" - -#include "win32iop.h" -#include <string.h> -#include <stdarg.h> -#include <float.h> -#include <shellapi.h> -#include <process.h> - -#define perl -#include "celib_defs.h" -#include "cewin32.h" -#include "cecrt.h" -#include "cewin32_defs.h" -#include "cecrt_defs.h" - -#define GetCurrentDirectoryW XCEGetCurrentDirectoryW - -#ifdef PALM_SIZE -#include "stdio-palmsize.h" -#endif - -#define EXECF_EXEC 1 -#define EXECF_SPAWN 2 -#define EXECF_SPAWN_NOWAIT 3 - -#if defined(PERL_IMPLICIT_SYS) -# undef do_spawn -# define do_spawn g_do_spawn -# undef getlogin -# define getlogin g_getlogin -#endif - -static void get_shell(void); -static long tokenize(const char *str, char **dest, char ***destv); -static int do_spawn2(pTHX_ char *cmd, int exectype); -static BOOL has_shell_metachars(char *ptr); -static long filetime_to_clock(PFILETIME ft); -static BOOL filetime_from_time(PFILETIME ft, time_t t); -static char * get_emd_part(SV **leading, STRLEN *const len, - char *trailing, ...); -static void remove_dead_process(long deceased); -static long find_pid(pTHX_ int pid); -static char * qualified_path(const char *cmd); -static char * win32_get_xlib(const char *pl, const char *xlib, - const char *libname, STRLEN *const len); - -#ifdef USE_ITHREADS -static void remove_dead_pseudo_process(long child); -static long find_pseudo_pid(pTHX_ int pid); -#endif - -int _fmode = O_TEXT; /* celib do not provide _fmode, so we define it here */ - -START_EXTERN_C -HANDLE w32_perldll_handle = INVALID_HANDLE_VALUE; -char w32_module_name[MAX_PATH+1]; -END_EXTERN_C - -static DWORD w32_platform = (DWORD)-1; - -int -IsWin95(void) -{ - return (win32_os_id() == VER_PLATFORM_WIN32_WINDOWS); -} - -int -IsWinNT(void) -{ - return (win32_os_id() == VER_PLATFORM_WIN32_NT); -} - -int -IsWinCE(void) -{ - return (win32_os_id() == VER_PLATFORM_WIN32_CE); -} - -EXTERN_C void -set_w32_module_name(void) -{ - char* ptr; - XCEGetModuleFileNameA((HMODULE)((w32_perldll_handle == INVALID_HANDLE_VALUE) - ? XCEGetModuleHandleA(NULL) - : w32_perldll_handle), - w32_module_name, sizeof(w32_module_name)); - - /* normalize to forward slashes */ - ptr = w32_module_name; - while (*ptr) { - if (*ptr == '\\') - *ptr = '/'; - ++ptr; - } -} - -/* *svp (if non-NULL) is expected to be POK (valid allocated SvPVX(*svp)) */ -static char* -get_regstr_from(HKEY hkey, const char *valuename, SV **svp) -{ - /* Retrieve a REG_SZ or REG_EXPAND_SZ from the registry */ - HKEY handle; - DWORD type; - const char *subkey = "Software\\Perl"; - char *str = NULL; - long retval; - - retval = XCERegOpenKeyExA(hkey, subkey, 0, KEY_READ, &handle); - if (retval == ERROR_SUCCESS) { - DWORD datalen; - retval = XCERegQueryValueExA(handle, valuename, 0, &type, NULL, &datalen); - if (retval == ERROR_SUCCESS && type == REG_SZ) { - dTHX; - if (!*svp) - *svp = sv_2mortal(newSVpvs("")); - SvGROW(*svp, datalen); - retval = XCERegQueryValueExA(handle, valuename, 0, NULL, - (PBYTE)SvPVX(*svp), &datalen); - if (retval == ERROR_SUCCESS) { - str = SvPVX(*svp); - SvCUR_set(*svp,datalen-1); - } - } - RegCloseKey(handle); - } - return str; -} - -/* *svp (if non-NULL) is expected to be POK (valid allocated SvPVX(*svp)) */ -static char* -get_regstr(const char *valuename, SV **svp) -{ - char *str = get_regstr_from(HKEY_CURRENT_USER, valuename, svp); - if (!str) - str = get_regstr_from(HKEY_LOCAL_MACHINE, valuename, svp); - return str; -} - -/* *prev_pathp (if non-NULL) is expected to be POK (valid allocated SvPVX(sv)) */ -static char * -get_emd_part(SV **prev_pathp, STRLEN *const len, char *trailing_path, ...) -{ - char base[10]; - va_list ap; - char mod_name[MAX_PATH+1]; - char *ptr; - char *optr; - char *strip; - int oldsize, newsize; - STRLEN baselen; - - va_start(ap, trailing_path); - strip = va_arg(ap, char *); - - sprintf(base, "%d.%d", (int)PERL_REVISION, (int)PERL_VERSION); - baselen = strlen(base); - - if (!*w32_module_name) { - set_w32_module_name(); - } - strcpy(mod_name, w32_module_name); - ptr = strrchr(mod_name, '/'); - while (ptr && strip) { - /* look for directories to skip back */ - optr = ptr; - *ptr = '\0'; - ptr = strrchr(mod_name, '/'); - /* avoid stripping component if there is no slash, - * or it doesn't match ... */ - if (!ptr || stricmp(ptr+1, strip) != 0) { - /* ... but not if component matches m|5\.$patchlevel.*| */ - if (!ptr || !(*strip == '5' && *(ptr+1) == '5' - && strnEQ(strip, base, baselen) - && strnEQ(ptr+1, base, baselen))) - { - *optr = '/'; - ptr = optr; - } - } - strip = va_arg(ap, char *); - } - if (!ptr) { - ptr = mod_name; - *ptr++ = '.'; - *ptr = '/'; - } - va_end(ap); - strcpy(++ptr, trailing_path); - - /* only add directory if it exists */ - if (XCEGetFileAttributesA(mod_name) != (DWORD) -1) { - /* directory exists */ - dTHX; - if (!*prev_pathp) - *prev_pathp = sv_2mortal(newSVpvs("")); - sv_catpvs(*prev_pathp, ";"); - sv_catpv(*prev_pathp, mod_name); - if(len) - *len = SvCUR(*prev_pathp); - return SvPVX(*prev_pathp); - } - - return NULL; -} - -char * -win32_get_privlib(WIN32_NO_REGISTRY_M_(const char *pl) STRLEN *const len) -{ - dTHX; - char *stdlib = "lib"; - char buffer[MAX_PATH+1]; - SV *sv = NULL; - - /* $stdlib = $HKCU{"lib-$]"} || $HKLM{"lib-$]"} || $HKCU{"lib"} || $HKLM{"lib"} || ""; */ - sprintf(buffer, "%s-%s", stdlib, pl); - if (!get_regstr(buffer, &sv)) - (void)get_regstr(stdlib, &sv); - - /* $stdlib .= ";$EMD/../../lib" */ - return get_emd_part(&sv, len, stdlib, ARCHNAME, "bin", NULL); -} - -static char * -win32_get_xlib(const char *pl, const char *xlib, const char *libname, - STRLEN *const len) -{ - dTHX; - char regstr[40]; - char pathstr[MAX_PATH+1]; - SV *sv1 = NULL; - SV *sv2 = NULL; - - /* $HKCU{"$xlib-$]"} || $HKLM{"$xlib-$]"} . ---; */ - sprintf(regstr, "%s-%s", xlib, pl); - (void)get_regstr(regstr, &sv1); - - /* $xlib .= - * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/$libname/$]/lib"; */ - sprintf(pathstr, "%s/%s/lib", libname, pl); - (void)get_emd_part(&sv1, NULL, pathstr, ARCHNAME, "bin", pl, NULL); - - /* $HKCU{$xlib} || $HKLM{$xlib} . ---; */ - (void)get_regstr(xlib, &sv2); - - /* $xlib .= - * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/$libname/lib"; */ - sprintf(pathstr, "%s/lib", libname); - (void)get_emd_part(&sv2, NULL, pathstr, ARCHNAME, "bin", pl, NULL); - - if (!sv1 && !sv2) - return NULL; - if (!sv1) { - sv1 = sv2; - } else if (sv2) { - sv_catpvs(sv1, ";"); - sv_catsv(sv1, sv2); - } - - if (len) - *len = SvCUR(sv1); - return SvPVX(sv1); -} - -char * -win32_get_sitelib(const char *pl, STRLEN *const len) -{ - return win32_get_xlib(pl, "sitelib", "site", len); -} - -#ifndef PERL_VENDORLIB_NAME -# define PERL_VENDORLIB_NAME "vendor" -#endif - -char * -win32_get_vendorlib(const char *pl, STRLEN *const len) -{ - return win32_get_xlib(pl, "vendorlib", PERL_VENDORLIB_NAME, len); -} - -static BOOL -has_shell_metachars(char *ptr) -{ - int inquote = 0; - char quote = '\0'; - - /* - * Scan string looking for redirection (< or >) or pipe - * characters (|) that are not in a quoted string. - * Shell variable interpolation (%VAR%) can also happen inside strings. - */ - while (*ptr) { - switch(*ptr) { - case '%': - return TRUE; - case '\'': - case '\"': - if (inquote) { - if (quote == *ptr) { - inquote = 0; - quote = '\0'; - } - } - else { - quote = *ptr; - inquote++; - } - break; - case '>': - case '<': - case '|': - if (!inquote) - return TRUE; - default: - break; - } - ++ptr; - } - return FALSE; -} - -#if !defined(PERL_IMPLICIT_SYS) -/* since the current process environment is being updated in util.c - * the library functions will get the correct environment - */ -PerlIO * -Perl_my_popen(pTHX_ const char *cmd, const char *mode) -{ - printf("popen(%s)\n", cmd); - - Perl_croak(aTHX_ PL_no_func, "popen"); - return NULL; -} - -long -Perl_my_pclose(pTHX_ PerlIO *fp) -{ - Perl_croak(aTHX_ PL_no_func, "pclose"); - return -1; -} -#endif - -DllExport unsigned long -win32_os_id(void) -{ - static OSVERSIONINFOA osver; - - if (osver.dwPlatformId != w32_platform) { - memset(&osver, 0, sizeof(OSVERSIONINFOA)); - osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); - XCEGetVersionExA(&osver); - w32_platform = osver.dwPlatformId; - } - return (unsigned long)w32_platform; -} - -DllExport int -win32_getpid(void) -{ - int pid; -#ifdef USE_ITHREADS - dTHX; - if (w32_pseudo_id) - return -((int)w32_pseudo_id); -#endif - pid = xcegetpid(); - return pid; -} - -/* Tokenize a string. Words are null-separated, and the list - * ends with a doubled null. Any character (except null and - * including backslash) may be escaped by preceding it with a - * backslash (the backslash will be stripped). - * Returns number of words in result buffer. - */ -static long -tokenize(const char *str, char **dest, char ***destv) -{ - char *retstart = NULL; - char **retvstart = 0; - int items = -1; - if (str) { - dTHX; - int slen = strlen(str); - char *ret; - char **retv; - Newx(ret, slen+2, char); - Newx(retv, (slen+3)/2, char*); - - retstart = ret; - retvstart = retv; - *retv = ret; - items = 0; - while (*str) { - *ret = *str++; - if (*ret == '\\' && *str) - *ret = *str++; - else if (*ret == ' ') { - while (*str == ' ') - str++; - if (ret == retstart) - ret--; - else { - *ret = '\0'; - ++items; - if (*str) - *++retv = ret+1; - } - } - else if (!*str) - ++items; - ret++; - } - retvstart[items] = NULL; - *ret++ = '\0'; - *ret = '\0'; - } - *dest = retstart; - *destv = retvstart; - return items; -} - -DllExport int -win32_pipe(int *pfd, unsigned int size, int mode) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "pipe"); - return -1; -} - -DllExport int -win32_times(struct tms *timebuf) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "times"); - return -1; -} - -Sighandler_t -win32_signal(int sig, Sighandler_t subcode) -{ - return xcesignal(sig, subcode); -} - -static void -get_shell(void) -{ - dTHX; - if (!w32_perlshell_tokens) { - /* we don't use COMSPEC here for two reasons: - * 1. the same reason perl on UNIX doesn't use SHELL--rampant and - * uncontrolled unportability of the ensuing scripts. - * 2. PERL5SHELL could be set to a shell that may not be fit for - * interactive use (which is what most programs look in COMSPEC - * for). - */ - const char* defaultshell = (IsWinNT() - ? "cmd.exe /x/d/c" : "command.com /c"); - const char *usershell = PerlEnv_getenv("PERL5SHELL"); - w32_perlshell_items = tokenize(usershell ? usershell : defaultshell, - &w32_perlshell_tokens, - &w32_perlshell_vec); - } -} - -int -Perl_do_aspawn(pTHX_ SV *really, SV **mark, SV **sp) -{ - PERL_ARGS_ASSERT_DO_ASPAWN; - - Perl_croak(aTHX_ PL_no_func, "aspawn"); - return -1; -} - -/* returns pointer to the next unquoted space or the end of the string */ -static char* -find_next_space(const char *s) -{ - bool in_quotes = FALSE; - while (*s) { - /* ignore doubled backslashes, or backslash+quote */ - if (*s == '\\' && (s[1] == '\\' || s[1] == '"')) { - s += 2; - } - /* keep track of when we're within quotes */ - else if (*s == '"') { - s++; - in_quotes = !in_quotes; - } - /* break it up only at spaces that aren't in quotes */ - else if (!in_quotes && isSPACE(*s)) - return (char*)s; - else - s++; - } - return (char*)s; -} - -#if 1 -static int -do_spawn2(pTHX_ char *cmd, int exectype) -{ - char **a; - char *s; - char **argv; - int status = -1; - BOOL needToTry = TRUE; - char *cmd2; - - /* Save an extra exec if possible. See if there are shell - * metacharacters in it */ - if (!has_shell_metachars(cmd)) { - Newx(argv, strlen(cmd) / 2 + 2, char*); - Newx(cmd2, strlen(cmd) + 1, char); - strcpy(cmd2, cmd); - a = argv; - for (s = cmd2; *s;) { - while (*s && isSPACE(*s)) - s++; - if (*s) - *(a++) = s; - s = find_next_space(s); - if (*s) - *s++ = '\0'; - } - *a = NULL; - if (argv[0]) { - switch (exectype) { - case EXECF_SPAWN: - status = win32_spawnvp(P_WAIT, argv[0], - (const char* const*)argv); - break; - case EXECF_SPAWN_NOWAIT: - status = win32_spawnvp(P_NOWAIT, argv[0], - (const char* const*)argv); - break; - case EXECF_EXEC: - status = win32_execvp(argv[0], (const char* const*)argv); - break; - } - if (status != -1 || errno == 0) - needToTry = FALSE; - } - Safefree(argv); - Safefree(cmd2); - } - if (needToTry) { - char **argv; - int i = -1; - get_shell(); - Newx(argv, w32_perlshell_items + 2, char*); - while (++i < w32_perlshell_items) - argv[i] = w32_perlshell_vec[i]; - argv[i++] = cmd; - argv[i] = NULL; - switch (exectype) { - case EXECF_SPAWN: - status = win32_spawnvp(P_WAIT, argv[0], - (const char* const*)argv); - break; - case EXECF_SPAWN_NOWAIT: - status = win32_spawnvp(P_NOWAIT, argv[0], - (const char* const*)argv); - break; - case EXECF_EXEC: - status = win32_execvp(argv[0], (const char* const*)argv); - break; - } - cmd = argv[0]; - Safefree(argv); - } - if (exectype == EXECF_SPAWN_NOWAIT) { - if (IsWin95()) - PL_statusvalue = -1; /* >16bits hint for pp_system() */ - } - else { - if (status < 0) { - if (ckWARN(WARN_EXEC)) - Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't %s \"%s\": %s", - (exectype == EXECF_EXEC ? "exec" : "spawn"), - cmd, strerror(errno)); - status = 255 * 256; - } - else - status *= 256; - PL_statusvalue = status; - } - return (status); -} - -int -Perl_do_spawn(pTHX_ char *cmd) -{ - PERL_ARGS_ASSERT_DO_SPAWN; - - return do_spawn2(aTHX_ cmd, EXECF_SPAWN); -} - -int -Perl_do_spawn_nowait(pTHX_ char *cmd) -{ - PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT; - - return do_spawn2(aTHX_ cmd, EXECF_SPAWN_NOWAIT); -} - -bool -Perl_do_exec(pTHX_ const char *cmd) -{ - PERL_ARGS_ASSERT_DO_EXEC; - - do_spawn2(aTHX_ cmd, EXECF_EXEC); - return FALSE; -} - -/* The idea here is to read all the directory names into a string table - * (separated by nulls) and when one of the other dir functions is called - * return the pointer to the current file name. - */ -DllExport DIR * -win32_opendir(const char *filename) -{ - dTHX; - DIR *dirp; - long len; - long idx; - char scanname[MAX_PATH+3]; - Stat_t sbuf; - WIN32_FIND_DATAA aFindData; - WIN32_FIND_DATAW wFindData; - HANDLE fh; - char buffer[MAX_PATH*2]; - WCHAR wbuffer[MAX_PATH+1]; - char* ptr; - - len = strlen(filename); - if (len > MAX_PATH) - return NULL; - - /* check to see if filename is a directory */ - if (win32_stat(filename, &sbuf) < 0 || !S_ISDIR(sbuf.st_mode)) - return NULL; - - /* Get us a DIR structure */ - Newxz(dirp, 1, DIR); - - /* Create the search pattern */ - strcpy(scanname, filename); - - /* bare drive name means look in cwd for drive */ - if (len == 2 && isALPHA(scanname[0]) && scanname[1] == ':') { - scanname[len++] = '.'; - scanname[len++] = '/'; - } - else if (scanname[len-1] != '/' && scanname[len-1] != '\\') { - scanname[len++] = '/'; - } - scanname[len++] = '*'; - scanname[len] = '\0'; - - /* do the FindFirstFile call */ - fh = FindFirstFile(PerlDir_mapA(scanname), &aFindData); - dirp->handle = fh; - if (fh == INVALID_HANDLE_VALUE) { - DWORD err = GetLastError(); - /* FindFirstFile() fails on empty drives! */ - switch (err) { - case ERROR_FILE_NOT_FOUND: - return dirp; - case ERROR_NO_MORE_FILES: - case ERROR_PATH_NOT_FOUND: - errno = ENOENT; - break; - case ERROR_NOT_ENOUGH_MEMORY: - errno = ENOMEM; - break; - default: - errno = EINVAL; - break; - } - Safefree(dirp); - return NULL; - } - - /* now allocate the first part of the string table for - * the filenames that we find. - */ - ptr = aFindData.cFileName; - idx = strlen(ptr)+1; - if (idx < 256) - dirp->size = 128; - else - dirp->size = idx; - Newx(dirp->start, dirp->size, char); - strcpy(dirp->start, ptr); - dirp->nfiles++; - dirp->end = dirp->curr = dirp->start; - dirp->end += idx; - return dirp; -} - - -/* Readdir just returns the current string pointer and bumps the - * string pointer to the nDllExport entry. - */ -DllExport struct direct * -win32_readdir(DIR *dirp) -{ - long len; - - if (dirp->curr) { - /* first set up the structure to return */ - len = strlen(dirp->curr); - strcpy(dirp->dirstr.d_name, dirp->curr); - dirp->dirstr.d_namlen = len; - - /* Fake an inode */ - dirp->dirstr.d_ino = dirp->curr - dirp->start; - - /* Now set up for the next call to readdir */ - dirp->curr += len + 1; - if (dirp->curr >= dirp->end) { - dTHX; - char* ptr; - BOOL res; - WIN32_FIND_DATAW wFindData; - WIN32_FIND_DATAA aFindData; - char buffer[MAX_PATH*2]; - - /* finding the next file that matches the wildcard - * (which should be all of them in this directory!). - */ - res = FindNextFile(dirp->handle, &aFindData); - if (res) - ptr = aFindData.cFileName; - if (res) { - long endpos = dirp->end - dirp->start; - long newsize = endpos + strlen(ptr) + 1; - /* bump the string table size by enough for the - * new name and its null terminator */ - while (newsize > dirp->size) { - long curpos = dirp->curr - dirp->start; - Renew(dirp->start, dirp->size * 2, char); - dirp->size *= 2; - dirp->curr = dirp->start + curpos; - } - strcpy(dirp->start + endpos, ptr); - dirp->end = dirp->start + newsize; - dirp->nfiles++; - } - else - dirp->curr = NULL; - } - return &(dirp->dirstr); - } - else - return NULL; -} - -/* Telldir returns the current string pointer position */ -DllExport long -win32_telldir(DIR *dirp) -{ - return (dirp->curr - dirp->start); -} - - -/* Seekdir moves the string pointer to a previously saved position - * (returned by telldir). - */ -DllExport void -win32_seekdir(DIR *dirp, long loc) -{ - dirp->curr = dirp->start + loc; -} - -/* Rewinddir resets the string pointer to the start */ -DllExport void -win32_rewinddir(DIR *dirp) -{ - dirp->curr = dirp->start; -} - -/* free the memory allocated by opendir */ -DllExport int -win32_closedir(DIR *dirp) -{ - dTHX; - if (dirp->handle != INVALID_HANDLE_VALUE) - FindClose(dirp->handle); - Safefree(dirp->start); - Safefree(dirp); - return 1; -} - -#else -/////!!!!!!!!!!! return here and do right stuff!!!! - -DllExport DIR * -win32_opendir(const char *filename) -{ - return opendir(filename); -} - -DllExport struct direct * -win32_readdir(DIR *dirp) -{ - return readdir(dirp); -} - -DllExport long -win32_telldir(DIR *dirp) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "telldir"); - return -1; -} - -DllExport void -win32_seekdir(DIR *dirp, long loc) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "seekdir"); -} - -DllExport void -win32_rewinddir(DIR *dirp) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "rewinddir"); -} - -DllExport int -win32_closedir(DIR *dirp) -{ - closedir(dirp); - return 0; -} -#endif // 1 - -DllExport int -win32_kill(int pid, int sig) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "kill"); - return -1; -} - -DllExport int -win32_stat(const char *path, struct stat *sbuf) -{ - return xcestat(path, sbuf); -} - -DllExport char * -win32_longpath(char *path) -{ - return path; -} - -static void -out_of_memory(void) -{ - if (PL_curinterp) { - dTHX; - /* Can't use PerlIO to write as it allocates memory */ - PerlLIO_write(PerlIO_fileno(Perl_error_log), - PL_no_mem, strlen(PL_no_mem)); - my_exit(1); - } - exit(1); -} - -/* The win32_ansipath() function takes a Unicode filename and converts it - * into the current Windows codepage. If some characters cannot be mapped, - * then it will convert the short name instead. - * - * The buffer to the ansi pathname must be freed with win32_free() when it - * it no longer needed. - * - * The argument to win32_ansipath() must exist before this function is - * called; otherwise there is no way to determine the short path name. - * - * Ideas for future refinement: - * - Only convert those segments of the path that are not in the current - * codepage, but leave the other segments in their long form. - * - If the resulting name is longer than MAX_PATH, start converting - * additional path segments into short names until the full name - * is shorter than MAX_PATH. Shorten the filename part last! - */ -DllExport char * -win32_ansipath(const WCHAR *widename) -{ - char *name; - size_t widelen = wcslen(widename)+1; - int len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen, - NULL, 0, NULL, NULL); - name = win32_malloc(len); - if (!name) - out_of_memory(); - - WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen, - name, len, NULL, NULL); - return name; -} - -DllExport char * -win32_getenv(const char *name) -{ - return xcegetenv(name); -} - -DllExport int -win32_putenv(const char *name) -{ - return xceputenv(name); -} - -static long -filetime_to_clock(PFILETIME ft) -{ - __int64 qw = ft->dwHighDateTime; - qw <<= 32; - qw |= ft->dwLowDateTime; - qw /= 10000; /* File time ticks at 0.1uS, clock at 1mS */ - return (long) qw; -} - -/* fix utime() so it works on directories in NT */ -static BOOL -filetime_from_time(PFILETIME pFileTime, time_t Time) -{ - struct tm *pTM = localtime(&Time); - SYSTEMTIME SystemTime; - FILETIME LocalTime; - - if (pTM == NULL) - return FALSE; - - SystemTime.wYear = pTM->tm_year + 1900; - SystemTime.wMonth = pTM->tm_mon + 1; - SystemTime.wDay = pTM->tm_mday; - SystemTime.wHour = pTM->tm_hour; - SystemTime.wMinute = pTM->tm_min; - SystemTime.wSecond = pTM->tm_sec; - SystemTime.wMilliseconds = 0; - - return SystemTimeToFileTime(&SystemTime, &LocalTime) && - LocalFileTimeToFileTime(&LocalTime, pFileTime); -} - -DllExport int -win32_unlink(const char *filename) -{ - return xceunlink(filename); -} - -DllExport int -win32_utime(const char *filename, struct utimbuf *times) -{ - return xceutime(filename, (struct _utimbuf *) times); -} - -DllExport int -win32_gettimeofday(struct timeval *tp, void *not_used) -{ - return xcegettimeofday(tp,not_used); -} - -DllExport int -win32_uname(struct utsname *name) -{ - struct hostent *hep; - STRLEN nodemax = sizeof(name->nodename)-1; - OSVERSIONINFOA osver; - - memset(&osver, 0, sizeof(OSVERSIONINFOA)); - osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); - if (XCEGetVersionExA(&osver)) { - /* sysname */ - switch (osver.dwPlatformId) { - case VER_PLATFORM_WIN32_CE: - strcpy(name->sysname, "Windows CE"); - break; - case VER_PLATFORM_WIN32_WINDOWS: - strcpy(name->sysname, "Windows"); - break; - case VER_PLATFORM_WIN32_NT: - strcpy(name->sysname, "Windows NT"); - break; - case VER_PLATFORM_WIN32s: - strcpy(name->sysname, "Win32s"); - break; - default: - strcpy(name->sysname, "Win32 Unknown"); - break; - } - - /* release */ - sprintf(name->release, "%d.%d", - osver.dwMajorVersion, osver.dwMinorVersion); - - /* version */ - sprintf(name->version, "Build %d", - osver.dwPlatformId == VER_PLATFORM_WIN32_NT - ? osver.dwBuildNumber : (osver.dwBuildNumber & 0xffff)); - if (osver.szCSDVersion[0]) { - char *buf = name->version + strlen(name->version); - sprintf(buf, " (%s)", osver.szCSDVersion); - } - } - else { - *name->sysname = '\0'; - *name->version = '\0'; - *name->release = '\0'; - } - - /* nodename */ - hep = win32_gethostbyname("localhost"); - if (hep) { - STRLEN len = strlen(hep->h_name); - if (len <= nodemax) { - strcpy(name->nodename, hep->h_name); - } - else { - strncpy(name->nodename, hep->h_name, nodemax); - name->nodename[nodemax] = '\0'; - } - } - else { - DWORD sz = nodemax; - if (!XCEGetComputerNameA(name->nodename, &sz)) - *name->nodename = '\0'; - } - - /* machine (architecture) */ - { - SYSTEM_INFO info; - char *arch; - GetSystemInfo(&info); - - switch (info.wProcessorArchitecture) { - case PROCESSOR_ARCHITECTURE_INTEL: - arch = "x86"; break; - case PROCESSOR_ARCHITECTURE_MIPS: - arch = "mips"; break; - case PROCESSOR_ARCHITECTURE_ALPHA: - arch = "alpha"; break; - case PROCESSOR_ARCHITECTURE_PPC: - arch = "ppc"; break; - case PROCESSOR_ARCHITECTURE_ARM: - arch = "arm"; break; - case PROCESSOR_HITACHI_SH3: - arch = "sh3"; break; - case PROCESSOR_SHx_SH3: - arch = "sh3"; break; - - default: - arch = "unknown"; break; - } - strcpy(name->machine, arch); - } - return 0; -} - -/* Timing related stuff */ - -int -do_raise(pTHX_ int sig) -{ - if (sig < SIG_SIZE) { - Sighandler_t handler = w32_sighandler[sig]; - if (handler == SIG_IGN) { - return 0; - } - else if (handler != SIG_DFL) { - (*handler)(sig); - return 0; - } - else { - /* Choose correct default behaviour */ - switch (sig) { -#ifdef SIGCLD - case SIGCLD: -#endif -#ifdef SIGCHLD - case SIGCHLD: -#endif - case 0: - return 0; - case SIGTERM: - default: - break; - } - } - } - /* Tell caller to exit thread/process as appropriate */ - return 1; -} - -void -sig_terminate(pTHX_ int sig) -{ - Perl_warn(aTHX_ "Terminating on signal SIG%s(%d)\n",PL_sig_name[sig], sig); - /* exit() seems to be safe, my_exit() or die() is a problem in ^C - thread - */ - exit(sig); -} - -DllExport int -win32_async_check(pTHX) -{ - MSG msg; - int ours = 1; - /* Passing PeekMessage -1 as HWND (2nd arg) only get PostThreadMessage() messages - * and ignores window messages - should co-exist better with windows apps e.g. Tk - */ - while (PeekMessage(&msg, (HWND)-1, 0, 0, PM_REMOVE|PM_NOYIELD)) { - int sig; - switch(msg.message) { - -#if 0 - /* Perhaps some other messages could map to signals ? ... */ - case WM_CLOSE: - case WM_QUIT: - /* Treat WM_QUIT like SIGHUP? */ - sig = SIGHUP; - goto Raise; - break; -#endif - - /* We use WM_USER to fake kill() with other signals */ - case WM_USER: { - sig = msg.wParam; - Raise: - if (do_raise(aTHX_ sig)) { - sig_terminate(aTHX_ sig); - } - break; - } - - case WM_TIMER: { - /* alarm() is a one-shot but SetTimer() repeats so kill it */ - if (w32_timerid) { - KillTimer(NULL,w32_timerid); - w32_timerid=0; - } - /* Now fake a call to signal handler */ - if (do_raise(aTHX_ 14)) { - sig_terminate(aTHX_ 14); - } - break; - } - - /* Otherwise do normal Win32 thing - in case it is useful */ - default: - TranslateMessage(&msg); - DispatchMessage(&msg); - ours = 0; - break; - } - } - w32_poll_count = 0; - - /* Above or other stuff may have set a signal flag */ - if (PL_sig_pending) { - despatch_signals(); - } - return ours; -} - -/* This function will not return until the timeout has elapsed, or until - * one of the handles is ready. */ -DllExport DWORD -win32_msgwait(pTHX_ DWORD count, LPHANDLE handles, DWORD timeout, LPDWORD resultp) -{ - /* We may need several goes at this - so compute when we stop */ - DWORD ticks = 0; - if (timeout != INFINITE) { - ticks = GetTickCount(); - timeout += ticks; - } - while (1) { - DWORD result = MsgWaitForMultipleObjects(count,handles,FALSE,timeout-ticks, QS_ALLEVENTS); - if (resultp) - *resultp = result; - if (result == WAIT_TIMEOUT) { - /* Ran out of time - explicit return of zero to avoid -ve if we - have scheduling issues - */ - return 0; - } - if (timeout != INFINITE) { - ticks = GetTickCount(); - } - if (result == WAIT_OBJECT_0 + count) { - /* Message has arrived - check it */ - (void)win32_async_check(aTHX); - } - else { - /* Not timeout or message - one of handles is ready */ - break; - } - } - /* compute time left to wait */ - ticks = timeout - ticks; - /* If we are past the end say zero */ - return (ticks > 0) ? ticks : 0; -} - -static UINT timerid = 0; - -static VOID CALLBACK TimerProc(HWND win, UINT msg, UINT id, DWORD time) -{ - dTHX; - KillTimer(NULL,timerid); - timerid=0; - sighandler(14); -} - -DllExport unsigned int -win32_sleep(unsigned int t) -{ - return xcesleep(t); -} - -DllExport unsigned int -win32_alarm(unsigned int sec) -{ - /* - * the 'obvious' implentation is SetTimer() with a callback - * which does whatever receiving SIGALRM would do - * we cannot use SIGALRM even via raise() as it is not - * one of the supported codes in <signal.h> - * - * Snag is unless something is looking at the message queue - * nothing happens :-( - */ - dTHX; - if (sec) - { - timerid = SetTimer(NULL,timerid,sec*1000,(TIMERPROC)TimerProc); - if (!timerid) - Perl_croak_nocontext("Cannot set timer"); - } - else - { - if (timerid) - { - KillTimer(NULL,timerid); - timerid=0; - } - } - return 0; -} - -#ifdef HAVE_DES_FCRYPT -extern char * des_fcrypt(const char *txt, const char *salt, char *cbuf); -#endif - -DllExport char * -win32_crypt(const char *txt, const char *salt) -{ - dTHX; -#ifdef HAVE_DES_FCRYPT - dTHR; - return des_fcrypt(txt, salt, w32_crypt_buffer); -#else - Perl_croak(aTHX_ "The crypt() function is unimplemented due to excessive paranoia."); - return NULL; -#endif -} - - -/* - * redirected io subsystem for all XS modules - * - */ - -DllExport int * -win32_errno(void) -{ - return (&errno); -} - -DllExport char *** -win32_environ(void) -{ - return (&(environ)); -} - -/* the rest are the remapped stdio routines */ -DllExport FILE * -win32_stderr(void) -{ - return (stderr); -} - -char *g_getlogin() { - return "no-getlogin"; -} - -DllExport FILE * -win32_stdin(void) -{ - return (stdin); -} - -DllExport FILE * -win32_stdout() -{ - return (stdout); -} - -DllExport int -win32_ferror(FILE *fp) -{ - return (ferror(fp)); -} - - -DllExport int -win32_feof(FILE *fp) -{ - return (feof(fp)); -} - -/* - * Since the errors returned by the socket error function - * WSAGetLastError() are not known by the library routine strerror - * we have to roll our own. - */ - -DllExport char * -win32_strerror(int e) -{ - return xcestrerror(e); -} - -DllExport void -win32_str_os_error(void *sv, DWORD dwErr) -{ - dTHX; - - sv_setpvs((SV*)sv, "Error"); -} - - -DllExport int -win32_fprintf(FILE *fp, const char *format, ...) -{ - va_list marker; - va_start(marker, format); /* Initialize variable arguments. */ - - return (vfprintf(fp, format, marker)); -} - -DllExport int -win32_printf(const char *format, ...) -{ - va_list marker; - va_start(marker, format); /* Initialize variable arguments. */ - - return (vprintf(format, marker)); -} - -DllExport int -win32_vfprintf(FILE *fp, const char *format, va_list args) -{ - return (vfprintf(fp, format, args)); -} - -DllExport int -win32_vprintf(const char *format, va_list args) -{ - return (vprintf(format, args)); -} - -DllExport size_t -win32_fread(void *buf, size_t size, size_t count, FILE *fp) -{ - return fread(buf, size, count, fp); -} - -DllExport size_t -win32_fwrite(const void *buf, size_t size, size_t count, FILE *fp) -{ - return fwrite(buf, size, count, fp); -} - -DllExport FILE * -win32_fopen(const char *filename, const char *mode) -{ - return xcefopen(filename, mode); -} - -DllExport FILE * -win32_fdopen(int handle, const char *mode) -{ - return palm_fdopen(handle, mode); -} - -DllExport FILE * -win32_freopen(const char *path, const char *mode, FILE *stream) -{ - return xcefreopen(path, mode, stream); -} - -DllExport int -win32_fclose(FILE *pf) -{ - return xcefclose(pf); -} - -DllExport int -win32_fputs(const char *s,FILE *pf) -{ - return fputs(s, pf); -} - -DllExport int -win32_fputc(int c,FILE *pf) -{ - return fputc(c,pf); -} - -DllExport int -win32_ungetc(int c,FILE *pf) -{ - return ungetc(c,pf); -} - -DllExport int -win32_getc(FILE *pf) -{ - return getc(pf); -} - -DllExport int -win32_fileno(FILE *pf) -{ - return palm_fileno(pf); -} - -DllExport void -win32_clearerr(FILE *pf) -{ - clearerr(pf); - return; -} - -DllExport int -win32_fflush(FILE *pf) -{ - return fflush(pf); -} - -DllExport long -win32_ftell(FILE *pf) -{ - return ftell(pf); -} - -DllExport int -win32_fseek(FILE *pf, Off_t offset,int origin) -{ - return fseek(pf, offset, origin); -} - -/* fpos_t seems to be int64 on hpc pro! Really stupid. */ -/* But maybe someday there will be such large disks in a hpc... */ -DllExport int -win32_fgetpos(FILE *pf, fpos_t *p) -{ - return fgetpos(pf, p); -} - -DllExport int -win32_fsetpos(FILE *pf, const fpos_t *p) -{ - return fsetpos(pf, p); -} - -DllExport void -win32_rewind(FILE *pf) -{ - fseek(pf, 0, SEEK_SET); - return; -} - -DllExport int -win32_tmpfd(void) -{ - dTHX; - char prefix[MAX_PATH+1]; - char filename[MAX_PATH+1]; - DWORD len = GetTempPath(MAX_PATH, prefix); - if (len && len < MAX_PATH) { - if (GetTempFileName(prefix, "plx", 0, filename)) { - HANDLE fh = CreateFile(filename, - DELETE | GENERIC_READ | GENERIC_WRITE, - 0, - NULL, - CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL - | FILE_FLAG_DELETE_ON_CLOSE, - NULL); - if (fh != INVALID_HANDLE_VALUE) { - int fd = win32_open_osfhandle((intptr_t)fh, 0); - if (fd >= 0) { - DEBUG_p(PerlIO_printf(Perl_debug_log, - "Created tmpfile=%s\n",filename)); - return fd; - } - } - } - } - return -1; -} - -DllExport FILE* -win32_tmpfile(void) -{ - int fd = win32_tmpfd(); - if (fd >= 0) - return win32_fdopen(fd, "w+b"); - return NULL; -} - -DllExport void -win32_abort(void) -{ - xceabort(); - - return; -} - -DllExport int -win32_fstat(int fd, struct stat *sbufptr) -{ - return xcefstat(fd, sbufptr); -} - -DllExport int -win32_link(const char *oldname, const char *newname) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "link"); - - return -1; -} - -DllExport int -win32_rename(const char *oname, const char *newname) -{ - return xcerename(oname, newname); -} - -DllExport int -win32_setmode(int fd, int mode) -{ - /* currently 'celib' seem to have this function in src, but not - * exported. When it will be, we'll uncomment following line. - */ - /* return xcesetmode(fd, mode); */ - return 0; -} - -DllExport int -win32_chsize(int fd, Off_t size) -{ - return chsize(fd, size); -} - -DllExport long -win32_lseek(int fd, Off_t offset, int origin) -{ - return xcelseek(fd, offset, origin); -} - -DllExport long -win32_tell(int fd) -{ - return xcelseek(fd, 0, SEEK_CUR); -} - -DllExport int -win32_open(const char *path, int flag, ...) -{ - int pmode; - va_list ap; - - va_start(ap, flag); - pmode = va_arg(ap, int); - va_end(ap); - - return xceopen(path, flag, pmode); -} - -DllExport int -win32_close(int fd) -{ - return xceclose(fd); -} - -DllExport int -win32_eof(int fd) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "eof"); - return -1; -} - -DllExport int -win32_dup(int fd) -{ - return xcedup(fd); /* from celib/ceio.c; requires some more work on it */ -} - -DllExport int -win32_dup2(int fd1,int fd2) -{ - return xcedup2(fd1,fd2); -} - -DllExport int -win32_read(int fd, void *buf, unsigned int cnt) -{ - return xceread(fd, buf, cnt); -} - -DllExport int -win32_write(int fd, const void *buf, unsigned int cnt) -{ - return xcewrite(fd, (void *) buf, cnt); -} - -DllExport int -win32_mkdir(const char *dir, int mode) -{ - return xcemkdir(dir); -} - -DllExport int -win32_rmdir(const char *dir) -{ - return xcermdir(dir); -} - -DllExport int -win32_chdir(const char *dir) -{ - return xcechdir(dir); -} - -DllExport int -win32_access(const char *path, int mode) -{ - return xceaccess(path, mode); -} - -DllExport int -win32_chmod(const char *path, int mode) -{ - return xcechmod(path, mode); -} - -static char * -create_command_line(char *cname, STRLEN clen, const char * const *args) -{ - dTHX; - int index, argc; - char *cmd, *ptr; - const char *arg; - STRLEN len = 0; - bool bat_file = FALSE; - bool cmd_shell = FALSE; - bool dumb_shell = FALSE; - bool extra_quotes = FALSE; - bool quote_next = FALSE; - - if (!cname) - cname = (char*)args[0]; - - /* The NT cmd.exe shell has the following peculiarity that needs to be - * worked around. It strips a leading and trailing dquote when any - * of the following is true: - * 1. the /S switch was used - * 2. there are more than two dquotes - * 3. there is a special character from this set: &<>()@^| - * 4. no whitespace characters within the two dquotes - * 5. string between two dquotes isn't an executable file - * To work around this, we always add a leading and trailing dquote - * to the string, if the first argument is either "cmd.exe" or "cmd", - * and there were at least two or more arguments passed to cmd.exe - * (not including switches). - * XXX the above rules (from "cmd /?") don't seem to be applied - * always, making for the convolutions below :-( - */ - if (cname) { - if (!clen) - clen = strlen(cname); - - if (clen > 4 - && (stricmp(&cname[clen-4], ".bat") == 0 - || (IsWinNT() && stricmp(&cname[clen-4], ".cmd") == 0))) - { - bat_file = TRUE; - len += 3; - } - else { - char *exe = strrchr(cname, '/'); - char *exe2 = strrchr(cname, '\\'); - if (exe2 > exe) - exe = exe2; - if (exe) - ++exe; - else - exe = cname; - if (stricmp(exe, "cmd.exe") == 0 || stricmp(exe, "cmd") == 0) { - cmd_shell = TRUE; - len += 3; - } - else if (stricmp(exe, "command.com") == 0 - || stricmp(exe, "command") == 0) - { - dumb_shell = TRUE; - } - } - } - - DEBUG_p(PerlIO_printf(Perl_debug_log, "Args ")); - for (index = 0; (arg = (char*)args[index]) != NULL; ++index) { - STRLEN curlen = strlen(arg); - if (!(arg[0] == '"' && arg[curlen-1] == '"')) - len += 2; /* assume quoting needed (worst case) */ - len += curlen + 1; - DEBUG_p(PerlIO_printf(Perl_debug_log, "[%s]",arg)); - } - DEBUG_p(PerlIO_printf(Perl_debug_log, "\n")); - - argc = index; - Newx(cmd, len, char); - ptr = cmd; - - if (bat_file) { - *ptr++ = '"'; - extra_quotes = TRUE; - } - - for (index = 0; (arg = (char*)args[index]) != NULL; ++index) { - bool do_quote = 0; - STRLEN curlen = strlen(arg); - - /* we want to protect empty arguments and ones with spaces with - * dquotes, but only if they aren't already there */ - if (!dumb_shell) { - if (!curlen) { - do_quote = 1; - } - else if (quote_next) { - /* see if it really is multiple arguments pretending to - * be one and force a set of quotes around it */ - if (*find_next_space(arg)) - do_quote = 1; - } - else if (!(arg[0] == '"' && curlen > 1 && arg[curlen-1] == '"')) { - STRLEN i = 0; - while (i < curlen) { - if (isSPACE(arg[i])) { - do_quote = 1; - } - else if (arg[i] == '"') { - do_quote = 0; - break; - } - i++; - } - } - } - - if (do_quote) - *ptr++ = '"'; - - strcpy(ptr, arg); - ptr += curlen; - - if (do_quote) - *ptr++ = '"'; - - if (args[index+1]) - *ptr++ = ' '; - - if (!extra_quotes - && cmd_shell - && curlen >= 2 - && *arg == '/' /* see if arg is "/c", "/x/c", "/x/d/c" etc. */ - && stricmp(arg+curlen-2, "/c") == 0) - { - /* is there a next argument? */ - if (args[index+1]) { - /* are there two or more next arguments? */ - if (args[index+2]) { - *ptr++ = '"'; - extra_quotes = TRUE; - } - else { - /* single argument, force quoting if it has spaces */ - quote_next = TRUE; - } - } - } - } - - if (extra_quotes) - *ptr++ = '"'; - - *ptr = '\0'; - - return cmd; -} - -static char * -qualified_path(const char *cmd) -{ - dTHX; - char *pathstr; - char *fullcmd, *curfullcmd; - STRLEN cmdlen = 0; - int has_slash = 0; - - if (!cmd) - return NULL; - fullcmd = (char*)cmd; - while (*fullcmd) { - if (*fullcmd == '/' || *fullcmd == '\\') - has_slash++; - fullcmd++; - cmdlen++; - } - - /* look in PATH */ - pathstr = PerlEnv_getenv("PATH"); - Newx(fullcmd, MAX_PATH+1, char); - curfullcmd = fullcmd; - - while (1) { - DWORD res; - - /* start by appending the name to the current prefix */ - strcpy(curfullcmd, cmd); - curfullcmd += cmdlen; - - /* if it doesn't end with '.', or has no extension, try adding - * a trailing .exe first */ - if (cmd[cmdlen-1] != '.' - && (cmdlen < 4 || cmd[cmdlen-4] != '.')) - { - strcpy(curfullcmd, ".exe"); - res = GetFileAttributes(fullcmd); - if (res != 0xFFFFFFFF && !(res & FILE_ATTRIBUTE_DIRECTORY)) - return fullcmd; - *curfullcmd = '\0'; - } - - /* that failed, try the bare name */ - res = GetFileAttributes(fullcmd); - if (res != 0xFFFFFFFF && !(res & FILE_ATTRIBUTE_DIRECTORY)) - return fullcmd; - - /* quit if no other path exists, or if cmd already has path */ - if (!pathstr || !*pathstr || has_slash) - break; - - /* skip leading semis */ - while (*pathstr == ';') - pathstr++; - - /* build a new prefix from scratch */ - curfullcmd = fullcmd; - while (*pathstr && *pathstr != ';') { - if (*pathstr == '"') { /* foo;"baz;etc";bar */ - pathstr++; /* skip initial '"' */ - while (*pathstr && *pathstr != '"') { - if ((STRLEN)(curfullcmd-fullcmd) < MAX_PATH-cmdlen-5) - *curfullcmd++ = *pathstr; - pathstr++; - } - if (*pathstr) - pathstr++; /* skip trailing '"' */ - } - else { - if ((STRLEN)(curfullcmd-fullcmd) < MAX_PATH-cmdlen-5) - *curfullcmd++ = *pathstr; - pathstr++; - } - } - if (*pathstr) - pathstr++; /* skip trailing semi */ - if (curfullcmd > fullcmd /* append a dir separator */ - && curfullcmd[-1] != '/' && curfullcmd[-1] != '\\') - { - *curfullcmd++ = '\\'; - } - } - - Safefree(fullcmd); - return NULL; -} - -/* The following are just place holders. - * Some hosts may provide and environment that the OS is - * not tracking, therefore, these host must provide that - * environment and the current directory to CreateProcess - */ - -DllExport void* -win32_get_childenv(void) -{ - return NULL; -} - -DllExport void -win32_free_childenv(void* d) -{ -} - -DllExport void -win32_clearenv(void) -{ - char *envv = GetEnvironmentStrings(); - char *cur = envv; - STRLEN len; - while (*cur) { - char *end = strchr(cur,'='); - if (end && end != cur) { - *end = '\0'; - xcesetenv(cur, "", 0); - *end = '='; - cur = end + strlen(end+1)+2; - } - else if ((len = strlen(cur))) - cur += len+1; - } - FreeEnvironmentStrings(envv); -} - -DllExport char* -win32_get_childdir(void) -{ - dTHX; - char* ptr; - char szfilename[MAX_PATH+1]; - GetCurrentDirectoryA(MAX_PATH+1, szfilename); - - Newx(ptr, strlen(szfilename)+1, char); - strcpy(ptr, szfilename); - return ptr; -} - -DllExport void -win32_free_childdir(char* d) -{ - dTHX; - Safefree(d); -} - -/* XXX this needs to be made more compatible with the spawnvp() - * provided by the various RTLs. In particular, searching for - * *.{com,bat,cmd} files (as done by the RTLs) is unimplemented. - * This doesn't significantly affect perl itself, because we - * always invoke things using PERL5SHELL if a direct attempt to - * spawn the executable fails. - * - * XXX splitting and rejoining the commandline between do_aspawn() - * and win32_spawnvp() could also be avoided. - */ - -DllExport int -win32_spawnvp(int mode, const char *cmdname, const char *const *argv) -{ -#ifdef USE_RTL_SPAWNVP - return spawnvp(mode, cmdname, (char * const *)argv); -#else - dTHX; - int ret; - void* env; - char* dir; - child_IO_table tbl; - STARTUPINFO StartupInfo; - PROCESS_INFORMATION ProcessInformation; - DWORD create = 0; - char *cmd; - char *fullcmd = NULL; - char *cname = (char *)cmdname; - STRLEN clen = 0; - - if (cname) { - clen = strlen(cname); - /* if command name contains dquotes, must remove them */ - if (strchr(cname, '"')) { - cmd = cname; - Newx(cname,clen+1,char); - clen = 0; - while (*cmd) { - if (*cmd != '"') { - cname[clen] = *cmd; - ++clen; - } - ++cmd; - } - cname[clen] = '\0'; - } - } - - cmd = create_command_line(cname, clen, argv); - - env = PerlEnv_get_childenv(); - dir = PerlEnv_get_childdir(); - - switch(mode) { - case P_NOWAIT: /* asynch + remember result */ - if (w32_num_children >= MAXIMUM_WAIT_OBJECTS) { - errno = EAGAIN; - ret = -1; - goto RETVAL; - } - /* Create a new process group so we can use GenerateConsoleCtrlEvent() - * in win32_kill() - */ - /* not supported on CE create |= CREATE_NEW_PROCESS_GROUP; */ - /* FALL THROUGH */ - - case P_WAIT: /* synchronous execution */ - break; - default: /* invalid mode */ - errno = EINVAL; - ret = -1; - goto RETVAL; - } - memset(&StartupInfo,0,sizeof(StartupInfo)); - StartupInfo.cb = sizeof(StartupInfo); - memset(&tbl,0,sizeof(tbl)); - PerlEnv_get_child_IO(&tbl); - StartupInfo.dwFlags = tbl.dwFlags; - StartupInfo.dwX = tbl.dwX; - StartupInfo.dwY = tbl.dwY; - StartupInfo.dwXSize = tbl.dwXSize; - StartupInfo.dwYSize = tbl.dwYSize; - StartupInfo.dwXCountChars = tbl.dwXCountChars; - StartupInfo.dwYCountChars = tbl.dwYCountChars; - StartupInfo.dwFillAttribute = tbl.dwFillAttribute; - StartupInfo.wShowWindow = tbl.wShowWindow; - StartupInfo.hStdInput = tbl.childStdIn; - StartupInfo.hStdOutput = tbl.childStdOut; - StartupInfo.hStdError = tbl.childStdErr; - if (StartupInfo.hStdInput == INVALID_HANDLE_VALUE && - StartupInfo.hStdOutput == INVALID_HANDLE_VALUE && - StartupInfo.hStdError == INVALID_HANDLE_VALUE) - { - create |= CREATE_NEW_CONSOLE; - } - else { - StartupInfo.dwFlags |= STARTF_USESTDHANDLES; - } - if (w32_use_showwindow) { - StartupInfo.dwFlags |= STARTF_USESHOWWINDOW; - StartupInfo.wShowWindow = w32_showwindow; - } - - DEBUG_p(PerlIO_printf(Perl_debug_log, "Spawning [%s] with [%s]\n", - cname,cmd)); -RETRY: - if (!CreateProcess(cname, /* search PATH to find executable */ - cmd, /* executable, and its arguments */ - NULL, /* process attributes */ - NULL, /* thread attributes */ - TRUE, /* inherit handles */ - create, /* creation flags */ - (LPVOID)env, /* inherit environment */ - dir, /* inherit cwd */ - &StartupInfo, - &ProcessInformation)) - { - /* initial NULL argument to CreateProcess() does a PATH - * search, but it always first looks in the directory - * where the current process was started, which behavior - * is undesirable for backward compatibility. So we - * jump through our own hoops by picking out the path - * we really want it to use. */ - if (!fullcmd) { - fullcmd = qualified_path(cname); - if (fullcmd) { - if (cname != cmdname) - Safefree(cname); - cname = fullcmd; - DEBUG_p(PerlIO_printf(Perl_debug_log, - "Retrying [%s] with same args\n", - cname)); - goto RETRY; - } - } - errno = ENOENT; - ret = -1; - goto RETVAL; - } - - if (mode == P_NOWAIT) { - /* asynchronous spawn -- store handle, return PID */ - ret = (int)ProcessInformation.dwProcessId; - if (IsWin95() && ret < 0) - ret = -ret; - - w32_child_handles[w32_num_children] = ProcessInformation.hProcess; - w32_child_pids[w32_num_children] = (DWORD)ret; - ++w32_num_children; - } - else { - DWORD status; - win32_msgwait(aTHX_ 1, &ProcessInformation.hProcess, INFINITE, NULL); - /* FIXME: if msgwait returned due to message perhaps forward the - "signal" to the process - */ - GetExitCodeProcess(ProcessInformation.hProcess, &status); - ret = (int)status; - CloseHandle(ProcessInformation.hProcess); - } - - CloseHandle(ProcessInformation.hThread); - -RETVAL: - PerlEnv_free_childenv(env); - PerlEnv_free_childdir(dir); - Safefree(cmd); - if (cname != cmdname) - Safefree(cname); - return ret; -#endif -} - -DllExport int -win32_execv(const char *cmdname, const char *const *argv) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "execv"); - return -1; -} - -DllExport int -win32_execvp(const char *cmdname, const char *const *argv) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "execvp"); - return -1; -} - -DllExport void -win32_perror(const char *str) -{ - xceperror(str); -} - -DllExport void -win32_setbuf(FILE *pf, char *buf) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "setbuf"); -} - -DllExport int -win32_setvbuf(FILE *pf, char *buf, int type, size_t size) -{ - return setvbuf(pf, buf, type, size); -} - -DllExport int -win32_flushall(void) -{ - return flushall(); -} - -DllExport int -win32_fcloseall(void) -{ - return fcloseall(); -} - -DllExport char* -win32_fgets(char *s, int n, FILE *pf) -{ - return fgets(s, n, pf); -} - -DllExport char* -win32_gets(char *s) -{ - return gets(s); -} - -DllExport int -win32_fgetc(FILE *pf) -{ - return fgetc(pf); -} - -DllExport int -win32_putc(int c, FILE *pf) -{ - return putc(c,pf); -} - -DllExport int -win32_puts(const char *s) -{ - return puts(s); -} - -DllExport int -win32_getchar(void) -{ - return getchar(); -} - -DllExport int -win32_putchar(int c) -{ - return putchar(c); -} - -#ifdef MYMALLOC - -#ifndef USE_PERL_SBRK - -static char *committed = NULL; -static char *base = NULL; -static char *reserved = NULL; -static char *brk = NULL; -static DWORD pagesize = 0; -static DWORD allocsize = 0; - -void * -sbrk(int need) -{ - void *result; - if (!pagesize) - {SYSTEM_INFO info; - GetSystemInfo(&info); - /* Pretend page size is larger so we don't perpetually - * call the OS to commit just one page ... - */ - pagesize = info.dwPageSize << 3; - allocsize = info.dwAllocationGranularity; - } - /* This scheme fails eventually if request for contiguous - * block is denied so reserve big blocks - this is only - * address space not memory ... - */ - if (brk+need >= reserved) - { - DWORD size = 64*1024*1024; - char *addr; - if (committed && reserved && committed < reserved) - { - /* Commit last of previous chunk cannot span allocations */ - addr = (char *) VirtualAlloc(committed,reserved-committed,MEM_COMMIT,PAGE_READWRITE); - if (addr) - committed = reserved; - } - /* Reserve some (more) space - * Note this is a little sneaky, 1st call passes NULL as reserved - * so lets system choose where we start, subsequent calls pass - * the old end address so ask for a contiguous block - */ - addr = (char *) VirtualAlloc(reserved,size,MEM_RESERVE,PAGE_NOACCESS); - if (addr) - { - reserved = addr+size; - if (!base) - base = addr; - if (!committed) - committed = base; - if (!brk) - brk = committed; - } - else - { - return (void *) -1; - } - } - result = brk; - brk += need; - if (brk > committed) - { - DWORD size = ((brk-committed + pagesize -1)/pagesize) * pagesize; - char *addr = (char *) VirtualAlloc(committed,size,MEM_COMMIT,PAGE_READWRITE); - if (addr) - { - committed += size; - } - else - return (void *) -1; - } - return result; -} - -#endif -#endif - -DllExport void* -win32_malloc(size_t size) -{ - return malloc(size); -} - -DllExport void* -win32_calloc(size_t numitems, size_t size) -{ - return calloc(numitems,size); -} - -DllExport void* -win32_realloc(void *block, size_t size) -{ - return realloc(block,size); -} - -DllExport void -win32_free(void *block) -{ - free(block); -} - -int -win32_open_osfhandle(intptr_t osfhandle, int flags) -{ - int fh; - char fileflags=0; /* _osfile flags */ - - Perl_croak_nocontext("win32_open_osfhandle() TBD on this platform"); - return 0; -} - -int -win32_get_osfhandle(int fd) -{ - int fh; - char fileflags=0; /* _osfile flags */ - - Perl_croak_nocontext("win32_get_osfhandle() TBD on this platform"); - return 0; -} - -FILE * -win32_fdupopen(FILE *pf) -{ - FILE* pfdup; - fpos_t pos; - char mode[3]; - int fileno = win32_dup(win32_fileno(pf)); - int fmode = palm_fgetmode(pfdup); - - fprintf(stderr,"DEBUG for win32_fdupopen()\n"); - - /* open the file in the same mode */ - if(fmode & O_RDONLY) { - mode[0] = 'r'; - mode[1] = 0; - } - else if(fmode & O_APPEND) { - mode[0] = 'a'; - mode[1] = 0; - } - else if(fmode & O_RDWR) { - mode[0] = 'r'; - mode[1] = '+'; - mode[2] = 0; - } - - /* it appears that the binmode is attached to the - * file descriptor so binmode files will be handled - * correctly - */ - pfdup = win32_fdopen(fileno, mode); - - /* move the file pointer to the same position */ - if (!fgetpos(pf, &pos)) { - fsetpos(pfdup, &pos); - } - return pfdup; -} - -DllExport void* -win32_dynaload(const char* filename) -{ - dTHX; - HMODULE hModule; - - hModule = XCELoadLibraryA(filename); - - return hModule; -} - -/* this is needed by Cwd.pm... */ - -static -XS(w32_GetCwd) -{ - dXSARGS; - char buf[MAX_PATH]; - SV *sv = sv_newmortal(); - - xcegetcwd(buf, sizeof(buf)); - - sv_setpv(sv, xcestrdup(buf)); - EXTEND(SP,1); - SvPOK_on(sv); - ST(0) = sv; - SvTAINTED_on(ST(0)); - XSRETURN(1); -} - -static -XS(w32_SetCwd) -{ - dXSARGS; - - if (items != 1) - Perl_croak(aTHX_ "usage: Win32::SetCwd($cwd)"); - - if (!xcechdir(SvPV_nolen(ST(0)))) - XSRETURN_YES; - - XSRETURN_NO; -} - -static -XS(w32_GetTickCount) -{ - dXSARGS; - DWORD msec = GetTickCount(); - EXTEND(SP,1); - if ((IV)msec > 0) - XSRETURN_IV(msec); - XSRETURN_NV(msec); -} - -static -XS(w32_GetOSVersion) -{ - dXSARGS; - OSVERSIONINFOA osver; - - osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); - if (!XCEGetVersionExA(&osver)) { - XSRETURN_EMPTY; - } - mXPUSHp(osver.szCSDVersion, strlen(osver.szCSDVersion)); - mXPUSHi(osver.dwMajorVersion); - mXPUSHi(osver.dwMinorVersion); - mXPUSHi(osver.dwBuildNumber); - /* WINCE = 3 */ - mXPUSHi(osver.dwPlatformId); - PUTBACK; -} - -static -XS(w32_IsWinNT) -{ - dXSARGS; - EXTEND(SP,1); - XSRETURN_IV(IsWinNT()); -} - -static -XS(w32_IsWin95) -{ - dXSARGS; - EXTEND(SP,1); - XSRETURN_IV(IsWin95()); -} - -static -XS(w32_IsWinCE) -{ - dXSARGS; - EXTEND(SP,1); - XSRETURN_IV(IsWinCE()); -} - -static -XS(w32_GetOemInfo) -{ - dXSARGS; - wchar_t wbuf[126]; - char buf[126]; - - if(SystemParametersInfoW(SPI_GETOEMINFO, sizeof(wbuf), wbuf, FALSE)) - WideCharToMultiByte(CP_ACP, 0, wbuf, -1, buf, sizeof(buf), 0, 0); - else - sprintf(buf, "SystemParametersInfo failed: %d", GetLastError()); - - EXTEND(SP,1); - XSRETURN_PV(buf); -} - -static -XS(w32_Sleep) -{ - dXSARGS; - if (items != 1) - Perl_croak(aTHX_ "usage: Win32::Sleep($milliseconds)"); - Sleep(SvIV(ST(0))); - XSRETURN_YES; -} - -static -XS(w32_CopyFile) -{ - dXSARGS; - BOOL bResult; - if (items != 3) - Perl_croak(aTHX_ "usage: Win32::CopyFile($from, $to, $overwrite)"); - - { - char szSourceFile[MAX_PATH+1]; - strcpy(szSourceFile, PerlDir_mapA(SvPV_nolen(ST(0)))); - bResult = XCECopyFileA(szSourceFile, SvPV_nolen(ST(1)), - !SvTRUE(ST(2))); - } - - if (bResult) - XSRETURN_YES; - - XSRETURN_NO; -} - -static -XS(w32_MessageBox) -{ - dXSARGS; - - char *txt; - unsigned int res; - unsigned int flags = MB_OK; - - txt = SvPV_nolen(ST(0)); - - if (items < 1 || items > 2) - Perl_croak(aTHX_ "usage: Win32::MessageBox($txt, [$flags])"); - - if(items == 2) - flags = SvIV(ST(1)); - - res = XCEMessageBoxA(NULL, txt, "Perl", flags); - - XSRETURN_IV(res); -} - -static -XS(w32_GetPowerStatus) -{ - dXSARGS; - - SYSTEM_POWER_STATUS_EX sps; - - if(GetSystemPowerStatusEx(&sps, TRUE) == FALSE) - { - XSRETURN_EMPTY; - } - - mXPUSHi(sps.ACLineStatus); - mXPUSHi(sps.BatteryFlag); - mXPUSHi(sps.BatteryLifePercent); - mXPUSHi(sps.BatteryLifeTime); - mXPUSHi(sps.BatteryFullLifeTime); - mXPUSHi(sps.BackupBatteryFlag); - mXPUSHi(sps.BackupBatteryLifePercent); - mXPUSHi(sps.BackupBatteryLifeTime); - mXPUSHi(sps.BackupBatteryFullLifeTime); - - PUTBACK; -} - -#if UNDER_CE > 200 -static -XS(w32_ShellEx) -{ - dXSARGS; - - char buf[126]; - SHELLEXECUTEINFO si; - char *file, *verb; - wchar_t wfile[MAX_PATH]; - wchar_t wverb[20]; - - if (items != 2) - Perl_croak(aTHX_ "usage: Win32::ShellEx($file, $verb)"); - - file = SvPV_nolen(ST(0)); - verb = SvPV_nolen(ST(1)); - - memset(&si, 0, sizeof(si)); - si.cbSize = sizeof(si); - si.fMask = SEE_MASK_FLAG_NO_UI; - - MultiByteToWideChar(CP_ACP, 0, verb, -1, - wverb, sizeof(wverb)/2); - si.lpVerb = (TCHAR *)wverb; - - MultiByteToWideChar(CP_ACP, 0, file, -1, - wfile, sizeof(wfile)/2); - si.lpFile = (TCHAR *)wfile; - - if(ShellExecuteEx(&si) == FALSE) - { - XSRETURN_NO; - } - XSRETURN_YES; -} -#endif - -void -Perl_init_os_extras(void) -{ - dTHX; - char *file = __FILE__; - dXSUB_SYS; - - w32_perlshell_tokens = NULL; - w32_perlshell_items = -1; - w32_fdpid = newAV(); /* XX needs to be in Perl_win32_init()? */ - Newx(w32_children, 1, child_tab); - w32_num_children = 0; - - newXS("Win32::GetCwd", w32_GetCwd, file); - newXS("Win32::SetCwd", w32_SetCwd, file); - newXS("Win32::GetTickCount", w32_GetTickCount, file); - newXS("Win32::GetOSVersion", w32_GetOSVersion, file); -#if UNDER_CE > 200 - newXS("Win32::ShellEx", w32_ShellEx, file); -#endif - newXS("Win32::IsWinNT", w32_IsWinNT, file); - newXS("Win32::IsWin95", w32_IsWin95, file); - newXS("Win32::IsWinCE", w32_IsWinCE, file); - newXS("Win32::CopyFile", w32_CopyFile, file); - newXS("Win32::Sleep", w32_Sleep, file); - newXS("Win32::MessageBox", w32_MessageBox, file); - newXS("Win32::GetPowerStatus", w32_GetPowerStatus, file); - newXS("Win32::GetOemInfo", w32_GetOemInfo, file); -} - -void -myexit(void) -{ - char buf[126]; - - puts("Hit return"); - fgets(buf, sizeof(buf), stdin); -} - -void -Perl_win32_init(int *argcp, char ***argvp) -{ -#ifdef UNDER_CE - char *p; - - if((p = xcegetenv("PERLDEBUG")) && (p[0] == 'y' || p[0] == 'Y')) - atexit(myexit); -#endif - - MALLOC_INIT; -} - -DllExport void -Perl_win32_term(void) -{ - dTHX; - HINTS_REFCNT_TERM; - OP_REFCNT_TERM; - PERLIO_TERM; - MALLOC_TERM; - LOCALE_TERM; -} - -void -win32_get_child_IO(child_IO_table* ptbl) -{ - ptbl->childStdIn = GetStdHandle(STD_INPUT_HANDLE); - ptbl->childStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - ptbl->childStdErr = GetStdHandle(STD_ERROR_HANDLE); -} - -win32_flock(int fd, int oper) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "flock"); - return -1; -} - -DllExport int -win32_waitpid(int pid, int *status, int flags) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "waitpid"); - return -1; -} - -DllExport int -win32_wait(int *status) -{ - dTHX; - Perl_croak(aTHX_ PL_no_func, "wait"); - return -1; -} - -int -wce_reopen_stdout(char *fname) -{ - if(xcefreopen(fname, "w", stdout) == NULL) - return -1; - - return 0; -} - -void -wce_hitreturn() -{ - char buf[126]; - - printf("Hit RETURN"); - fflush(stdout); - fgets(buf, sizeof(buf), stdin); - return; -} - -/* //////////////////////////////////////////////////////////////////// */ - -#undef getcwd - -char * -getcwd(char *buf, size_t size) -{ - return xcegetcwd(buf, size); -} - - -DllExport PerlIO* -win32_popenlist(const char *mode, IV narg, SV **args) -{ - dTHX; - Perl_croak(aTHX_ "List form of pipe open not implemented"); - return NULL; -} - -/* - * a popen() clone that respects PERL5SHELL - * - * changed to return PerlIO* rather than FILE * by BKS, 11-11-2000 - */ - -DllExport PerlIO* -win32_popen(const char *command, const char *mode) -{ - return _popen(command, mode); -} - -/* - * pclose() clone - */ - -DllExport int -win32_pclose(PerlIO *pf) -{ - return _pclose(pf); -} - -#ifdef HAVE_INTERP_INTERN - - -static void -win32_csighandler(int sig) -{ -#if 0 - dTHXa(PERL_GET_SIG_CONTEXT); - Perl_warn(aTHX_ "Got signal %d",sig); -#endif - /* Does nothing */ -} - -void -Perl_sys_intern_init(pTHX) -{ - int i; - w32_perlshell_tokens = NULL; - w32_perlshell_vec = (char**)NULL; - w32_perlshell_items = 0; - w32_fdpid = newAV(); - Newx(w32_children, 1, child_tab); - w32_num_children = 0; -# ifdef USE_ITHREADS - w32_pseudo_id = 0; - Newx(w32_pseudo_children, 1, child_tab); - w32_num_pseudo_children = 0; -# endif - w32_init_socktype = 0; - w32_timerid = 0; - w32_poll_count = 0; -} - -void -Perl_sys_intern_clear(pTHX) -{ - Safefree(w32_perlshell_tokens); - Safefree(w32_perlshell_vec); - /* NOTE: w32_fdpid is freed by sv_clean_all() */ - Safefree(w32_children); - if (w32_timerid) { - KillTimer(NULL,w32_timerid); - w32_timerid=0; - } -# ifdef USE_ITHREADS - Safefree(w32_pseudo_children); -# endif -} - -# ifdef USE_ITHREADS - -void -Perl_sys_intern_dup(pTHX_ struct interp_intern *src, struct interp_intern *dst) -{ - dst->perlshell_tokens = NULL; - dst->perlshell_vec = (char**)NULL; - dst->perlshell_items = 0; - dst->fdpid = newAV(); - Newxz(dst->children, 1, child_tab); - dst->pseudo_id = 0; - Newxz(dst->pseudo_children, 1, child_tab); - dst->thr_intern.Winit_socktype = 0; - dst->timerid = 0; - dst->poll_count = 0; - Copy(src->sigtable,dst->sigtable,SIG_SIZE,Sighandler_t); -} -# endif /* USE_ITHREADS */ -#endif /* HAVE_INTERP_INTERN */ - -// added to remove undefied symbol error in CodeWarrior compilation -int -Perl_Ireentrant_buffer_ptr(aTHX) -{ - return 0; -} diff --git a/win32/wince.h b/win32/wince.h deleted file mode 100644 index 2a97668bb1..0000000000 --- a/win32/wince.h +++ /dev/null @@ -1,146 +0,0 @@ -/* wince.h */ - -/* Time-stamp: <01/08/01 20:48:08 keuchel@w2k> */ - -/* This file includes extracts from the celib-headers, because */ -/* the celib-headers produces macro conflicts with defines in */ -/* win32iop.h etc */ - -#ifndef WINCE_H -#define WINCE_H 1 - -#include "celib_defs.h" - -/* include local copies of celib headers... */ -#include "errno.h" -#include "sys/stat.h" -#include "time.h" -#include "cectype.h" - -#ifndef START_EXTERN_C -#undef EXTERN_C -#ifdef __cplusplus -# define START_EXTERN_C extern "C" { -# define END_EXTERN_C } -# define EXTERN_C extern "C" -#else -# define START_EXTERN_C -# define END_EXTERN_C -# define EXTERN_C -#endif -#endif - -START_EXTERN_C - -#ifndef _IOFBF -#define _IOFBF 0x0000 -#endif -#ifndef _IOLBF -#define _IOLBF 0x0040 -#endif -#ifndef _IONBF -#define _IONBF 0x0004 -#endif - -#if UNDER_CE <= 200 -XCE_EXPORT double xceatof(const char *); -XCE_EXPORT int xcetoupper(int c); -XCE_EXPORT int xcetolower(int c); -#define atof xceatof -#define toupper xcetoupper -#define tolower xcetolower -#else -XCE_EXPORT double atof(const char *); -#endif - -XCE_EXPORT void XCEShowMessageA(const char *fmt, ...); - -#define time xcetime -#define gmtime xcegmtime -#define localtime xcelocaltime -#define asctime xceasctime -/* #define utime xceutime */ -#define futime xcefutime -#define ftime xceftime -#define ctime xcectime -#define gettimeofday xcegettimeofday -#define GetSystemTimeAsFileTime XCEGetSystemTimeAsFileTime - -#define setuid xcesetuid -#define getuid xcegetuid -#define geteuid xcegeteuid -#define seteuid xceseteuid - -#define setgid xcesetgid -#define getgid xcegetgid -#define getegid xcegetegid -#define setegid xcesetegid - -XCE_EXPORT int xcechown(const char *filename, int owner, int group); -#define chown xcechown - -XCE_EXPORT char *xcestrrchr(const char * string, int ch); -#define strrchr xcestrrchr - -XCE_EXPORT void (*xcesignal(int, void (*)(int)))(int); -XCE_EXPORT int xceraise(int); -#define signal xcesignal -#define raise xceraise - -XCE_EXPORT int xcecreat(const char *filename, int pmode); -XCE_EXPORT int xceopen(const char *fname, int mode, ...); -XCE_EXPORT int xceread(int fd, void *buf, int size); -XCE_EXPORT int xcewrite(int fd, void *buf, int size); -XCE_EXPORT int xceclose(int fd); -XCE_EXPORT off_t xcelseek(int fd, int off, int whence); - -XCE_EXPORT char *xcestrupr(char *string); -XCE_EXPORT char *xcestrlwr(char *string); -#define strupr xcestrupr -#define strlwr xcestrlwr - -XCE_EXPORT double xcestrtod(const char *s, char **errorptr); -XCE_EXPORT long xcestrtol(const char *s, char **errorptr, int base); -XCE_EXPORT unsigned long xcestrtoul(const char *s, char **errorptr, int base); -#define strtod xcestrtod -#define strtol xcestrtol -#define strtoul xcestrtoul - -XCE_EXPORT int xcestrnicmp(const char *first, const char *last, size_t count); -#define strnicmp xcestrnicmp - -XCE_EXPORT int xceumask(int mask); -#define umask xceumask - -XCE_EXPORT int xceisatty(int fd); -#define isatty xceisatty - -XCE_EXPORT int xcechsize(int fd, unsigned long size); -#define chsize xcechsize - -XCE_EXPORT char *xcegetlogin(); -#define getlogin xcegetlogin - -XCE_EXPORT DWORD XCEAPI XCEGetModuleFileNameA(HMODULE hModule, LPTSTR lpName, DWORD nSize); -XCE_EXPORT HMODULE XCEAPI XCEGetModuleHandleA(const char *lpName); -XCE_EXPORT FARPROC XCEAPI XCEGetProcAddressA(HMODULE hMod, const char *name); - -/* //////////////////////////////////////////////////////////////////// */ - -#define getgid xcegetgid -#define getegid xcegetegid -#define geteuid xcegeteuid -#define setgid xcesetgid - -#define strupr xcestrupr -#define time xcetime - -XCE_EXPORT BOOL XCEFreeEnvironmentStrings(LPCSTR buf); -#define GetEnvironmentStrings XCEGetEnvironmentStrings -#define FreeEnvironmentStrings XCEFreeEnvironmentStrings - -void wce_hitreturn(); - -END_EXTERN_C - -#endif diff --git a/win32/wincesck.c b/win32/wincesck.c deleted file mode 100644 index 9ef025d46c..0000000000 --- a/win32/wincesck.c +++ /dev/null @@ -1,495 +0,0 @@ -/* Time-stamp: <01/08/01 21:01:12 keuchel@w2k> */ - -/* wincesck.c - * - * (c) 1995 Microsoft Corporation. All rights reserved. - * Developed by hip communications inc. - * Portions (c) 1993 Intergraph Corporation. All rights reserved. - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file. - */ - -/* The socket calls use fd functions from celib... */ - -#define WIN32IO_IS_STDIO -#define WIN32SCK_IS_STDSCK -#define WIN32_LEAN_AND_MEAN - -#ifdef __GNUC__ -#define Win32_Winsock -#endif - -#include <windows.h> - -#define wince_private -#include "errno.h" - -#include "EXTERN.h" -#include "perl.h" - -#include "Win32iop.h" -#include <sys/socket.h> - -#ifndef UNDER_CE -#include <fcntl.h> -#include <sys/stat.h> -#include <assert.h> -#include <io.h> -#endif - -#ifdef UNDER_CE - -XCE_EXPORT struct servent *xcegetservbyname(const char *sname, const char *sproto); -XCE_EXPORT struct servent * xcegetservbyport(int aport, const char *sproto); -XCE_EXPORT struct protoent *xcegetprotobyname(const char *name); -XCE_EXPORT struct protoent *xcegetprotobynumber(int number); - -#define getservbyname xcegetservbyname -#define getservbyport xcegetservbyport -#define getprotobyname xcegetprotobyname -#define getprotobynumber xcegetprotobynumber - -/* uses fdtab... */ -#include "cesocket2.h" - -#endif - -#define TO_SOCKET(X) (X) - -#define StartSockets() \ - STMT_START { \ - if (!wsock_started) \ - start_sockets(); \ - } STMT_END - -#define SOCKET_TEST(x, y) \ - STMT_START { \ - StartSockets(); \ - if((x) == (y)) \ - errno = WSAGetLastError(); \ - } STMT_END - -#define SOCKET_TEST_ERROR(x) SOCKET_TEST(x, SOCKET_ERROR) - -static struct servent* win32_savecopyservent(struct servent*d, - struct servent*s, - const char *proto); - -static int wsock_started = 0; - -EXTERN_C void -EndSockets(void) -{ - if (wsock_started) - WSACleanup(); -} - -void -start_sockets(void) -{ - dTHX; - unsigned short version; - WSADATA retdata; - int ret; - - /* - * initalize the winsock interface and insure that it is - * cleaned up at exit. - */ - version = 0x101; - if(ret = WSAStartup(version, &retdata)) - Perl_croak_nocontext("Unable to locate winsock library!\n"); - if(retdata.wVersion != version) - Perl_croak_nocontext("Could not find version 1.1 of winsock dll\n"); - - /* atexit((void (*)(void)) EndSockets); */ - wsock_started = 1; -} - -u_long -win32_htonl(u_long hostlong) -{ - StartSockets(); - return htonl(hostlong); -} - -u_short -win32_htons(u_short hostshort) -{ - StartSockets(); - return htons(hostshort); -} - -u_long -win32_ntohl(u_long netlong) -{ - StartSockets(); - return ntohl(netlong); -} - -u_short -win32_ntohs(u_short netshort) -{ - StartSockets(); - return ntohs(netshort); -} - -SOCKET -win32_socket(int af, int type, int protocol) -{ - StartSockets(); - return xcesocket(af, type, protocol); -} - -SOCKET -win32_accept(SOCKET s, struct sockaddr *addr, int *addrlen) -{ - StartSockets(); - return xceaccept(s, addr, addrlen); -} - -int -win32_bind(SOCKET s, const struct sockaddr *addr, int addrlen) -{ - StartSockets(); - return xcebind(s, addr, addrlen); -} - -int -win32_connect(SOCKET s, const struct sockaddr *addr, int addrlen) -{ - StartSockets(); - return xceconnect(s, addr, addrlen); -} - - -int -win32_getpeername(SOCKET s, struct sockaddr *addr, int *addrlen) -{ - StartSockets(); - return xcegetpeername(s, addr, addrlen); -} - -int -win32_getsockname(SOCKET s, struct sockaddr *addr, int *addrlen) -{ - StartSockets(); - return xcegetsockname(s, addr, addrlen); -} - -int -win32_getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen) -{ - StartSockets(); - return xcegetsockopt(s, level, optname, optval, optlen); -} - -int -win32_ioctlsocket(SOCKET s, long cmd, u_long *argp) -{ - StartSockets(); - return xceioctlsocket(s, cmd, argp); -} - -int -win32_listen(SOCKET s, int backlog) -{ - StartSockets(); - return xcelisten(s, backlog); -} - -int -win32_recv(SOCKET s, char *buf, int len, int flags) -{ - StartSockets(); - return xcerecv(s, buf, len, flags); -} - -int -win32_recvfrom(SOCKET s, char *buf, int len, int flags, - struct sockaddr *from, int *fromlen) -{ - StartSockets(); - return xcerecvfrom(s, buf, len, flags, from, fromlen); -} - -int -win32_select(int nfds, Perl_fd_set* rd, Perl_fd_set* wr, - Perl_fd_set* ex, const struct timeval* timeout) -{ - StartSockets(); - /* select not yet fixed */ - errno = ENOSYS; - return -1; -} - -int -win32_send(SOCKET s, const char *buf, int len, int flags) -{ - StartSockets(); - return xcesend(s, buf, len, flags); -} - -int -win32_sendto(SOCKET s, const char *buf, int len, int flags, - const struct sockaddr *to, int tolen) -{ - StartSockets(); - return xcesendto(s, buf, len, flags, to, tolen); -} - -int -win32_setsockopt(SOCKET s, int level, int optname, - const char *optval, int optlen) -{ - StartSockets(); - return xcesetsockopt(s, level, optname, optval, optlen); -} - -int -win32_shutdown(SOCKET s, int how) -{ - StartSockets(); - return xceshutdown(s, how); -} - -int -win32_closesocket(SOCKET s) -{ - StartSockets(); - return xceclosesocket(s); -} - -struct hostent * -win32_gethostbyaddr(const char *addr, int len, int type) -{ - struct hostent *r; - - SOCKET_TEST(r = gethostbyaddr(addr, len, type), NULL); - return r; -} - -struct hostent * -win32_gethostbyname(const char *name) -{ - struct hostent *r; - - SOCKET_TEST(r = gethostbyname(name), NULL); - return r; -} - -int -win32_gethostname(char *name, int len) -{ - int r; - - SOCKET_TEST_ERROR(r = gethostname(name, len)); - return r; -} - -struct protoent * -win32_getprotobyname(const char *name) -{ - struct protoent *r; - - SOCKET_TEST(r = getprotobyname(name), NULL); - return r; -} - -struct protoent * -win32_getprotobynumber(int num) -{ - struct protoent *r; - - SOCKET_TEST(r = getprotobynumber(num), NULL); - return r; -} - -struct servent * -win32_getservbyname(const char *name, const char *proto) -{ - dTHX; - struct servent *r; - - SOCKET_TEST(r = getservbyname(name, proto), NULL); - if (r) { - r = win32_savecopyservent(&w32_servent, r, proto); - } - return r; -} - -struct servent * -win32_getservbyport(int port, const char *proto) -{ - dTHX; - struct servent *r; - - SOCKET_TEST(r = getservbyport(port, proto), NULL); - if (r) { - r = win32_savecopyservent(&w32_servent, r, proto); - } - return r; -} - -int -win32_ioctl(int i, unsigned int u, char *data) -{ - dTHX; - u_long u_long_arg; - int retval; - - if (!wsock_started) { - Perl_croak_nocontext("ioctl implemented only on sockets"); - /* NOTREACHED */ - } - - /* mauke says using memcpy avoids alignment issues */ - memcpy(&u_long_arg, data, sizeof u_long_arg); - retval = ioctlsocket(TO_SOCKET(i), (long)u, &u_long_arg); - memcpy(data, &u_long_arg, sizeof u_long_arg); - - if (retval == SOCKET_ERROR) { - if (WSAGetLastError() == WSAENOTSOCK) { - Perl_croak_nocontext("ioctl implemented only on sockets"); - /* NOTREACHED */ - } - errno = WSAGetLastError(); - } - return retval; -} - -char FAR * -win32_inet_ntoa(struct in_addr in) -{ - StartSockets(); - return inet_ntoa(in); -} - -unsigned long -win32_inet_addr(const char FAR *cp) -{ - StartSockets(); - return inet_addr(cp); -} - -/* - * Networking stubs - */ - -void -win32_endhostent() -{ - dTHX; - Perl_croak_nocontext("endhostent not implemented!\n"); -} - -void -win32_endnetent() -{ - dTHX; - Perl_croak_nocontext("endnetent not implemented!\n"); -} - -void -win32_endprotoent() -{ - dTHX; - Perl_croak_nocontext("endprotoent not implemented!\n"); -} - -void -win32_endservent() -{ - dTHX; - Perl_croak_nocontext("endservent not implemented!\n"); -} - - -struct netent * -win32_getnetent(void) -{ - dTHX; - Perl_croak_nocontext("getnetent not implemented!\n"); - return (struct netent *) NULL; -} - -struct netent * -win32_getnetbyname(char *name) -{ - dTHX; - Perl_croak_nocontext("getnetbyname not implemented!\n"); - return (struct netent *)NULL; -} - -struct netent * -win32_getnetbyaddr(long net, int type) -{ - dTHX; - Perl_croak_nocontext("getnetbyaddr not implemented!\n"); - return (struct netent *)NULL; -} - -struct protoent * -win32_getprotoent(void) -{ - dTHX; - Perl_croak_nocontext("getprotoent not implemented!\n"); - return (struct protoent *) NULL; -} - -struct servent * -win32_getservent(void) -{ - dTHX; - Perl_croak_nocontext("getservent not implemented!\n"); - return (struct servent *) NULL; -} - -void -win32_sethostent(int stayopen) -{ - dTHX; - Perl_croak_nocontext("sethostent not implemented!\n"); -} - - -void -win32_setnetent(int stayopen) -{ - dTHX; - Perl_croak_nocontext("setnetent not implemented!\n"); -} - - -void -win32_setprotoent(int stayopen) -{ - dTHX; - Perl_croak_nocontext("setprotoent not implemented!\n"); -} - - -void -win32_setservent(int stayopen) -{ - dTHX; - Perl_croak_nocontext("setservent not implemented!\n"); -} - -static struct servent* -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 (!IsWin95() && s->s_proto && strlen(s->s_proto)) - d->s_proto = s->s_proto; - else - if (proto && strlen(proto)) - d->s_proto = (char *)proto; - else - d->s_proto = "tcp"; - - return d; -} |