This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
circumvent VMS fileno bug in old DEC C version
[perl5.git]
/
win32
/
perlhost.h
diff --git
a/win32/perlhost.h
b/win32/perlhost.h
index
93cb458
..
02b9cb4
100644
(file)
--- a/
win32/perlhost.h
+++ b/
win32/perlhost.h
@@
-17,8
+17,9
@@
#if !defined(PERL_OBJECT)
START_EXTERN_C
#endif
#if !defined(PERL_OBJECT)
START_EXTERN_C
#endif
-extern char * g_win32_get_privlib(char *pl);
-extern char * g_win32_get_sitelib(char *pl);
+extern char * g_win32_get_privlib(const char *pl);
+extern char * g_win32_get_sitelib(const char *pl);
+extern char * g_win32_get_vendorlib(const char *pl);
extern char * g_getlogin(void);
extern int do_spawn2(char *cmd, int exectype);
#if !defined(PERL_OBJECT)
extern char * g_getlogin(void);
extern int do_spawn2(char *cmd, int exectype);
#if !defined(PERL_OBJECT)
@@
-475,17
+476,29
@@
PerlEnvOsId(struct IPerlEnv* piPerl)
}
char*
}
char*
-PerlEnvLibPath(struct IPerlEnv* piPerl, char *pl)
+PerlEnvLibPath(struct IPerlEnv* piPerl, c
onst c
har *pl)
{
return g_win32_get_privlib(pl);
}
char*
{
return g_win32_get_privlib(pl);
}
char*
-PerlEnvSiteLibPath(struct IPerlEnv* piPerl, char *pl)
+PerlEnvSiteLibPath(struct IPerlEnv* piPerl, c
onst c
har *pl)
{
return g_win32_get_sitelib(pl);
}
{
return g_win32_get_sitelib(pl);
}
+char*
+PerlEnvVendorLibPath(struct IPerlEnv* piPerl, const char *pl)
+{
+ return g_win32_get_vendorlib(pl);
+}
+
+void
+PerlEnvGetChildIO(struct IPerlEnv* piPerl, child_IO_table* ptr)
+{
+ win32_get_child_IO(ptr);
+}
+
struct IPerlEnv perlEnv =
{
PerlEnvGetenv,
struct IPerlEnv perlEnv =
{
PerlEnvGetenv,
@@
-500,6
+513,8
@@
struct IPerlEnv perlEnv =
PerlEnvOsId,
PerlEnvLibPath,
PerlEnvSiteLibPath,
PerlEnvOsId,
PerlEnvLibPath,
PerlEnvSiteLibPath,
+ PerlEnvVendorLibPath,
+ PerlEnvGetChildIO,
};
#undef IPERL2HOST
};
#undef IPERL2HOST
@@
-1628,7
+1643,7
@@
PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode)
}
#ifdef USE_ITHREADS
}
#ifdef USE_ITHREADS
-static
DWORD WINAPI
+static
THREAD_RET_TYPE
win32_start_child(LPVOID arg)
{
PerlInterpreter *my_perl = (PerlInterpreter*)arg;
win32_start_child(LPVOID arg)
{
PerlInterpreter *my_perl = (PerlInterpreter*)arg;
@@
-1643,7
+1658,7
@@
win32_start_child(LPVOID arg)
#endif
#endif
- PERL_SET_
INTERP
(my_perl);
+ PERL_SET_
THX
(my_perl);
/* set $$ to pseudo id */
#ifdef PERL_SYNC_FORK
/* set $$ to pseudo id */
#ifdef PERL_SYNC_FORK
@@
-1738,11
+1753,16
@@
PerlProcFork(struct IPerlProc* piPerl)
new_perl->Isys_intern.internal_host = h;
# ifdef PERL_SYNC_FORK
id = win32_start_child((LPVOID)new_perl);
new_perl->Isys_intern.internal_host = h;
# ifdef PERL_SYNC_FORK
id = win32_start_child((LPVOID)new_perl);
- PERL_SET_
INTERP
(aTHXo);
+ PERL_SET_
THX
(aTHXo);
# else
# else
+# ifdef USE_RTL_THREAD_API
+ handle = (HANDLE)_beginthreadex((void*)NULL, 0, win32_start_child,
+ (void*)new_perl, 0, (unsigned*)&id);
+# else
handle = CreateThread(NULL, 0, win32_start_child,
(LPVOID)new_perl, 0, &id);
handle = CreateThread(NULL, 0, win32_start_child,
(LPVOID)new_perl, 0, &id);
- PERL_SET_INTERP(aTHXo);
+# endif
+ PERL_SET_THX(aTHXo); /* XXX perl_clone*() set TLS */
if (!handle)
Perl_croak(aTHX_ "panic: pseudo fork() failed");
w32_pseudo_child_handles[w32_num_pseudo_children] = handle;
if (!handle)
Perl_croak(aTHX_ "panic: pseudo fork() failed");
w32_pseudo_child_handles[w32_num_pseudo_children] = handle;