#ifdef PERL_OBJECT
# define DYNAMIC_ENV_FETCH
# define ENV_HV_NAME "___ENV_HV_NAME___"
+# define HAS_GETENV_LEN
# define prime_env_iter()
# define WIN32IO_IS_STDIO /* don't pull in custom stdio layer */
# ifdef PERL_GLOBAL_STRUCT
#endif
#ifdef __GNUC__
-typedef long long __int64;
+// typedef long long __int64;
# define Win32_Winsock
/* GCC does not do __declspec() - render it a nop
* and turn on options to avoid importing data
typedef long uid_t;
typedef long gid_t;
+typedef unsigned short mode_t;
#pragma warning(disable: 4018 4035 4101 4102 4244 4245 4761)
#ifndef PERL_OBJECT
#define STRUCT_MGVTBL_DEFINITION \
struct mgvtbl { \
union { \
- int (CPERLscope(*svt_get)) _((SV *sv, MAGIC* mg)); \
+ int (CPERLscope(*svt_get))(pTHX_ SV *sv, MAGIC* mg); \
char handle_VC_problem1[16]; \
}; \
union { \
- int (CPERLscope(*svt_set)) _((SV *sv, MAGIC* mg)); \
+ int (CPERLscope(*svt_set))(pTHX_ SV *sv, MAGIC* mg); \
char handle_VC_problem2[16]; \
}; \
union { \
- U32 (CPERLscope(*svt_len)) _((SV *sv, MAGIC* mg)); \
+ U32 (CPERLscope(*svt_len))(pTHX_ SV *sv, MAGIC* mg); \
char handle_VC_problem3[16]; \
}; \
union { \
- int (CPERLscope(*svt_clear)) _((SV *sv, MAGIC* mg)); \
+ int (CPERLscope(*svt_clear))(pTHX_ SV *sv, MAGIC* mg); \
char handle_VC_problem4[16]; \
}; \
union { \
- int (CPERLscope(*svt_free)) _((SV *sv, MAGIC* mg)); \
+ int (CPERLscope(*svt_free))(pTHX_ SV *sv, MAGIC* mg); \
char handle_VC_problem5[16]; \
}; \
}
#define BASEOP_DEFINITION \
OP* op_next; \
OP* op_sibling; \
- OP* (CPERLscope(*op_ppaddr))_((ARGSproto)); \
+ OP* (CPERLscope(*op_ppaddr))(pTHX); \
char handle_VC_problem[12]; \
PADOFFSET op_targ; \
OPCODE op_type; \
I32 any_i32; \
IV any_iv; \
long any_long; \
- void (CPERLscope(*any_dptr)) _((void*)); \
+ void (CPERLscope(*any_dptr)) (pTHX_ void*); \
char handle_VC_problem[16]; \
}
#define init_os_extras Perl_init_os_extras
DllExport void Perl_win32_init(int *argcp, char ***argvp);
-DllExport void Perl_init_os_extras(void);
-DllExport void win32_str_os_error(void *sv, DWORD err);
+DllExport void Perl_init_os_extras(pTHX);
+DllExport void win32_str_os_error(pTHX_ void *sv, DWORD err);
#ifndef USE_SOCKETS_AS_HANDLES
extern FILE * my_fdopen(int, char *);
#endif
extern int my_fclose(FILE *);
-extern int do_aspawn(void *really, void **mark, void **sp);
-extern int do_spawn(char *cmd);
-extern int do_spawn_nowait(char *cmd);
-extern char do_exec(char *cmd);
-extern char * win32_get_privlib(char *pl);
-extern char * win32_get_sitelib(char *pl);
+extern int do_aspawn(pTHX_ void *really, void **mark, void **sp);
+extern int do_spawn(pTHX_ char *cmd);
+extern int do_spawn_nowait(pTHX_ char *cmd);
+extern char * win32_get_privlib(pTHX_ char *pl);
+extern char * win32_get_sitelib(pTHX_ char *pl);
extern int IsWin95(void);
extern int IsWinNT(void);
# endif /* !USE_DECLSPEC_THREAD */
#endif /* USE_THREADS */
+/* UNICODE<>ANSI translation helpers */
+/* Use CP_ACP when mode is ANSI */
+/* Use CP_UTF8 when mode is UTF8 */
+
+#define A2WHELPER(lpa, lpw, nChars, acp)\
+ lpw[0] = 0, MultiByteToWideChar(acp, 0, lpa, -1, lpw, nChars)
+
+#define W2AHELPER(lpw, lpa, nChars, acp)\
+ lpa[0] = '\0', WideCharToMultiByte(acp, 0, lpw, -1, lpa, nChars, NULL, NULL)
+
+/* place holders for now */
+#define USING_WIDE() (IsWinNT())
+#define GETINTERPMODE() (IN_UTF8)
+
+/*
+ * This provides a layer of functions and macros to ensure extensions will
+ * get to use the same RTL functions as the core.
+ */
+#include "win32iop.h"
+
#endif /* _INC_WIN32_PERL5 */
+