summaryrefslogtreecommitdiff
path: root/win32/win32.h
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2002-04-21 01:55:35 +0000
committerGurusamy Sarathy <gsar@cpan.org>2002-04-21 01:55:35 +0000
commitc623ac675720b3145d48cc2ea9474a0f3e0cbbca (patch)
tree72f97c16f706a1538dd9a5726323e59d251c8c53 /win32/win32.h
parent6d1c0808b641926567cd16e07679f427c5fedc61 (diff)
downloadperl-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.h24
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