2 # creates a C API file from proto.h
3 # takes one argument, the path to lib/CORE directory.
4 # creates 2 files: "PerlCAPI.cpp" and "PerlCAPI.h".
6 my $hdrfile = "$ARGV[0]\\PerlCAPI.h";
7 my $infile = '..\\proto.h';
8 my $embedfile = '..\\embed.h';
15 my ($syms, $file) = @_;
20 or die "$0: Can't open $file: $!\n";
21 while ($line = <FILE>) {
23 if ($line =~ /^#define\s+\w+/) {
24 $line =~ s/^#define\s+//;
25 @words = split ' ', $line;
26 # print "$words[0]\t$words[1]\n";
27 $$syms{$words[0]} = $words[1];
33 readembed %embed, $embedfile;
37 foreach my $symbol (@$list) {
38 $skip_list{$symbol} = 1;
78 if (!open(INFILE, "<$infile")) {
79 print "open of $infile failed: $!\n";
83 if (!open(OUTFILE, ">PerlCAPI.cpp")) {
84 print "open of PerlCAPI.cpp failed: $!\n";
88 print OUTFILE <<ENDCODE;
93 #define DESTRUCTORFUNC (void (*)(void*))
97 print OUTFILE "#ifdef SetCPerlObj_defined\n" unless ($separateObj == 0);
99 print OUTFILE <<ENDCODE;
100 extern "C" void SetCPerlObj(CPerlObj* pP)
107 print OUTFILE "#endif\n" unless ($separateObj == 0);
110 last unless defined ($_ = <INFILE>);
116 $_ =~ s/^VIRTUAL\s*//;
117 $_ =~ s/\s*__attribute__.*$/;/;
118 if ( /(.*)\s([A-z_]*[0-9A-z_]+\s)_\(\((.*)\)\);/ ||
119 /(.*)\*([A-z_]*[0-9A-z_]+\s)_\(\((.*)\)\);/ ) {
126 next if (defined $skip_list{$name});
128 if($args eq "ARGSproto") {
132 $return = ($type eq "void" or $type eq "Free_t") ? "\t" : "\treturn";
134 if(defined $embed{$name}) {
135 $funcName = $embed{$name};
140 @args = split(',', $args);
141 if ($args[$#args] =~ /\s*\.\.\.\s*/) {
142 if(($name eq "croak") or ($name eq "deb") or ($name eq "die")
143 or ($name eq "form") or ($name eq "warn")) {
144 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
145 $args[0] =~ /(\w+)\W*$/;
147 print OUTFILE <<ENDCODE;
150 extern "C" $type $funcName ($args)
155 va_start(args, $arg);
156 pmsg = pPerl->Perl_mess($arg, &args);
157 New(0, pstr, strlen(pmsg)+1, char);
159 $return pPerl->Perl_$name(pstr);
163 print OUTFILE "#endif\n" unless ($separateObj == 0);
165 elsif($name eq "newSVpvf") {
166 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
167 $args[0] =~ /(\w+)\W*$/;
169 print OUTFILE <<ENDCODE;
172 extern "C" $type $funcName ($args)
176 va_start(args, $arg);
177 sv = pPerl->Perl_newSV(0);
178 pPerl->Perl_sv_vcatpvfn(sv, $arg, strlen($arg), &args, NULL, 0, NULL);
183 print OUTFILE "#endif\n" unless ($separateObj == 0);
185 elsif($name eq "sv_catpvf") {
186 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
187 $args[0] =~ /(\w+)\W*$/;
189 $args[1] =~ /(\w+)\W*$/;
191 print OUTFILE <<ENDCODE;
194 extern "C" $type $funcName ($args)
197 va_start(args, $arg1);
198 pPerl->Perl_sv_vcatpvfn($arg0, $arg1, strlen($arg1), &args, NULL, 0, NULL);
202 print OUTFILE "#endif\n" unless ($separateObj == 0);
204 elsif($name eq "sv_setpvf") {
205 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
206 $args[0] =~ /(\w+)\W*$/;
208 $args[1] =~ /(\w+)\W*$/;
210 print OUTFILE <<ENDCODE;
213 extern "C" $type $funcName ($args)
216 va_start(args, $arg1);
217 pPerl->Perl_sv_vsetpvfn($arg0, $arg1, strlen($arg1), &args, NULL, 0, NULL);
221 print OUTFILE "#endif\n" unless ($separateObj == 0);
223 elsif($name eq "fprintf") {
224 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
225 $args[0] =~ /(\w+)\W*$/;
227 $args[1] =~ /(\w+)\W*$/;
229 print OUTFILE <<ENDCODE;
232 extern "C" $type $name ($args)
236 va_start(args, $arg1);
237 nRet = PerlIO_vprintf($arg0, $arg1, args);
242 print OUTFILE "#endif\n" unless ($separateObj == 0);
244 print "Warning: can't handle varargs function '$name'\n";
250 if ($name eq "newXS") {
254 print OUTFILE "\n#ifdef $name" . "defined" unless ($separateObj == 0);
256 # handle specical case for save_destructor
257 if ($name eq "save_destructor") {
260 # handle specical case for sighandler
261 if ($name eq "sighandler") {
264 # handle special case for sv_grow
265 if ($name eq "sv_grow" and $args eq "SV* sv, unsigned long newlen") {
268 # handle special case for newSV
269 if ($name eq "newSV" and $args eq "I32 x, STRLEN len") {
272 # handle special case for perl_parse
273 if ($name eq "perl_parse") {
274 print OUTFILE <<ENDCODE;
277 extern "C" $type $name ($args)
279 return pPerl->perl_parse(xsinit, argc, argv, env);
282 print OUTFILE "#endif\n" unless ($separateObj == 0);
285 # handle special case for perl_atexit
286 if ($name eq "perl_atexit") {
287 print OUTFILE <<ENDCODE;
290 extern "C" $type $name ($args)
292 pPerl->perl_atexit(fn, ptr);
295 print OUTFILE "#endif\n" unless ($separateObj == 0);
300 if($name eq "byterun" and $args eq "struct bytestream bs") {
305 if ($args eq "void") {
306 print OUTFILE <<ENDCODE;
309 extern "C" $type $funcName ()
311 $return pPerl->$funcName();
315 print OUTFILE "#endif\n" unless ($separateObj == 0);
319 # foo(char *s, const int bar);
320 print OUTFILE <<ENDCODE;
323 extern "C" $type $funcName ($args)
326 print OUTFILE "$return pPerl->$funcName";
328 foreach $arg (@args) {
329 if ($arg =~ /(\w+)\W*$/) {
331 print OUTFILE ", $1";
339 print OUTFILE ");\n}\n";
340 print OUTFILE "#endif\n" unless ($separateObj == 0);
343 print "failed to match $_";
451 my ($syms, $file, $pre) = @_;
454 open(FILE, "< $file")
455 or die "$0: Can't open $file: $!\n";
457 s/[ \t]*#.*//; # Delete comments.
458 if (/PERLVARI?C?\($pre(\w+),\s*([^,)]+)/) {
469 readvars %intrp, '..\intrpvar.h','I';
470 readvars %thread, '..\thrdvar.h','T';
471 readvars %globvar, '..\perlvars.h','G';
473 open(HDRFILE, ">$hdrfile") or die "$0: Can't open $hdrfile: $!\n";
474 print HDRFILE <<ENDCODE;
475 void SetCPerlObj(void* pP);
476 CV* Perl_newXS(char* name, void (*subaddr)(CV* cv), char* filename);
484 return if (defined $skip_list{$name});
485 return if ($type eq 'struct perl_thread *');
487 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
488 print OUTFILE <<ENDCODE;
489 extern "C" $type * _Perl_$name ()
491 return (($type *)&pPerl->Perl_$name);
496 print OUTFILE "#endif\n" unless ($separateObj == 0);
498 print HDRFILE <<ENDCODE;
501 $type * _Perl_$name ();
502 #define Perl_$name (*_Perl_$name())
508 foreach $key (keys %intrp) {
509 DoVariable ($key, $intrp{$key});
512 foreach $key (keys %thread) {
513 DoVariable ($key, $thread{$key});
516 foreach $key (keys %globvar) {
517 DoVariable ($key, $globvar{$key});
520 print OUTFILE <<EOCODE;
526 char ** _Perl_op_desc(void)
528 return pPerl->Perl_get_op_descs();
531 char ** _Perl_op_name(void)
533 return pPerl->Perl_get_op_names();
536 char * _Perl_no_modify(void)
538 return pPerl->Perl_get_no_modify();
541 U32 * _Perl_opargs(void)
543 return pPerl->Perl_get_opargs();
546 void xs_handler(CV* cv, CPerlObj* p)
550 MAGIC* m = pPerl->Perl_mg_find((SV*)cv, '~');
556 func = (void(*)(CV*))SvIVX(sv);
560 func = (void(*)(CV*))pPerl->Perl_sv_2iv(sv);
566 CV* Perl_newXS(char* name, void (*subaddr)(CV* cv), char* filename)
568 CV* cv = pPerl->Perl_newXS(name, xs_handler, filename);
569 pPerl->Perl_sv_magic((SV*)cv, pPerl->Perl_sv_2mortal(pPerl->Perl_newSViv((IV)subaddr)), '~', "CAPI", 4);
574 void Perl_deb(const char pat, ...)
586 int * _win32_errno(void)
588 return &pPerl->ErrorNo();
591 FILE* _win32_stdin(void)
593 return (FILE*)pPerl->piStdIO->Stdin();
596 FILE* _win32_stdout(void)
598 return (FILE*)pPerl->piStdIO->Stdout();
601 FILE* _win32_stderr(void)
603 return (FILE*)pPerl->piStdIO->Stderr();
606 int _win32_ferror(FILE *fp)
608 return pPerl->piStdIO->Error((PerlIO*)fp, ErrorNo());
611 int _win32_feof(FILE *fp)
613 return pPerl->piStdIO->Eof((PerlIO*)fp, ErrorNo());
616 char* _win32_strerror(int e)
621 void _win32_perror(const char *str)
626 int _win32_vfprintf(FILE *pf, const char *format, va_list arg)
628 return pPerl->piStdIO->Vprintf((PerlIO*)pf, ErrorNo(), format, arg);
631 int _win32_vprintf(const char *format, va_list arg)
633 return pPerl->piStdIO->Vprintf(pPerl->piStdIO->Stdout(), ErrorNo(), format, arg);
636 int _win32_fprintf(FILE *pf, const char *format, ...)
640 va_start(args, format);
641 ret = _win32_vfprintf(pf, format, args);
646 int _win32_printf(const char *format, ...)
650 va_start(args, format);
651 ret = _win32_vprintf(format, args);
656 size_t _win32_fread(void *buf, size_t size, size_t count, FILE *pf)
658 return pPerl->piStdIO->Read((PerlIO*)pf, buf, (size*count), ErrorNo());
661 size_t _win32_fwrite(const void *buf, size_t size, size_t count, FILE *pf)
663 return pPerl->piStdIO->Write((PerlIO*)pf, buf, (size*count), ErrorNo());
666 FILE* _win32_fopen(const char *path, const char *mode)
668 return (FILE*)pPerl->piStdIO->Open(path, mode, ErrorNo());
671 FILE* _win32_fdopen(int fh, const char *mode)
673 return (FILE*)pPerl->piStdIO->Fdopen(fh, mode, ErrorNo());
676 FILE* _win32_freopen(const char *path, const char *mode, FILE *pf)
678 return (FILE*)pPerl->piStdIO->Reopen(path, mode, (PerlIO*)pf, ErrorNo());
681 int _win32_fclose(FILE *pf)
683 return pPerl->piStdIO->Close((PerlIO*)pf, ErrorNo());
686 int _win32_fputs(const char *s,FILE *pf)
688 return pPerl->piStdIO->Puts((PerlIO*)pf, s, ErrorNo());
691 int _win32_fputc(int c,FILE *pf)
693 return pPerl->piStdIO->Putc((PerlIO*)pf, c, ErrorNo());
696 int _win32_ungetc(int c,FILE *pf)
698 return pPerl->piStdIO->Ungetc((PerlIO*)pf, c, ErrorNo());
701 int _win32_getc(FILE *pf)
703 return pPerl->piStdIO->Getc((PerlIO*)pf, ErrorNo());
706 int _win32_fileno(FILE *pf)
708 return pPerl->piStdIO->Fileno((PerlIO*)pf, ErrorNo());
711 void _win32_clearerr(FILE *pf)
713 pPerl->piStdIO->Clearerr((PerlIO*)pf, ErrorNo());
716 int _win32_fflush(FILE *pf)
718 return pPerl->piStdIO->Flush((PerlIO*)pf, ErrorNo());
721 long _win32_ftell(FILE *pf)
723 return pPerl->piStdIO->Tell((PerlIO*)pf, ErrorNo());
726 int _win32_fseek(FILE *pf,long offset,int origin)
728 return pPerl->piStdIO->Seek((PerlIO*)pf, offset, origin, ErrorNo());
731 int _win32_fgetpos(FILE *pf,fpos_t *p)
733 return pPerl->piStdIO->Getpos((PerlIO*)pf, p, ErrorNo());
736 int _win32_fsetpos(FILE *pf,const fpos_t *p)
738 return pPerl->piStdIO->Setpos((PerlIO*)pf, p, ErrorNo());
741 void _win32_rewind(FILE *pf)
743 pPerl->piStdIO->Rewind((PerlIO*)pf, ErrorNo());
746 FILE* _win32_tmpfile(void)
748 return (FILE*)pPerl->piStdIO->Tmpfile(ErrorNo());
751 void _win32_setbuf(FILE *pf, char *buf)
753 pPerl->piStdIO->SetBuf((PerlIO*)pf, buf, ErrorNo());
756 int _win32_setvbuf(FILE *pf, char *buf, int type, size_t size)
758 return pPerl->piStdIO->SetVBuf((PerlIO*)pf, buf, type, size, ErrorNo());
761 char* _win32_fgets(char *s, int n, FILE *pf)
763 return pPerl->piStdIO->Gets((PerlIO*)pf, s, n, ErrorNo());
766 char* _win32_gets(char *s)
768 return _win32_fgets(s, 80, (FILE*)pPerl->piStdIO->Stdin());
771 int _win32_fgetc(FILE *pf)
773 return pPerl->piStdIO->Getc((PerlIO*)pf, ErrorNo());
776 int _win32_putc(int c, FILE *pf)
778 return pPerl->piStdIO->Putc((PerlIO*)pf, c, ErrorNo());
781 int _win32_puts(const char *s)
783 return pPerl->piStdIO->Puts(pPerl->piStdIO->Stdout(), s, ErrorNo());
786 int _win32_getchar(void)
788 return pPerl->piStdIO->Getc(pPerl->piStdIO->Stdin(), ErrorNo());
791 int _win32_putchar(int c)
793 return pPerl->piStdIO->Putc(pPerl->piStdIO->Stdout(), c, ErrorNo());
796 void* _win32_malloc(size_t size)
798 return pPerl->piMem->Malloc(size);
801 void* _win32_calloc(size_t numitems, size_t size)
803 return pPerl->piMem->Malloc(numitems*size);
806 void* _win32_realloc(void *block, size_t size)
808 return pPerl->piMem->Realloc(block, size);
811 void _win32_free(void *block)
813 pPerl->piMem->Free(block);
816 void _win32_abort(void)
818 pPerl->piProc->Abort();
821 int _win32_pipe(int *phandles, unsigned int psize, int textmode)
823 return pPerl->piProc->Pipe(phandles);
826 FILE* _win32_popen(const char *command, const char *mode)
828 return (FILE*)pPerl->piProc->Popen(command, mode);
831 int _win32_pclose(FILE *pf)
833 return pPerl->piProc->Pclose((PerlIO*)pf);
836 unsigned _win32_sleep(unsigned int t)
838 return pPerl->piProc->Sleep(t);
841 int _win32_spawnvp(int mode, const char *cmdname, const char *const *argv)
843 return pPerl->piProc->Spawnvp(mode, cmdname, argv);
846 int _win32_mkdir(const char *dir, int mode)
848 return pPerl->piDir->Makedir(dir, mode, ErrorNo());
851 int _win32_rmdir(const char *dir)
853 return pPerl->piDir->Rmdir(dir, ErrorNo());
856 int _win32_chdir(const char *dir)
858 return pPerl->piDir->Chdir(dir, ErrorNo());
862 int _win32_fstat(int fd,struct stat *sbufptr)
864 return pPerl->piLIO->FileStat(fd, sbufptr, ErrorNo());
867 int _win32_stat(const char *name,struct stat *sbufptr)
869 return pPerl->piLIO->NameStat(name, sbufptr, ErrorNo());
872 int _win32_setmode(int fd, int mode)
874 return pPerl->piLIO->Setmode(fd, mode, ErrorNo());
877 long _win32_lseek(int fd, long offset, int origin)
879 return pPerl->piLIO->Lseek(fd, offset, origin, ErrorNo());
882 long _win32_tell(int fd)
884 return pPerl->piStdIO->Tell((PerlIO*)fd, ErrorNo());
887 int _win32_dup(int fd)
889 return pPerl->piLIO->Dup(fd, ErrorNo());
892 int _win32_dup2(int h1, int h2)
894 return pPerl->piLIO->Dup2(h1, h2, ErrorNo());
897 int _win32_open(const char *path, int oflag,...)
899 return pPerl->piLIO->Open(path, oflag, ErrorNo());
902 int _win32_close(int fd)
904 return pPerl->piLIO->Close(fd, ErrorNo());
907 int _win32_read(int fd, void *buf, unsigned int cnt)
909 return pPerl->piLIO->Read(fd, buf, cnt, ErrorNo());
912 int _win32_write(int fd, const void *buf, unsigned int cnt)
914 return pPerl->piLIO->Write(fd, buf, cnt, ErrorNo());
917 int _win32_times(struct tms *timebuf)
919 return pPerl->piProc->Times(timebuf);
922 int _win32_ioctl(int i, unsigned int u, char *data)
924 return pPerl->piLIO->IOCtl(i, u, data, ErrorNo());
927 int _win32_utime(const char *f, struct utimbuf *t)
929 return pPerl->piLIO->Utime((char*)f, t, ErrorNo());
932 char* _win32_getenv(const char *name)
934 return pPerl->piENV->Getenv(name, ErrorNo());
937 int _win32_open_osfhandle(long handle, int flags)
939 return pPerl->piStdIO->OpenOSfhandle(handle, flags);
942 long _win32_get_osfhandle(int fd)
944 return pPerl->piStdIO->GetOSfhandle(fd);
947 u_long _win32_htonl (u_long hostlong)
949 return pPerl->piSock->Htonl(hostlong);
952 u_short _win32_htons (u_short hostshort)
954 return pPerl->piSock->Htons(hostshort);
957 u_long _win32_ntohl (u_long netlong)
959 return pPerl->piSock->Ntohl(netlong);
962 u_short _win32_ntohs (u_short netshort)
964 return pPerl->piSock->Ntohs(netshort);
967 unsigned long _win32_inet_addr (const char * cp)
969 return pPerl->piSock->InetAddr(cp, ErrorNo());
972 char * _win32_inet_ntoa (struct in_addr in)
974 return pPerl->piSock->InetNtoa(in, ErrorNo());
977 SOCKET _win32_socket (int af, int type, int protocol)
979 return pPerl->piSock->Socket(af, type, protocol, ErrorNo());
982 int _win32_bind (SOCKET s, const struct sockaddr *addr, int namelen)
984 return pPerl->piSock->Bind(s, addr, namelen, ErrorNo());
987 int _win32_listen (SOCKET s, int backlog)
989 return pPerl->piSock->Listen(s, backlog, ErrorNo());
992 SOCKET _win32_accept (SOCKET s, struct sockaddr *addr, int *addrlen)
994 return pPerl->piSock->Accept(s, addr, addrlen, ErrorNo());
997 int _win32_connect (SOCKET s, const struct sockaddr *name, int namelen)
999 return pPerl->piSock->Connect(s, name, namelen, ErrorNo());
1002 int _win32_send (SOCKET s, const char * buf, int len, int flags)
1004 return pPerl->piSock->Send(s, buf, len, flags, ErrorNo());
1007 int _win32_sendto (SOCKET s, const char * buf, int len, int flags,
1008 const struct sockaddr *to, int tolen)
1010 return pPerl->piSock->Sendto(s, buf, len, flags, to, tolen, ErrorNo());
1013 int _win32_recv (SOCKET s, char * buf, int len, int flags)
1015 return pPerl->piSock->Recv(s, buf, len, flags, ErrorNo());
1018 int _win32_recvfrom (SOCKET s, char * buf, int len, int flags,
1019 struct sockaddr *from, int * fromlen)
1021 return pPerl->piSock->Recvfrom(s, buf, len, flags, from, fromlen, ErrorNo());
1024 int _win32_shutdown (SOCKET s, int how)
1026 return pPerl->piSock->Shutdown(s, how, ErrorNo());
1029 int _win32_closesocket (SOCKET s)
1031 return pPerl->piSock->Closesocket(s, ErrorNo());
1034 int _win32_ioctlsocket (SOCKET s, long cmd, u_long *argp)
1036 return pPerl->piSock->Ioctlsocket(s, cmd, argp, ErrorNo());
1039 int _win32_setsockopt (SOCKET s, int level, int optname,
1040 const char * optval, int optlen)
1042 return pPerl->piSock->Setsockopt(s, level, optname, optval, optlen, ErrorNo());
1045 int _win32_getsockopt (SOCKET s, int level, int optname, char * optval, int *optlen)
1047 return pPerl->piSock->Getsockopt(s, level, optname, optval, optlen, ErrorNo());
1050 int _win32_getpeername (SOCKET s, struct sockaddr *name, int * namelen)
1052 return pPerl->piSock->Getpeername(s, name, namelen, ErrorNo());
1055 int _win32_getsockname (SOCKET s, struct sockaddr *name, int * namelen)
1057 return pPerl->piSock->Getsockname(s, name, namelen, ErrorNo());
1060 int _win32_gethostname (char * name, int namelen)
1062 return pPerl->piSock->Gethostname(name, namelen, ErrorNo());
1065 struct hostent * _win32_gethostbyname(const char * name)
1067 return pPerl->piSock->Gethostbyname(name, ErrorNo());
1070 struct hostent * _win32_gethostbyaddr(const char * addr, int len, int type)
1072 return pPerl->piSock->Gethostbyaddr(addr, len, type, ErrorNo());
1075 struct protoent * _win32_getprotobyname(const char * name)
1077 return pPerl->piSock->Getprotobyname(name, ErrorNo());
1080 struct protoent * _win32_getprotobynumber(int proto)
1082 return pPerl->piSock->Getprotobynumber(proto, ErrorNo());
1085 struct servent * _win32_getservbyname(const char * name, const char * proto)
1087 return pPerl->piSock->Getservbyname(name, proto, ErrorNo());
1090 struct servent * _win32_getservbyport(int port, const char * proto)
1092 return pPerl->piSock->Getservbyport(port, proto, ErrorNo());
1095 int _win32_select (int nfds, Perl_fd_set *rfds, Perl_fd_set *wfds, Perl_fd_set *xfds,
1096 const struct timeval *timeout)
1098 return pPerl->piSock->Select(nfds, (char*)rfds, (char*)wfds, (char*)xfds, timeout, ErrorNo());
1101 void _win32_endnetent(void)
1103 pPerl->piSock->Endnetent(ErrorNo());
1106 void _win32_endhostent(void)
1108 pPerl->piSock->Endhostent(ErrorNo());
1111 void _win32_endprotoent(void)
1113 pPerl->piSock->Endprotoent(ErrorNo());
1116 void _win32_endservent(void)
1118 pPerl->piSock->Endservent(ErrorNo());
1121 struct netent * _win32_getnetent(void)
1123 return pPerl->piSock->Getnetent(ErrorNo());
1126 struct netent * _win32_getnetbyname(char *name)
1128 return pPerl->piSock->Getnetbyname(name, ErrorNo());
1131 struct netent * _win32_getnetbyaddr(long net, int type)
1133 return pPerl->piSock->Getnetbyaddr(net, type, ErrorNo());
1136 struct protoent *_win32_getprotoent(void)
1138 return pPerl->piSock->Getprotoent(ErrorNo());
1141 struct servent *_win32_getservent(void)
1143 return pPerl->piSock->Getservent(ErrorNo());
1146 void _win32_sethostent(int stayopen)
1148 pPerl->piSock->Sethostent(stayopen, ErrorNo());
1151 void _win32_setnetent(int stayopen)
1153 pPerl->piSock->Setnetent(stayopen, ErrorNo());
1156 void _win32_setprotoent(int stayopen)
1158 pPerl->piSock->Setprotoent(stayopen, ErrorNo());
1161 void _win32_setservent(int stayopen)
1163 pPerl->piSock->Setservent(stayopen, ErrorNo());
1169 print HDRFILE <<EOCODE;
1171 char ** _Perl_op_desc ();
1172 #define Perl_op_desc (_Perl_op_desc())
1175 char ** _Perl_op_name ();
1176 #define Perl_op_name (_Perl_op_name())
1178 #undef Perl_no_modify
1179 char * _Perl_no_modify ();
1180 #define Perl_no_modify (_Perl_no_modify())
1183 U32 * _Perl_opargs ();
1184 #define Perl_opargs (_Perl_opargs())
1193 #undef win32_fprintf
1195 #undef win32_vfprintf
1196 #undef win32_vprintf
1201 #undef win32_freopen
1208 #undef win32_clearerr
1212 #undef win32_fgetpos
1213 #undef win32_fsetpos
1215 #undef win32_tmpfile
1222 #undef win32_setmode
1236 #undef win32_setvbuf
1242 #undef win32_getchar
1243 #undef win32_putchar
1246 #undef win32_realloc
1259 #undef win32_inet_addr
1260 #undef win32_inet_ntoa
1266 #undef win32_connect
1270 #undef win32_recvfrom
1271 #undef win32_shutdown
1272 #undef win32_closesocket
1273 #undef win32_ioctlsocket
1274 #undef win32_setsockopt
1275 #undef win32_getsockopt
1276 #undef win32_getpeername
1277 #undef win32_getsockname
1278 #undef win32_gethostname
1279 #undef win32_gethostbyname
1280 #undef win32_gethostbyaddr
1281 #undef win32_getprotobyname
1282 #undef win32_getprotobynumber
1283 #undef win32_getservbyname
1284 #undef win32_getservbyport
1286 #undef win32_endhostent
1287 #undef win32_endnetent
1288 #undef win32_endprotoent
1289 #undef win32_endservent
1290 #undef win32_getnetent
1291 #undef win32_getnetbyname
1292 #undef win32_getnetbyaddr
1293 #undef win32_getprotoent
1294 #undef win32_getservent
1295 #undef win32_sethostent
1296 #undef win32_setnetent
1297 #undef win32_setprotoent
1298 #undef win32_setservent
1300 #define win32_errno _win32_errno
1301 #define win32_stdin _win32_stdin
1302 #define win32_stdout _win32_stdout
1303 #define win32_stderr _win32_stderr
1304 #define win32_ferror _win32_ferror
1305 #define win32_feof _win32_feof
1306 #define win32_strerror _win32_strerror
1307 #define win32_perror _win32_perror
1308 #define win32_fprintf _win32_fprintf
1309 #define win32_printf _win32_printf
1310 #define win32_vfprintf _win32_vfprintf
1311 #define win32_vprintf _win32_vprintf
1312 #define win32_fread _win32_fread
1313 #define win32_fwrite _win32_fwrite
1314 #define win32_fopen _win32_fopen
1315 #define win32_fdopen _win32_fdopen
1316 #define win32_freopen _win32_freopen
1317 #define win32_fclose _win32_fclose
1318 #define win32_fputs _win32_fputs
1319 #define win32_fputc _win32_fputc
1320 #define win32_ungetc _win32_ungetc
1321 #define win32_getc _win32_getc
1322 #define win32_fileno _win32_fileno
1323 #define win32_clearerr _win32_clearerr
1324 #define win32_fflush _win32_fflush
1325 #define win32_ftell _win32_ftell
1326 #define win32_fseek _win32_fseek
1327 #define win32_fgetpos _win32_fgetpos
1328 #define win32_fsetpos _win32_fsetpos
1329 #define win32_rewind _win32_rewind
1330 #define win32_tmpfile _win32_tmpfile
1331 #define win32_abort _win32_abort
1332 #define win32_fstat _win32_fstat
1333 #define win32_stat _win32_stat
1334 #define win32_pipe _win32_pipe
1335 #define win32_popen _win32_popen
1336 #define win32_pclose _win32_pclose
1337 #define win32_setmode _win32_setmode
1338 #define win32_lseek _win32_lseek
1339 #define win32_tell _win32_tell
1340 #define win32_dup _win32_dup
1341 #define win32_dup2 _win32_dup2
1342 #define win32_open _win32_open
1343 #define win32_close _win32_close
1344 #define win32_eof _win32_eof
1345 #define win32_read _win32_read
1346 #define win32_write _win32_write
1347 #define win32_mkdir _win32_mkdir
1348 #define win32_rmdir _win32_rmdir
1349 #define win32_chdir _win32_chdir
1350 #define win32_setbuf _win32_setbuf
1351 #define win32_setvbuf _win32_setvbuf
1352 #define win32_fgetc _win32_fgetc
1353 #define win32_fgets _win32_fgets
1354 #define win32_gets _win32_gets
1355 #define win32_putc _win32_putc
1356 #define win32_puts _win32_puts
1357 #define win32_getchar _win32_getchar
1358 #define win32_putchar _win32_putchar
1359 #define win32_malloc _win32_malloc
1360 #define win32_calloc _win32_calloc
1361 #define win32_realloc _win32_realloc
1362 #define win32_free _win32_free
1363 #define win32_sleep _win32_sleep
1364 #define win32_spawnvp _win32_spawnvp
1365 #define win32_times _win32_times
1366 #define win32_stat _win32_stat
1367 #define win32_ioctl _win32_ioctl
1368 #define win32_utime _win32_utime
1369 #define win32_getenv _win32_getenv
1370 #define win32_open_osfhandle _win32_open_osfhandle
1371 #define win32_get_osfhandle _win32_get_osfhandle
1373 #define win32_htonl _win32_htonl
1374 #define win32_htons _win32_htons
1375 #define win32_ntohl _win32_ntohl
1376 #define win32_ntohs _win32_ntohs
1377 #define win32_inet_addr _win32_inet_addr
1378 #define win32_inet_ntoa _win32_inet_ntoa
1380 #define win32_socket _win32_socket
1381 #define win32_bind _win32_bind
1382 #define win32_listen _win32_listen
1383 #define win32_accept _win32_accept
1384 #define win32_connect _win32_connect
1385 #define win32_send _win32_send
1386 #define win32_sendto _win32_sendto
1387 #define win32_recv _win32_recv
1388 #define win32_recvfrom _win32_recvfrom
1389 #define win32_shutdown _win32_shutdown
1390 #define win32_closesocket _win32_closesocket
1391 #define win32_ioctlsocket _win32_ioctlsocket
1392 #define win32_setsockopt _win32_setsockopt
1393 #define win32_getsockopt _win32_getsockopt
1394 #define win32_getpeername _win32_getpeername
1395 #define win32_getsockname _win32_getsockname
1396 #define win32_gethostname _win32_gethostname
1397 #define win32_gethostbyname _win32_gethostbyname
1398 #define win32_gethostbyaddr _win32_gethostbyaddr
1399 #define win32_getprotobyname _win32_getprotobyname
1400 #define win32_getprotobynumber _win32_getprotobynumber
1401 #define win32_getservbyname _win32_getservbyname
1402 #define win32_getservbyport _win32_getservbyport
1403 #define win32_select _win32_select
1404 #define win32_endhostent _win32_endhostent
1405 #define win32_endnetent _win32_endnetent
1406 #define win32_endprotoent _win32_endprotoent
1407 #define win32_endservent _win32_endservent
1408 #define win32_getnetent _win32_getnetent
1409 #define win32_getnetbyname _win32_getnetbyname
1410 #define win32_getnetbyaddr _win32_getnetbyaddr
1411 #define win32_getprotoent _win32_getprotoent
1412 #define win32_getservent _win32_getservent
1413 #define win32_sethostent _win32_sethostent
1414 #define win32_setnetent _win32_setnetent
1415 #define win32_setprotoent _win32_setprotoent
1416 #define win32_setservent _win32_setservent
1418 int * _win32_errno(void);
1419 FILE* _win32_stdin(void);
1420 FILE* _win32_stdout(void);
1421 FILE* _win32_stderr(void);
1422 int _win32_ferror(FILE *fp);
1423 int _win32_feof(FILE *fp);
1424 char* _win32_strerror(int e);
1425 void _win32_perror(const char *str);
1426 int _win32_fprintf(FILE *pf, const char *format, ...);
1427 int _win32_printf(const char *format, ...);
1428 int _win32_vfprintf(FILE *pf, const char *format, va_list arg);
1429 int _win32_vprintf(const char *format, va_list arg);
1430 size_t _win32_fread(void *buf, size_t size, size_t count, FILE *pf);
1431 size_t _win32_fwrite(const void *buf, size_t size, size_t count, FILE *pf);
1432 FILE* _win32_fopen(const char *path, const char *mode);
1433 FILE* _win32_fdopen(int fh, const char *mode);
1434 FILE* _win32_freopen(const char *path, const char *mode, FILE *pf);
1435 int _win32_fclose(FILE *pf);
1436 int _win32_fputs(const char *s,FILE *pf);
1437 int _win32_fputc(int c,FILE *pf);
1438 int _win32_ungetc(int c,FILE *pf);
1439 int _win32_getc(FILE *pf);
1440 int _win32_fileno(FILE *pf);
1441 void _win32_clearerr(FILE *pf);
1442 int _win32_fflush(FILE *pf);
1443 long _win32_ftell(FILE *pf);
1444 int _win32_fseek(FILE *pf,long offset,int origin);
1445 int _win32_fgetpos(FILE *pf,fpos_t *p);
1446 int _win32_fsetpos(FILE *pf,const fpos_t *p);
1447 void _win32_rewind(FILE *pf);
1448 FILE* _win32_tmpfile(void);
1449 void _win32_abort(void);
1450 int _win32_fstat(int fd,struct stat *sbufptr);
1451 int _win32_stat(const char *name,struct stat *sbufptr);
1452 int _win32_pipe( int *phandles, unsigned int psize, int textmode );
1453 FILE* _win32_popen( const char *command, const char *mode );
1454 int _win32_pclose( FILE *pf);
1455 int _win32_setmode( int fd, int mode);
1456 long _win32_lseek( int fd, long offset, int origin);
1457 long _win32_tell( int fd);
1458 int _win32_dup( int fd);
1459 int _win32_dup2(int h1, int h2);
1460 int _win32_open(const char *path, int oflag,...);
1461 int _win32_close(int fd);
1462 int _win32_eof(int fd);
1463 int _win32_read(int fd, void *buf, unsigned int cnt);
1464 int _win32_write(int fd, const void *buf, unsigned int cnt);
1465 int _win32_mkdir(const char *dir, int mode);
1466 int _win32_rmdir(const char *dir);
1467 int _win32_chdir(const char *dir);
1468 void _win32_setbuf(FILE *pf, char *buf);
1469 int _win32_setvbuf(FILE *pf, char *buf, int type, size_t size);
1470 char* _win32_fgets(char *s, int n, FILE *pf);
1471 char* _win32_gets(char *s);
1472 int _win32_fgetc(FILE *pf);
1473 int _win32_putc(int c, FILE *pf);
1474 int _win32_puts(const char *s);
1475 int _win32_getchar(void);
1476 int _win32_putchar(int c);
1477 void* _win32_malloc(size_t size);
1478 void* _win32_calloc(size_t numitems, size_t size);
1479 void* _win32_realloc(void *block, size_t size);
1480 void _win32_free(void *block);
1481 unsigned _win32_sleep(unsigned int);
1482 int _win32_spawnvp(int mode, const char *cmdname, const char *const *argv);
1483 int _win32_times(struct tms *timebuf);
1484 int _win32_stat(const char *path, struct stat *buf);
1485 int _win32_ioctl(int i, unsigned int u, char *data);
1486 int _win32_utime(const char *f, struct utimbuf *t);
1487 char* _win32_getenv(const char *name);
1488 int _win32_open_osfhandle(long handle, int flags);
1489 long _win32_get_osfhandle(int fd);
1491 u_long _win32_htonl (u_long hostlong);
1492 u_short _win32_htons (u_short hostshort);
1493 u_long _win32_ntohl (u_long netlong);
1494 u_short _win32_ntohs (u_short netshort);
1495 unsigned long _win32_inet_addr (const char * cp);
1496 char * _win32_inet_ntoa (struct in_addr in);
1498 SOCKET _win32_socket (int af, int type, int protocol);
1499 int _win32_bind (SOCKET s, const struct sockaddr *addr, int namelen);
1500 int _win32_listen (SOCKET s, int backlog);
1501 SOCKET _win32_accept (SOCKET s, struct sockaddr *addr, int *addrlen);
1502 int _win32_connect (SOCKET s, const struct sockaddr *name, int namelen);
1503 int _win32_send (SOCKET s, const char * buf, int len, int flags);
1504 int _win32_sendto (SOCKET s, const char * buf, int len, int flags,
1505 const struct sockaddr *to, int tolen);
1506 int _win32_recv (SOCKET s, char * buf, int len, int flags);
1507 int _win32_recvfrom (SOCKET s, char * buf, int len, int flags,
1508 struct sockaddr *from, int * fromlen);
1509 int _win32_shutdown (SOCKET s, int how);
1510 int _win32_closesocket (SOCKET s);
1511 int _win32_ioctlsocket (SOCKET s, long cmd, u_long *argp);
1512 int _win32_setsockopt (SOCKET s, int level, int optname,
1513 const char * optval, int optlen);
1514 int _win32_getsockopt (SOCKET s, int level, int optname, char * optval, int *optlen);
1515 int _win32_getpeername (SOCKET s, struct sockaddr *name, int * namelen);
1516 int _win32_getsockname (SOCKET s, struct sockaddr *name, int * namelen);
1517 int _win32_gethostname (char * name, int namelen);
1518 struct hostent * _win32_gethostbyname(const char * name);
1519 struct hostent * _win32_gethostbyaddr(const char * addr, int len, int type);
1520 struct protoent * _win32_getprotobyname(const char * name);
1521 struct protoent * _win32_getprotobynumber(int proto);
1522 struct servent * _win32_getservbyname(const char * name, const char * proto);
1523 struct servent * _win32_getservbyport(int port, const char * proto);
1524 int _win32_select (int nfds, Perl_fd_set *rfds, Perl_fd_set *wfds, Perl_fd_set *xfds,
1525 const struct timeval *timeout);
1526 void _win32_endnetent(void);
1527 void _win32_endhostent(void);
1528 void _win32_endprotoent(void);
1529 void _win32_endservent(void);
1530 struct netent * _win32_getnetent(void);
1531 struct netent * _win32_getnetbyname(char *name);
1532 struct netent * _win32_getnetbyaddr(long net, int type);
1533 struct protoent *_win32_getprotoent(void);
1534 struct servent *_win32_getservent(void);
1535 void _win32_sethostent(int stayopen);
1536 void _win32_setnetent(int stayopen);
1537 void _win32_setprotoent(int stayopen);
1538 void _win32_setservent(int stayopen);
1540 #pragma warning(once : 4113)