diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 2002-04-21 01:55:35 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 2002-04-21 01:55:35 +0000 |
commit | c623ac675720b3145d48cc2ea9474a0f3e0cbbca (patch) | |
tree | 72f97c16f706a1538dd9a5726323e59d251c8c53 /win32/win32.h | |
parent | 6d1c0808b641926567cd16e07679f427c5fedc61 (diff) | |
download | perl-c623ac675720b3145d48cc2ea9474a0f3e0cbbca.tar.gz |
Windows 64-bit support:
* support for building it in the regular makefiles
* large files support via the _*i64() functions (this should be
portable to the 32-bit universe too, but quite untested and
and binary-incompatible, therefore not enabled there)
* three additional test failures in addition to the t/end.t one
(see README.win32)
* sprintf() on Windows gets %I{32,64,}[xoud] format that parallel
the ones available from the CRT (needed because Perl uses
the UVxf macros in both sprintf() *and* in sv_catpvf() et al.)
* add a few 64-bit notes to README.win32
The following general problems were also fixed:
* s/struct stat/Stat_t/g
* Data::Dumper had some naughty 'long' typecasts
* Errno_pm.PL didn't work safe when winsock.h was not in the same
directory as errno.h
* various tell/seek things were incorrectly prototyped
* squelch ugly looking noise when running tests
* Embed.t wasn't linking in all the libraries
* perl57.dll is now perl58.dll (anticipating 5.8.0-RC1)
* re-enable all the disabled warnings (additional fixes may be
needed for the warnings uncovered by this)
p4raw-id: //depot/perl@16033
Diffstat (limited to 'win32/win32.h')
-rw-r--r-- | win32/win32.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/win32/win32.h b/win32/win32.h index 299d8f1ed5..91baa822c8 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -72,6 +72,7 @@ #include <stdio.h> #include <direct.h> #include <stdlib.h> +#include <stddef.h> #include <fcntl.h> #ifndef EXT #include "EXTERN.h" @@ -200,7 +201,7 @@ struct utsname { typedef long uid_t; typedef long gid_t; typedef unsigned short mode_t; -#pragma warning(disable: 4018 4035 4101 4102 4244 4245 4761) +#pragma warning(disable: 4102) /* "unreferenced label" */ /* Visual C thinks that a pointer to a member variable is 16 bytes in size. */ #define PERL_MEMBER_PTR_SIZE 16 @@ -236,6 +237,16 @@ typedef long gid_t; /* compatibility stuff for other compilers goes here */ +#ifndef _INTPTR_T_DEFINED +typedef int intptr_t; +# define _INTPTR_T_DEFINED +#endif + +#ifndef _UINTPTR_T_DEFINED +typedef unsigned int uintptr_t; +# define _UINTPTR_T_DEFINED +#endif + START_EXTERN_C /* For UNIX compatibility. */ @@ -247,7 +258,10 @@ extern gid_t getegid(void); extern int setuid(uid_t uid); extern int setgid(gid_t gid); extern int kill(int pid, int sig); -extern void *sbrk(int need); +#ifndef USE_PERL_SBRK +extern void *sbrk(ptrdiff_t need); +# define HAS_SBRK_PROTO +#endif extern char * getlogin(void); extern int chown(const char *p, uid_t o, gid_t g); extern int mkstemp(const char *path); @@ -292,7 +306,7 @@ DllExport void win32_get_child_IO(child_IO_table* ptr); extern FILE * my_fdopen(int, char *); #endif extern int my_fclose(FILE *); -extern int my_fstat(int fd, struct stat *sbufptr); +extern int my_fstat(int fd, Stat_t *sbufptr); extern int do_aspawn(void *really, void **mark, void **sp); extern int do_spawn(char *cmd); extern int do_spawn_nowait(char *cmd); @@ -477,7 +491,7 @@ DllExport int win32_async_check(pTHX); * Control structure for lowio file handles */ typedef struct { - long osfhnd; /* underlying OS file HANDLE */ + intptr_t osfhnd;/* underlying OS file HANDLE */ char osfile; /* attributes of file (e.g., open in text mode?) */ char pipech; /* one char buffer for handles opened on pipes */ int lockinitflag; @@ -511,7 +525,7 @@ EXTERN_C _CRTIMP ioinfo* __pioinfo[]; #define _pipech(i) (_pioinfo(i)->pipech) /* since we are not doing a dup2(), this works fine */ -#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (long)osfh) +#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh) #endif #endif |