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 30th 2001.
18 #ifndef ___NWPerlSys_H___
19 #define ___NWPerlSys_H___
28 //Socket related calls
31 //Store the Watcom hash list
40 extern int do_spawn2(char *cmd, int exectype);
41 extern int do_aspawn(void *vreally, void **vmark, void **vsp);
42 extern void Perl_init_os_extras(void);
43 BOOL fnGetHashListAddrs(void *addrs, BOOL *dontTouchHashList);
46 /* IPerlMem - Memory management functions - Begin ========================================*/
49 PerlMemMalloc(struct IPerlMem* piPerl, size_t size)
55 BOOL m_dontTouchHashLists;
56 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
58 WCValHashTable<void*>* m_allocList= (WCValHashTable<void*>*)listptr;
59 (WCValHashTable<void*>*)m_allocList->insert(ptr);
67 PerlMemRealloc(struct IPerlMem* piPerl, void* ptr, size_t size)
70 WCValHashTable<void*>* m_allocList;
72 newptr = realloc(ptr, size);
77 BOOL m_dontTouchHashLists;
78 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
79 m_allocList= (WCValHashTable<void*>*)listptr;
80 (WCValHashTable<void*>*)m_allocList->remove(ptr);
86 (WCValHashTable<void*>*)m_allocList->insert(newptr);
93 PerlMemFree(struct IPerlMem* piPerl, void* ptr)
95 BOOL m_dontTouchHashLists;
96 WCValHashTable<void*>* m_allocList;
99 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
100 m_allocList= (WCValHashTable<void*>*)listptr;
101 // Final clean up, free all the nodes from the hash list
102 if (m_dontTouchHashLists)
112 if(ptr && m_allocList)
114 if ((WCValHashTable<void*>*)m_allocList->remove(ptr))
121 // If it comes here, that means that the memory pointer is not contained in the hash list.
122 // But no need to free now, since if is deleted here, it will result in an abend!!
123 // If the memory is still there, it will be cleaned during final cleanup anyway.
132 PerlMemCalloc(struct IPerlMem* piPerl, size_t num, size_t size)
136 ptr = calloc(num, size);
139 BOOL m_dontTouchHashLists;
140 if(fnGetHashListAddrs(&listptr,&m_dontTouchHashLists)) {
142 WCValHashTable<void*>* m_allocList= (WCValHashTable<void*>*)listptr;
143 (WCValHashTable<void*>*)m_allocList->insert(ptr);
150 struct IPerlMem perlMem =
158 /* IPerlMem - Memory management functions - End ========================================*/
160 /* IPerlDir - Directory Manipulation functions - Begin ===================================*/
163 PerlDirMakedir(struct IPerlDir* piPerl, const char *dirname, int mode)
165 return mkdir(dirname);
169 PerlDirChdir(struct IPerlDir* piPerl, const char *dirname)
171 return nw_chdir(dirname);
175 PerlDirRmdir(struct IPerlDir* piPerl, const char *dirname)
177 return nw_rmdir(dirname);
181 PerlDirClose(struct IPerlDir* piPerl, DIR *dirp)
183 return nw_closedir(dirp);
187 PerlDirOpen(struct IPerlDir* piPerl, char *filename)
189 return nw_opendir(filename);
193 PerlDirRead(struct IPerlDir* piPerl, DIR *dirp)
195 return nw_readdir(dirp);
199 PerlDirRewind(struct IPerlDir* piPerl, DIR *dirp)
205 PerlDirSeek(struct IPerlDir* piPerl, DIR *dirp, long loc)
207 nw_seekdir(dirp, loc);
211 PerlDirTell(struct IPerlDir* piPerl, DIR *dirp)
213 return nw_telldir(dirp);
216 struct IPerlDir perlDir =
229 /* IPerlDir - Directory Manipulation functions - End ===================================*/
231 /* IPerlEnv - Environment related functions - Begin ======================================*/
234 PerlEnvGetenv(struct IPerlEnv* piPerl, const char *varname)
236 return(getenv(varname));
240 PerlEnvPutenv(struct IPerlEnv* piPerl, const char *envstring)
242 return(putenv(envstring));
246 PerlEnvGetenv_len(struct IPerlEnv* piPerl, const char* varname, unsigned long* len)
249 char *e = getenv(varname);
256 PerlEnvUname(struct IPerlEnv* piPerl, struct utsname *name)
258 return nw_uname(name);
262 PerlEnvClearenv(struct IPerlEnv* piPerl)
267 struct IPerlEnv perlEnv =
274 /* PerlEnvGetChildenv,
277 PerlEnvFreeChilddir,*/
280 /* IPerlEnv - Environment related functions - End ======================================*/
282 /* IPerlStdio - Stdio functions - Begin ================================================*/
285 PerlStdIOStdin(struct IPerlStdIO* piPerl)
291 PerlStdIOStdout(struct IPerlStdIO* piPerl)
297 PerlStdIOStderr(struct IPerlStdIO* piPerl)
303 PerlStdIOOpen(struct IPerlStdIO* piPerl, const char *path, const char *mode)
305 return nw_fopen(path, mode);
309 PerlStdIOClose(struct IPerlStdIO* piPerl, FILE* pf)
311 return nw_fclose(pf);
315 PerlStdIOEof(struct IPerlStdIO* piPerl, FILE* pf)
321 PerlStdIOError(struct IPerlStdIO* piPerl, FILE* pf)
323 return nw_ferror(pf);
327 PerlStdIOClearerr(struct IPerlStdIO* piPerl, FILE* pf)
333 PerlStdIOGetc(struct IPerlStdIO* piPerl, FILE* pf)
339 PerlStdIOGetBase(struct IPerlStdIO* piPerl, FILE* pf)
350 PerlStdIOGetBufsiz(struct IPerlStdIO* piPerl, FILE* pf)
354 return FILE_bufsiz(f);
361 PerlStdIOGetCnt(struct IPerlStdIO* piPerl, FILE* pf)
372 PerlStdIOGetPtr(struct IPerlStdIO* piPerl, FILE* pf)
383 PerlStdIOGets(struct IPerlStdIO* piPerl, FILE* pf, char* s, int n)
385 return nw_fgets(s, n, pf);
389 PerlStdIOPutc(struct IPerlStdIO* piPerl, FILE* pf, int c)
391 return nw_fputc(c, pf);
395 PerlStdIOPuts(struct IPerlStdIO* piPerl, FILE* pf, const char *s)
397 return nw_fputs(s, pf);
401 PerlStdIOFlush(struct IPerlStdIO* piPerl, FILE* pf)
403 return nw_fflush(pf);
407 PerlStdIOUngetc(struct IPerlStdIO* piPerl, int c, FILE* pf)
409 return nw_ungetc(c, pf);
413 PerlStdIOFileno(struct IPerlStdIO* piPerl, FILE* pf)
415 return nw_fileno(pf);
419 PerlStdIOFdopen(struct IPerlStdIO* piPerl, int fd, const char *mode)
421 return nw_fdopen(fd, mode);
425 PerlStdIOReopen(struct IPerlStdIO* piPerl, const char*path, const char*mode, FILE* pf)
427 return nw_freopen(path, mode, pf);
431 PerlStdIORead(struct IPerlStdIO* piPerl, void *buffer, Size_t size, Size_t count, FILE* pf)
433 return nw_fread(buffer, size, count, pf);
437 PerlStdIOWrite(struct IPerlStdIO* piPerl, const void *buffer, Size_t size, Size_t count, FILE* pf)
439 return nw_fwrite(buffer, size, count, pf);
443 PerlStdIOSetBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer)
445 nw_setbuf(pf, buffer);
449 PerlStdIOSetVBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer, int type, Size_t size)
451 return nw_setvbuf(pf, buffer, type, size);
455 PerlStdIOSetCnt(struct IPerlStdIO* piPerl, FILE* pf, int n)
457 #ifdef STDIO_CNT_LVALUE
464 PerlStdIOSetPtr(struct IPerlStdIO* piPerl, FILE* pf, char * ptr)
466 #ifdef STDIO_PTR_LVALUE
473 PerlStdIOSetlinebuf(struct IPerlStdIO* piPerl, FILE* pf)
475 nw_setvbuf(pf, NULL, _IOLBF, 0);
479 PerlStdIOPrintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format,...)
482 va_start(arglist, format);
483 return nw_vfprintf(pf, format, arglist);
487 PerlStdIOVprintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format, va_list arglist)
489 return nw_vfprintf(pf, format, arglist);
493 PerlStdIOTell(struct IPerlStdIO* piPerl, FILE* pf)
499 PerlStdIOSeek(struct IPerlStdIO* piPerl, FILE* pf, off_t offset, int origin)
501 return nw_fseek(pf, offset, origin);
505 PerlStdIORewind(struct IPerlStdIO* piPerl, FILE* pf)
511 PerlStdIOTmpfile(struct IPerlStdIO* piPerl)
517 PerlStdIOGetpos(struct IPerlStdIO* piPerl, FILE* pf, Fpos_t *p)
519 return nw_fgetpos(pf, p);
523 PerlStdIOSetpos(struct IPerlStdIO* piPerl, FILE* pf, const Fpos_t *p)
525 return nw_fsetpos(pf, p);
529 PerlStdIOInit(struct IPerlStdIO* piPerl)
534 PerlStdIOInitOSExtras(struct IPerlStdIO* piPerl)
536 Perl_init_os_extras();
541 PerlStdIOOpenOSfhandle(struct IPerlStdIO* piPerl, long osfhandle, int flags)
543 return nw_open_osfhandle(osfhandle, flags);
547 PerlStdIOGetOSfhandle(struct IPerlStdIO* piPerl, int filenum)
549 return nw_get_osfhandle(filenum);
553 PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf)
558 int fileno = nw_dup(nw_fileno(pf));
560 /* open the file in the same mode */
561 if(((FILE*)pf)->_flag & _IOREAD) {
565 else if(((FILE*)pf)->_flag & _IOWRT) {
569 else if(((FILE*)pf)->_flag & _IORW) {
575 /* it appears that the binmode is attached to the
576 * file descriptor so binmode files will be handled
579 pfdup = nw_fdopen(fileno, mode);
581 /* move the file pointer to the same position */
582 if (!fgetpos(pf, &pos)) {
583 fsetpos(pfdup, &pos);
588 struct IPerlStdIO perlStdIO =
627 PerlStdIOInitOSExtras,
631 /* IPerlStdio - Stdio functions - End ================================================*/
633 /* IPerlLIO - Low-level IO functions - Begin =============================================*/
636 PerlLIOAccess(struct IPerlLIO* piPerl, const char *path, int mode)
638 return nw_access(path, mode);
642 PerlLIOChmod(struct IPerlLIO* piPerl, const char *filename, int pmode)
644 return nw_chmod(filename, pmode);
648 PerlLIOChown(struct IPerlLIO* piPerl, const char *filename, uid_t owner, gid_t group)
651 Perl_croak(aTHX_ "chown not implemented!\n");
656 PerlLIOChsize(struct IPerlLIO* piPerl, int handle, long size)
658 return (nw_chsize(handle,size));
662 PerlLIOClose(struct IPerlLIO* piPerl, int handle)
664 return nw_close(handle);
668 PerlLIODup(struct IPerlLIO* piPerl, int handle)
670 return nw_dup(handle);
674 PerlLIODup2(struct IPerlLIO* piPerl, int handle1, int handle2)
676 return nw_dup2(handle1, handle2);
680 PerlLIOFlock(struct IPerlLIO* piPerl, int fd, int oper)
682 //On NetWare simulate flock by locking a range on the file
683 return nw_flock(fd, oper);
687 PerlLIOFileStat(struct IPerlLIO* piPerl, int handle, struct stat *buffer)
689 return fstat(handle, buffer);
693 PerlLIOIOCtl(struct IPerlLIO* piPerl, int i, unsigned int u, char *data)
699 PerlLIOIsatty(struct IPerlLIO* piPerl, int fd)
701 return nw_isatty(fd);
705 PerlLIOLink(struct IPerlLIO* piPerl, const char*oldname, const char *newname)
707 return nw_link(oldname, newname);
711 PerlLIOLseek(struct IPerlLIO* piPerl, int handle, long offset, int origin)
713 return nw_lseek(handle, offset, origin);
717 PerlLIOLstat(struct IPerlLIO* piPerl, const char *path, struct stat *buffer)
719 return nw_stat(path, buffer);
723 PerlLIOMktemp(struct IPerlLIO* piPerl, char *Template)
725 return(nw_mktemp(Template));
729 PerlLIOOpen(struct IPerlLIO* piPerl, const char *filename, int oflag)
731 return nw_open(filename, oflag);
735 PerlLIOOpen3(struct IPerlLIO* piPerl, const char *filename, int oflag, int pmode)
737 return nw_open(filename, oflag, pmode);
741 PerlLIORead(struct IPerlLIO* piPerl, int handle, void *buffer, unsigned int count)
743 return nw_read(handle, buffer, count);
747 PerlLIORename(struct IPerlLIO* piPerl, const char *OldFileName, const char *newname)
749 return nw_rename(OldFileName, newname);
753 PerlLIOSetmode(struct IPerlLIO* piPerl, FILE *fp, int mode)
755 return nw_setmode(fp, mode);
759 PerlLIONameStat(struct IPerlLIO* piPerl, const char *path, struct stat *buffer)
761 return nw_stat(path, buffer);
765 PerlLIOTmpnam(struct IPerlLIO* piPerl, char *string)
767 return tmpnam(string);
771 PerlLIOUmask(struct IPerlLIO* piPerl, int pmode)
777 PerlLIOUnlink(struct IPerlLIO* piPerl, const char *filename)
779 return nw_unlink(filename);
783 PerlLIOUtime(struct IPerlLIO* piPerl, char *filename, struct utimbuf *times)
785 return nw_utime(filename, times);
789 PerlLIOWrite(struct IPerlLIO* piPerl, int handle, const void *buffer, unsigned int count)
791 return nw_write(handle, buffer, count);
794 struct IPerlLIO perlLIO =
824 /* IPerlLIO - Low-level IO functions - End =============================================*/
826 /* IPerlProc - Process control functions - Begin =========================================*/
829 #define EXECF_SPAWN 2
832 PerlProcAbort(struct IPerlProc* piPerl)
838 PerlProcCrypt(struct IPerlProc* piPerl, const char* clear, const char* salt)
840 return nw_crypt(clear, salt);
844 PerlProcExit(struct IPerlProc* piPerl, int status)
853 PerlProc_Exit(struct IPerlProc* piPerl, int status)
862 PerlProcExecl(struct IPerlProc* piPerl, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3)
865 Perl_croak(aTHX_ "execl not implemented!\n");
870 PerlProcExecv(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv)
872 return nw_execvp((char *)cmdname, (char **)argv);
876 PerlProcExecvp(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv)
878 return nw_execvp((char *)cmdname, (char **)argv);
882 PerlProcGetuid(struct IPerlProc* piPerl)
888 PerlProcGeteuid(struct IPerlProc* piPerl)
894 PerlProcGetgid(struct IPerlProc* piPerl)
900 PerlProcGetegid(struct IPerlProc* piPerl)
906 PerlProcGetlogin(struct IPerlProc* piPerl)
912 PerlProcKill(struct IPerlProc* piPerl, int pid, int sig)
914 return nw_kill(pid, sig);
918 PerlProcKillpg(struct IPerlProc* piPerl, int pid, int sig)
921 Perl_croak(aTHX_ "killpg not implemented!\n");
926 PerlProcPauseProc(struct IPerlProc* piPerl)
928 return nw_sleep((32767L << 16) + 32767);
932 PerlProcPopen(struct IPerlProc* piPerl, const char *command, const char *mode)
935 PERL_FLUSHALL_FOR_CHILD;
937 return (PerlIO*)nw_Popen((char *)command, (char *)mode, (int *)errno);
941 PerlProcPclose(struct IPerlProc* piPerl, PerlIO *stream)
943 return nw_Pclose((FILE*)stream, (int *)errno);
947 PerlProcPipe(struct IPerlProc* piPerl, int *phandles)
949 return nw_Pipe((int *)phandles, (int *)errno);
953 PerlProcSetuid(struct IPerlProc* piPerl, uid_t u)
959 PerlProcSetgid(struct IPerlProc* piPerl, gid_t g)
965 PerlProcSleep(struct IPerlProc* piPerl, unsigned int s)
971 PerlProcTimes(struct IPerlProc* piPerl, struct tms *timebuf)
973 return nw_times(timebuf);
977 PerlProcWait(struct IPerlProc* piPerl, int *status)
979 return nw_wait(status);
983 PerlProcWaitpid(struct IPerlProc* piPerl, int pid, int *status, int flags)
985 return nw_waitpid(pid, status, flags);
989 PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode)
995 PerlProcFork(struct IPerlProc* piPerl)
1001 PerlProcGetpid(struct IPerlProc* piPerl)
1007 PerlProcDoCmd(struct IPerlProc* piPerl, char *cmd)
1009 do_spawn2(cmd, EXECF_EXEC);
1014 PerlProcSpawn(struct IPerlProc* piPerl, char* cmds)
1016 return do_spawn2(cmds, EXECF_SPAWN);
1020 PerlProcSpawnvp(struct IPerlProc* piPerl, int mode, const char *cmdname, const char *const *argv)
1022 return nw_spawnvp(mode, (char *)cmdname, (char **)argv);
1026 PerlProcASpawn(struct IPerlProc* piPerl, void *vreally, void **vmark, void **vsp)
1028 return do_aspawn(vreally, vmark, vsp);
1031 struct IPerlProc perlProc =
1061 //PerlProcPopenList;
1064 /* IPerlProc - Process control functions - End =========================================*/
1066 /* IPerlSock - Socket functions - Begin ==================================================*/
1069 PerlSockHtonl(struct IPerlSock* piPerl, u_long hostlong)
1071 return(nw_htonl(hostlong));
1075 PerlSockHtons(struct IPerlSock* piPerl, u_short hostshort)
1077 return(nw_htons(hostshort));
1081 PerlSockNtohl(struct IPerlSock* piPerl, u_long netlong)
1083 return nw_ntohl(netlong);
1087 PerlSockNtohs(struct IPerlSock* piPerl, u_short netshort)
1089 return nw_ntohs(netshort);
1092 SOCKET PerlSockAccept(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* addr, int* addrlen)
1094 return nw_accept(s, addr, addrlen);
1098 PerlSockBind(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen)
1100 return nw_bind(s, name, namelen);
1104 PerlSockConnect(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen)
1106 return nw_connect(s, name, namelen);
1110 PerlSockEndhostent(struct IPerlSock* piPerl)
1116 PerlSockEndnetent(struct IPerlSock* piPerl)
1122 PerlSockEndprotoent(struct IPerlSock* piPerl)
1128 PerlSockEndservent(struct IPerlSock* piPerl)
1134 PerlSockGethostbyaddr(struct IPerlSock* piPerl, const char* addr, int len, int type)
1136 return(nw_gethostbyaddr(addr,len,type));
1140 PerlSockGethostbyname(struct IPerlSock* piPerl, const char* name)
1142 return nw_gethostbyname(name);
1146 PerlSockGethostent(struct IPerlSock* piPerl)
1148 return(nw_gethostent());
1152 PerlSockGethostname(struct IPerlSock* piPerl, char* name, int namelen)
1154 return nw_gethostname(name,namelen);
1158 PerlSockGetnetbyaddr(struct IPerlSock* piPerl, long net, int type)
1160 return nw_getnetbyaddr(net, type);
1164 PerlSockGetnetbyname(struct IPerlSock* piPerl, const char *name)
1166 return nw_getnetbyname((char*)name);
1170 PerlSockGetnetent(struct IPerlSock* piPerl)
1172 return nw_getnetent();
1175 int PerlSockGetpeername(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen)
1177 return nw_getpeername(s, name, namelen);
1181 PerlSockGetprotobyname(struct IPerlSock* piPerl, const char* name)
1183 return nw_getprotobyname(name);
1187 PerlSockGetprotobynumber(struct IPerlSock* piPerl, int number)
1189 return nw_getprotobynumber(number);
1193 PerlSockGetprotoent(struct IPerlSock* piPerl)
1195 return nw_getprotoent();
1199 PerlSockGetservbyname(struct IPerlSock* piPerl, const char* name, const char* proto)
1201 return nw_getservbyname((char*)name, (char*)proto);
1205 PerlSockGetservbyport(struct IPerlSock* piPerl, int port, const char* proto)
1207 return nw_getservbyport(port, proto);
1211 PerlSockGetservent(struct IPerlSock* piPerl)
1213 return nw_getservent();
1217 PerlSockGetsockname(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen)
1219 return nw_getsockname(s, name, namelen);
1223 PerlSockGetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, char* optval, int* optlen)
1225 return nw_getsockopt(s, level, optname, optval, optlen);
1229 PerlSockInetAddr(struct IPerlSock* piPerl, const char* cp)
1231 return(nw_inet_addr(cp));
1235 PerlSockInetNtoa(struct IPerlSock* piPerl, struct in_addr in)
1241 PerlSockListen(struct IPerlSock* piPerl, SOCKET s, int backlog)
1243 return (nw_listen(s, backlog));
1247 PerlSockRecv(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags)
1249 return (nw_recv(s, buffer, len, flags));
1253 PerlSockRecvfrom(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen)
1255 return nw_recvfrom(s, buffer, len, flags, from, fromlen);
1259 PerlSockSelect(struct IPerlSock* piPerl, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout)
1261 return nw_select(nfds, (fd_set*) readfds, (fd_set*) writefds, (fd_set*) exceptfds, timeout);
1265 PerlSockSend(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags)
1267 return (nw_send(s, buffer, len, flags));
1271 PerlSockSendto(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen)
1273 return(nw_sendto(s, buffer, len, flags, to, tolen));
1277 PerlSockSethostent(struct IPerlSock* piPerl, int stayopen)
1279 nw_sethostent(stayopen);
1283 PerlSockSetnetent(struct IPerlSock* piPerl, int stayopen)
1285 nw_setnetent(stayopen);
1289 PerlSockSetprotoent(struct IPerlSock* piPerl, int stayopen)
1291 nw_setprotoent(stayopen);
1295 PerlSockSetservent(struct IPerlSock* piPerl, int stayopen)
1297 nw_setservent(stayopen);
1301 PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen)
1303 return nw_setsockopt(s, level, optname, optval, optlen);
1307 PerlSockShutdown(struct IPerlSock* piPerl, SOCKET s, int how)
1309 return nw_shutdown(s, how);
1313 PerlSockSocket(struct IPerlSock* piPerl, int af, int type, int protocol)
1315 return nw_socket(af, type, protocol);
1319 PerlSockSocketpair(struct IPerlSock* piPerl, int domain, int type, int protocol, int* fds)
1322 Perl_croak(aTHX_ "socketpair not implemented!\n");
1327 PerlSockIoctlsocket(struct IPerlSock* piPerl, SOCKET s, long cmd, u_long *argp)
1330 Perl_croak(aTHX_ "ioctlsocket not implemented!\n");
1334 struct IPerlSock perlSock =
1345 PerlSockEndprotoent,
1347 PerlSockGethostname,
1348 PerlSockGetpeername,
1349 PerlSockGethostbyaddr,
1350 PerlSockGethostbyname,
1352 PerlSockGetnetbyaddr,
1353 PerlSockGetnetbyname,
1355 PerlSockGetprotobyname,
1356 PerlSockGetprotobynumber,
1357 PerlSockGetprotoent,
1358 PerlSockGetservbyname,
1359 PerlSockGetservbyport,
1361 PerlSockGetsockname,
1373 PerlSockSetprotoent,
1381 /* IPerlSock - Socket functions - End ==================================================*/
1383 #endif /* ___NWPerlSys_H___ */