This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Give FindBin its own Maintainers.pl entry
[perl5.git] / XSUB.h
CommitLineData
eb1102fc
NIS
1/* XSUB.h
2 *
699a97de 3 * Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
1129b882 4 * 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others
eb1102fc
NIS
5 *
6 * You may distribute under the terms of either the GNU General Public
7 * License or the Artistic License, as specified in the README file.
8 *
9 */
10
b4ba0ab9
GS
11#ifndef _INC_PERL_XSUB_H
12#define _INC_PERL_XSUB_H 1
13
954c1994
GS
14/* first, some documentation for xsubpp-generated items */
15
16/*
ccfc67b7
JH
17=head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
18
954c1994
GS
19=for apidoc Amn|char*|CLASS
20Variable which is setup by C<xsubpp> to indicate the
21class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
22
23=for apidoc Amn|(whatever)|RETVAL
24Variable which is setup by C<xsubpp> to hold the return value for an
25XSUB. This is always the proper type for the XSUB. See
26L<perlxs/"The RETVAL Variable">.
27
28=for apidoc Amn|(whatever)|THIS
29Variable which is setup by C<xsubpp> to designate the object in a C++
30XSUB. This is always the proper type for the C++ object. See C<CLASS> and
31L<perlxs/"Using XS With C++">.
32
9f2ea798
DM
33=for apidoc Amn|I32|ax
34Variable which is setup by C<xsubpp> to indicate the stack base offset,
35used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
36must be called prior to setup the C<MARK> variable.
37
954c1994
GS
38=for apidoc Amn|I32|items
39Variable which is setup by C<xsubpp> to indicate the number of
40items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
41
42=for apidoc Amn|I32|ix
43Variable which is setup by C<xsubpp> to indicate which of an
44XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
45
46=for apidoc Am|SV*|ST|int ix
47Used to access elements on the XSUB's stack.
48
49=for apidoc AmU||XS
50Macro to declare an XSUB and its C parameter list. This is handled by
51C<xsubpp>.
52
9f2ea798
DM
53=for apidoc Ams||dAX
54Sets up the C<ax> variable.
55This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
56
557b887a
SS
57=for apidoc Ams||dAXMARK
58Sets up the C<ax> variable and stack marker variable C<mark>.
59This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
60
9f2ea798
DM
61=for apidoc Ams||dITEMS
62Sets up the C<items> variable.
63This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
64
954c1994 65=for apidoc Ams||dXSARGS
9f2ea798
DM
66Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.
67Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
68This is usually handled automatically by C<xsubpp>.
954c1994
GS
69
70=for apidoc Ams||dXSI32
71Sets up the C<ix> variable for an XSUB which has aliases. This is usually
72handled automatically by C<xsubpp>.
73
88037a85 74=for apidoc Ams||dUNDERBAR
483ce06a 75Sets up any variable needed by the C<UNDERBAR> macro. It used to define
486ec47a 76C<padoff_du>, but it is currently a noop. However, it is strongly advised
483ce06a 77to still use it for ensuring past and future compatibility.
88037a85
RGS
78
79=for apidoc AmU||UNDERBAR
80The SV* corresponding to the $_ variable. Works even if there
81is a lexical $_ in scope.
82
954c1994
GS
83=cut
84*/
85
53c1dcc0 86#ifndef PERL_UNUSED_ARG
c99ffe5e 87# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
ad73156c 88# include <note.h>
53c1dcc0 89# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
ad73156c 90# else
53c1dcc0 91# define PERL_UNUSED_ARG(x) ((void)x)
ad73156c
AL
92# endif
93#endif
53c1dcc0
AL
94#ifndef PERL_UNUSED_VAR
95# define PERL_UNUSED_VAR(x) ((void)x)
96#endif
ad73156c 97
3280af22 98#define ST(off) PL_stack_base[ax + (off)]
a0d0e21e 99
081304ca
AMS
100/* XSPROTO() is also used by SWIG like this:
101 *
102 * typedef XSPROTO(SwigPerlWrapper);
103 * typedef SwigPerlWrapper *SwigPerlWrapperPtr;
104 *
105 * This code needs to be compilable under both C and C++.
106 *
107 * Don't forget to change the __attribute__unused__ version of XS()
108 * below too if you change XSPROTO() here.
109 */
110#define XSPROTO(name) void name(pTHX_ CV* cv)
111
27da23d5 112#undef XS
d308986b 113#if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
081304ca 114# define XS(name) __declspec(dllexport) XSPROTO(name)
27da23d5 115#endif
a0fd4948 116#if defined(__SYMBIAN32__)
081304ca 117# define XS(name) EXPORT_C XSPROTO(name)
27da23d5
JH
118#endif
119#ifndef XS
34659ad4 120# if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
0dbb1585 121# define XS(name) void name(pTHX_ CV* cv __attribute__unused__)
88d01955 122# else
a0c21aa1 123# ifdef __cplusplus
081304ca 124# define XS(name) extern "C" XSPROTO(name)
a0c21aa1 125# else
081304ca 126# define XS(name) XSPROTO(name)
a0c21aa1 127# endif
88d01955 128# endif
a0d0e21e
LW
129#endif
130
514696af 131#define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)
9f2ea798 132
557b887a 133#define dAXMARK \
a3b680e6 134 I32 ax = POPMARK; \
92800dc8 135 register SV **mark = PL_stack_base + ax++
557b887a 136
514696af 137#define dITEMS I32 items = (I32)(SP - MARK)
9f2ea798 138
c99ffe5e 139#if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
53c1dcc0
AL
140# define dXSARGS \
141 NOTE(ARGUNUSED(cv)) \
142 dSP; dAXMARK; dITEMS
143#else
144# define dXSARGS \
557b887a 145 dSP; dAXMARK; dITEMS
53c1dcc0 146#endif
a0d0e21e 147
a3b680e6 148#define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
8a7fc0dc
GS
149 ? PAD_SV(PL_op->op_targ) : sv_newmortal())
150
b26a54d0
GS
151/* Should be used before final PUSHi etc. if not in PPCODE section. */
152#define XSprePUSH (sp = PL_stack_base + ax - 1)
153
a0d0e21e
LW
154#define XSANY CvXSUBANY(cv)
155
156#define dXSI32 I32 ix = XSANY.any_i32
157
cfc02341
IZ
158#ifdef __cplusplus
159# define XSINTERFACE_CVT(ret,name) ret (*name)(...)
4ef0c66e 160# define XSINTERFACE_CVT_ANON(ret) ret (*)(...)
cfc02341
IZ
161#else
162# define XSINTERFACE_CVT(ret,name) ret (*name)()
4ef0c66e 163# define XSINTERFACE_CVT_ANON(ret) ret (*)()
cfc02341
IZ
164#endif
165#define dXSFUNCTION(ret) XSINTERFACE_CVT(ret,XSFUNCTION)
4ef0c66e 166#define XSINTERFACE_FUNC(ret,cv,f) ((XSINTERFACE_CVT_ANON(ret))(f))
cfc02341 167#define XSINTERFACE_FUNC_SET(cv,f) \
a12c3db7 168 CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f)
cfc02341 169
483ce06a
VP
170#define dUNDERBAR dNOOP
171#define UNDERBAR find_rundefsv()
88037a85 172
748a9306
LW
173/* Simple macros to put new mortal values onto the stack. */
174/* Typically used to return values from XS functions. */
954c1994
GS
175
176/*
ccfc67b7
JH
177=head1 Stack Manipulation Macros
178
954c1994
GS
179=for apidoc Am|void|XST_mIV|int pos|IV iv
180Place an integer into the specified position C<pos> on the stack. The
181value is stored in a new mortal SV.
182
183=for apidoc Am|void|XST_mNV|int pos|NV nv
184Place a double into the specified position C<pos> on the stack. The value
185is stored in a new mortal SV.
186
187=for apidoc Am|void|XST_mPV|int pos|char* str
188Place a copy of a string into the specified position C<pos> on the stack.
189The value is stored in a new mortal SV.
190
191=for apidoc Am|void|XST_mNO|int pos
192Place C<&PL_sv_no> into the specified position C<pos> on the
193stack.
194
195=for apidoc Am|void|XST_mYES|int pos
196Place C<&PL_sv_yes> into the specified position C<pos> on the
197stack.
198
199=for apidoc Am|void|XST_mUNDEF|int pos
200Place C<&PL_sv_undef> into the specified position C<pos> on the
201stack.
202
203=for apidoc Am|void|XSRETURN|int nitems
204Return from XSUB, indicating number of items on the stack. This is usually
205handled by C<xsubpp>.
206
207=for apidoc Am|void|XSRETURN_IV|IV iv
208Return an integer from an XSUB immediately. Uses C<XST_mIV>.
209
108ccc45
JH
210=for apidoc Am|void|XSRETURN_UV|IV uv
211Return an integer from an XSUB immediately. Uses C<XST_mUV>.
212
954c1994 213=for apidoc Am|void|XSRETURN_NV|NV nv
d1be9408 214Return a double from an XSUB immediately. Uses C<XST_mNV>.
954c1994
GS
215
216=for apidoc Am|void|XSRETURN_PV|char* str
217Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
218
219=for apidoc Ams||XSRETURN_NO
220Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
221
222=for apidoc Ams||XSRETURN_YES
223Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
224
225=for apidoc Ams||XSRETURN_UNDEF
226Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
227
228=for apidoc Ams||XSRETURN_EMPTY
229Return an empty list from an XSUB immediately.
230
ccfc67b7
JH
231=head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
232
c578083c 233=for apidoc AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto
954c1994
GS
234Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
235the subs.
236
237=for apidoc AmU||XS_VERSION
238The version identifier for an XS module. This is usually
239handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
240
241=for apidoc Ams||XS_VERSION_BOOTCHECK
242Macro to verify that a PM module's $VERSION variable matches the XS
243module's C<XS_VERSION> variable. This is usually handled automatically by
244C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
245
1e8125c6
FR
246=for apidoc Ams||XS_APIVERSION_BOOTCHECK
247Macro to verify that the perl api version an XS module has been compiled against
248matches the api version of the perl interpreter it's being loaded into.
249
0ca3a874
MHM
250=head1 Simple Exception Handling Macros
251
252=for apidoc Ams||dXCPT
2dfe1b17 253Set up necessary local variables for exception handling.
0ca3a874
MHM
254See L<perlguts/"Exception Handling">.
255
256=for apidoc AmU||XCPT_TRY_START
257Starts a try block. See L<perlguts/"Exception Handling">.
258
259=for apidoc AmU||XCPT_TRY_END
260Ends a try block. See L<perlguts/"Exception Handling">.
261
262=for apidoc AmU||XCPT_CATCH
263Introduces a catch block. See L<perlguts/"Exception Handling">.
264
265=for apidoc Ams||XCPT_RETHROW
266Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
267
954c1994
GS
268=cut
269*/
270
4633a7c4 271#define XST_mIV(i,v) (ST(i) = sv_2mortal(newSViv(v)) )
108ccc45 272#define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) )
4633a7c4
LW
273#define XST_mNV(i,v) (ST(i) = sv_2mortal(newSVnv(v)) )
274#define XST_mPV(i,v) (ST(i) = sv_2mortal(newSVpv(v,0)))
ad25789c 275#define XST_mPVN(i,v,n) (ST(i) = newSVpvn_flags(v,n, SVs_TEMP))
3280af22
NIS
276#define XST_mNO(i) (ST(i) = &PL_sv_no )
277#define XST_mYES(i) (ST(i) = &PL_sv_yes )
278#define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
954c1994
GS
279
280#define XSRETURN(off) \
281 STMT_START { \
61f9802b 282 const IV tmpXSoff = (off); \
a02b2239 283 PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); \
954c1994
GS
284 return; \
285 } STMT_END
286
80b92232 287#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END
108ccc45 288#define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END
80b92232 289#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END
290#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END
954c1994 291#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END
80b92232 292#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END
293#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END
294#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
295#define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END
382b8d97 296
77004dee 297#define newXSproto(a,b,c,d) newXS_flags(a,b,c,d,0)
720fb644 298
299#ifdef XS_VERSION
ddb5125f 300# define XS_VERSION_BOOTCHECK \
e9b067d9 301 Perl_xs_version_bootcheck(aTHX_ items, ax, STR_WITH_LEN(XS_VERSION))
720fb644 302#else
c6af7a1a 303# define XS_VERSION_BOOTCHECK
720fb644 304#endif
76e3520e 305
1e8125c6 306#define XS_APIVERSION_BOOTCHECK \
379a8907 307 Perl_xs_apiversion_bootcheck(aTHX_ ST(0), STR_WITH_LEN("v" PERL_API_VERSION_STRING))
1e8125c6 308
9b5c3821
MHM
309#ifdef NO_XSLOCKS
310# define dXCPT dJMPENV; int rEtV = 0
311# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
312# define XCPT_TRY_END JMPENV_POP;
313# define XCPT_CATCH if (rEtV != 0)
314# define XCPT_RETHROW JMPENV_JUMP(rEtV)
315#endif
0ca3a874 316
1e8125c6
FR
317/*
318 The DBM_setFilter & DBM_ckFilter macros are only used by
319 the *DB*_File modules
6a31061a
PM
320*/
321
322#define DBM_setFilter(db_type,code) \
891c2e08 323 STMT_START { \
6a31061a
PM
324 if (db_type) \
325 RETVAL = sv_mortalcopy(db_type) ; \
326 ST(0) = RETVAL ; \
327 if (db_type && (code == &PL_sv_undef)) { \
328 SvREFCNT_dec(db_type) ; \
329 db_type = NULL ; \
330 } \
331 else if (code) { \
332 if (db_type) \
333 sv_setsv(db_type, code) ; \
334 else \
335 db_type = newSVsv(code) ; \
336 } \
891c2e08 337 } STMT_END
6a31061a
PM
338
339#define DBM_ckFilter(arg,type,name) \
891c2e08 340 STMT_START { \
6a31061a
PM
341 if (db->type) { \
342 if (db->filtering) { \
343 croak("recursion detected in %s", name) ; \
344 } \
345 ENTER ; \
346 SAVETMPS ; \
347 SAVEINT(db->filtering) ; \
348 db->filtering = TRUE ; \
414bf5ae 349 SAVE_DEFSV ; \
5bbd4290
PM
350 if (name[7] == 's') \
351 arg = newSVsv(arg); \
414bf5ae 352 DEFSV_set(arg) ; \
6a31061a
PM
353 SvTEMP_off(arg) ; \
354 PUSHMARK(SP) ; \
355 PUTBACK ; \
356 (void) perl_call_sv(db->type, G_DISCARD); \
357 SPAGAIN ; \
358 PUTBACK ; \
359 FREETMPS ; \
360 LEAVE ; \
5bbd4290
PM
361 if (name[7] == 's'){ \
362 arg = sv_2mortal(arg); \
363 } \
891c2e08 364 } } STMT_END
6a31061a 365
51371543 366#if 1 /* for compatibility */
dc9e4912
GS
367# define VTBL_sv &PL_vtbl_sv
368# define VTBL_env &PL_vtbl_env
369# define VTBL_envelem &PL_vtbl_envelem
370# define VTBL_sig &PL_vtbl_sig
371# define VTBL_sigelem &PL_vtbl_sigelem
372# define VTBL_pack &PL_vtbl_pack
373# define VTBL_packelem &PL_vtbl_packelem
374# define VTBL_dbline &PL_vtbl_dbline
375# define VTBL_isa &PL_vtbl_isa
376# define VTBL_isaelem &PL_vtbl_isaelem
377# define VTBL_arylen &PL_vtbl_arylen
c696a6a4 378# define VTBL_glob &PL_vtbl_glob
dc9e4912
GS
379# define VTBL_mglob &PL_vtbl_mglob
380# define VTBL_nkeys &PL_vtbl_nkeys
381# define VTBL_taint &PL_vtbl_taint
382# define VTBL_substr &PL_vtbl_substr
383# define VTBL_vec &PL_vtbl_vec
384# define VTBL_pos &PL_vtbl_pos
385# define VTBL_bm &PL_vtbl_bm
386# define VTBL_fm &PL_vtbl_fm
387# define VTBL_uvar &PL_vtbl_uvar
388# define VTBL_defelem &PL_vtbl_defelem
389# define VTBL_regexp &PL_vtbl_regexp
390# define VTBL_regdata &PL_vtbl_regdata
391# define VTBL_regdatum &PL_vtbl_regdatum
392# ifdef USE_LOCALE_COLLATE
393# define VTBL_collxfrm &PL_vtbl_collxfrm
394# endif
9e7bc3e8
JD
395# define VTBL_amagic &PL_vtbl_amagic
396# define VTBL_amagicelem &PL_vtbl_amagicelem
dc9e4912
GS
397#endif
398
6f4183fe 399#include "perlapi.h"
c6af7a1a 400
e8ee3774 401#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
c5be433b
GS
402# undef aTHX
403# undef aTHX_
54aff467
GS
404# define aTHX PERL_GET_THX
405# define aTHX_ aTHX,
54aff467
GS
406#endif
407
acfe0abc 408#if defined(PERL_IMPLICIT_SYS) && !defined(PERL_CORE)
c6af7a1a 409# ifndef NO_XSLOCKS
2986a63f
JH
410# if defined (NETWARE) && defined (USE_STDIO)
411# define times PerlProc_times
412# define setuid PerlProc_setuid
413# define setgid PerlProc_setgid
414# define getpid PerlProc_getpid
415# define pause PerlProc_pause
416# define exit PerlProc_exit
417# define _exit PerlProc__exit
418# else
c6af7a1a
GS
419# undef closedir
420# undef opendir
421# undef stdin
422# undef stdout
423# undef stderr
424# undef feof
425# undef ferror
426# undef fgetpos
427# undef ioctl
428# undef getlogin
429# undef setjmp
430# undef getc
431# undef ungetc
432# undef fileno
433
cb69f87a 434/* Following symbols were giving redefinition errors while building extensions - sgp 17th Oct 2000 */
2986a63f
JH
435#ifdef NETWARE
436# undef readdir
437# undef fstat
438# undef stat
439# undef longjmp
440# undef endhostent
441# undef endnetent
442# undef endprotoent
443# undef endservent
444# undef gethostbyaddr
445# undef gethostbyname
446# undef gethostent
447# undef getnetbyaddr
448# undef getnetbyname
449# undef getnetent
450# undef getprotobyname
451# undef getprotobynumber
452# undef getprotoent
453# undef getservbyname
454# undef getservbyport
455# undef getservent
456# undef inet_ntoa
457# undef sethostent
458# undef setnetent
459# undef setprotoent
460# undef setservent
461#endif /* NETWARE */
462
fa58a56f
S
463/* to avoid warnings: "xyz" redefined */
464#ifdef WIN32
465# undef popen
466# undef pclose
467#endif /* WIN32 */
468
1018e26f
NIS
469# undef socketpair
470
c6af7a1a
GS
471# define mkdir PerlDir_mkdir
472# define chdir PerlDir_chdir
473# define rmdir PerlDir_rmdir
474# define closedir PerlDir_close
475# define opendir PerlDir_open
476# define readdir PerlDir_read
477# define rewinddir PerlDir_rewind
478# define seekdir PerlDir_seek
479# define telldir PerlDir_tell
480# define putenv PerlEnv_putenv
481# define getenv PerlEnv_getenv
b2af26b1 482# define uname PerlEnv_uname
197357d0
GS
483# define stdin PerlSIO_stdin
484# define stdout PerlSIO_stdout
485# define stderr PerlSIO_stderr
f9415d23
NIS
486# define fopen PerlSIO_fopen
487# define fclose PerlSIO_fclose
488# define feof PerlSIO_feof
489# define ferror PerlSIO_ferror
b6d726d6 490# define clearerr PerlSIO_clearerr
f9415d23 491# define getc PerlSIO_getc
20c8f8f9 492# define fgets PerlSIO_fgets
f9415d23
NIS
493# define fputc PerlSIO_fputc
494# define fputs PerlSIO_fputs
495# define fflush PerlSIO_fflush
496# define ungetc PerlSIO_ungetc
497# define fileno PerlSIO_fileno
498# define fdopen PerlSIO_fdopen
499# define freopen PerlSIO_freopen
500# define fread PerlSIO_fread
501# define fwrite PerlSIO_fwrite
22a46b6e
NIS
502# define setbuf PerlSIO_setbuf
503# define setvbuf PerlSIO_setvbuf
504# define setlinebuf PerlSIO_setlinebuf
1f59ddd9
GS
505# define stdoutf PerlSIO_stdoutf
506# define vfprintf PerlSIO_vprintf
f9415d23
NIS
507# define ftell PerlSIO_ftell
508# define fseek PerlSIO_fseek
509# define fgetpos PerlSIO_fgetpos
510# define fsetpos PerlSIO_fsetpos
511# define frewind PerlSIO_rewind
512# define tmpfile PerlSIO_tmpfile
c6af7a1a
GS
513# define access PerlLIO_access
514# define chmod PerlLIO_chmod
515# define chsize PerlLIO_chsize
516# define close PerlLIO_close
517# define dup PerlLIO_dup
518# define dup2 PerlLIO_dup2
519# define flock PerlLIO_flock
520# define fstat PerlLIO_fstat
521# define ioctl PerlLIO_ioctl
522# define isatty PerlLIO_isatty
6b980173 523# define link PerlLIO_link
c6af7a1a
GS
524# define lseek PerlLIO_lseek
525# define lstat PerlLIO_lstat
526# define mktemp PerlLIO_mktemp
527# define open PerlLIO_open
528# define read PerlLIO_read
529# define rename PerlLIO_rename
530# define setmode PerlLIO_setmode
4f49e16e 531# define stat(buf,sb) PerlLIO_stat(buf,sb)
c6af7a1a
GS
532# define tmpnam PerlLIO_tmpnam
533# define umask PerlLIO_umask
534# define unlink PerlLIO_unlink
535# define utime PerlLIO_utime
536# define write PerlLIO_write
537# define malloc PerlMem_malloc
538# define realloc PerlMem_realloc
539# define free PerlMem_free
540# define abort PerlProc_abort
541# define exit PerlProc_exit
542# define _exit PerlProc__exit
543# define execl PerlProc_execl
544# define execv PerlProc_execv
545# define execvp PerlProc_execvp
546# define getuid PerlProc_getuid
547# define geteuid PerlProc_geteuid
548# define getgid PerlProc_getgid
549# define getegid PerlProc_getegid
550# define getlogin PerlProc_getlogin
551# define kill PerlProc_kill
552# define killpg PerlProc_killpg
553# define pause PerlProc_pause
554# define popen PerlProc_popen
555# define pclose PerlProc_pclose
556# define pipe PerlProc_pipe
557# define setuid PerlProc_setuid
558# define setgid PerlProc_setgid
559# define sleep PerlProc_sleep
560# define times PerlProc_times
561# define wait PerlProc_wait
562# define setjmp PerlProc_setjmp
563# define longjmp PerlProc_longjmp
564# define signal PerlProc_signal
7766f137 565# define getpid PerlProc_getpid
57ab3dfe 566# define gettimeofday PerlProc_gettimeofday
c6af7a1a
GS
567# define htonl PerlSock_htonl
568# define htons PerlSock_htons
569# define ntohl PerlSock_ntohl
570# define ntohs PerlSock_ntohs
571# define accept PerlSock_accept
572# define bind PerlSock_bind
573# define connect PerlSock_connect
574# define endhostent PerlSock_endhostent
575# define endnetent PerlSock_endnetent
576# define endprotoent PerlSock_endprotoent
577# define endservent PerlSock_endservent
578# define gethostbyaddr PerlSock_gethostbyaddr
579# define gethostbyname PerlSock_gethostbyname
580# define gethostent PerlSock_gethostent
581# define gethostname PerlSock_gethostname
582# define getnetbyaddr PerlSock_getnetbyaddr
583# define getnetbyname PerlSock_getnetbyname
584# define getnetent PerlSock_getnetent
585# define getpeername PerlSock_getpeername
586# define getprotobyname PerlSock_getprotobyname
587# define getprotobynumber PerlSock_getprotobynumber
588# define getprotoent PerlSock_getprotoent
589# define getservbyname PerlSock_getservbyname
590# define getservbyport PerlSock_getservbyport
591# define getservent PerlSock_getservent
592# define getsockname PerlSock_getsockname
593# define getsockopt PerlSock_getsockopt
594# define inet_addr PerlSock_inet_addr
595# define inet_ntoa PerlSock_inet_ntoa
596# define listen PerlSock_listen
597# define recv PerlSock_recv
598# define recvfrom PerlSock_recvfrom
599# define select PerlSock_select
600# define send PerlSock_send
601# define sendto PerlSock_sendto
602# define sethostent PerlSock_sethostent
603# define setnetent PerlSock_setnetent
604# define setprotoent PerlSock_setprotoent
605# define setservent PerlSock_setservent
606# define setsockopt PerlSock_setsockopt
607# define shutdown PerlSock_shutdown
608# define socket PerlSock_socket
609# define socketpair PerlSock_socketpair
2986a63f 610# endif /* NETWARE && USE_STDIO */
21c5e947
JH
611
612# ifdef USE_SOCKETS_AS_HANDLES
613# undef fd_set
614# undef FD_SET
615# undef FD_CLR
616# undef FD_ISSET
617# undef FD_ZERO
618# define fd_set Perl_fd_set
619# define FD_SET(n,p) PERL_FD_SET(n,p)
620# define FD_CLR(n,p) PERL_FD_CLR(n,p)
621# define FD_ISSET(n,p) PERL_FD_ISSET(n,p)
622# define FD_ZERO(p) PERL_FD_ZERO(p)
623# endif /* USE_SOCKETS_AS_HANDLES */
624
c6af7a1a 625# endif /* NO_XSLOCKS */
acfe0abc 626#endif /* PERL_IMPLICIT_SYS && !PERL_CORE */
b4ba0ab9 627
cfeeb022 628#endif /* _INC_PERL_XSUB_H */ /* include guard */
ad73156c
AL
629
630/*
631 * Local variables:
632 * c-indentation-style: bsd
633 * c-basic-offset: 4
634 * indent-tabs-mode: t
635 * End:
636 *
637 * ex: set ts=8 sts=4 sw=4 noet:
638 */