source: vendor/perl/5.8.8/NetWare/perllib.cpp

Last change on this file was 3181, checked in by bird, 19 years ago

perl 5.8.8

File size: 6.2 KB
RevLine 
[3181]1
2/*
3 * Copyright © 2001 Novell, Inc. All Rights Reserved.
4 *
5 * You may distribute under the terms of either the GNU General Public
6 * License or the Artistic License, as specified in the README file.
7 *
8 */
9
10/*
11 * FILENAME : perllib.c
12 * DESCRIPTION : Library functions for parsing and running Perl.
13 * This is based on the perllib.c file of Win32 port.
14 * Author : SGP
15 * Date : January 2001.
16 *
17 */
18
19/*
20 * "The Road goes ever on and on, down from the door where it began."
21 */
22
23
24
25#include "EXTERN.h"
26#include "perl.h"
27
28
29#ifdef PERL_OBJECT
30#define NO_XSLOCKS
31#endif
32
33//CHKSGP
34//Including this is giving premature end-of-file error during compilation
35//#include "XSUB.h"
36
37#ifdef PERL_IMPLICIT_SYS
38
39#include "nw5iop.h"
40#include <fcntl.h>
41
42#endif //PERL_IMPLICIT_SYS
43
44
45#ifdef PERL_IMPLICIT_SYS
46
47#include "nwperlhost.h"
48#define w32_internal_host (PL_sys_intern.internal_host) // (J)
49
50
51EXTERN_C void
52perl_get_host_info(struct IPerlMemInfo* perlMemInfo,
53 struct IPerlMemInfo* perlMemSharedInfo,
54 struct IPerlMemInfo* perlMemParseInfo,
55 struct IPerlEnvInfo* perlEnvInfo,
56 struct IPerlStdIOInfo* perlStdIOInfo,
57 struct IPerlLIOInfo* perlLIOInfo,
58 struct IPerlDirInfo* perlDirInfo,
59 struct IPerlSockInfo* perlSockInfo,
60 struct IPerlProcInfo* perlProcInfo)
61{
62 if (perlMemInfo) {
63 Copy(&perlMem, &perlMemInfo->perlMemList, perlMemInfo->nCount, void*);
64 perlMemInfo->nCount = (sizeof(struct IPerlMem)/sizeof(void*));
65 }
66 if (perlMemSharedInfo) {
67 Copy(&perlMem, &perlMemSharedInfo->perlMemList, perlMemSharedInfo->nCount, void*);
68 perlMemSharedInfo->nCount = (sizeof(struct IPerlMem)/sizeof(void*));
69 }
70 if (perlMemParseInfo) {
71 Copy(&perlMem, &perlMemParseInfo->perlMemList, perlMemParseInfo->nCount, void*);
72 perlMemParseInfo->nCount = (sizeof(struct IPerlMem)/sizeof(void*));
73 }
74 if (perlEnvInfo) {
75 Copy(&perlEnv, &perlEnvInfo->perlEnvList, perlEnvInfo->nCount, void*);
76 perlEnvInfo->nCount = (sizeof(struct IPerlEnv)/sizeof(void*));
77 }
78 if (perlStdIOInfo) {
79 Copy(&perlStdIO, &perlStdIOInfo->perlStdIOList, perlStdIOInfo->nCount, void*);
80 perlStdIOInfo->nCount = (sizeof(struct IPerlStdIO)/sizeof(void*));
81 }
82 if (perlLIOInfo) {
83 Copy(&perlLIO, &perlLIOInfo->perlLIOList, perlLIOInfo->nCount, void*);
84 perlLIOInfo->nCount = (sizeof(struct IPerlLIO)/sizeof(void*));
85 }
86 if (perlDirInfo) {
87 Copy(&perlDir, &perlDirInfo->perlDirList, perlDirInfo->nCount, void*);
88 perlDirInfo->nCount = (sizeof(struct IPerlDir)/sizeof(void*));
89 }
90 if (perlSockInfo) {
91 Copy(&perlSock, &perlSockInfo->perlSockList, perlSockInfo->nCount, void*);
92 perlSockInfo->nCount = (sizeof(struct IPerlSock)/sizeof(void*));
93 }
94 if (perlProcInfo) {
95 Copy(&perlProc, &perlProcInfo->perlProcList, perlProcInfo->nCount, void*);
96 perlProcInfo->nCount = (sizeof(struct IPerlProc)/sizeof(void*));
97 }
98}
99
100EXTERN_C PerlInterpreter*
101perl_alloc_override(struct IPerlMem** ppMem, struct IPerlMem** ppMemShared,
102 struct IPerlMem** ppMemParse, struct IPerlEnv** ppEnv,
103 struct IPerlStdIO** ppStdIO, struct IPerlLIO** ppLIO,
104 struct IPerlDir** ppDir, struct IPerlSock** ppSock,
105 struct IPerlProc** ppProc)
106{
107 PerlInterpreter *my_perl = NULL;
108 CPerlHost* pHost = new CPerlHost(ppMem, ppMemShared, ppMemParse, ppEnv,
109 ppStdIO, ppLIO, ppDir, ppSock, ppProc);
110
111 if (pHost) {
112 my_perl = perl_alloc_using(pHost->m_pHostperlMem,
113 pHost->m_pHostperlMemShared,
114 pHost->m_pHostperlMemParse,
115 pHost->m_pHostperlEnv,
116 pHost->m_pHostperlStdIO,
117 pHost->m_pHostperlLIO,
118 pHost->m_pHostperlDir,
119 pHost->m_pHostperlSock,
120 pHost->m_pHostperlProc);
121 if (my_perl) {
122#ifdef PERL_OBJECT
123 CPerlObj* pPerl = (CPerlObj*)my_perl;
124#endif
125 w32_internal_host = pHost;
126 }
127 }
128 return my_perl;
129}
130
131EXTERN_C PerlInterpreter*
132perl_alloc(void)
133{
134 PerlInterpreter* my_perl = NULL;
135 CPerlHost* pHost = new CPerlHost();
136 if (pHost) {
137 my_perl = perl_alloc_using(pHost->m_pHostperlMem,
138 pHost->m_pHostperlMemShared,
139 pHost->m_pHostperlMemParse,
140 pHost->m_pHostperlEnv,
141 pHost->m_pHostperlStdIO,
142 pHost->m_pHostperlLIO,
143 pHost->m_pHostperlDir,
144 pHost->m_pHostperlSock,
145 pHost->m_pHostperlProc);
146 if (my_perl) {
147#ifdef PERL_OBJECT