This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
support POSIX::uname() via win32_uname()
[perl5.git] / win32 / GenCAPI.pl
CommitLineData
e3b8966e
GS
1
2# creates a C API file from proto.h
3# takes one argument, the path to lib/CORE directory.
6de196ee 4# creates 2 files: "perlCAPI.cpp" and "perlCAPI.h".
e3b8966e 5
565e2fca
GS
6my $hdrfile = "$ARGV[0]/perlCAPI.h";
7my $infile = '../proto.h';
8my @embedsyms = ('../global.sym', '../pp.sym');
e3b8966e
GS
9my $separateObj = 0;
10
11my %skip_list;
12my %embed;
13
565e2fca
GS
14sub readsyms(\%@) {
15 my ($syms, @files) = @_;
e3b8966e
GS
16 my ($line, @words);
17 %$syms = ();
565e2fca
GS
18 foreach my $file (@files) {
19 local (*FILE, $_);
20 open(FILE, "< $file")
21 or die "$0: Can't open $file: $!\n";
22 while (<FILE>) {
23 s/[ \t]*#.*$//; # delete comments
24 if (/^\s*(\S+)\s*$/) {
25 my $sym = $1;
26 $$syms{$sym} = "Perl_$sym";
27 }
e3b8966e 28 }
565e2fca 29 close(FILE);
e3b8966e 30 }
e3b8966e
GS
31}
32
565e2fca 33readsyms %embed, @embedsyms;
e3b8966e
GS
34
35sub skip_these {
36 my $list = shift;
37 foreach my $symbol (@$list) {
38 $skip_list{$symbol} = 1;
39 }
40}
41
42skip_these [qw(
b86a2fa7 43yylex
e3b8966e
GS
44cando
45cast_ulong
46my_chsize
47condpair_magic
48deb
49deb_growlevel
50debprofdump
51debop
52debstack
53debstackptrs
58a50f62
GS
54dump_fds
55dump_mstats
e3b8966e
GS
56fprintf
57find_threadsv
58magic_mutexfree
58a50f62
GS
59my_memcmp
60my_memset
e3b8966e
GS
61my_pclose
62my_popen
63my_swap
64my_htonl
65my_ntohl
66new_struct_thread
67same_dirent
68unlnk
69unlock_condpair
70safexmalloc
71safexcalloc
72safexrealloc
73safexfree
74Perl_GetVars
066ef5b5 75malloced_size
e3b8966e
GS
76)];
77
78
79
80if (!open(INFILE, "<$infile")) {
81 print "open of $infile failed: $!\n";
82 return 1;
83}
84
6de196ee
GS
85if (!open(OUTFILE, ">perlCAPI.cpp")) {
86 print "open of perlCAPI.cpp failed: $!\n";
e3b8966e
GS
87 return 1;
88}
89
b207eff1
GS
90print OUTFILE <<ENDCODE;
91#include "EXTERN.h"
92#include "perl.h"
93#include "XSUB.h"
94
95#define DESTRUCTORFUNC (void (*)(void*))
96
97ENDCODE
98
99print OUTFILE "#ifdef SetCPerlObj_defined\n" unless ($separateObj == 0);
100
101print OUTFILE <<ENDCODE;
102extern "C" void SetCPerlObj(CPerlObj* pP)
103{
104 pPerl = pP;
105}
106
107ENDCODE
108
e3b8966e
GS
109print OUTFILE "#endif\n" unless ($separateObj == 0);
110
111while () {
112 last unless defined ($_ = <INFILE>);
113 if (/^VIRTUAL\s/) {
114 while (!/;$/) {
115 chomp;
116 $_ .= <INFILE>;
117 }
118 $_ =~ s/^VIRTUAL\s*//;
119 $_ =~ s/\s*__attribute__.*$/;/;
120 if ( /(.*)\s([A-z_]*[0-9A-z_]+\s)_\(\((.*)\)\);/ ||
121 /(.*)\*([A-z_]*[0-9A-z_]+\s)_\(\((.*)\)\);/ ) {
122 $type = $1;
123 $name = $2;
124 $args = $3;
125
126 $name =~ s/\s*$//;
127 $type =~ s/\s*$//;
128 next if (defined $skip_list{$name});
129
130 if($args eq "ARGSproto") {
131 $args = "void";
132 }
133
134 $return = ($type eq "void" or $type eq "Free_t") ? "\t" : "\treturn";
135
136 if(defined $embed{$name}) {
137 $funcName = $embed{$name};
138 } else {
139 $funcName = $name;
140 }
141
142 @args = split(',', $args);
143 if ($args[$#args] =~ /\s*\.\.\.\s*/) {
144 if(($name eq "croak") or ($name eq "deb") or ($name eq "die")
dfe13c55
GS
145 or ($name eq "form") or ($name eq "warn")
146 or ($name eq "warner")) {
e3b8966e 147 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
dfe13c55
GS
148 for (@args) { $_ = $1 if /(\w+)\W*$/; }
149 $arg = $args[$#args-1];
150 my $start = '';
151 $start = join(', ',@args[0 .. ($#args - 2)]) if @args > 2;
152 $start .= ', ' if $start;
b207eff1
GS
153 print OUTFILE <<ENDCODE;
154
155#undef $name
156extern "C" $type $funcName ($args)
157{
158 char *pstr;
159 char *pmsg;
160 va_list args;
161 va_start(args, $arg);
162 pmsg = pPerl->Perl_mess($arg, &args);
163 New(0, pstr, strlen(pmsg)+1, char);
164 strcpy(pstr, pmsg);
dfe13c55 165$return pPerl->Perl_$name($start pstr);
b207eff1
GS
166 va_end(args);
167}
168ENDCODE
e3b8966e
GS
169 print OUTFILE "#endif\n" unless ($separateObj == 0);
170 }
171 elsif($name eq "newSVpvf") {
172 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
e3b8966e
GS
173 $args[0] =~ /(\w+)\W*$/;
174 $arg = $1;
b207eff1
GS
175 print OUTFILE <<ENDCODE;
176
177#undef $name
178extern "C" $type $funcName ($args)
179{
180 SV *sv;
181 va_list args;
182 va_start(args, $arg);
183 sv = pPerl->Perl_newSV(0);
184 pPerl->Perl_sv_vcatpvfn(sv, $arg, strlen($arg), &args, NULL, 0, NULL);
185 va_end(args);
186 return sv;
187}
188ENDCODE
e3b8966e
GS
189 print OUTFILE "#endif\n" unless ($separateObj == 0);
190 }
191 elsif($name eq "sv_catpvf") {
192 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
e3b8966e
GS
193 $args[0] =~ /(\w+)\W*$/;
194 $arg0 = $1;
195 $args[1] =~ /(\w+)\W*$/;
196 $arg1 = $1;
b207eff1
GS
197 print OUTFILE <<ENDCODE;
198
199#undef $name
200extern "C" $type $funcName ($args)
201{
202 va_list args;
203 va_start(args, $arg1);
204 pPerl->Perl_sv_vcatpvfn($arg0, $arg1, strlen($arg1), &args, NULL, 0, NULL);
205 va_end(args);
206}
207ENDCODE
e3b8966e
GS
208 print OUTFILE "#endif\n" unless ($separateObj == 0);
209 }
6a27c188
GS
210 elsif($name eq "sv_catpvf_mg") {
211 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
212 $args[0] =~ /(\w+)\W*$/;
213 $arg0 = $1;
214 $args[1] =~ /(\w+)\W*$/;
215 $arg1 = $1;
216 print OUTFILE <<ENDCODE;
217
218#undef $name
219#ifndef mg_set
220#define mg_set pPerl->Perl_mg_set
221#endif
222extern "C" $type $funcName ($args)
223{
224 va_list args;
225 va_start(args, $arg1);
226 pPerl->Perl_sv_vcatpvfn($arg0, $arg1, strlen($arg1), &args, NULL, 0, NULL);
227 va_end(args);
228 SvSETMAGIC(sv);
229}
230ENDCODE
231 print OUTFILE "#endif\n" unless ($separateObj == 0);
232 }
e3b8966e
GS
233 elsif($name eq "sv_setpvf") {
234 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
e3b8966e
GS
235 $args[0] =~ /(\w+)\W*$/;
236 $arg0 = $1;
237 $args[1] =~ /(\w+)\W*$/;
238 $arg1 = $1;
b207eff1
GS
239 print OUTFILE <<ENDCODE;
240
241#undef $name
242extern "C" $type $funcName ($args)
243{
244 va_list args;
245 va_start(args, $arg1);
246 pPerl->Perl_sv_vsetpvfn($arg0, $arg1, strlen($arg1), &args, NULL, 0, NULL);
247 va_end(args);
248}
249ENDCODE
e3b8966e
GS
250 print OUTFILE "#endif\n" unless ($separateObj == 0);
251 }
6a27c188
GS
252 elsif($name eq "sv_setpvf_mg") {
253 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
254 $args[0] =~ /(\w+)\W*$/;
255 $arg0 = $1;
256 $args[1] =~ /(\w+)\W*$/;
257 $arg1 = $1;
258 print OUTFILE <<ENDCODE;
259
260#undef $name
261#ifndef mg_set
262#define mg_set pPerl->Perl_mg_set
263#endif
264extern "C" $type $funcName ($args)
265{
266 va_list args;
267 va_start(args, $arg1);
268 pPerl->Perl_sv_vsetpvfn($arg0, $arg1, strlen($arg1), &args, NULL, 0, NULL);
269 va_end(args);
270 SvSETMAGIC(sv);
271}
272ENDCODE
273 print OUTFILE "#endif\n" unless ($separateObj == 0);
274 }
e3b8966e
GS
275 elsif($name eq "fprintf") {
276 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
e3b8966e
GS
277 $args[0] =~ /(\w+)\W*$/;
278 $arg0 = $1;
279 $args[1] =~ /(\w+)\W*$/;
280 $arg1 = $1;
b207eff1
GS
281 print OUTFILE <<ENDCODE;
282
283#undef $name
284extern "C" $type $name ($args)
285{
286 int nRet;
287 va_list args;
288 va_start(args, $arg1);
289 nRet = PerlIO_vprintf($arg0, $arg1, args);
290 va_end(args);
291 return nRet;
292}
293ENDCODE
e3b8966e
GS
294 print OUTFILE "#endif\n" unless ($separateObj == 0);
295 } else {
296 print "Warning: can't handle varargs function '$name'\n";
297 }
298 next;
299 }
300
301 # newXS special case
302 if ($name eq "newXS") {
303 next;
304 }
305
306 print OUTFILE "\n#ifdef $name" . "defined" unless ($separateObj == 0);
307
308 # handle specical case for save_destructor
309 if ($name eq "save_destructor") {
310 next;
311 }
312 # handle specical case for sighandler
313 if ($name eq "sighandler") {
314 next;
315 }
316 # handle special case for sv_grow
317 if ($name eq "sv_grow" and $args eq "SV* sv, unsigned long newlen") {
318 next;
319 }
320 # handle special case for newSV
321 if ($name eq "newSV" and $args eq "I32 x, STRLEN len") {
322 next;
323 }
324 # handle special case for perl_parse
325 if ($name eq "perl_parse") {
b207eff1
GS
326 print OUTFILE <<ENDCODE;
327
328#undef $name
329extern "C" $type $name ($args)
330{
331 return pPerl->perl_parse(xsinit, argc, argv, env);
332}
333ENDCODE
e3b8966e
GS
334 print OUTFILE "#endif\n" unless ($separateObj == 0);
335 next;
336 }
35ff7856
GS
337 # handle special case for perl_atexit
338 if ($name eq "perl_atexit") {
339 print OUTFILE <<ENDCODE;
340
341#undef $name
342extern "C" $type $name ($args)
343{
58a50f62 344 pPerl->perl_atexit(fn, ptr);
35ff7856
GS
345}
346ENDCODE
347 print OUTFILE "#endif\n" unless ($separateObj == 0);
348 next;
349 }
350
e3b8966e 351
9e6b2b00
GS
352 if($name eq "byterun" and $args eq "struct bytestream bs") {
353 next;
354 }
355
e3b8966e
GS
356 # foo(void);
357 if ($args eq "void") {
b207eff1
GS
358 print OUTFILE <<ENDCODE;
359
360#undef $name
361extern "C" $type $funcName ()
362{
363$return pPerl->$funcName();
364}
365
366ENDCODE
e3b8966e
GS
367 print OUTFILE "#endif\n" unless ($separateObj == 0);
368 next;
369 }
370
371 # foo(char *s, const int bar);
b207eff1
GS
372 print OUTFILE <<ENDCODE;
373
374#undef $name
375extern "C" $type $funcName ($args)
376{
b207eff1 377ENDCODE
35ff7856 378 print OUTFILE "$return pPerl->$funcName";
e3b8966e
GS
379 $doneone = 0;
380 foreach $arg (@args) {
381 if ($arg =~ /(\w+)\W*$/) {
382 if ($doneone) {
383 print OUTFILE ", $1";
384 }
385 else {
386 print OUTFILE "($1";
387 $doneone++;
388 }
389 }
390 }
391 print OUTFILE ");\n}\n";
392 print OUTFILE "#endif\n" unless ($separateObj == 0);
393 }
394 else {
395 print "failed to match $_";
396 }
397 }
398}
399
400close INFILE;
401
402%skip_list = ();
403
404skip_these [qw(
405strchop
406filemode
407lastfd
408oldname
409curinterp
410Argv
411Cmd
412sortcop
413sortstash
414firstgv
415secondgv
416sortstack
417signalstack
418mystrk
e3b8966e
GS
419oldlastpm
420gensym
421preambled
422preambleav
423Ilaststatval
424Ilaststype
425mess_sv
426ors
427opsave
428eval_mutex
942e002e 429strtab_mutex
e3b8966e
GS
430orslen
431ofmt
e3b8966e
GS
432modcount
433generation
434DBcv
435archpat_auto
436sortcxix
437lastgotoprobe
438regdummy
77d41b28 439regcomp_parse
e3b8966e
GS
440regxend
441regcode
442regnaughty
443regsawback
444regprecomp
445regnpar
446regsize
447regflags
448regseen
449seen_zerolen
77d41b28 450regcomp_rx
e3b8966e
GS
451extralen
452colorset
453colors
454reginput
455regbol
456regeol
457regstartp
458regendp
459reglastparen
460regtill
461regprev
462reg_start_tmp
463reg_start_tmpl
464regdata
465bostr
466reg_flags
467reg_eval_set
468regnarrate
469regprogram
470regindent
471regcc
472in_clean_objs
473in_clean_all
474linestart
475pending_ident
476statusvalue_vms
477sublex_info
478thrsv
479threadnum
4c2891ed
GS
480PL_piMem
481PL_piENV
482PL_piStdIO
483PL_piLIO
484PL_piDir
485PL_piSock
486PL_piProc
e3b8966e
GS
487cshname
488threadsv_names
489thread
490nthreads
491thr_key
492threads_mutex
493malloc_mutex
494svref_mutex
495sv_mutex
5ff3f7a4 496cred_mutex
e3b8966e
GS
497nthreads_cond
498eval_cond
499cryptseen
500cshlen
3967c732
JD
501watchaddr
502watchok
e3b8966e
GS
503)];
504
505sub readvars(\%$$) {
506 my ($syms, $file, $pre) = @_;
507 %$syms = ();
508 local (*FILE, $_);
509 open(FILE, "< $file")
510 or die "$0: Can't open $file: $!\n";
511 while (<FILE>) {
512 s/[ \t]*#.*//; # Delete comments.
513 if (/PERLVARI?C?\($pre(\w+),\s*([^,)]+)/) {
514 $$syms{$1} = $2;
515 }
516 }
517 close(FILE);
518}
519
520my %intrp;
521my %thread;
522my %globvar;
523
524readvars %intrp, '..\intrpvar.h','I';
525readvars %thread, '..\thrdvar.h','T';
526readvars %globvar, '..\perlvars.h','G';
527
528open(HDRFILE, ">$hdrfile") or die "$0: Can't open $hdrfile: $!\n";
b207eff1
GS
529print HDRFILE <<ENDCODE;
530void SetCPerlObj(void* pP);
531CV* Perl_newXS(char* name, void (*subaddr)(CV* cv), char* filename);
532
533ENDCODE
e3b8966e
GS
534
535sub DoVariable($$) {
536 my $name = shift;
537 my $type = shift;
538
539 return if (defined $skip_list{$name});
540 return if ($type eq 'struct perl_thread *');
541
542 print OUTFILE "\n#ifdef $name" . "_defined" unless ($separateObj == 0);
b207eff1 543 print OUTFILE <<ENDCODE;
4c2891ed
GS
544#undef PL_$name
545extern "C" $type * _PL_$name ()
b207eff1 546{
4c2891ed 547 return (($type *)&pPerl->PL_$name);
b207eff1
GS
548}
549
550ENDCODE
551
e3b8966e
GS
552 print OUTFILE "#endif\n" unless ($separateObj == 0);
553
b207eff1
GS
554 print HDRFILE <<ENDCODE;
555
4c2891ed
GS
556#undef PL_$name
557$type * _PL_$name ();
558#define PL_$name (*_PL_$name())
b207eff1
GS
559
560ENDCODE
561
e3b8966e
GS
562}
563
564foreach $key (keys %intrp) {
565 DoVariable ($key, $intrp{$key});
566}
567
568foreach $key (keys %thread) {
569 DoVariable ($key, $thread{$key});
570}
571
572foreach $key (keys %globvar) {
573 DoVariable ($key, $globvar{$key});
574}
575
576print OUTFILE <<EOCODE;
577
578
579extern "C" {
9e6b2b00
GS
580
581
582char ** _Perl_op_desc(void)
583{
584 return pPerl->Perl_get_op_descs();
585}
586
587char ** _Perl_op_name(void)
588{
589 return pPerl->Perl_get_op_names();
590}
591
592char * _Perl_no_modify(void)
593{
594 return pPerl->Perl_get_no_modify();
595}
596
597U32 * _Perl_opargs(void)
598{
599 return pPerl->Perl_get_opargs();
600}
601
b207eff1 602void xs_handler(CV* cv, CPerlObj* p)
e3b8966e
GS
603{
604 void(*func)(CV*);
605 SV* sv;
606 MAGIC* m = pPerl->Perl_mg_find((SV*)cv, '~');
607 if(m != NULL)
608 {
609 sv = m->mg_obj;
610 if(SvIOK(sv))
611 {
612 func = (void(*)(CV*))SvIVX(sv);
613 }
614 else
615 {
616 func = (void(*)(CV*))pPerl->Perl_sv_2iv(sv);
617 }
e3b8966e
GS
618 func(cv);
619 }
620}
621
622CV* Perl_newXS(char* name, void (*subaddr)(CV* cv), char* filename)
623{
624 CV* cv = pPerl->Perl_newXS(name, xs_handler, filename);
625 pPerl->Perl_sv_magic((SV*)cv, pPerl->Perl_sv_2mortal(pPerl->Perl_newSViv((IV)subaddr)), '~', "CAPI", 4);
626 return cv;
627}
628
b207eff1
GS
629
630void Perl_deb(const char pat, ...)
631{
632}
633
4c2891ed
GS
634#undef PL_piMem
635#undef PL_piENV
636#undef PL_piStdIO
637#undef PL_piLIO
638#undef PL_piDir
639#undef PL_piSock
640#undef PL_piProc
e3b8966e
GS
641
642int * _win32_errno(void)
643{
644 return &pPerl->ErrorNo();
645}
646
647FILE* _win32_stdin(void)
648{
4c2891ed 649 return (FILE*)pPerl->PL_piStdIO->Stdin();
e3b8966e
GS
650}
651
652FILE* _win32_stdout(void)
653{
4c2891ed 654 return (FILE*)pPerl->PL_piStdIO->Stdout();
e3b8966e
GS
655}
656
657FILE* _win32_stderr(void)
658{
4c2891ed 659 return (FILE*)pPerl->PL_piStdIO->Stderr();
e3b8966e
GS
660}
661
662int _win32_ferror(FILE *fp)
663{
4c2891ed 664 return pPerl->PL_piStdIO->Error((PerlIO*)fp, ErrorNo());
e3b8966e
GS
665}
666
667int _win32_feof(FILE *fp)
668{
4c2891ed 669 return pPerl->PL_piStdIO->Eof((PerlIO*)fp, ErrorNo());
e3b8966e
GS
670}
671
672char* _win32_strerror(int e)
673{
674 return strerror(e);
675}
676
677void _win32_perror(const char *str)
678{
679 perror(str);
680}
681
682int _win32_vfprintf(FILE *pf, const char *format, va_list arg)
683{
4c2891ed 684 return pPerl->PL_piStdIO->Vprintf((PerlIO*)pf, ErrorNo(), format, arg);
e3b8966e
GS
685}
686
687int _win32_vprintf(const char *format, va_list arg)
688{
4c2891ed 689 return pPerl->PL_piStdIO->Vprintf(pPerl->PL_piStdIO->Stdout(), ErrorNo(), format, arg);
e3b8966e
GS
690}
691
692int _win32_fprintf(FILE *pf, const char *format, ...)
693{
694 int ret;
695 va_list args;
696 va_start(args, format);
697 ret = _win32_vfprintf(pf, format, args);
698 va_end(args);
699 return ret;
700}
701
702int _win32_printf(const char *format, ...)
703{
704 int ret;
705 va_list args;
706 va_start(args, format);
707 ret = _win32_vprintf(format, args);
708 va_end(args);
709 return ret;
710}
711
712size_t _win32_fread(void *buf, size_t size, size_t count, FILE *pf)
713{
4c2891ed 714 return pPerl->PL_piStdIO->Read((PerlIO*)pf, buf, (size*count), ErrorNo());
e3b8966e
GS
715}
716
717size_t _win32_fwrite(const void *buf, size_t size, size_t count, FILE *pf)
718{
4c2891ed 719 return pPerl->PL_piStdIO->Write((PerlIO*)pf, buf, (size*count), ErrorNo());
e3b8966e
GS
720}
721
722FILE* _win32_fopen(const char *path, const char *mode)
723{
4c2891ed 724 return (FILE*)pPerl->PL_piStdIO->Open(path, mode, ErrorNo());
e3b8966e
GS
725}
726
727FILE* _win32_fdopen(int fh, const char *mode)
728{
4c2891ed 729 return (FILE*)pPerl->PL_piStdIO->Fdopen(fh, mode, ErrorNo());
e3b8966e
GS
730}
731
732FILE* _win32_freopen(const char *path, const char *mode, FILE *pf)
733{
4c2891ed 734 return (FILE*)pPerl->PL_piStdIO->Reopen(path, mode, (PerlIO*)pf, ErrorNo());
e3b8966e
GS
735}
736
737int _win32_fclose(FILE *pf)
738{
4c2891ed 739 return pPerl->PL_piStdIO->Close((PerlIO*)pf, ErrorNo());
e3b8966e
GS
740}
741
742int _win32_fputs(const char *s,FILE *pf)
743{
4c2891ed 744 return pPerl->PL_piStdIO->Puts((PerlIO*)pf, s, ErrorNo());
e3b8966e
GS
745}
746
747int _win32_fputc(int c,FILE *pf)
748{
4c2891ed 749 return pPerl->PL_piStdIO->Putc((PerlIO*)pf, c, ErrorNo());
e3b8966e
GS
750}
751
752int _win32_ungetc(int c,FILE *pf)
753{
4c2891ed 754 return pPerl->PL_piStdIO->Ungetc((PerlIO*)pf, c, ErrorNo());
e3b8966e
GS
755}
756
757int _win32_getc(FILE *pf)
758{
4c2891ed 759 return pPerl->PL_piStdIO->Getc((PerlIO*)pf, ErrorNo());
e3b8966e
GS
760}
761
762int _win32_fileno(FILE *pf)
763{
4c2891ed 764 return pPerl->PL_piStdIO->Fileno((PerlIO*)pf, ErrorNo());
e3b8966e
GS
765}
766
767void _win32_clearerr(FILE *pf)
768{
4c2891ed 769 pPerl->PL_piStdIO->Clearerr((PerlIO*)pf, ErrorNo());
e3b8966e
GS
770}
771
772int _win32_fflush(FILE *pf)
773{
4c2891ed 774 return pPerl->PL_piStdIO->Flush((PerlIO*)pf, ErrorNo());
e3b8966e
GS
775}
776
777long _win32_ftell(FILE *pf)
778{
4c2891ed 779 return pPerl->PL_piStdIO->Tell((PerlIO*)pf, ErrorNo());
e3b8966e
GS
780}
781
782int _win32_fseek(FILE *pf,long offset,int origin)
783{
4c2891ed 784 return pPerl->PL_piStdIO->Seek((PerlIO*)pf, offset, origin, ErrorNo());
e3b8966e
GS
785}
786
787int _win32_fgetpos(FILE *pf,fpos_t *p)
788{
4c2891ed 789 return pPerl->PL_piStdIO->Getpos((PerlIO*)pf, p, ErrorNo());
e3b8966e
GS
790}
791
792int _win32_fsetpos(FILE *pf,const fpos_t *p)
793{
4c2891ed 794 return pPerl->PL_piStdIO->Setpos((PerlIO*)pf, p, ErrorNo());
e3b8966e
GS
795}
796
797void _win32_rewind(FILE *pf)
798{
4c2891ed 799 pPerl->PL_piStdIO->Rewind((PerlIO*)pf, ErrorNo());
e3b8966e
GS
800}
801
802FILE* _win32_tmpfile(void)
803{
4c2891ed 804 return (FILE*)pPerl->PL_piStdIO->Tmpfile(ErrorNo());
e3b8966e
GS
805}
806
807void _win32_setbuf(FILE *pf, char *buf)
808{
4c2891ed 809 pPerl->PL_piStdIO->SetBuf((PerlIO*)pf, buf, ErrorNo());
e3b8966e
GS
810}
811
812int _win32_setvbuf(FILE *pf, char *buf, int type, size_t size)
813{
4c2891ed 814 return pPerl->PL_piStdIO->SetVBuf((PerlIO*)pf, buf, type, size, ErrorNo());
e3b8966e
GS
815}
816
9e6b2b00
GS
817char* _win32_fgets(char *s, int n, FILE *pf)
818{
4c2891ed 819 return pPerl->PL_piStdIO->Gets((PerlIO*)pf, s, n, ErrorNo());
9e6b2b00
GS
820}
821
822char* _win32_gets(char *s)
823{
4c2891ed 824 return _win32_fgets(s, 80, (FILE*)pPerl->PL_piStdIO->Stdin());
9e6b2b00
GS
825}
826
e3b8966e
GS
827int _win32_fgetc(FILE *pf)
828{
4c2891ed 829 return pPerl->PL_piStdIO->Getc((PerlIO*)pf, ErrorNo());
e3b8966e
GS
830}
831
832int _win32_putc(int c, FILE *pf)
833{
4c2891ed 834 return pPerl->PL_piStdIO->Putc((PerlIO*)pf, c, ErrorNo());
e3b8966e
GS
835}
836
837int _win32_puts(const char *s)
838{
4c2891ed 839 return pPerl->PL_piStdIO->Puts(pPerl->PL_piStdIO->Stdout(), s, ErrorNo());
e3b8966e
GS
840}
841
842int _win32_getchar(void)
843{
4c2891ed 844 return pPerl->PL_piStdIO->Getc(pPerl->PL_piStdIO->Stdin(), ErrorNo());
e3b8966e
GS
845}
846
847int _win32_putchar(int c)
848{
4c2891ed 849 return pPerl->PL_piStdIO->Putc(pPerl->PL_piStdIO->Stdout(), c, ErrorNo());
e3b8966e
GS
850}
851
852void* _win32_malloc(size_t size)
853{
4c2891ed 854 return pPerl->PL_piMem->Malloc(size);
e3b8966e
GS
855}
856
857void* _win32_calloc(size_t numitems, size_t size)
858{
4c2891ed 859 return pPerl->PL_piMem->Malloc(numitems*size);
e3b8966e
GS
860}
861
862void* _win32_realloc(void *block, size_t size)
863{
4c2891ed 864 return pPerl->PL_piMem->Realloc(block, size);
e3b8966e
GS
865}
866
867void _win32_free(void *block)
868{
4c2891ed 869 pPerl->PL_piMem->Free(block);
e3b8966e
GS
870}
871
872void _win32_abort(void)
873{
4c2891ed 874 pPerl->PL_piProc->Abort();
e3b8966e
GS
875}
876
877int _win32_pipe(int *phandles, unsigned int psize, int textmode)
878{
4c2891ed 879 return pPerl->PL_piProc->Pipe(phandles);
e3b8966e
GS
880}
881
882FILE* _win32_popen(const char *command, const char *mode)
883{
4c2891ed 884 return (FILE*)pPerl->PL_piProc->Popen(command, mode);
e3b8966e
GS
885}
886
887int _win32_pclose(FILE *pf)
888{
4c2891ed 889 return pPerl->PL_piProc->Pclose((PerlIO*)pf);
e3b8966e
GS
890}
891
892unsigned _win32_sleep(unsigned int t)
893{
4c2891ed 894 return pPerl->PL_piProc->Sleep(t);
e3b8966e
GS
895}
896
897int _win32_spawnvp(int mode, const char *cmdname, const char *const *argv)
898{
4c2891ed 899 return pPerl->PL_piProc->Spawnvp(mode, cmdname, argv);
e3b8966e
GS
900}
901
902int _win32_mkdir(const char *dir, int mode)
903{
4c2891ed 904 return pPerl->PL_piDir->Makedir(dir, mode, ErrorNo());
e3b8966e
GS
905}
906
907int _win32_rmdir(const char *dir)
908{
4c2891ed 909 return pPerl->PL_piDir->Rmdir(dir, ErrorNo());
e3b8966e
GS
910}
911
912int _win32_chdir(const char *dir)
913{
4c2891ed 914 return pPerl->PL_piDir->Chdir(dir, ErrorNo());
e3b8966e
GS
915}
916
917#undef stat
918int _win32_fstat(int fd,struct stat *sbufptr)
919{
4c2891ed 920 return pPerl->PL_piLIO->FileStat(fd, sbufptr, ErrorNo());
e3b8966e
GS
921}
922
923int _win32_stat(const char *name,struct stat *sbufptr)
924{
4c2891ed 925 return pPerl->PL_piLIO->NameStat(name, sbufptr, ErrorNo());
e3b8966e
GS
926}
927
8d9b2e3c 928int _win32_rename(const char *oname, const char *newname)
e24c7c18 929{
4c2891ed 930 return pPerl->PL_piLIO->Rename(oname, newname, ErrorNo());
e24c7c18
GS
931}
932
e3b8966e
GS
933int _win32_setmode(int fd, int mode)
934{
4c2891ed 935 return pPerl->PL_piLIO->Setmode(fd, mode, ErrorNo());
e3b8966e
GS
936}
937
938long _win32_lseek(int fd, long offset, int origin)
939{
4c2891ed 940 return pPerl->PL_piLIO->Lseek(fd, offset, origin, ErrorNo());
e3b8966e
GS
941}
942
943long _win32_tell(int fd)
944{
4c2891ed 945 return pPerl->PL_piStdIO->Tell((PerlIO*)fd, ErrorNo());
e3b8966e
GS
946}
947
948int _win32_dup(int fd)
949{
4c2891ed 950 return pPerl->PL_piLIO->Dup(fd, ErrorNo());
e3b8966e
GS
951}
952
953int _win32_dup2(int h1, int h2)
954{
4c2891ed 955 return pPerl->PL_piLIO->Dup2(h1, h2, ErrorNo());
e3b8966e
GS
956}
957
958int _win32_open(const char *path, int oflag,...)
959{
4c2891ed 960 return pPerl->PL_piLIO->Open(path, oflag, ErrorNo());
e3b8966e
GS
961}
962
963int _win32_close(int fd)
964{
4c2891ed 965 return pPerl->PL_piLIO->Close(fd, ErrorNo());
e3b8966e
GS
966}
967
968int _win32_read(int fd, void *buf, unsigned int cnt)
969{
4c2891ed 970 return pPerl->PL_piLIO->Read(fd, buf, cnt, ErrorNo());
e3b8966e
GS
971}
972
973int _win32_write(int fd, const void *buf, unsigned int cnt)
974{
4c2891ed 975 return pPerl->PL_piLIO->Write(fd, buf, cnt, ErrorNo());
e3b8966e
GS
976}
977
978int _win32_times(struct tms *timebuf)
979{
4c2891ed 980 return pPerl->PL_piProc->Times(timebuf);
e3b8966e
GS
981}
982
983int _win32_ioctl(int i, unsigned int u, char *data)
984{
4c2891ed 985 return pPerl->PL_piLIO->IOCtl(i, u, data, ErrorNo());
e3b8966e
GS
986}
987
988int _win32_utime(const char *f, struct utimbuf *t)
989{
4c2891ed 990 return pPerl->PL_piLIO->Utime((char*)f, t, ErrorNo());
e3b8966e
GS
991}
992
b2af26b1
GS
993int _win32_uname(struct utsname *name)
994{
995 return pPerl->PL_piENV->Uname(name, ErrorNo());
996}
997
e3b8966e
GS
998char* _win32_getenv(const char *name)
999{
4c2891ed 1000 return pPerl->PL_piENV->Getenv(name, ErrorNo());
e3b8966e
GS
1001}
1002
ac5c734f
GS
1003int _win32_putenv(const char *name)
1004{
1005 return pPerl->PL_piENV->Putenv(name, ErrorNo());
1006}
1007
e3b8966e
GS
1008int _win32_open_osfhandle(long handle, int flags)
1009{
4c2891ed 1010 return pPerl->PL_piStdIO->OpenOSfhandle(handle, flags);
e3b8966e
GS
1011}
1012
1013long _win32_get_osfhandle(int fd)
1014{
4c2891ed 1015 return pPerl->PL_piStdIO->GetOSfhandle(fd);
e3b8966e 1016}
891fc7f2
GS
1017
1018u_long _win32_htonl (u_long hostlong)
1019{
4c2891ed 1020 return pPerl->PL_piSock->Htonl(hostlong);
891fc7f2
GS
1021}
1022
1023u_short _win32_htons (u_short hostshort)
1024{
4c2891ed 1025 return pPerl->PL_piSock->Htons(hostshort);
891fc7f2
GS
1026}
1027
1028u_long _win32_ntohl (u_long netlong)
1029{
4c2891ed 1030 return pPerl->PL_piSock->Ntohl(netlong);
891fc7f2
GS
1031}
1032
1033u_short _win32_ntohs (u_short netshort)
1034{
4c2891ed 1035 return pPerl->PL_piSock->Ntohs(netshort);
891fc7f2
GS
1036}
1037
1038unsigned long _win32_inet_addr (const char * cp)
1039{
4c2891ed 1040 return pPerl->PL_piSock->InetAddr(cp, ErrorNo());
891fc7f2
GS
1041}
1042
1043char * _win32_inet_ntoa (struct in_addr in)
1044{
4c2891ed 1045 return pPerl->PL_piSock->InetNtoa(in, ErrorNo());
891fc7f2
GS
1046}
1047
1048SOCKET _win32_socket (int af, int type, int protocol)
1049{
4c2891ed 1050 return pPerl->PL_piSock->Socket(af, type, protocol, ErrorNo());
891fc7f2
GS
1051}
1052
1053int _win32_bind (SOCKET s, const struct sockaddr *addr, int namelen)
1054{
4c2891ed 1055 return pPerl->PL_piSock->Bind(s, addr, namelen, ErrorNo());
891fc7f2
GS
1056}
1057
1058int _win32_listen (SOCKET s, int backlog)
1059{
4c2891ed 1060 return pPerl->PL_piSock->Listen(s, backlog, ErrorNo());
891fc7f2
GS
1061}
1062
1063SOCKET _win32_accept (SOCKET s, struct sockaddr *addr, int *addrlen)
1064{
4c2891ed 1065 return pPerl->PL_piSock->Accept(s, addr, addrlen, ErrorNo());
891fc7f2
GS
1066}
1067
1068int _win32_connect (SOCKET s, const struct sockaddr *name, int namelen)
1069{
4c2891ed 1070 return pPerl->PL_piSock->Connect(s, name, namelen, ErrorNo());
891fc7f2
GS
1071}
1072
1073int _win32_send (SOCKET s, const char * buf, int len, int flags)
1074{
4c2891ed 1075 return pPerl->PL_piSock->Send(s, buf, len, flags, ErrorNo());
891fc7f2
GS
1076}
1077
1078int _win32_sendto (SOCKET s, const char * buf, int len, int flags,
1079 const struct sockaddr *to, int tolen)
1080{
4c2891ed 1081 return pPerl->PL_piSock->Sendto(s, buf, len, flags, to, tolen, ErrorNo());
891fc7f2
GS
1082}
1083
1084int _win32_recv (SOCKET s, char * buf, int len, int flags)
1085{
4c2891ed 1086 return pPerl->PL_piSock->Recv(s, buf, len, flags, ErrorNo());
891fc7f2
GS
1087}
1088
1089int _win32_recvfrom (SOCKET s, char * buf, int len, int flags,
1090 struct sockaddr *from, int * fromlen)
1091{
4c2891ed 1092 return pPerl->PL_piSock->Recvfrom(s, buf, len, flags, from, fromlen, ErrorNo());
891fc7f2
GS
1093}
1094
1095int _win32_shutdown (SOCKET s, int how)
1096{
4c2891ed 1097 return pPerl->PL_piSock->Shutdown(s, how, ErrorNo());
891fc7f2
GS
1098}
1099
1100int _win32_closesocket (SOCKET s)
1101{
4c2891ed 1102 return pPerl->PL_piSock->Closesocket(s, ErrorNo());
891fc7f2
GS
1103}
1104
1105int _win32_ioctlsocket (SOCKET s, long cmd, u_long *argp)
1106{
4c2891ed 1107 return pPerl->PL_piSock->Ioctlsocket(s, cmd, argp, ErrorNo());
891fc7f2
GS
1108}
1109
1110int _win32_setsockopt (SOCKET s, int level, int optname,
1111 const char * optval, int optlen)
1112{
4c2891ed 1113 return pPerl->PL_piSock->Setsockopt(s, level, optname, optval, optlen, ErrorNo());
891fc7f2
GS
1114}
1115
1116int _win32_getsockopt (SOCKET s, int level, int optname, char * optval, int *optlen)
1117{
4c2891ed 1118 return pPerl->PL_piSock->Getsockopt(s, level, optname, optval, optlen, ErrorNo());
891fc7f2
GS
1119}
1120
1121int _win32_getpeername (SOCKET s, struct sockaddr *name, int * namelen)
1122{
4c2891ed 1123 return pPerl->PL_piSock->Getpeername(s, name, namelen, ErrorNo());
891fc7f2
GS
1124}
1125
1126int _win32_getsockname (SOCKET s, struct sockaddr *name, int * namelen)
1127{
4c2891ed 1128 return pPerl->PL_piSock->Getsockname(s, name, namelen, ErrorNo());
891fc7f2
GS
1129}
1130
1131int _win32_gethostname (char * name, int namelen)
1132{
4c2891ed 1133 return pPerl->PL_piSock->Gethostname(name, namelen, ErrorNo());
891fc7f2
GS
1134}
1135
1136struct hostent * _win32_gethostbyname(const char * name)
1137{
4c2891ed 1138 return pPerl->PL_piSock->Gethostbyname(name, ErrorNo());
891fc7f2
GS
1139}
1140
1141struct hostent * _win32_gethostbyaddr(const char * addr, int len, int type)
1142{
4c2891ed 1143 return pPerl->PL_piSock->Gethostbyaddr(addr, len, type, ErrorNo());
891fc7f2
GS
1144}
1145
1146struct protoent * _win32_getprotobyname(const char * name)
1147{
4c2891ed 1148 return pPerl->PL_piSock->Getprotobyname(name, ErrorNo());
891fc7f2
GS
1149}
1150
1151struct protoent * _win32_getprotobynumber(int proto)
1152{
4c2891ed 1153 return pPerl->PL_piSock->Getprotobynumber(proto, ErrorNo());
891fc7f2
GS
1154}
1155
1156struct servent * _win32_getservbyname(const char * name, const char * proto)
1157{
4c2891ed 1158 return pPerl->PL_piSock->Getservbyname(name, proto, ErrorNo());
891fc7f2
GS
1159}
1160
1161struct servent * _win32_getservbyport(int port, const char * proto)
1162{
4c2891ed 1163 return pPerl->PL_piSock->Getservbyport(port, proto, ErrorNo());
891fc7f2
GS
1164}
1165
1166int _win32_select (int nfds, Perl_fd_set *rfds, Perl_fd_set *wfds, Perl_fd_set *xfds,
1167 const struct timeval *timeout)
1168{
4c2891ed 1169 return pPerl->PL_piSock->Select(nfds, (char*)rfds, (char*)wfds, (char*)xfds, timeout, ErrorNo());
891fc7f2
GS
1170}
1171
1172void _win32_endnetent(void)
1173{
4c2891ed 1174 pPerl->PL_piSock->Endnetent(ErrorNo());
891fc7f2
GS
1175}
1176
1177void _win32_endhostent(void)
1178{
4c2891ed 1179 pPerl->PL_piSock->Endhostent(ErrorNo());
891fc7f2
GS
1180}
1181
1182void _win32_endprotoent(void)
1183{
4c2891ed 1184 pPerl->PL_piSock->Endprotoent(ErrorNo());
891fc7f2
GS
1185}
1186
1187void _win32_endservent(void)
1188{
4c2891ed 1189 pPerl->PL_piSock->Endservent(ErrorNo());
891fc7f2
GS
1190}
1191
1192struct netent * _win32_getnetent(void)
1193{
4c2891ed 1194 return pPerl->PL_piSock->Getnetent(ErrorNo());
891fc7f2
GS
1195}
1196
1197struct netent * _win32_getnetbyname(char *name)
1198{
4c2891ed 1199 return pPerl->PL_piSock->Getnetbyname(name, ErrorNo());
891fc7f2
GS
1200}
1201
1202struct netent * _win32_getnetbyaddr(long net, int type)
1203{
4c2891ed 1204 return pPerl->PL_piSock->Getnetbyaddr(net, type, ErrorNo());
891fc7f2
GS
1205}
1206
1207struct protoent *_win32_getprotoent(void)
1208{
4c2891ed 1209 return pPerl->PL_piSock->Getprotoent(ErrorNo());
891fc7f2
GS
1210}
1211
1212struct servent *_win32_getservent(void)
1213{
4c2891ed 1214 return pPerl->PL_piSock->Getservent(ErrorNo());
891fc7f2
GS
1215}
1216
1217void _win32_sethostent(int stayopen)
1218{
4c2891ed 1219 pPerl->PL_piSock->Sethostent(stayopen, ErrorNo());
891fc7f2
GS
1220}
1221
1222void _win32_setnetent(int stayopen)
1223{
4c2891ed 1224 pPerl->PL_piSock->Setnetent(stayopen, ErrorNo());
891fc7f2
GS
1225}
1226
1227void _win32_setprotoent(int stayopen)
1228{
4c2891ed 1229 pPerl->PL_piSock->Setprotoent(stayopen, ErrorNo());
891fc7f2
GS
1230}
1231
1232void _win32_setservent(int stayopen)
1233{
4c2891ed 1234 pPerl->PL_piSock->Setservent(stayopen, ErrorNo());
891fc7f2 1235}
e3b8966e
GS
1236} /* extern "C" */
1237EOCODE
1238
1239
1240print HDRFILE <<EOCODE;
9e6b2b00
GS
1241#undef Perl_op_desc
1242char ** _Perl_op_desc ();
1243#define Perl_op_desc (_Perl_op_desc())
1244
1245#undef Perl_op_name
1246char ** _Perl_op_name ();
1247#define Perl_op_name (_Perl_op_name())
1248
1249#undef Perl_no_modify
58a50f62 1250char * _Perl_no_modify ();
9e6b2b00
GS
1251#define Perl_no_modify (_Perl_no_modify())
1252
1253#undef Perl_opargs
58a50f62 1254U32 * _Perl_opargs ();
9e6b2b00
GS
1255#define Perl_opargs (_Perl_opargs())
1256
1257
e3b8966e
GS
1258#undef win32_errno
1259#undef win32_stdin
1260#undef win32_stdout
1261#undef win32_stderr
1262#undef win32_ferror
1263#undef win32_feof
1264#undef win32_fprintf
1265#undef win32_printf
1266#undef win32_vfprintf
1267#undef win32_vprintf
1268#undef win32_fread
1269#undef win32_fwrite
1270#undef win32_fopen
1271#undef win32_fdopen
1272#undef win32_freopen
1273#undef win32_fclose
1274#undef win32_fputs
1275#undef win32_fputc
1276#undef win32_ungetc
1277#undef win32_getc
1278#undef win32_fileno
1279#undef win32_clearerr
1280#undef win32_fflush
1281#undef win32_ftell
1282#undef win32_fseek
1283#undef win32_fgetpos
1284#undef win32_fsetpos
1285#undef win32_rewind
1286#undef win32_tmpfile
1287#undef win32_abort
1288#undef win32_fstat
1289#undef win32_stat
1290#undef win32_pipe
1291#undef win32_popen
1292#undef win32_pclose
e24c7c18 1293#undef win32_rename
e3b8966e
GS
1294#undef win32_setmode
1295#undef win32_lseek
1296#undef win32_tell
1297#undef win32_dup
1298#undef win32_dup2
1299#undef win32_open
1300#undef win32_close
1301#undef win32_eof
1302#undef win32_read
1303#undef win32_write
1304#undef win32_mkdir
1305#undef win32_rmdir
1306#undef win32_chdir
1307#undef win32_setbuf
1308#undef win32_setvbuf
1309#undef win32_fgetc
9e6b2b00
GS
1310#undef win32_fgets
1311#undef win32_gets
e3b8966e
GS
1312#undef win32_putc
1313#undef win32_puts
1314#undef win32_getchar
1315#undef win32_putchar
1316#undef win32_malloc
1317#undef win32_calloc
1318#undef win32_realloc
1319#undef win32_free
1320#undef win32_sleep
1321#undef win32_times
1322#undef win32_stat
1323#undef win32_ioctl
1324#undef win32_utime
1325#undef win32_getenv
1326
891fc7f2
GS
1327#undef win32_htonl
1328#undef win32_htons
1329#undef win32_ntohl
1330#undef win32_ntohs
1331#undef win32_inet_addr
1332#undef win32_inet_ntoa
1333
1334#undef win32_socket
1335#undef win32_bind
1336#undef win32_listen
1337#undef win32_accept
1338#undef win32_connect
1339#undef win32_send
1340#undef win32_sendto
1341#undef win32_recv
1342#undef win32_recvfrom
1343#undef win32_shutdown
1344#undef win32_closesocket
1345#undef win32_ioctlsocket
1346#undef win32_setsockopt
1347#undef win32_getsockopt
1348#undef win32_getpeername
1349#undef win32_getsockname
1350#undef win32_gethostname
1351#undef win32_gethostbyname
1352#undef win32_gethostbyaddr
1353#undef win32_getprotobyname
1354#undef win32_getprotobynumber
1355#undef win32_getservbyname
1356#undef win32_getservbyport
1357#undef win32_select
1358#undef win32_endhostent
1359#undef win32_endnetent
1360#undef win32_endprotoent
1361#undef win32_endservent
1362#undef win32_getnetent
1363#undef win32_getnetbyname
1364#undef win32_getnetbyaddr
1365#undef win32_getprotoent
1366#undef win32_getservent
1367#undef win32_sethostent
1368#undef win32_setnetent
1369#undef win32_setprotoent
1370#undef win32_setservent
1371
e3b8966e
GS
1372#define win32_errno _win32_errno
1373#define win32_stdin _win32_stdin
1374#define win32_stdout _win32_stdout
1375#define win32_stderr _win32_stderr
1376#define win32_ferror _win32_ferror
1377#define win32_feof _win32_feof
1378#define win32_strerror _win32_strerror
1379#define win32_perror _win32_perror
1380#define win32_fprintf _win32_fprintf
1381#define win32_printf _win32_printf
1382#define win32_vfprintf _win32_vfprintf
1383#define win32_vprintf _win32_vprintf
1384#define win32_fread _win32_fread
1385#define win32_fwrite _win32_fwrite
1386#define win32_fopen _win32_fopen
1387#define win32_fdopen _win32_fdopen
1388#define win32_freopen _win32_freopen
1389#define win32_fclose _win32_fclose
1390#define win32_fputs _win32_fputs
1391#define win32_fputc _win32_fputc
1392#define win32_ungetc _win32_ungetc
1393#define win32_getc _win32_getc
1394#define win32_fileno _win32_fileno
1395#define win32_clearerr _win32_clearerr
1396#define win32_fflush _win32_fflush
1397#define win32_ftell _win32_ftell
1398#define win32_fseek _win32_fseek
1399#define win32_fgetpos _win32_fgetpos
1400#define win32_fsetpos _win32_fsetpos
1401#define win32_rewind _win32_rewind
1402#define win32_tmpfile _win32_tmpfile
1403#define win32_abort _win32_abort
1404#define win32_fstat _win32_fstat
1405#define win32_stat _win32_stat
1406#define win32_pipe _win32_pipe
1407#define win32_popen _win32_popen
1408#define win32_pclose _win32_pclose
e24c7c18 1409#define win32_rename _win32_rename
e3b8966e
GS
1410#define win32_setmode _win32_setmode
1411#define win32_lseek _win32_lseek
1412#define win32_tell _win32_tell
1413#define win32_dup _win32_dup
1414#define win32_dup2 _win32_dup2
1415#define win32_open _win32_open
1416#define win32_close _win32_close
1417#define win32_eof _win32_eof
1418#define win32_read _win32_read
1419#define win32_write _win32_write
1420#define win32_mkdir _win32_mkdir
1421#define win32_rmdir _win32_rmdir
1422#define win32_chdir _win32_chdir
1423#define win32_setbuf _win32_setbuf
1424#define win32_setvbuf _win32_setvbuf
1425#define win32_fgetc _win32_fgetc
9e6b2b00
GS
1426#define win32_fgets _win32_fgets
1427#define win32_gets _win32_gets
e3b8966e
GS
1428#define win32_putc _win32_putc
1429#define win32_puts _win32_puts
1430#define win32_getchar _win32_getchar
1431#define win32_putchar _win32_putchar
1432#define win32_malloc _win32_malloc
1433#define win32_calloc _win32_calloc
1434#define win32_realloc _win32_realloc
1435#define win32_free _win32_free
1436#define win32_sleep _win32_sleep
1437#define win32_spawnvp _win32_spawnvp
1438#define win32_times _win32_times
1439#define win32_stat _win32_stat
1440#define win32_ioctl _win32_ioctl
1441#define win32_utime _win32_utime
1442#define win32_getenv _win32_getenv
1443#define win32_open_osfhandle _win32_open_osfhandle
1444#define win32_get_osfhandle _win32_get_osfhandle
1445
891fc7f2
GS
1446#define win32_htonl _win32_htonl
1447#define win32_htons _win32_htons
1448#define win32_ntohl _win32_ntohl
1449#define win32_ntohs _win32_ntohs
1450#define win32_inet_addr _win32_inet_addr
1451#define win32_inet_ntoa _win32_inet_ntoa
1452
1453#define win32_socket _win32_socket
1454#define win32_bind _win32_bind
1455#define win32_listen _win32_listen
1456#define win32_accept _win32_accept
1457#define win32_connect _win32_connect
1458#define win32_send _win32_send
1459#define win32_sendto _win32_sendto
1460#define win32_recv _win32_recv
1461#define win32_recvfrom _win32_recvfrom
1462#define win32_shutdown _win32_shutdown
1463#define win32_closesocket _win32_closesocket
1464#define win32_ioctlsocket _win32_ioctlsocket
1465#define win32_setsockopt _win32_setsockopt
1466#define win32_getsockopt _win32_getsockopt
1467#define win32_getpeername _win32_getpeername
1468#define win32_getsockname _win32_getsockname
1469#define win32_gethostname _win32_gethostname
1470#define win32_gethostbyname _win32_gethostbyname
1471#define win32_gethostbyaddr _win32_gethostbyaddr
1472#define win32_getprotobyname _win32_getprotobyname
1473#define win32_getprotobynumber _win32_getprotobynumber
1474#define win32_getservbyname _win32_getservbyname
1475#define win32_getservbyport _win32_getservbyport
1476#define win32_select _win32_select
1477#define win32_endhostent _win32_endhostent
1478#define win32_endnetent _win32_endnetent
1479#define win32_endprotoent _win32_endprotoent
1480#define win32_endservent _win32_endservent
1481#define win32_getnetent _win32_getnetent
1482#define win32_getnetbyname _win32_getnetbyname
1483#define win32_getnetbyaddr _win32_getnetbyaddr
1484#define win32_getprotoent _win32_getprotoent
1485#define win32_getservent _win32_getservent
1486#define win32_sethostent _win32_sethostent
1487#define win32_setnetent _win32_setnetent
1488#define win32_setprotoent _win32_setprotoent
1489#define win32_setservent _win32_setservent
1490
e3b8966e
GS
1491int * _win32_errno(void);
1492FILE* _win32_stdin(void);
1493FILE* _win32_stdout(void);
1494FILE* _win32_stderr(void);
1495int _win32_ferror(FILE *fp);
1496int _win32_feof(FILE *fp);
1497char* _win32_strerror(int e);
1498void _win32_perror(const char *str);
1499int _win32_fprintf(FILE *pf, const char *format, ...);
1500int _win32_printf(const char *format, ...);
1501int _win32_vfprintf(FILE *pf, const char *format, va_list arg);
1502int _win32_vprintf(const char *format, va_list arg);
1503size_t _win32_fread(void *buf, size_t size, size_t count, FILE *pf);
1504size_t _win32_fwrite(const void *buf, size_t size, size_t count, FILE *pf);
1505FILE* _win32_fopen(const char *path, const char *mode);
1506FILE* _win32_fdopen(int fh, const char *mode);
1507FILE* _win32_freopen(const char *path, const char *mode, FILE *pf);
1508int _win32_fclose(FILE *pf);
1509int _win32_fputs(const char *s,FILE *pf);
1510int _win32_fputc(int c,FILE *pf);
1511int _win32_ungetc(int c,FILE *pf);
1512int _win32_getc(FILE *pf);
1513int _win32_fileno(FILE *pf);
1514void _win32_clearerr(FILE *pf);
1515int _win32_fflush(FILE *pf);
1516long _win32_ftell(FILE *pf);
1517int _win32_fseek(FILE *pf,long offset,int origin);
1518int _win32_fgetpos(FILE *pf,fpos_t *p);
1519int _win32_fsetpos(FILE *pf,const fpos_t *p);
1520void _win32_rewind(FILE *pf);
1521FILE* _win32_tmpfile(void);
1522void _win32_abort(void);
1523int _win32_fstat(int fd,struct stat *sbufptr);
1524int _win32_stat(const char *name,struct stat *sbufptr);
1525int _win32_pipe( int *phandles, unsigned int psize, int textmode );
1526FILE* _win32_popen( const char *command, const char *mode );
1527int _win32_pclose( FILE *pf);
e24c7c18 1528int _win32_rename( const char *oldname, const char *newname);
e3b8966e
GS
1529int _win32_setmode( int fd, int mode);
1530long _win32_lseek( int fd, long offset, int origin);
1531long _win32_tell( int fd);
1532int _win32_dup( int fd);
1533int _win32_dup2(int h1, int h2);
1534int _win32_open(const char *path, int oflag,...);
1535int _win32_close(int fd);
1536int _win32_eof(int fd);
1537int _win32_read(int fd, void *buf, unsigned int cnt);
1538int _win32_write(int fd, const void *buf, unsigned int cnt);
1539int _win32_mkdir(const char *dir, int mode);
1540int _win32_rmdir(const char *dir);
1541int _win32_chdir(const char *dir);
1542void _win32_setbuf(FILE *pf, char *buf);
1543int _win32_setvbuf(FILE *pf, char *buf, int type, size_t size);
1544char* _win32_fgets(char *s, int n, FILE *pf);
1545char* _win32_gets(char *s);
1546int _win32_fgetc(FILE *pf);
1547int _win32_putc(int c, FILE *pf);
1548int _win32_puts(const char *s);
1549int _win32_getchar(void);
1550int _win32_putchar(int c);
1551void* _win32_malloc(size_t size);
1552void* _win32_calloc(size_t numitems, size_t size);
1553void* _win32_realloc(void *block, size_t size);
1554void _win32_free(void *block);
1555unsigned _win32_sleep(unsigned int);
1556int _win32_spawnvp(int mode, const char *cmdname, const char *const *argv);
1557int _win32_times(struct tms *timebuf);
1558int _win32_stat(const char *path, struct stat *buf);
1559int _win32_ioctl(int i, unsigned int u, char *data);
1560int _win32_utime(const char *f, struct utimbuf *t);
1561char* _win32_getenv(const char *name);
1562int _win32_open_osfhandle(long handle, int flags);
1563long _win32_get_osfhandle(int fd);
1564
891fc7f2
GS
1565u_long _win32_htonl (u_long hostlong);
1566u_short _win32_htons (u_short hostshort);
1567u_long _win32_ntohl (u_long netlong);
1568u_short _win32_ntohs (u_short netshort);
1569unsigned long _win32_inet_addr (const char * cp);
1570char * _win32_inet_ntoa (struct in_addr in);
1571
1572SOCKET _win32_socket (int af, int type, int protocol);
1573int _win32_bind (SOCKET s, const struct sockaddr *addr, int namelen);
1574int _win32_listen (SOCKET s, int backlog);
1575SOCKET _win32_accept (SOCKET s, struct sockaddr *addr, int *addrlen);
1576int _win32_connect (SOCKET s, const struct sockaddr *name, int namelen);
1577int _win32_send (SOCKET s, const char * buf, int len, int flags);
1578int _win32_sendto (SOCKET s, const char * buf, int len, int flags,
1579 const struct sockaddr *to, int tolen);
1580int _win32_recv (SOCKET s, char * buf, int len, int flags);
1581int _win32_recvfrom (SOCKET s, char * buf, int len, int flags,
1582 struct sockaddr *from, int * fromlen);
1583int _win32_shutdown (SOCKET s, int how);
1584int _win32_closesocket (SOCKET s);
1585int _win32_ioctlsocket (SOCKET s, long cmd, u_long *argp);
1586int _win32_setsockopt (SOCKET s, int level, int optname,
1587 const char * optval, int optlen);
1588int _win32_getsockopt (SOCKET s, int level, int optname, char * optval, int *optlen);
1589int _win32_getpeername (SOCKET s, struct sockaddr *name, int * namelen);
1590int _win32_getsockname (SOCKET s, struct sockaddr *name, int * namelen);
1591int _win32_gethostname (char * name, int namelen);
1592struct hostent * _win32_gethostbyname(const char * name);
1593struct hostent * _win32_gethostbyaddr(const char * addr, int len, int type);
1594struct protoent * _win32_getprotobyname(const char * name);
1595struct protoent * _win32_getprotobynumber(int proto);
1596struct servent * _win32_getservbyname(const char * name, const char * proto);
1597struct servent * _win32_getservbyport(int port, const char * proto);
1598int _win32_select (int nfds, Perl_fd_set *rfds, Perl_fd_set *wfds, Perl_fd_set *xfds,
1599 const struct timeval *timeout);
1600void _win32_endnetent(void);
1601void _win32_endhostent(void);
1602void _win32_endprotoent(void);
1603void _win32_endservent(void);
1604struct netent * _win32_getnetent(void);
1605struct netent * _win32_getnetbyname(char *name);
1606struct netent * _win32_getnetbyaddr(long net, int type);
1607struct protoent *_win32_getprotoent(void);
1608struct servent *_win32_getservent(void);
1609void _win32_sethostent(int stayopen);
1610void _win32_setnetent(int stayopen);
1611void _win32_setprotoent(int stayopen);
1612void _win32_setservent(int stayopen);
1613
e3b8966e
GS
1614#pragma warning(once : 4113)
1615EOCODE
1616
1617
1618close HDRFILE;
1619close OUTFILE;