2 * Copyright © 2001 Novell, Inc. All Rights Reserved.
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Artistic License, as specified in the README file.
10 * FILENAME : nwperlsys.h
11 * DESCRIPTION : Derives from iperlsys.h and define the platform specific function
13 * Date Created : June 12th 2001.
17 #ifndef ___NWPerlSys_H___
18 #define ___NWPerlSys_H___
23 //Socket related calls
26 //Store the Watcom hash list
32 /* IPerlMem - Memory management - Begin ==================================================*/
34 void* PerlMemMalloc(struct IPerlMem* piPerl, size_t size);
35 void* PerlMemRealloc(struct IPerlMem* piPerl, void* ptr, size_t size);
36 void PerlMemFree(struct IPerlMem* piPerl, void* ptr);
37 void* PerlMemCalloc(struct IPerlMem* piPerl, size_t num, size_t size);
39 struct IPerlMem perlMem =
47 /* IPerlMem - Memory management - End ==================================================*/
49 /* IPerlDir - Directory Manipulation - Begin =============================================*/
51 int PerlDirMakedir(struct IPerlDir* piPerl, const char *dirname, int mode);
52 int PerlDirChdir(struct IPerlDir* piPerl, const char *dirname);
53 int PerlDirRmdir(struct IPerlDir* piPerl, const char *dirname);
54 int PerlDirClose(struct IPerlDir* piPerl, DIR *dirp);
55 DIR* PerlDirOpen(struct IPerlDir* piPerl, char *filename);
56 struct direct * PerlDirRead(struct IPerlDir* piPerl, DIR *dirp);
57 void PerlDirRewind(struct IPerlDir* piPerl, DIR *dirp);
58 void PerlDirSeek(struct IPerlDir* piPerl, DIR *dirp, long loc);
59 long PerlDirTell(struct IPerlDir* piPerl, DIR *dirp);
61 struct IPerlDir perlDir =
74 /* IPerlDir - Directory Manipulation - End =============================================*/
76 /* IPerlEnv - Environment related functions - Begin ======================================*/
78 char* PerlEnvGetenv(struct IPerlEnv* piPerl, const char *varname);
79 int PerlEnvPutenv(struct IPerlEnv* piPerl, const char *envstring);
80 char* PerlEnvGetenv_len(struct IPerlEnv* piPerl, const char* varname, unsigned long* len);
81 int PerlEnvUname(struct IPerlEnv* piPerl, struct utsname *name);
82 void PerlEnvClearenv(struct IPerlEnv* piPerl);
84 //Uncomment the following prototypes and the function names in the structure below
85 //whenever it is implemented.
86 //The function definition to be put in nwperlsys.c
88 /*void* PerlEnvGetChildenv(struct IPerlEnv* piPerl);
89 void PerlEnvFreeChildenv(struct IPerlEnv* piPerl, void* childEnv);
90 char* PerlEnvGetChilddir(struct IPerlEnv* piPerl);
91 void PerlEnvFreeChilddir(struct IPerlEnv* piPerl, char* childDir);*/
93 struct IPerlEnv perlEnv =
100 /* PerlEnvGetChildenv,
103 PerlEnvFreeChilddir,*/
106 /* IPerlEnv - Environment related functions - Begin ======================================*/
108 /* IPerlStdio - Stdio functions - Begin ================================================*/
110 FILE* PerlStdIOStdin(struct IPerlStdIO* piPerl);
111 FILE* PerlStdIOStdout(struct IPerlStdIO* piPerl);
112 FILE* PerlStdIOStderr(struct IPerlStdIO* piPerl);
113 FILE* PerlStdIOOpen(struct IPerlStdIO* piPerl, const char *path, const char *mode);
114 int PerlStdIOClose(struct IPerlStdIO* piPerl, FILE* pf);
115 int PerlStdIOEof(struct IPerlStdIO* piPerl, FILE* pf);
116 int PerlStdIOError(struct IPerlStdIO* piPerl, FILE* pf);
117 void PerlStdIOClearerr(struct IPerlStdIO* piPerl, FILE* pf);
118 int PerlStdIOGetc(struct IPerlStdIO* piPerl, FILE* pf);
119 char* PerlStdIOGetBase(struct IPerlStdIO* piPerl, FILE* pf);
120 int PerlStdIOGetBufsiz(struct IPerlStdIO* piPerl, FILE* pf);
121 int PerlStdIOGetCnt(struct IPerlStdIO* piPerl, FILE* pf);
122 char* PerlStdIOGetPtr(struct IPerlStdIO* piPerl, FILE* pf);
123 char* PerlStdIOGets(struct IPerlStdIO* piPerl, FILE* pf, char* s, int n);
124 int PerlStdIOPutc(struct IPerlStdIO* piPerl, FILE* pf, int c);
125 int PerlStdIOPuts(struct IPerlStdIO* piPerl, FILE* pf, const char *s);
126 int PerlStdIOFlush(struct IPerlStdIO* piPerl, FILE* pf);
127 int PerlStdIOUngetc(struct IPerlStdIO* piPerl, int c, FILE* pf);
128 int PerlStdIOFileno(struct IPerlStdIO* piPerl, FILE* pf);
129 FILE* PerlStdIOFdopen(struct IPerlStdIO* piPerl, int fd, const char *mode);
130 FILE* PerlStdIOReopen(struct IPerlStdIO* piPerl, const char*path, const char*mode, FILE* pf);
131 SSize_t PerlStdIORead(struct IPerlStdIO* piPerl, void *buffer, Size_t size, Size_t count, FILE* pf);
132 SSize_t PerlStdIOWrite(struct IPerlStdIO* piPerl, const void *buffer, Size_t size, Size_t count, FILE* pf);
133 void PerlStdIOSetBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer);
134 int PerlStdIOSetVBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer, int type, Size_t size);
135 void PerlStdIOSetCnt(struct IPerlStdIO* piPerl, FILE* pf, int n);
136 void PerlStdIOSetPtr(struct IPerlStdIO* piPerl, FILE* pf, char * ptr);
137 void PerlStdIOSetlinebuf(struct IPerlStdIO* piPerl, FILE* pf);
138 int PerlStdIOPrintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format,...);
139 int PerlStdIOVprintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format, va_list arglist);
140 long PerlStdIOTell(struct IPerlStdIO* piPerl, FILE* pf);
141 int PerlStdIOSeek(struct IPerlStdIO* piPerl, FILE* pf, off_t offset, int origin);
142 void PerlStdIORewind(struct IPerlStdIO* piPerl, FILE* pf);
143 FILE* PerlStdIOTmpfile(struct IPerlStdIO* piPerl);
144 int PerlStdIOGetpos(struct IPerlStdIO* piPerl, FILE* pf, Fpos_t *p);
145 int PerlStdIOSetpos(struct IPerlStdIO* piPerl, FILE* pf, const Fpos_t *p);
146 void PerlStdIOInit(struct IPerlStdIO* piPerl);
147 void PerlStdIOInitOSExtras(struct IPerlStdIO* piPerl);
148 int PerlStdIOOpenOSfhandle(struct IPerlStdIO* piPerl, long osfhandle, int flags);
149 int PerlStdIOGetOSfhandle(struct IPerlStdIO* piPerl, int filenum);
150 FILE* PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf);
152 struct IPerlStdIO perlStdIO =
191 PerlStdIOInitOSExtras,
195 /* IPerlStdio - Stdio functions - End ================================================*/
197 /* IPerlLIO - Low-level IO functions - Begin =============================================*/
199 int PerlLIOAccess(struct IPerlLIO* piPerl, const char *path, int mode);
200 int PerlLIOChmod(struct IPerlLIO* piPerl, const char *filename, int pmode);
201 int PerlLIOChown(struct IPerlLIO* piPerl, const char *filename, uid_t owner, gid_t group);
202 int PerlLIOChsize(struct IPerlLIO* piPerl, int handle, long size);
203 int PerlLIOClose(struct IPerlLIO* piPerl, int handle);
204 int PerlLIODup(struct IPerlLIO* piPerl, int handle);
205 int PerlLIODup2(struct IPerlLIO* piPerl, int handle1, int handle2);
206 int PerlLIOFlock(struct IPerlLIO* piPerl, int fd, int oper);
207 int PerlLIOFileStat(struct IPerlLIO* piPerl, int handle, struct stat *buffer);
208 int PerlLIOIOCtl(struct IPerlLIO* piPerl, int i, unsigned int u, char *data);
209 int PerlLIOIsatty(struct IPerlLIO* piPerl, int fd);
210 int PerlLIOLink(struct IPerlLIO* piPerl, const char*oldname, const char *newname);
211 long PerlLIOLseek(struct IPerlLIO* piPerl, int handle, long offset, int origin);
212 int PerlLIOLstat(struct IPerlLIO* piPerl, const char *path, struct stat *buffer);
213 char* PerlLIOMktemp(struct IPerlLIO* piPerl, char *Template);
214 int PerlLIOOpen(struct IPerlLIO* piPerl, const char *filename, int oflag);
215 int PerlLIOOpen3(struct IPerlLIO* piPerl, const char *filename, int oflag, int pmode);
216 int PerlLIORead(struct IPerlLIO* piPerl, int handle, void *buffer, unsigned int count);
217 int PerlLIORename(struct IPerlLIO* piPerl, const char *OldFileName, const char *newname);
218 int PerlLIOSetmode(struct IPerlLIO* piPerl, FILE *fp, int mode);
219 int PerlLIONameStat(struct IPerlLIO* piPerl, const char *path, struct stat *buffer);
220 char* PerlLIOTmpnam(struct IPerlLIO* piPerl, char *string);
221 int PerlLIOUmask(struct IPerlLIO* piPerl, int pmode);
222 int PerlLIOUnlink(struct IPerlLIO* piPerl, const char *filename);
223 int PerlLIOUtime(struct IPerlLIO* piPerl, char *filename, struct utimbuf *times);
224 int PerlLIOWrite(struct IPerlLIO* piPerl, int handle, const void *buffer, unsigned int count);
226 struct IPerlLIO perlLIO =
256 /* IPerlLIO - Low-level IO functions - End ==============================================*/
258 /* IPerlProc - Process control functions - Begin =========================================*/
260 void PerlProcAbort(struct IPerlProc* piPerl);
261 char * PerlProcCrypt(struct IPerlProc* piPerl, const char* clear, const char* salt);
262 void PerlProcExit(struct IPerlProc* piPerl, int status);
263 void PerlProc_Exit(struct IPerlProc* piPerl, int status);
264 int PerlProcExecl(struct IPerlProc* piPerl, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3);
265 int PerlProcExecv(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv);
266 int PerlProcExecvp(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv);
267 uid_t PerlProcGetuid(struct IPerlProc* piPerl);
268 uid_t PerlProcGeteuid(struct IPerlProc* piPerl);
269 gid_t PerlProcGetgid(struct IPerlProc* piPerl);
270 gid_t PerlProcGetegid(struct IPerlProc* piPerl);
271 char * PerlProcGetlogin(struct IPerlProc* piPerl);
272 int PerlProcKill(struct IPerlProc* piPerl, int pid, int sig);
273 int PerlProcKillpg(struct IPerlProc* piPerl, int pid, int sig);
274 int PerlProcPauseProc(struct IPerlProc* piPerl);
275 PerlIO* PerlProcPopen(struct IPerlProc* piPerl, const char *command, const char *mode);
276 int PerlProcPclose(struct IPerlProc* piPerl, PerlIO *stream);
277 int PerlProcPipe(struct IPerlProc* piPerl, int *phandles);
278 int PerlProcSetuid(struct IPerlProc* piPerl, uid_t u);
279 int PerlProcSetgid(struct IPerlProc* piPerl, gid_t g);
280 int PerlProcSleep(struct IPerlProc* piPerl, unsigned int s);
281 int PerlProcTimes(struct IPerlProc* piPerl, struct tms *timebuf);
282 int PerlProcWait(struct IPerlProc* piPerl, int *status);
283 int PerlProcWaitpid(struct IPerlProc* piPerl, int pid, int *status, int flags);
284 Sighandler_t PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode);
285 int PerlProcFork(struct IPerlProc* piPerl);
286 int PerlProcGetpid(struct IPerlProc* piPerl);
287 int PerlProcSpawn(struct IPerlProc* piPerl, char* cmds);
288 int PerlProcSpawnvp(struct IPerlProc* piPerl, int mode, const char *cmdname, const char *const *argv);
289 int PerlProcASpawn(struct IPerlProc* piPerl, void *vreally, void **vmark, void **vsp);
291 struct IPerlProc perlProc =
324 /* IPerlProc - Process control functions - End =========================================*/
326 /* IPerlSock - Socket functions - Begin ==================================================*/
328 u_long PerlSockHtonl(struct IPerlSock* piPerl, u_long hostlong);
329 u_short PerlSockHtons(struct IPerlSock* piPerl, u_short hostshort);
330 u_long PerlSockNtohl(struct IPerlSock* piPerl, u_long netlong);
331 u_short PerlSockNtohs(struct IPerlSock* piPerl, u_short netshort);
332 SOCKET PerlSockAccept(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* addr, int* addrlen);
333 int PerlSockBind(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen);
334 int PerlSockConnect(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen);
335 void PerlSockEndhostent(struct IPerlSock* piPerl);
336 void PerlSockEndnetent(struct IPerlSock* piPerl);
337 void PerlSockEndprotoent(struct IPerlSock* piPerl);
338 void PerlSockEndservent(struct IPerlSock* piPerl);
339 struct hostent* PerlSockGethostbyaddr(struct IPerlSock* piPerl, const char* addr, int len, int type);
340 struct hostent* PerlSockGethostbyname(struct IPerlSock* piPerl, const char* name);
341 struct hostent* PerlSockGethostent(struct IPerlSock* piPerl);
342 int PerlSockGethostname(struct IPerlSock* piPerl, char* name, int namelen);
343 struct netent * PerlSockGetnetbyaddr(struct IPerlSock* piPerl, long net, int type);
344 struct netent * PerlSockGetnetbyname(struct IPerlSock* piPerl, const char *name);
345 struct netent * PerlSockGetnetent(struct IPerlSock* piPerl);
346 int PerlSockGetpeername(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen);
347 struct protoent* PerlSockGetprotobyname(struct IPerlSock* piPerl, const char* name);
348 struct protoent* PerlSockGetprotobynumber(struct IPerlSock* piPerl, int number);
349 struct protoent* PerlSockGetprotoent(struct IPerlSock* piPerl);
350 struct servent* PerlSockGetservbyname(struct IPerlSock* piPerl, const char* name, const char* proto);
351 struct servent* PerlSockGetservbyport(struct IPerlSock* piPerl, int port, const char* proto);
352 struct servent* PerlSockGetservent(struct IPerlSock* piPerl);
353 int PerlSockGetsockname(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen);
354 int PerlSockGetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, char* optval, int* optlen);
355 unsigned long PerlSockInetAddr(struct IPerlSock* piPerl, const char* cp);
356 char* PerlSockInetNtoa(struct IPerlSock* piPerl, struct in_addr in);
357 int PerlSockListen(struct IPerlSock* piPerl, SOCKET s, int backlog);
358 int PerlSockRecv(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags);
359 int PerlSockRecvfrom(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen);
360 int PerlSockSelect(struct IPerlSock* piPerl, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout);
361 int PerlSockSend(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags);
362 int PerlSockSendto(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen);
363 void PerlSockSethostent(struct IPerlSock* piPerl, int stayopen);
364 void PerlSockSetnetent(struct IPerlSock* piPerl, int stayopen);
365 void PerlSockSetprotoent(struct IPerlSock* piPerl, int stayopen);
366 void PerlSockSetservent(struct IPerlSock* piPerl, int stayopen);
367 int PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen);
368 int PerlSockShutdown(struct IPerlSock* piPerl, SOCKET s, int how);
369 SOCKET PerlSockSocket(struct IPerlSock* piPerl, int af, int type, int protocol);
370 int PerlSockSocketpair(struct IPerlSock* piPerl, int domain, int type, int protocol, int* fds);
371 int PerlSockIoctlsocket(struct IPerlSock* piPerl, SOCKET s, long cmd, u_long *argp);
373 struct IPerlSock perlSock =
388 PerlSockGethostbyaddr,
389 PerlSockGethostbyname,
391 PerlSockGetnetbyaddr,
392 PerlSockGetnetbyname,
394 PerlSockGetprotobyname,
395 PerlSockGetprotobynumber,
397 PerlSockGetservbyname,
398 PerlSockGetservbyport,
420 /* IPerlSock - Socket functions - End ====================================================*/
422 #endif /* ___NWPerlSys_H___ */