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
12 * platform specific function
14 * Date Created : June 12th 2001.
15 * Date Modified: June 26th 2001.
18 #ifndef ___NWPerlSys_H___
19 #define ___NWPerlSys_H___
27 //Socket related calls
30 //Store the Watcom hash list
39 extern int do_spawn2(char *cmd, int exectype);
40 extern int do_aspawn(void *vreally, void **vmark, void **vsp);
41 extern void Perl_init_os_extras(void);
42 BOOL fnGetHashListAddrs(void *addrs, BOOL *dontTouchHashList);
45 /* IPerlMem - Memory management functions - Begin ========================================*/
48 PerlMemMalloc(struct IPerlMem* piPerl, size_t size)
54 BOOL m_dontTouchHashLists;
55 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
57 WCValHashTable<void*>* m_allocList= (WCValHashTable<void*>*)listptr;
58 (WCValHashTable<void*>*)m_allocList->insert(ptr);
66 PerlMemRealloc(struct IPerlMem* piPerl, void* ptr, size_t size)
69 WCValHashTable<void*>* m_allocList;
71 newptr = realloc(ptr, size);
76 BOOL m_dontTouchHashLists;
77 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
78 m_allocList= (WCValHashTable<void*>*)listptr;
79 (WCValHashTable<void*>*)m_allocList->remove(ptr);
85 (WCValHashTable<void*>*)m_allocList->insert(newptr);
92 PerlMemFree(struct IPerlMem* piPerl, void* ptr)
94 BOOL m_dontTouchHashLists;
95 WCValHashTable<void*>* m_allocList;
98 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
99 m_allocList= (WCValHashTable<void*>*)listptr;
100 // Final clean up, free all the nodes from the hash list
101 if (m_dontTouchHashLists)
111 if(ptr && m_allocList)
113 if ((WCValHashTable<void*>*)m_allocList->remove(ptr))
120 // If it comes here, that means that the memory pointer is not contained in the hash list.
121 // But no need to free now, since if is deleted here, it will result in an abend!!
122 // If the memory is still there, it will be cleaned during final cleanup anyway.
131 PerlMemCalloc(struct IPerlMem* piPerl, size_t num, size_t size)
135 ptr = calloc(num, size);
138 BOOL m_dontTouchHashLists;
139 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
141 WCValHashTable<void*>* m_allocList= (WCValHashTable<void*>*)listptr;
142 (WCValHashTable<void*>*)m_allocList->insert(ptr);
149 struct IPerlMem perlMem =
157 /* IPerlMem - Memory management functions - End ========================================*/
159 /* IPerlDir - Directory Manipulation functions - Begin ===================================*/
162 PerlDirMakedir(struct IPerlDir* piPerl, const char *dirname, int mode)
164 return mkdir(dirname);
168 PerlDirChdir(struct IPerlDir* piPerl, const char *dirname)
170 return nw_chdir(dirname);
174 PerlDirRmdir(struct IPerlDir* piPerl, const char *dirname)
176 return nw_rmdir(dirname);
180 PerlDirClose(struct IPerlDir* piPerl, DIR *dirp)
182 return nw_closedir(dirp);
186 PerlDirOpen(struct IPerlDir* piPerl, char *filename)
188 return nw_opendir(filename);
192 PerlDirRead(struct IPerlDir* piPerl, DIR *dirp)
194 return nw_readdir(dirp);
198 PerlDirRewind(struct IPerlDir* piPerl, DIR *dirp)
204 PerlDirSeek(struct IPerlDir* piPerl, DIR *dirp, long loc)
206 nw_seekdir(dirp, loc);
210 PerlDirTell(struct IPerlDir* piPerl, DIR *dirp)
212 return nw_telldir(dirp);
215 struct IPerlDir perlDir =
228 /* IPerlDir - Directory Manipulation functions - End ===================================*/
230 /* IPerlEnv - Environment related functions - Begin ======================================*/
233 PerlEnvGetenv(struct IPerlEnv* piPerl, const char *varname)
235 return(getenv(varname));
239 PerlEnvPutenv(struct IPerlEnv* piPerl, const char *envstring)
241 return(putenv(envstring));
245 PerlEnvGetenv_len(struct IPerlEnv* piPerl, const char* varname, unsigned long* len)
248 char *e = getenv(varname);
255 PerlEnvUname(struct IPerlEnv* piPerl, struct utsname *name)
257 return nw_uname(name);
261 PerlEnvClearenv(struct IPerlEnv* piPerl)
266 struct IPerlEnv perlEnv =
273 /* PerlEnvGetChildenv,
276 PerlEnvFreeChilddir,*/
279 /* IPerlEnv - Environment related functions - End ======================================*/
281 /* IPerlStdio - Stdio functions - Begin ================================================*/
284 PerlStdIOStdin(struct IPerlStdIO* piPerl)
290 PerlStdIOStdout(struct IPerlStdIO* piPerl)
296 PerlStdIOStderr(struct IPerlStdIO* piPerl)
302 PerlStdIOOpen(struct IPerlStdIO* piPerl, const char *path, const char *mode)
304 return nw_fopen(path, mode);
308 PerlStdIOClose(struct IPerlStdIO* piPerl, FILE* pf)
310 return nw_fclose(pf);
314 PerlStdIOEof(struct IPerlStdIO* piPerl, FILE* pf)
320 PerlStdIOError(struct IPerlStdIO* piPerl, FILE* pf)
322 return nw_ferror(pf);
326 PerlStdIOClearerr(struct IPerlStdIO* piPerl, FILE* pf)
332 PerlStdIOGetc(struct IPerlStdIO* piPerl, FILE* pf)
338 PerlStdIOGetBase(struct IPerlStdIO* piPerl, FILE* pf)
349 PerlStdIOGetBufsiz(struct IPerlStdIO* piPerl, FILE* pf)
353 return FILE_bufsiz(f);
360 PerlStdIOGetCnt(struct IPerlStdIO* piPerl, FILE* pf)
371 PerlStdIOGetPtr(struct IPerlStdIO* piPerl, FILE* pf)
382 PerlStdIOGets(struct IPerlStdIO* piPerl, FILE* pf, char* s, int n)
384 return nw_fgets(s, n, pf);
388 PerlStdIOPutc(struct IPerlStdIO* piPerl, FILE* pf, int c)
390 return nw_fputc(c, pf);
394 PerlStdIOPuts(struct IPerlStdIO* piPerl, FILE* pf, const char *s)
396 return nw_fputs(s, pf);
400 PerlStdIOFlush(struct IPerlStdIO* piPerl, FILE* pf)
402 return nw_fflush(pf);
406 PerlStdIOUngetc(struct IPerlStdIO* piPerl, int c, FILE* pf)
408 return nw_ungetc(c, pf);
412 PerlStdIOFileno(struct IPerlStdIO* piPerl, FILE* pf)
414 return nw_fileno(pf);
418 PerlStdIOFdopen(struct IPerlStdIO* piPerl, int fd, const char *mode)
420 return nw_fdopen(fd, mode);
424 PerlStdIOReopen(struct IPerlStdIO* piPerl, const char*path, const char*mode, FILE* pf)
426 return nw_freopen(path, mode, pf);
430 PerlStdIORead(struct IPerlStdIO* piPerl, void *buffer, Size_t size, Size_t count, FILE* pf)
432 return nw_fread(buffer, size, count, pf);
436 PerlStdIOWrite(struct IPerlStdIO* piPerl, const void *buffer, Size_t size, Size_t count, FILE* pf)
438 return nw_fwrite(buffer, size, count, pf);
442 PerlStdIOSetBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer)
444 nw_setbuf(pf, buffer);
448 PerlStdIOSetVBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer, int type, Size_t size)
450 return nw_setvbuf(pf, buffer, type, size);
454 PerlStdIOSetCnt(struct IPerlStdIO* piPerl, FILE* pf, int n)
456 #ifdef STDIO_CNT_LVALUE
463 PerlStdIOSetPtr(struct IPerlStdIO* piPerl, FILE* pf, char * ptr)
465 #ifdef STDIO_PTR_LVALUE
472 PerlStdIOSetlinebuf(struct IPerlStdIO* piPerl, FILE* pf)
474 nw_setvbuf(pf, NULL, _IOLBF, 0);
478 PerlStdIOPrintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format,...)
481 va_start(arglist, format);
482 return nw_vfprintf(pf, format, arglist);
486 PerlStdIOVprintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format, va_list arglist)
488 return nw_vfprintf(pf, format, arglist);
492 PerlStdIOTell(struct IPerlStdIO* piPerl, FILE* pf)
498 PerlStdIOSeek(struct IPerlStdIO* piPerl, FILE* pf, off_t offset, int origin)
500 return nw_fseek(pf, offset, origin);
504 PerlStdIORewind(struct IPerlStdIO* piPerl, FILE* pf)
510 PerlStdIOTmpfile(struct IPerlStdIO* piPerl)
516 PerlStdIOGetpos(struct IPerlStdIO* piPerl, FILE* pf, Fpos_t *p)
518 return nw_fgetpos(pf, p);
522 PerlStdIOSetpos(struct IPerlStdIO* piPerl, FILE* pf, const Fpos_t *p)
524 return nw_fsetpos(pf, p);
528 PerlStdIOInit(struct IPerlStdIO* piPerl)
533 PerlStdIOInitOSExtras(struct IPerlStdIO* piPerl)
535 Perl_init_os_extras();
540 PerlStdIOOpenOSfhandle(struct IPerlStdIO* piPerl, long osfhandle, int flags)
542 return nw_open_osfhandle(osfhandle, flags);
546 PerlStdIOGetOSfhandle(struct IPerlStdIO* piPerl, int filenum)
548 return nw_get_osfhandle(filenum);
552 PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf)
557 int fileno = nw_dup(nw_fileno(pf));
559 /* open the file in the same mode */
560 if(((FILE*)pf)->_flag & _IOREAD) {
564 else if(((FILE*)pf)->_flag & _IOWRT) {
568 else if(((FILE*)pf)->_flag & _IORW) {
574 /* it appears that the binmode is attached to the
575 * file descriptor so binmode files will be handled
578 pfdup = nw_fdopen(fileno, mode);
580 /* move the file pointer to the same position */
581 if (!fgetpos(pf, &pos)) {
582 fsetpos(pfdup, &pos);
587 struct IPerlStdIO perlStdIO =
626 PerlStdIOInitOSExtras,
630 /* IPerlStdio - Stdio functions - End ================================================*/
632 /* IPerlLIO - Low-level IO functions - Begin =============================================*/
635 PerlLIOAccess(struct IPerlLIO* piPerl, const char *path, int mode)
637 return nw_access(path, mode);
641 PerlLIOChmod(struct IPerlLIO* piPerl, const char *filename, int pmode)
643 return nw_chmod(filename, pmode);
647 PerlLIOChown(struct IPerlLIO* piPerl, const char *filename, uid_t owner, gid_t group)
650 Perl_croak(aTHX_ "chown not implemented!\n");
655 PerlLIOChsize(struct IPerlLIO* piPerl, int handle, long size)
657 return (nw_chsize(handle,size));
661 PerlLIOClose(struct IPerlLIO* piPerl, int handle)
663 return nw_close(handle);
667 PerlLIODup(struct IPerlLIO* piPerl, int handle)
669 return nw_dup(handle);
673 PerlLIODup2(struct IPerlLIO* piPerl, int handle1, int handle2)
675 return nw_dup2(handle1, handle2);
679 PerlLIOFlock(struct IPerlLIO* piPerl, int fd, int oper)
681 //On NetWare simulate flock by locking a range on the file
682 return nw_flock(fd, oper);
686 PerlLIOFileStat(struct IPerlLIO* piPerl, int handle, struct stat *buffer)
688 return fstat(handle, buffer);
692 PerlLIOIOCtl(struct IPerlLIO* piPerl, int i, unsigned int u, char *data)
698 PerlLIOIsatty(struct IPerlLIO* piPerl, int fd)
700 return nw_isatty(fd);
704 PerlLIOLink(struct IPerlLIO* piPerl, const char*oldname, const char *newname)
706 return nw_link(oldname, newname);
710 PerlLIOLseek(struct IPerlLIO* piPerl, int handle, long offset, int origin)
712 return nw_lseek(handle, offset, origin);
716 PerlLIOLstat(struct IPerlLIO* piPerl, const char *path, struct stat *buffer)
718 return nw_stat(path, buffer);
722 PerlLIOMktemp(struct IPerlLIO* piPerl, char *Template)
724 return(nw_mktemp(Template));
728 PerlLIOOpen(struct IPerlLIO* piPerl, const char *filename, int oflag)
730 return nw_open(filename, oflag);
734 PerlLIOOpen3(struct IPerlLIO* piPerl, const char *filename, int oflag, int pmode)
736 return nw_open(filename, oflag, pmode);
740 PerlLIORead(struct IPerlLIO* piPerl, int handle, void *buffer, unsigned int count)
742 return nw_read(handle, buffer, count);
746 PerlLIORename(struct IPerlLIO* piPerl, const char *OldFileName, const char *newname)
748 return nw_rename(OldFileName, newname);
752 PerlLIOSetmode(struct IPerlLIO* piPerl, FILE *fp, int mode)
754 return nw_setmode(fp, mode);
758 PerlLIONameStat(struct IPerlLIO* piPerl, const char *path, struct stat *buffer)
760 return nw_stat(path, buffer);
764 PerlLIOTmpnam(struct IPerlLIO* piPerl, char *string)
766 return tmpnam(string);
770 PerlLIOUmask(struct IPerlLIO* piPerl, int pmode)
776 PerlLIOUnlink(struct IPerlLIO* piPerl, const char *filename)
778 return nw_unlink(filename);
782 PerlLIOUtime(struct IPerlLIO* piPerl, char *filename, struct utimbuf *times)
784 return nw_utime(filename, times);
788 PerlLIOWrite(struct IPerlLIO* piPerl, int handle, const void *buffer, unsigned int count)
790 return nw_write(handle, buffer, count);
793 struct IPerlLIO perlLIO =
823 /* IPerlLIO - Low-level IO functions - End =============================================*/
825 /* IPerlProc - Process control functions - Begin =========================================*/
828 #define EXECF_SPAWN 2
831 PerlProcAbort(struct IPerlProc* piPerl)
837 PerlProcCrypt(struct IPerlProc* piPerl, const char* clear, const char* salt)
839 return nw_crypt(clear, salt);
843 PerlProcExit(struct IPerlProc* piPerl, int status)
852 PerlProc_Exit(struct IPerlProc* piPerl, int status)
861 PerlProcExecl(struct IPerlProc* piPerl, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3)
864 Perl_croak(aTHX_ "execl not implemented!\n");
869 PerlProcExecv(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv)
871 return nw_execvp((char *)cmdname, (char **)argv);
875 PerlProcExecvp(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv)
877 return nw_execvp((char *)cmdname, (char **)argv);
881 PerlProcGetuid(struct IPerlProc* piPerl)
887 PerlProcGeteuid(struct IPerlProc* piPerl)
893 PerlProcGetgid(struct IPerlProc* piPerl)
899 PerlProcGetegid(struct IPerlProc* piPerl)
905 PerlProcGetlogin(struct IPerlProc* piPerl)
911 PerlProcKill(struct IPerlProc* piPerl, int pid, int sig)
913 return nw_kill(pid, sig);
917 PerlProcKillpg(struct IPerlProc* piPerl, int pid, int sig)
920 Perl_croak(aTHX_ "killpg not implemented!\n");
925 PerlProcPauseProc(struct IPerlProc* piPerl)
927 return nw_sleep((32767L << 16) + 32767);
931 PerlProcPopen(struct IPerlProc* piPerl, const char *command, const char *mode)
934 PERL_FLUSHALL_FOR_CHILD;
936 return (PerlIO*)nw_Popen((char *)command, (char *)mode, (int *)errno);
940 PerlProcPclose(struct IPerlProc* piPerl, PerlIO *stream)
942 return nw_Pclose((FILE*)stream, (int *)errno);
946 PerlProcPipe(struct IPerlProc* piPerl, int *phandles)
948 return nw_Pipe((int *)phandles, (int *)errno);
952 PerlProcSetuid(struct IPerlProc* piPerl, uid_t u)
958 PerlProcSetgid(struct IPerlProc* piPerl, gid_t g)
964 PerlProcSleep(struct IPerlProc* piPerl, unsigned int s)
970 PerlProcTimes(struct IPerlProc* piPerl, struct tms *timebuf)
972 return nw_times(timebuf);
976 PerlProcWait(struct IPerlProc* piPerl, int *status)
978 return nw_wait(status);
982 PerlProcWaitpid(struct IPerlProc* piPerl, int pid, int *status, int flags)
984 return nw_waitpid(pid, status, flags);
988 PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode)
994 PerlProcFork(struct IPerlProc* piPerl)
1000 PerlProcGetpid(struct IPerlProc* piPerl)
1006 PerlProcDoCmd(struct IPerlProc* piPerl, char *cmd)
1008 do_spawn2(cmd, EXECF_EXEC);
1013 PerlProcSpawn(struct IPerlProc* piPerl, char* cmds)
1015 return do_spawn2(cmds, EXECF_SPAWN);
1019 PerlProcSpawnvp(struct IPerlProc* piPerl, int mode, const char *cmdname, const char *const *argv)
1021 return nw_spawnvp(mode, (char *)cmdname, (char **)argv);
1025 PerlProcASpawn(struct IPerlProc* piPerl, void *vreally, void **vmark, void **vsp)
1027 return do_aspawn(vreally, vmark, vsp);
1030 struct IPerlProc perlProc =
1060 //PerlProcPopenList;
1063 /* IPerlProc - Process control functions - End =========================================*/
1065 /* IPerlSock - Socket functions - Begin ==================================================*/
1068 PerlSockHtonl(struct IPerlSock* piPerl, u_long hostlong)
1070 return(nw_htonl(hostlong));
1074 PerlSockHtons(struct IPerlSock* piPerl, u_short hostshort)
1076 return(nw_htons(hostshort));
1080 PerlSockNtohl(struct IPerlSock* piPerl, u_long netlong)
1082 return nw_ntohl(netlong);
1086 PerlSockNtohs(struct IPerlSock* piPerl, u_short netshort)
1088 return nw_ntohs(netshort);
1091 SOCKET PerlSockAccept(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* addr, int* addrlen)
1093 return nw_accept(s, addr, addrlen);
1097 PerlSockBind(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen)
1099 return nw_bind(s, name, namelen);
1103 PerlSockConnect(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen)
1105 return nw_connect(s, name, namelen);
1109 PerlSockEndhostent(struct IPerlSock* piPerl)
1115 PerlSockEndnetent(struct IPerlSock* piPerl)
1121 PerlSockEndprotoent(struct IPerlSock* piPerl)
1127 PerlSockEndservent(struct IPerlSock* piPerl)
1133 PerlSockGethostbyaddr(struct IPerlSock* piPerl, const char* addr, int len, int type)
1135 return(nw_gethostbyaddr(addr,len,type));
1139 PerlSockGethostbyname(struct IPerlSock* piPerl, const char* name)
1141 return nw_gethostbyname(name);
1145 PerlSockGethostent(struct IPerlSock* piPerl)
1147 return(nw_gethostent());
1151 PerlSockGethostname(struct IPerlSock* piPerl, char* name, int namelen)
1153 return nw_gethostname(name,namelen);
1157 PerlSockGetnetbyaddr(struct IPerlSock* piPerl, long net, int type)
1159 return nw_getnetbyaddr(net, type);
1163 PerlSockGetnetbyname(struct IPerlSock* piPerl, const char *name)
1165 return nw_getnetbyname((char*)name);
1169 PerlSockGetnetent(struct IPerlSock* piPerl)
1171 return nw_getnetent();
1174 int PerlSockGetpeername(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen)
1176 return nw_getpeername(s, name, namelen);
1180 PerlSockGetprotobyname(struct IPerlSock* piPerl, const char* name)
1182 return nw_getprotobyname(name);
1186 PerlSockGetprotobynumber(struct IPerlSock* piPerl, int number)
1188 return nw_getprotobynumber(number);
1192 PerlSockGetprotoent(struct IPerlSock* piPerl)
1194 return nw_getprotoent();
1198 PerlSockGetservbyname(struct IPerlSock* piPerl, const char* name, const char* proto)
1200 return nw_getservbyname((char*)name, (char*)proto);
1204 PerlSockGetservbyport(struct IPerlSock* piPerl, int port, const char* proto)
1206 return nw_getservbyport(port, proto);
1210 PerlSockGetservent(struct IPerlSock* piPerl)
1212 return nw_getservent();
1216 PerlSockGetsockname(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen)
1218 return nw_getsockname(s, name, namelen);
1222 PerlSockGetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, char* optval, int* optlen)
1224 return nw_getsockopt(s, level, optname, optval, optlen);
1228 PerlSockInetAddr(struct IPerlSock* piPerl, const char* cp)
1230 return(nw_inet_addr(cp));
1234 PerlSockInetNtoa(struct IPerlSock* piPerl, struct in_addr in)
1240 PerlSockListen(struct IPerlSock* piPerl, SOCKET s, int backlog)
1242 return (nw_listen(s, backlog));
1246 PerlSockRecv(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags)
1248 return (nw_recv(s, buffer, len, flags));
1252 PerlSockRecvfrom(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen)
1254 return nw_recvfrom(s, buffer, len, flags, from, fromlen);
1258 PerlSockSelect(struct IPerlSock* piPerl, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout)
1260 return nw_select(nfds, (fd_set*) readfds, (fd_set*) writefds, (fd_set*) exceptfds, timeout);
1264 PerlSockSend(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags)
1266 return (nw_send(s, buffer, len, flags));
1270 PerlSockSendto(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen)
1272 return(nw_sendto(s, buffer, len, flags, to, tolen));
1276 PerlSockSethostent(struct IPerlSock* piPerl, int stayopen)
1278 nw_sethostent(stayopen);
1282 PerlSockSetnetent(struct IPerlSock* piPerl, int stayopen)
1284 nw_setnetent(stayopen);
1288 PerlSockSetprotoent(struct IPerlSock* piPerl, int stayopen)
1290 nw_setprotoent(stayopen);
1294 PerlSockSetservent(struct IPerlSock* piPerl, int stayopen)
1296 nw_setservent(stayopen);
1300 PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen)
1303 Perl_croak(aTHX_ "setsockopt not implemented!\n");
1308 PerlSockShutdown(struct IPerlSock* piPerl, SOCKET s, int how)
1310 return nw_shutdown(s, how);
1314 PerlSockSocket(struct IPerlSock* piPerl, int af, int type, int protocol)
1316 return nw_socket(af, type, protocol);
1320 PerlSockSocketpair(struct IPerlSock* piPerl, int domain, int type, int protocol, int* fds)
1323 Perl_croak(aTHX_ "socketpair not implemented!\n");
1328 PerlSockIoctlsocket(struct IPerlSock* piPerl, SOCKET s, long cmd, u_long *argp)
1331 Perl_croak(aTHX_ "ioctlsocket not implemented!\n");
1335 struct IPerlSock perlSock =
1346 PerlSockEndprotoent,
1348 PerlSockGethostname,
1349 PerlSockGetpeername,
1350 PerlSockGethostbyaddr,
1351 PerlSockGethostbyname,
1353 PerlSockGetnetbyaddr,
1354 PerlSockGetnetbyname,
1356 PerlSockGetprotobyname,
1357 PerlSockGetprotobynumber,
1358 PerlSockGetprotoent,
1359 PerlSockGetservbyname,
1360 PerlSockGetservbyport,
1362 PerlSockGetsockname,
1374 PerlSockSetprotoent,
1382 /* IPerlSock - Socket functions - End ==================================================*/
1384 #endif /* ___NWPerlSys_H___ */