#endif
START_EXTERN_C
-extern char * g_win32_get_privlib(const char *pl, STRLEN *const len);
-extern char * g_win32_get_sitelib(const char *pl, STRLEN *const len);
-extern char * g_win32_get_vendorlib(const char *pl, STRLEN *const len);
extern char * g_getlogin(void);
END_EXTERN_C
return IPERL2HOST(piPerl)->IsLocked();
}
-struct IPerlMem perlMem =
+const struct IPerlMem perlMem =
{
PerlMemMalloc,
PerlMemRealloc,
return IPERL2HOST(piPerl)->IsLockedShared();
}
-struct IPerlMem perlMemShared =
+const struct IPerlMem perlMemShared =
{
PerlMemSharedMalloc,
PerlMemSharedRealloc,
return IPERL2HOST(piPerl)->IsLockedParse();
}
-struct IPerlMem perlMemParse =
+const struct IPerlMem perlMemParse =
{
PerlMemParseMalloc,
PerlMemParseRealloc,
}
char*
-PerlEnvLibPath(struct IPerlEnv* piPerl, const char *pl, STRLEN *const len)
+PerlEnvLibPath(struct IPerlEnv* piPerl, WIN32_NO_REGISTRY_M_(const char *pl) STRLEN *const len)
{
- return g_win32_get_privlib(pl, len);
+ return win32_get_privlib(WIN32_NO_REGISTRY_M_(pl) len);
}
char*
PerlEnvSiteLibPath(struct IPerlEnv* piPerl, const char *pl, STRLEN *const len)
{
- return g_win32_get_sitelib(pl, len);
+ return win32_get_sitelib(pl, len);
}
char*
PerlEnvVendorLibPath(struct IPerlEnv* piPerl, const char *pl,
STRLEN *const len)
{
- return g_win32_get_vendorlib(pl, len);
+ return win32_get_vendorlib(pl, len);
}
void
win32_get_child_IO(ptr);
}
-struct IPerlEnv perlEnv =
+const struct IPerlEnv perlEnv =
{
PerlEnvGetenv,
PerlEnvPutenv,
int fileno = win32_dup(win32_fileno(pf));
/* open the file in the same mode */
- if((pf)->_flag & _IOREAD) {
+ if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RD) {
mode[0] = 'r';
mode[1] = 0;
}
- else if((pf)->_flag & _IOWRT) {
+ else if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_WR) {
mode[0] = 'a';
mode[1] = 0;
}
- else if((pf)->_flag & _IORW) {
+ else if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RW) {
mode[0] = 'r';
mode[1] = '+';
mode[2] = 0;
#endif
}
-struct IPerlStdIO perlStdIO =
+const struct IPerlStdIO perlStdIO =
{
PerlStdIOStdin,
PerlStdIOStdout,
return win32_write(handle, buffer, count);
}
-struct IPerlLIO perlLIO =
+const struct IPerlLIO perlLIO =
{
PerlLIOAccess,
PerlLIOChmod,
return IPERL2HOST(piPerl)->MapPathW(path);
}
-struct IPerlDir perlDir =
+const struct IPerlDir perlDir =
{
PerlDirMakedir,
PerlDirChdir,
struct hostent*
PerlSockGethostent(struct IPerlSock* piPerl)
{
- dTHX;
- Perl_croak(aTHX_ "gethostent not implemented!\n");
+ win32_croak_not_implemented("gethostent");
return NULL;
}
return win32_ioctlsocket(s, cmd, argp);
}
-struct IPerlSock perlSock =
+const struct IPerlSock perlSock =
{
PerlSockHtonl,
PerlSockHtons,
SvREFCNT_dec(PL_curstash);
PL_curstash = (HV *)SvREFCNT_inc(PL_defstash);
}
- if (PL_endav && !PL_minus_c)
+ if (PL_endav && !PL_minus_c) {
+ PERL_SET_PHASE(PERL_PHASE_END);
call_list(oldscope, PL_endav);
+ }
status = STATUS_EXIT;
break;
case 3:
int
PerlProcFork(struct IPerlProc* piPerl)
{
- dTHX;
#ifdef USE_ITHREADS
+ dTHX;
DWORD id;
HANDLE handle;
CPerlHost *h;
# endif
return -(int)id;
#else
- Perl_croak(aTHX_ "fork() not implemented!\n");
+ win32_croak_not_implemented("fork()");
return -1;
#endif /* USE_ITHREADS */
}
int
PerlProcLastHost(struct IPerlProc* piPerl)
{
+ /* this dTHX is unused in an optimized build since CPerlHost::num_hosts
+ is a static */
dTHX;
CPerlHost *h = (CPerlHost*)w32_internal_host;
return h->LastHost();
}
-struct IPerlProc perlProc =
+const struct IPerlProc perlProc =
{
PerlProcAbort,
PerlProcCrypt,
void
CPerlHost::Add(LPCSTR lpStr)
{
- dTHX;
- char szBuffer[1024];
LPSTR *lpPtr;
- int index, length = strlen(lpStr)+1;
-
- for(index = 0; lpStr[index] != '\0' && lpStr[index] != '='; ++index)
- szBuffer[index] = lpStr[index];
-
- szBuffer[index] = '\0';
+ STRLEN length = strlen(lpStr)+1;
// replacing ?
- lpPtr = Lookup(szBuffer);
+ lpPtr = Lookup(lpStr);
if (lpPtr != NULL) {
// must allocate things via host memory allocation functions
// rather than perl's Renew() et al, as the perl interpreter
void
CPerlHost::FreeLocalEnvironmentStrings(LPSTR lpStr)
{
- dTHX;
Safefree(lpStr);
}
char*
CPerlHost::GetChildDir(void)
{
- dTHX;
char* ptr;
size_t length;
void
CPerlHost::FreeChildDir(char* pStr)
{
- dTHX;
Safefree(pStr);
}
LPSTR
CPerlHost::CreateLocalEnvironmentStrings(VDir &vDir)
{
- dTHX;
LPSTR lpStr, lpPtr, lpEnvPtr, lpTmp, lpLocalEnv, lpAllocPtr;
DWORD dwSize, dwEnvIndex;
int nLength, compVal;
void
CPerlHost::Reset(void)
{
- dTHX;
if(m_lppEnvList != NULL) {
for(DWORD index = 0; index < m_dwEnvCount; ++index) {
Free(m_lppEnvList[index]);
void
CPerlHost::Clearenv(void)
{
- dTHX;
char ch;
LPSTR lpPtr, lpStr, lpEnvPtr;
if (m_lppEnvList != NULL) {
char*
CPerlHost::Getenv(const char *varname)
{
- dTHX;
if (!m_bTopLevel) {
char *pEnv = Find(varname);
if (pEnv && *pEnv)
int
CPerlHost::Putenv(const char *envstring)
{
- dTHX;
Add(envstring);
if (m_bTopLevel)
return win32_putenv(envstring);
int
CPerlHost::Chdir(const char *dirname)
{
- dTHX;
int ret;
if (!dirname) {
errno = ENOENT;