| 1 |
root |
1.1 |
/* |
| 2 |
|
|
* iperlsys.h - Perl's interface to the system |
| 3 |
|
|
* |
| 4 |
|
|
* This file defines the system level functionality that perl needs. |
| 5 |
|
|
* |
| 6 |
|
|
* When using C, this definition is in the form of a set of macros |
| 7 |
|
|
* that can be #defined to the system-level function (or a wrapper |
| 8 |
|
|
* provided elsewhere). |
| 9 |
|
|
* |
| 10 |
|
|
* GSAR 21-JUN-98 |
| 11 |
|
|
*/ |
| 12 |
|
|
|
| 13 |
|
|
#ifndef __Inc__IPerl___ |
| 14 |
|
|
#define __Inc__IPerl___ |
| 15 |
|
|
|
| 16 |
|
|
/* |
| 17 |
|
|
* PerlXXX_YYY explained - DickH and DougL @ ActiveState.com |
| 18 |
|
|
* |
| 19 |
|
|
* XXX := functional group |
| 20 |
|
|
* YYY := stdlib/OS function name |
| 21 |
|
|
* |
| 22 |
|
|
* Continuing with the theme of PerlIO, all OS functionality was |
| 23 |
|
|
* encapsulated into one of several interfaces. |
| 24 |
|
|
* |
| 25 |
|
|
* PerlIO - stdio |
| 26 |
|
|
* PerlLIO - low level I/O |
| 27 |
|
|
* PerlMem - malloc, realloc, free |
| 28 |
|
|
* PerlDir - directory related |
| 29 |
|
|
* PerlEnv - process environment handling |
| 30 |
|
|
* PerlProc - process control |
| 31 |
|
|
* PerlSock - socket functions |
| 32 |
|
|
* |
| 33 |
|
|
* |
| 34 |
|
|
* The features of this are: |
| 35 |
|
|
* 1. All OS dependant code is in the Perl Host and not the Perl Core. |
| 36 |
|
|
* (At least this is the holy grail goal of this work) |
| 37 |
|
|
* 2. The Perl Host (see perl.h for description) can provide a new and |
| 38 |
|
|
* improved interface to OS functionality if required. |
| 39 |
|
|
* 3. Developers can easily hook into the OS calls for instrumentation |
| 40 |
|
|
* or diagnostic purposes. |
| 41 |
|
|
* |
| 42 |
|
|
* What was changed to do this: |
| 43 |
|
|
* 1. All calls to OS functions were replaced with PerlXXX_YYY |
| 44 |
|
|
* |
| 45 |
|
|
*/ |
| 46 |
|
|
|
| 47 |
|
|
/* |
| 48 |
|
|
Interface for perl stdio functions, or whatever we are Configure-d |
| 49 |
|
|
to use. |
| 50 |
|
|
*/ |
| 51 |
|
|
#include "perlio.h" |
| 52 |
|
|
|
| 53 |
|
|
#ifndef Sighandler_t |
| 54 |
|
|
typedef Signal_t (*Sighandler_t) (int); |
| 55 |
|
|
#endif |
| 56 |
|
|
|
| 57 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 58 |
|
|
|
| 59 |
|
|
/* IPerlStdIO */ |
| 60 |
|
|
struct IPerlStdIO; |
| 61 |
|
|
struct IPerlStdIOInfo; |
| 62 |
|
|
typedef FILE* (*LPStdin)(struct IPerlStdIO*); |
| 63 |
|
|
typedef FILE* (*LPStdout)(struct IPerlStdIO*); |
| 64 |
|
|
typedef FILE* (*LPStderr)(struct IPerlStdIO*); |
| 65 |
|
|
typedef FILE* (*LPOpen)(struct IPerlStdIO*, const char*, |
| 66 |
|
|
const char*); |
| 67 |
|
|
typedef int (*LPClose)(struct IPerlStdIO*, FILE*); |
| 68 |
|
|
typedef int (*LPEof)(struct IPerlStdIO*, FILE*); |
| 69 |
|
|
typedef int (*LPError)(struct IPerlStdIO*, FILE*); |
| 70 |
|
|
typedef void (*LPClearerr)(struct IPerlStdIO*, FILE*); |
| 71 |
|
|
typedef int (*LPGetc)(struct IPerlStdIO*, FILE*); |
| 72 |
|
|
typedef char* (*LPGetBase)(struct IPerlStdIO*, FILE*); |
| 73 |
|
|
typedef int (*LPGetBufsiz)(struct IPerlStdIO*, FILE*); |
| 74 |
|
|
typedef int (*LPGetCnt)(struct IPerlStdIO*, FILE*); |
| 75 |
|
|
typedef char* (*LPGetPtr)(struct IPerlStdIO*, FILE*); |
| 76 |
|
|
typedef char* (*LPGets)(struct IPerlStdIO*, FILE*, char*, int); |
| 77 |
|
|
typedef int (*LPPutc)(struct IPerlStdIO*, FILE*, int); |
| 78 |
|
|
typedef int (*LPPuts)(struct IPerlStdIO*, FILE*, const char*); |
| 79 |
|
|
typedef int (*LPFlush)(struct IPerlStdIO*, FILE*); |
| 80 |
|
|
typedef int (*LPUngetc)(struct IPerlStdIO*, int,FILE*); |
| 81 |
|
|
typedef int (*LPFileno)(struct IPerlStdIO*, FILE*); |
| 82 |
|
|
typedef FILE* (*LPFdopen)(struct IPerlStdIO*, int, const char*); |
| 83 |
|
|
typedef FILE* (*LPReopen)(struct IPerlStdIO*, const char*, |
| 84 |
|
|
const char*, FILE*); |
| 85 |
|
|
typedef SSize_t (*LPRead)(struct IPerlStdIO*, void*, Size_t, Size_t, FILE *); |
| 86 |
|
|
typedef SSize_t (*LPWrite)(struct IPerlStdIO*, const void*, Size_t, Size_t, FILE *); |
| 87 |
|
|
typedef void (*LPSetBuf)(struct IPerlStdIO*, FILE*, char*); |
| 88 |
|
|
typedef int (*LPSetVBuf)(struct IPerlStdIO*, FILE*, char*, int, |
| 89 |
|
|
Size_t); |
| 90 |
|
|
typedef void (*LPSetCnt)(struct IPerlStdIO*, FILE*, int); |
| 91 |
|
|
|
| 92 |
|
|
#ifndef NETWARE |
| 93 |
|
|
typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, char*); |
| 94 |
|
|
#elif defined(NETWARE) |
| 95 |
|
|
typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, char*, int); |
| 96 |
|
|
#endif |
| 97 |
|
|
|
| 98 |
|
|
typedef void (*LPSetlinebuf)(struct IPerlStdIO*, FILE*); |
| 99 |
|
|
typedef int (*LPPrintf)(struct IPerlStdIO*, FILE*, const char*, |
| 100 |
|
|
...); |
| 101 |
|
|
typedef int (*LPVprintf)(struct IPerlStdIO*, FILE*, const char*, |
| 102 |
|
|
va_list); |
| 103 |
|
|
typedef Off_t (*LPTell)(struct IPerlStdIO*, FILE*); |
| 104 |
|
|
typedef int (*LPSeek)(struct IPerlStdIO*, FILE*, Off_t, int); |
| 105 |
|
|
typedef void (*LPRewind)(struct IPerlStdIO*, FILE*); |
| 106 |
|
|
typedef FILE* (*LPTmpfile)(struct IPerlStdIO*); |
| 107 |
|
|
typedef int (*LPGetpos)(struct IPerlStdIO*, FILE*, Fpos_t*); |
| 108 |
|
|
typedef int (*LPSetpos)(struct IPerlStdIO*, FILE*, |
| 109 |
|
|
const Fpos_t*); |
| 110 |
|
|
typedef void (*LPInit)(struct IPerlStdIO*); |
| 111 |
|
|
typedef void (*LPInitOSExtras)(struct IPerlStdIO*); |
| 112 |
|
|
typedef FILE* (*LPFdupopen)(struct IPerlStdIO*, FILE*); |
| 113 |
|
|
|
| 114 |
|
|
struct IPerlStdIO |
| 115 |
|
|
{ |
| 116 |
|
|
LPStdin pStdin; |
| 117 |
|
|
LPStdout pStdout; |
| 118 |
|
|
LPStderr pStderr; |
| 119 |
|
|
LPOpen pOpen; |
| 120 |
|
|
LPClose pClose; |
| 121 |
|
|
LPEof pEof; |
| 122 |
|
|
LPError pError; |
| 123 |
|
|
LPClearerr pClearerr; |
| 124 |
|
|
LPGetc pGetc; |
| 125 |
|
|
LPGetBase pGetBase; |
| 126 |
|
|
LPGetBufsiz pGetBufsiz; |
| 127 |
|
|
LPGetCnt pGetCnt; |
| 128 |
|
|
LPGetPtr pGetPtr; |
| 129 |
|
|
LPGets pGets; |
| 130 |
|
|
LPPutc pPutc; |
| 131 |
|
|
LPPuts pPuts; |
| 132 |
|
|
LPFlush pFlush; |
| 133 |
|
|
LPUngetc pUngetc; |
| 134 |
|
|
LPFileno pFileno; |
| 135 |
|
|
LPFdopen pFdopen; |
| 136 |
|
|
LPReopen pReopen; |
| 137 |
|
|
LPRead pRead; |
| 138 |
|
|
LPWrite pWrite; |
| 139 |
|
|
LPSetBuf pSetBuf; |
| 140 |
|
|
LPSetVBuf pSetVBuf; |
| 141 |
|
|
LPSetCnt pSetCnt; |
| 142 |
|
|
LPSetPtr pSetPtr; |
| 143 |
|
|
LPSetlinebuf pSetlinebuf; |
| 144 |
|
|
LPPrintf pPrintf; |
| 145 |
|
|
LPVprintf pVprintf; |
| 146 |
|
|
LPTell pTell; |
| 147 |
|
|
LPSeek pSeek; |
| 148 |
|
|
LPRewind pRewind; |
| 149 |
|
|
LPTmpfile pTmpfile; |
| 150 |
|
|
LPGetpos pGetpos; |
| 151 |
|
|
LPSetpos pSetpos; |
| 152 |
|
|
LPInit pInit; |
| 153 |
|
|
LPInitOSExtras pInitOSExtras; |
| 154 |
|
|
LPFdupopen pFdupopen; |
| 155 |
|
|
}; |
| 156 |
|
|
|
| 157 |
|
|
struct IPerlStdIOInfo |
| 158 |
|
|
{ |
| 159 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 160 |
|
|
struct IPerlStdIO perlStdIOList; |
| 161 |
|
|
}; |
| 162 |
|
|
|
| 163 |
|
|
/* These do not belong here ... NI-S, 14 Nov 2000 */ |
| 164 |
|
|
|
| 165 |
|
|
#ifdef USE_STDIO_PTR |
| 166 |
|
|
# define PerlSIO_has_cntptr(f) 1 |
| 167 |
|
|
# ifdef STDIO_PTR_LVALUE |
| 168 |
|
|
# ifdef STDIO_CNT_LVALUE |
| 169 |
|
|
# define PerlSIO_canset_cnt(f) 1 |
| 170 |
|
|
# ifdef STDIO_PTR_LVAL_NOCHANGE_CNT |
| 171 |
|
|
# define PerlSIO_fast_gets(f) 1 |
| 172 |
|
|
# endif |
| 173 |
|
|
# else /* STDIO_CNT_LVALUE */ |
| 174 |
|
|
# define PerlSIO_canset_cnt(f) 0 |
| 175 |
|
|
# endif |
| 176 |
|
|
# else /* STDIO_PTR_LVALUE */ |
| 177 |
|
|
# ifdef STDIO_PTR_LVAL_SETS_CNT |
| 178 |
|
|
# define PerlSIO_fast_gets(f) 1 |
| 179 |
|
|
# endif |
| 180 |
|
|
# endif |
| 181 |
|
|
#else /* USE_STDIO_PTR */ |
| 182 |
|
|
# define PerlSIO_has_cntptr(f) 0 |
| 183 |
|
|
# define PerlSIO_canset_cnt(f) 0 |
| 184 |
|
|
#endif /* USE_STDIO_PTR */ |
| 185 |
|
|
|
| 186 |
|
|
#ifndef PerlSIO_fast_gets |
| 187 |
|
|
#define PerlSIO_fast_gets(f) 0 |
| 188 |
|
|
#endif |
| 189 |
|
|
|
| 190 |
|
|
#ifdef FILE_base |
| 191 |
|
|
#define PerlSIO_has_base(f) 1 |
| 192 |
|
|
#else |
| 193 |
|
|
#define PerlSIO_has_base(f) 0 |
| 194 |
|
|
#endif |
| 195 |
|
|
|
| 196 |
|
|
/* Now take FILE * via function table */ |
| 197 |
|
|
|
| 198 |
|
|
#define PerlSIO_stdin \ |
| 199 |
|
|
(*PL_StdIO->pStdin)(PL_StdIO) |
| 200 |
|
|
#define PerlSIO_stdout \ |
| 201 |
|
|
(*PL_StdIO->pStdout)(PL_StdIO) |
| 202 |
|
|
#define PerlSIO_stderr \ |
| 203 |
|
|
(*PL_StdIO->pStderr)(PL_StdIO) |
| 204 |
|
|
#define PerlSIO_fopen(x,y) \ |
| 205 |
|
|
(*PL_StdIO->pOpen)(PL_StdIO, (x),(y)) |
| 206 |
|
|
#define PerlSIO_fclose(f) \ |
| 207 |
|
|
(*PL_StdIO->pClose)(PL_StdIO, (f)) |
| 208 |
|
|
#define PerlSIO_feof(f) \ |
| 209 |
|
|
(*PL_StdIO->pEof)(PL_StdIO, (f)) |
| 210 |
|
|
#define PerlSIO_ferror(f) \ |
| 211 |
|
|
(*PL_StdIO->pError)(PL_StdIO, (f)) |
| 212 |
|
|
#define PerlSIO_clearerr(f) \ |
| 213 |
|
|
(*PL_StdIO->pClearerr)(PL_StdIO, (f)) |
| 214 |
|
|
#define PerlSIO_fgetc(f) \ |
| 215 |
|
|
(*PL_StdIO->pGetc)(PL_StdIO, (f)) |
| 216 |
|
|
#define PerlSIO_get_base(f) \ |
| 217 |
|
|
(*PL_StdIO->pGetBase)(PL_StdIO, (f)) |
| 218 |
|
|
#define PerlSIO_get_bufsiz(f) \ |
| 219 |
|
|
(*PL_StdIO->pGetBufsiz)(PL_StdIO, (f)) |
| 220 |
|
|
#define PerlSIO_get_cnt(f) \ |
| 221 |
|
|
(*PL_StdIO->pGetCnt)(PL_StdIO, (f)) |
| 222 |
|
|
#define PerlSIO_get_ptr(f) \ |
| 223 |
|
|
(*PL_StdIO->pGetPtr)(PL_StdIO, (f)) |
| 224 |
|
|
#define PerlSIO_fputc(f,c) \ |
| 225 |
|
|
(*PL_StdIO->pPutc)(PL_StdIO, (f),(c)) |
| 226 |
|
|
#define PerlSIO_fputs(f,s) \ |
| 227 |
|
|
(*PL_StdIO->pPuts)(PL_StdIO, (f),(s)) |
| 228 |
|
|
#define PerlSIO_fflush(f) \ |
| 229 |
|
|
(*PL_StdIO->pFlush)(PL_StdIO, (f)) |
| 230 |
|
|
#define PerlSIO_fgets(s, n, fp) \ |
| 231 |
|
|
(*PL_StdIO->pGets)(PL_StdIO, (fp), s, n) |
| 232 |
|
|
#define PerlSIO_ungetc(c,f) \ |
| 233 |
|
|
(*PL_StdIO->pUngetc)(PL_StdIO, (c),(f)) |
| 234 |
|
|
#define PerlSIO_fileno(f) \ |
| 235 |
|
|
(*PL_StdIO->pFileno)(PL_StdIO, (f)) |
| 236 |
|
|
#define PerlSIO_fdopen(f, s) \ |
| 237 |
|
|
(*PL_StdIO->pFdopen)(PL_StdIO, (f),(s)) |
| 238 |
|
|
#define PerlSIO_freopen(p, m, f) \ |
| 239 |
|
|
(*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f)) |
| 240 |
|
|
#define PerlSIO_fread(buf,sz,count,f) \ |
| 241 |
|
|
(*PL_StdIO->pRead)(PL_StdIO, (buf), (sz), (count), (f)) |
| 242 |
|
|
#define PerlSIO_fwrite(buf,sz,count,f) \ |
| 243 |
|
|
(*PL_StdIO->pWrite)(PL_StdIO, (buf), (sz), (count), (f)) |
| 244 |
|
|
#define PerlSIO_setbuf(f,b) \ |
| 245 |
|
|
(*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b)) |
| 246 |
|
|
#define PerlSIO_setvbuf(f,b,t,s) \ |
| 247 |
|
|
(*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s)) |
| 248 |
|
|
#define PerlSIO_set_cnt(f,c) \ |
| 249 |
|
|
(*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c)) |
| 250 |
|
|
#define PerlSIO_set_ptr(f,p) \ |
| 251 |
|
|
(*PL_StdIO->pSetPtr)(PL_StdIO, (f), (p)) |
| 252 |
|
|
#define PerlSIO_setlinebuf(f) \ |
| 253 |
|
|
(*PL_StdIO->pSetlinebuf)(PL_StdIO, (f)) |
| 254 |
|
|
#define PerlSIO_printf Perl_fprintf_nocontext |
| 255 |
|
|
#define PerlSIO_stdoutf Perl_printf_nocontext |
| 256 |
|
|
#define PerlSIO_vprintf(f,fmt,a) \ |
| 257 |
|
|
(*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a) |
| 258 |
|
|
#define PerlSIO_ftell(f) \ |
| 259 |
|
|
(*PL_StdIO->pTell)(PL_StdIO, (f)) |
| 260 |
|
|
#define PerlSIO_fseek(f,o,w) \ |
| 261 |
|
|
(*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w)) |
| 262 |
|
|
#define PerlSIO_fgetpos(f,p) \ |
| 263 |
|
|
(*PL_StdIO->pGetpos)(PL_StdIO, (f),(p)) |
| 264 |
|
|
#define PerlSIO_fsetpos(f,p) \ |
| 265 |
|
|
(*PL_StdIO->pSetpos)(PL_StdIO, (f),(p)) |
| 266 |
|
|
#define PerlSIO_rewind(f) \ |
| 267 |
|
|
(*PL_StdIO->pRewind)(PL_StdIO, (f)) |
| 268 |
|
|
#define PerlSIO_tmpfile() \ |
| 269 |
|
|
(*PL_StdIO->pTmpfile)(PL_StdIO) |
| 270 |
|
|
#define PerlSIO_init() \ |
| 271 |
|
|
(*PL_StdIO->pInit)(PL_StdIO) |
| 272 |
|
|
#undef init_os_extras |
| 273 |
|
|
#define init_os_extras() \ |
| 274 |
|
|
(*PL_StdIO->pInitOSExtras)(PL_StdIO) |
| 275 |
|
|
#define PerlSIO_fdupopen(f) \ |
| 276 |
|
|
(*PL_StdIO->pFdupopen)(PL_StdIO, (f)) |
| 277 |
|
|
|
| 278 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 279 |
|
|
|
| 280 |
|
|
#define PerlSIO_stdin stdin |
| 281 |
|
|
#define PerlSIO_stdout stdout |
| 282 |
|
|
#define PerlSIO_stderr stderr |
| 283 |
|
|
#define PerlSIO_fopen(x,y) fopen(x,y) |
| 284 |
|
|
#ifdef __VOS__ |
| 285 |
|
|
/* Work around VOS bug posix-979, wrongly setting errno when at end of file. */ |
| 286 |
|
|
#define PerlSIO_fclose(f) (((errno==1025)?errno=0:0),fclose(f)) |
| 287 |
|
|
#define PerlSIO_feof(f) (((errno==1025)?errno=0:0),feof(f)) |
| 288 |
|
|
#define PerlSIO_ferror(f) (((errno==1025)?errno=0:0),ferror(f)) |
| 289 |
|
|
#else |
| 290 |
|
|
#define PerlSIO_fclose(f) fclose(f) |
| 291 |
|
|
#define PerlSIO_feof(f) feof(f) |
| 292 |
|
|
#define PerlSIO_ferror(f) ferror(f) |
| 293 |
|
|
#endif |
| 294 |
|
|
#define PerlSIO_clearerr(f) clearerr(f) |
| 295 |
|
|
#define PerlSIO_fgetc(f) fgetc(f) |
| 296 |
|
|
#ifdef FILE_base |
| 297 |
|
|
#define PerlSIO_get_base(f) FILE_base(f) |
| 298 |
|
|
#define PerlSIO_get_bufsiz(f) FILE_bufsiz(f) |
| 299 |
|
|
#else |
| 300 |
|
|
#define PerlSIO_get_base(f) NULL |
| 301 |
|
|
#define PerlSIO_get_bufsiz(f) 0 |
| 302 |
|
|
#endif |
| 303 |
|
|
#ifdef USE_STDIO_PTR |
| 304 |
|
|
#define PerlSIO_get_cnt(f) FILE_cnt(f) |
| 305 |
|
|
#define PerlSIO_get_ptr(f) FILE_ptr(f) |
| 306 |
|
|
#else |
| 307 |
|
|
#define PerlSIO_get_cnt(f) 0 |
| 308 |
|
|
#define PerlSIO_get_ptr(f) NULL |
| 309 |
|
|
#endif |
| 310 |
|
|
#define PerlSIO_fputc(f,c) fputc(c,f) |
| 311 |
|
|
#define PerlSIO_fputs(f,s) fputs(s,f) |
| 312 |
|
|
#define PerlSIO_fflush(f) Fflush(f) |
| 313 |
|
|
#define PerlSIO_fgets(s, n, fp) fgets(s,n,fp) |
| 314 |
|
|
#if defined(VMS) && defined(__DECC) |
| 315 |
|
|
/* Unusual definition of ungetc() here to accomodate fast_sv_gets()' |
| 316 |
|
|
* belief that it can mix getc/ungetc with reads from stdio buffer */ |
| 317 |
|
|
int decc$ungetc(int __c, FILE *__stream); |
| 318 |
|
|
# define PerlSIO_ungetc(c,f) ((c) == EOF ? EOF : \ |
| 319 |
|
|
((*(f) && !((*(f))->_flag & _IONBF) && \ |
| 320 |
|
|
((*(f))->_ptr > (*(f))->_base)) ? \ |
| 321 |
|
|
((*(f))->_cnt++, *(--(*(f))->_ptr) = (c)) : decc$ungetc(c,f))) |
| 322 |
|
|
#else |
| 323 |
|
|
# define PerlSIO_ungetc(c,f) ungetc(c,f) |
| 324 |
|
|
#endif |
| 325 |
|
|
#define PerlSIO_fileno(f) fileno(f) |
| 326 |
|
|
#define PerlSIO_fdopen(f, s) fdopen(f,s) |
| 327 |
|
|
#define PerlSIO_freopen(p, m, f) freopen(p,m,f) |
| 328 |
|
|
#define PerlSIO_fread(buf,sz,count,f) fread(buf,sz,count,f) |
| 329 |
|
|
#define PerlSIO_fwrite(buf,sz,count,f) fwrite(buf,sz,count,f) |
| 330 |
|
|
#define PerlSIO_setbuf(f,b) setbuf(f,b) |
| 331 |
|
|
#define PerlSIO_setvbuf(f,b,t,s) setvbuf(f,b,t,s) |
| 332 |
|
|
#if defined(USE_STDIO_PTR) && defined(STDIO_CNT_LVALUE) |
| 333 |
|
|
#define PerlSIO_set_cnt(f,c) FILE_cnt(f) = (c) |
| 334 |
|
|
#else |
| 335 |
|
|
#define PerlSIO_set_cnt(f,c) PerlIOProc_abort() |
| 336 |
|
|
#endif |
| 337 |
|
|
#if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE) |
| 338 |
|
|
#define PerlSIO_set_ptr(f,p) FILE_ptr(f) = (p) |
| 339 |
|
|
#else |
| 340 |
|
|
#define PerlSIO_set_ptr(f,p) PerlIOProc_abort() |
| 341 |
|
|
#endif |
| 342 |
|
|
#define PerlSIO_setlinebuf(f) setlinebuf(f) |
| 343 |
|
|
#define PerlSIO_printf fprintf |
| 344 |
|
|
#define PerlSIO_stdoutf printf |
| 345 |
|
|
#define PerlSIO_vprintf(f,fmt,a) vfprintf(f,fmt,a) |
| 346 |
|
|
#define PerlSIO_ftell(f) ftell(f) |
| 347 |
|
|
#define PerlSIO_fseek(f,o,w) fseek(f,o,w) |
| 348 |
|
|
#define PerlSIO_fgetpos(f,p) fgetpos(f,p) |
| 349 |
|
|
#define PerlSIO_fsetpos(f,p) fsetpos(f,p) |
| 350 |
|
|
#define PerlSIO_rewind(f) rewind(f) |
| 351 |
|
|
#define PerlSIO_tmpfile() tmpfile() |
| 352 |
|
|
#define PerlSIO_fdupopen(f) (f) |
| 353 |
|
|
|
| 354 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 355 |
|
|
|
| 356 |
|
|
/* |
| 357 |
|
|
* Interface for directory functions |
| 358 |
|
|
*/ |
| 359 |
|
|
|
| 360 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 361 |
|
|
|
| 362 |
|
|
/* IPerlDir */ |
| 363 |
|
|
struct IPerlDir; |
| 364 |
|
|
struct IPerlDirInfo; |
| 365 |
|
|
typedef int (*LPMakedir)(struct IPerlDir*, const char*, int); |
| 366 |
|
|
typedef int (*LPChdir)(struct IPerlDir*, const char*); |
| 367 |
|
|
typedef int (*LPRmdir)(struct IPerlDir*, const char*); |
| 368 |
|
|
typedef int (*LPDirClose)(struct IPerlDir*, DIR*); |
| 369 |
|
|
typedef DIR* (*LPDirOpen)(struct IPerlDir*, char*); |
| 370 |
|
|
typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*); |
| 371 |
|
|
typedef void (*LPDirRewind)(struct IPerlDir*, DIR*); |
| 372 |
|
|
typedef void (*LPDirSeek)(struct IPerlDir*, DIR*, long); |
| 373 |
|
|
typedef long (*LPDirTell)(struct IPerlDir*, DIR*); |
| 374 |
|
|
#ifdef WIN32 |
| 375 |
|
|
typedef char* (*LPDirMapPathA)(struct IPerlDir*, const char*); |
| 376 |
|
|
typedef WCHAR* (*LPDirMapPathW)(struct IPerlDir*, const WCHAR*); |
| 377 |
|
|
#endif |
| 378 |
|
|
|
| 379 |
|
|
struct IPerlDir |
| 380 |
|
|
{ |
| 381 |
|
|
LPMakedir pMakedir; |
| 382 |
|
|
LPChdir pChdir; |
| 383 |
|
|
LPRmdir pRmdir; |
| 384 |
|
|
LPDirClose pClose; |
| 385 |
|
|
LPDirOpen pOpen; |
| 386 |
|
|
LPDirRead pRead; |
| 387 |
|
|
LPDirRewind pRewind; |
| 388 |
|
|
LPDirSeek pSeek; |
| 389 |
|
|
LPDirTell pTell; |
| 390 |
|
|
#ifdef WIN32 |
| 391 |
|
|
LPDirMapPathA pMapPathA; |
| 392 |
|
|
LPDirMapPathW pMapPathW; |
| 393 |
|
|
#endif |
| 394 |
|
|
}; |
| 395 |
|
|
|
| 396 |
|
|
struct IPerlDirInfo |
| 397 |
|
|
{ |
| 398 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 399 |
|
|
struct IPerlDir perlDirList; |
| 400 |
|
|
}; |
| 401 |
|
|
|
| 402 |
|
|
#define PerlDir_mkdir(name, mode) \ |
| 403 |
|
|
(*PL_Dir->pMakedir)(PL_Dir, (name), (mode)) |
| 404 |
|
|
#define PerlDir_chdir(name) \ |
| 405 |
|
|
(*PL_Dir->pChdir)(PL_Dir, (name)) |
| 406 |
|
|
#define PerlDir_rmdir(name) \ |
| 407 |
|
|
(*PL_Dir->pRmdir)(PL_Dir, (name)) |
| 408 |
|
|
#define PerlDir_close(dir) \ |
| 409 |
|
|
(*PL_Dir->pClose)(PL_Dir, (dir)) |
| 410 |
|
|
#define PerlDir_open(name) \ |
| 411 |
|
|
(*PL_Dir->pOpen)(PL_Dir, (name)) |
| 412 |
|
|
#define PerlDir_read(dir) \ |
| 413 |
|
|
(*PL_Dir->pRead)(PL_Dir, (dir)) |
| 414 |
|
|
#define PerlDir_rewind(dir) \ |
| 415 |
|
|
(*PL_Dir->pRewind)(PL_Dir, (dir)) |
| 416 |
|
|
#define PerlDir_seek(dir, loc) \ |
| 417 |
|
|
(*PL_Dir->pSeek)(PL_Dir, (dir), (loc)) |
| 418 |
|
|
#define PerlDir_tell(dir) \ |
| 419 |
|
|
(*PL_Dir->pTell)(PL_Dir, (dir)) |
| 420 |
|
|
#ifdef WIN32 |
| 421 |
|
|
#define PerlDir_mapA(dir) \ |
| 422 |
|
|
(*PL_Dir->pMapPathA)(PL_Dir, (dir)) |
| 423 |
|
|
#define PerlDir_mapW(dir) \ |
| 424 |
|
|
(*PL_Dir->pMapPathW)(PL_Dir, (dir)) |
| 425 |
|
|
#endif |
| 426 |
|
|
|
| 427 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 428 |
|
|
|
| 429 |
|
|
#define PerlDir_mkdir(name, mode) Mkdir((name), (mode)) |
| 430 |
|
|
#ifdef VMS |
| 431 |
|
|
# define PerlDir_chdir(n) Chdir((n)) |
| 432 |
|
|
#else |
| 433 |
|
|
# define PerlDir_chdir(name) chdir((name)) |
| 434 |
|
|
#endif |
| 435 |
|
|
#define PerlDir_rmdir(name) rmdir((name)) |
| 436 |
|
|
#define PerlDir_close(dir) closedir((dir)) |
| 437 |
|
|
#define PerlDir_open(name) opendir((name)) |
| 438 |
|
|
#define PerlDir_read(dir) readdir((dir)) |
| 439 |
|
|
#define PerlDir_rewind(dir) rewinddir((dir)) |
| 440 |
|
|
#define PerlDir_seek(dir, loc) seekdir((dir), (loc)) |
| 441 |
|
|
#define PerlDir_tell(dir) telldir((dir)) |
| 442 |
|
|
#ifdef WIN32 |
| 443 |
|
|
#define PerlDir_mapA(dir) dir |
| 444 |
|
|
#define PerlDir_mapW(dir) dir |
| 445 |
|
|
#endif |
| 446 |
|
|
|
| 447 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 448 |
|
|
|
| 449 |
|
|
/* |
| 450 |
|
|
Interface for perl environment functions |
| 451 |
|
|
*/ |
| 452 |
|
|
|
| 453 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 454 |
|
|
|
| 455 |
|
|
/* IPerlEnv */ |
| 456 |
|
|
struct IPerlEnv; |
| 457 |
|
|
struct IPerlEnvInfo; |
| 458 |
|
|
typedef char* (*LPEnvGetenv)(struct IPerlEnv*, const char*); |
| 459 |
|
|
typedef int (*LPEnvPutenv)(struct IPerlEnv*, const char*); |
| 460 |
|
|
typedef char* (*LPEnvGetenv_len)(struct IPerlEnv*, |
| 461 |
|
|
const char *varname, unsigned long *len); |
| 462 |
|
|
typedef int (*LPEnvUname)(struct IPerlEnv*, struct utsname *name); |
| 463 |
|
|
typedef void (*LPEnvClearenv)(struct IPerlEnv*); |
| 464 |
|
|
typedef void* (*LPEnvGetChildenv)(struct IPerlEnv*); |
| 465 |
|
|
typedef void (*LPEnvFreeChildenv)(struct IPerlEnv*, void* env); |
| 466 |
|
|
typedef char* (*LPEnvGetChilddir)(struct IPerlEnv*); |
| 467 |
|
|
typedef void (*LPEnvFreeChilddir)(struct IPerlEnv*, char* dir); |
| 468 |
|
|
#ifdef HAS_ENVGETENV |
| 469 |
|
|
typedef char* (*LPENVGetenv)(struct IPerlEnv*, const char *varname); |
| 470 |
|
|
typedef char* (*LPENVGetenv_len)(struct IPerlEnv*, |
| 471 |
|
|
const char *varname, unsigned long *len); |
| 472 |
|
|
#endif |
| 473 |
|
|
#ifdef WIN32 |
| 474 |
|
|
typedef unsigned long (*LPEnvOsID)(struct IPerlEnv*); |
| 475 |
|
|
typedef char* (*LPEnvLibPath)(struct IPerlEnv*, const char*); |
| 476 |
|
|
typedef char* (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*); |
| 477 |
|
|
typedef char* (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*); |
| 478 |
|
|
typedef void (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*); |
| 479 |
|
|
#endif |
| 480 |
|
|
|
| 481 |
|
|
struct IPerlEnv |
| 482 |
|
|
{ |
| 483 |
|
|
LPEnvGetenv pGetenv; |
| 484 |
|
|
LPEnvPutenv pPutenv; |
| 485 |
|
|
LPEnvGetenv_len pGetenv_len; |
| 486 |
|
|
LPEnvUname pEnvUname; |
| 487 |
|
|
LPEnvClearenv pClearenv; |
| 488 |
|
|
LPEnvGetChildenv pGetChildenv; |
| 489 |
|
|
LPEnvFreeChildenv pFreeChildenv; |
| 490 |
|
|
LPEnvGetChilddir pGetChilddir; |
| 491 |
|
|
LPEnvFreeChilddir pFreeChilddir; |
| 492 |
|
|
#ifdef HAS_ENVGETENV |
| 493 |
|
|
LPENVGetenv pENVGetenv; |
| 494 |
|
|
LPENVGetenv_len pENVGetenv_len; |
| 495 |
|
|
#endif |
| 496 |
|
|
#ifdef WIN32 |
| 497 |
|
|
LPEnvOsID pEnvOsID; |
| 498 |
|
|
LPEnvLibPath pLibPath; |
| 499 |
|
|
LPEnvSiteLibPath pSiteLibPath; |
| 500 |
|
|
LPEnvVendorLibPath pVendorLibPath; |
| 501 |
|
|
LPEnvGetChildIO pGetChildIO; |
| 502 |
|
|
#endif |
| 503 |
|
|
}; |
| 504 |
|
|
|
| 505 |
|
|
struct IPerlEnvInfo |
| 506 |
|
|
{ |
| 507 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 508 |
|
|
struct IPerlEnv perlEnvList; |
| 509 |
|
|
}; |
| 510 |
|
|
|
| 511 |
|
|
#define PerlEnv_putenv(str) \ |
| 512 |
|
|
(*PL_Env->pPutenv)(PL_Env,(str)) |
| 513 |
|
|
#define PerlEnv_getenv(str) \ |
| 514 |
|
|
(*PL_Env->pGetenv)(PL_Env,(str)) |
| 515 |
|
|
#define PerlEnv_getenv_len(str,l) \ |
| 516 |
|
|
(*PL_Env->pGetenv_len)(PL_Env,(str), (l)) |
| 517 |
|
|
#define PerlEnv_clearenv() \ |
| 518 |
|
|
(*PL_Env->pClearenv)(PL_Env) |
| 519 |
|
|
#define PerlEnv_get_childenv() \ |
| 520 |
|
|
(*PL_Env->pGetChildenv)(PL_Env) |
| 521 |
|
|
#define PerlEnv_free_childenv(e) \ |
| 522 |
|
|
(*PL_Env->pFreeChildenv)(PL_Env, (e)) |
| 523 |
|
|
#define PerlEnv_get_childdir() \ |
| 524 |
|
|
(*PL_Env->pGetChilddir)(PL_Env) |
| 525 |
|
|
#define PerlEnv_free_childdir(d) \ |
| 526 |
|
|
(*PL_Env->pFreeChilddir)(PL_Env, (d)) |
| 527 |
|
|
#ifdef HAS_ENVGETENV |
| 528 |
|
|
# define PerlEnv_ENVgetenv(str) \ |
| 529 |
|
|
(*PL_Env->pENVGetenv)(PL_Env,(str)) |
| 530 |
|
|
# define PerlEnv_ENVgetenv_len(str,l) \ |
| 531 |
|
|
(*PL_Env->pENVGetenv_len)(PL_Env,(str), (l)) |
| 532 |
|
|
#else |
| 533 |
|
|
# define PerlEnv_ENVgetenv(str) \ |
| 534 |
|
|
PerlEnv_getenv((str)) |
| 535 |
|
|
# define PerlEnv_ENVgetenv_len(str,l) \ |
| 536 |
|
|
PerlEnv_getenv_len((str),(l)) |
| 537 |
|
|
#endif |
| 538 |
|
|
#define PerlEnv_uname(name) \ |
| 539 |
|
|
(*PL_Env->pEnvUname)(PL_Env,(name)) |
| 540 |
|
|
#ifdef WIN32 |
| 541 |
|
|
#define PerlEnv_os_id() \ |
| 542 |
|
|
(*PL_Env->pEnvOsID)(PL_Env) |
| 543 |
|
|
#define PerlEnv_lib_path(str) \ |
| 544 |
|
|
(*PL_Env->pLibPath)(PL_Env,(str)) |
| 545 |
|
|
#define PerlEnv_sitelib_path(str) \ |
| 546 |
|
|
(*PL_Env->pSiteLibPath)(PL_Env,(str)) |
| 547 |
|
|
#define PerlEnv_vendorlib_path(str) \ |
| 548 |
|
|
(*PL_Env->pVendorLibPath)(PL_Env,(str)) |
| 549 |
|
|
#define PerlEnv_get_child_IO(ptr) \ |
| 550 |
|
|
(*PL_Env->pGetChildIO)(PL_Env, ptr) |
| 551 |
|
|
#endif |
| 552 |
|
|
|
| 553 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 554 |
|
|
|
| 555 |
|
|
#define PerlEnv_putenv(str) putenv((str)) |
| 556 |
|
|
#define PerlEnv_getenv(str) getenv((str)) |
| 557 |
|
|
#define PerlEnv_getenv_len(str,l) getenv_len((str), (l)) |
| 558 |
|
|
#ifdef HAS_ENVGETENV |
| 559 |
|
|
# define PerlEnv_ENVgetenv(str) ENVgetenv((str)) |
| 560 |
|
|
# define PerlEnv_ENVgetenv_len(str,l) ENVgetenv_len((str), (l)) |
| 561 |
|
|
#else |
| 562 |
|
|
# define PerlEnv_ENVgetenv(str) PerlEnv_getenv((str)) |
| 563 |
|
|
# define PerlEnv_ENVgetenv_len(str,l) PerlEnv_getenv_len((str), (l)) |
| 564 |
|
|
#endif |
| 565 |
|
|
#define PerlEnv_uname(name) uname((name)) |
| 566 |
|
|
|
| 567 |
|
|
#ifdef WIN32 |
| 568 |
|
|
#define PerlEnv_os_id() win32_os_id() |
| 569 |
|
|
#define PerlEnv_lib_path(str) win32_get_privlib(str) |
| 570 |
|
|
#define PerlEnv_sitelib_path(str) win32_get_sitelib(str) |
| 571 |
|
|
#define PerlEnv_vendorlib_path(str) win32_get_vendorlib(str) |
| 572 |
|
|
#define PerlEnv_get_child_IO(ptr) win32_get_child_IO(ptr) |
| 573 |
|
|
#define PerlEnv_clearenv() win32_clearenv() |
| 574 |
|
|
#define PerlEnv_get_childenv() win32_get_childenv() |
| 575 |
|
|
#define PerlEnv_free_childenv(e) win32_free_childenv((e)) |
| 576 |
|
|
#define PerlEnv_get_childdir() win32_get_childdir() |
| 577 |
|
|
#define PerlEnv_free_childdir(d) win32_free_childdir((d)) |
| 578 |
|
|
#else |
| 579 |
|
|
#define PerlEnv_clearenv() clearenv() |
| 580 |
|
|
#define PerlEnv_get_childenv() get_childenv() |
| 581 |
|
|
#define PerlEnv_free_childenv(e) free_childenv((e)) |
| 582 |
|
|
#define PerlEnv_get_childdir() get_childdir() |
| 583 |
|
|
#define PerlEnv_free_childdir(d) free_childdir((d)) |
| 584 |
|
|
#endif |
| 585 |
|
|
|
| 586 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 587 |
|
|
|
| 588 |
|
|
/* |
| 589 |
|
|
Interface for perl low-level IO functions |
| 590 |
|
|
*/ |
| 591 |
|
|
|
| 592 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 593 |
|
|
|
| 594 |
|
|
/* IPerlLIO */ |
| 595 |
|
|
struct IPerlLIO; |
| 596 |
|
|
struct IPerlLIOInfo; |
| 597 |
|
|
typedef int (*LPLIOAccess)(struct IPerlLIO*, const char*, int); |
| 598 |
|
|
typedef int (*LPLIOChmod)(struct IPerlLIO*, const char*, int); |
| 599 |
|
|
typedef int (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t, |
| 600 |
|
|
gid_t); |
| 601 |
|
|
typedef int (*LPLIOChsize)(struct IPerlLIO*, int, Off_t); |
| 602 |
|
|
typedef int (*LPLIOClose)(struct IPerlLIO*, int); |
| 603 |
|
|
typedef int (*LPLIODup)(struct IPerlLIO*, int); |
| 604 |
|
|
typedef int (*LPLIODup2)(struct IPerlLIO*, int, int); |
| 605 |
|
|
typedef int (*LPLIOFlock)(struct IPerlLIO*, int, int); |
| 606 |
|
|
typedef int (*LPLIOFileStat)(struct IPerlLIO*, int, Stat_t*); |
| 607 |
|
|
typedef int (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int, |
| 608 |
|
|
char*); |
| 609 |
|
|
typedef int (*LPLIOIsatty)(struct IPerlLIO*, int); |
| 610 |
|
|
typedef int (*LPLIOLink)(struct IPerlLIO*, const char*, |
| 611 |
|
|
const char *); |
| 612 |
|
|
typedef Off_t (*LPLIOLseek)(struct IPerlLIO*, int, Off_t, int); |
| 613 |
|
|
typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*, |
| 614 |
|
|
Stat_t*); |
| 615 |
|
|
typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*); |
| 616 |
|
|
typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int); |
| 617 |
|
|
typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); |
| 618 |
|
|
typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int); |
| 619 |
|
|
typedef int (*LPLIORename)(struct IPerlLIO*, const char*, |
| 620 |
|
|
const char*); |
| 621 |
|
|
#ifdef NETWARE |
| 622 |
|
|
typedef int (*LPLIOSetmode)(struct IPerlLIO*, FILE*, int); |
| 623 |
|
|
#else |
| 624 |
|
|
typedef int (*LPLIOSetmode)(struct IPerlLIO*, int, int); |
| 625 |
|
|
#endif /* NETWARE */ |
| 626 |
|
|
typedef int (*LPLIONameStat)(struct IPerlLIO*, const char*, |
| 627 |
|
|
Stat_t*); |
| 628 |
|
|
typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*); |
| 629 |
|
|
typedef int (*LPLIOUmask)(struct IPerlLIO*, int); |
| 630 |
|
|
typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*); |
| 631 |
|
|
typedef int (*LPLIOUtime)(struct IPerlLIO*, char*, struct utimbuf*); |
| 632 |
|
|
typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*, |
| 633 |
|
|
unsigned int); |
| 634 |
|
|
|
| 635 |
|
|
struct IPerlLIO |
| 636 |
|
|
{ |
| 637 |
|
|
LPLIOAccess pAccess; |
| 638 |
|
|
LPLIOChmod pChmod; |
| 639 |
|
|
LPLIOChown pChown; |
| 640 |
|
|
LPLIOChsize pChsize; |
| 641 |
|
|
LPLIOClose pClose; |
| 642 |
|
|
LPLIODup pDup; |
| 643 |
|
|
LPLIODup2 pDup2; |
| 644 |
|
|
LPLIOFlock pFlock; |
| 645 |
|
|
LPLIOFileStat pFileStat; |
| 646 |
|
|
LPLIOIOCtl pIOCtl; |
| 647 |
|
|
LPLIOIsatty pIsatty; |
| 648 |
|
|
LPLIOLink pLink; |
| 649 |
|
|
LPLIOLseek pLseek; |
| 650 |
|
|
LPLIOLstat pLstat; |
| 651 |
|
|
LPLIOMktemp pMktemp; |
| 652 |
|
|
LPLIOOpen pOpen; |
| 653 |
|
|
LPLIOOpen3 pOpen3; |
| 654 |
|
|
LPLIORead pRead; |
| 655 |
|
|
LPLIORename pRename; |
| 656 |
|
|
LPLIOSetmode pSetmode; |
| 657 |
|
|
LPLIONameStat pNameStat; |
| 658 |
|
|
LPLIOTmpnam pTmpnam; |
| 659 |
|
|
LPLIOUmask pUmask; |
| 660 |
|
|
LPLIOUnlink pUnlink; |
| 661 |
|
|
LPLIOUtime pUtime; |
| 662 |
|
|
LPLIOWrite pWrite; |
| 663 |
|
|
}; |
| 664 |
|
|
|
| 665 |
|
|
struct IPerlLIOInfo |
| 666 |
|
|
{ |
| 667 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 668 |
|
|
struct IPerlLIO perlLIOList; |
| 669 |
|
|
}; |
| 670 |
|
|
|
| 671 |
|
|
#define PerlLIO_access(file, mode) \ |
| 672 |
|
|
(*PL_LIO->pAccess)(PL_LIO, (file), (mode)) |
| 673 |
|
|
#define PerlLIO_chmod(file, mode) \ |
| 674 |
|
|
(*PL_LIO->pChmod)(PL_LIO, (file), (mode)) |
| 675 |
|
|
#define PerlLIO_chown(file, owner, group) \ |
| 676 |
|
|
(*PL_LIO->pChown)(PL_LIO, (file), (owner), (group)) |
| 677 |
|
|
#define PerlLIO_chsize(fd, size) \ |
| 678 |
|
|
(*PL_LIO->pChsize)(PL_LIO, (fd), (size)) |
| 679 |
|
|
#define PerlLIO_close(fd) \ |
| 680 |
|
|
(*PL_LIO->pClose)(PL_LIO, (fd)) |
| 681 |
|
|
#define PerlLIO_dup(fd) \ |
| 682 |
|
|
(*PL_LIO->pDup)(PL_LIO, (fd)) |
| 683 |
|
|
#define PerlLIO_dup2(fd1, fd2) \ |
| 684 |
|
|
(*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2)) |
| 685 |
|
|
#define PerlLIO_flock(fd, op) \ |
| 686 |
|
|
(*PL_LIO->pFlock)(PL_LIO, (fd), (op)) |
| 687 |
|
|
#define PerlLIO_fstat(fd, buf) \ |
| 688 |
|
|
(*PL_LIO->pFileStat)(PL_LIO, (fd), (buf)) |
| 689 |
|
|
#define PerlLIO_ioctl(fd, u, buf) \ |
| 690 |
|
|
(*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf)) |
| 691 |
|
|
#define PerlLIO_isatty(fd) \ |
| 692 |
|
|
(*PL_LIO->pIsatty)(PL_LIO, (fd)) |
| 693 |
|
|
#define PerlLIO_link(oldname, newname) \ |
| 694 |
|
|
(*PL_LIO->pLink)(PL_LIO, (oldname), (newname)) |
| 695 |
|
|
#define PerlLIO_lseek(fd, offset, mode) \ |
| 696 |
|
|
(*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode)) |
| 697 |
|
|
#define PerlLIO_lstat(name, buf) \ |
| 698 |
|
|
(*PL_LIO->pLstat)(PL_LIO, (name), (buf)) |
| 699 |
|
|
#define PerlLIO_mktemp(file) \ |
| 700 |
|
|
(*PL_LIO->pMktemp)(PL_LIO, (file)) |
| 701 |
|
|
#define PerlLIO_open(file, flag) \ |
| 702 |
|
|
(*PL_LIO->pOpen)(PL_LIO, (file), (flag)) |
| 703 |
|
|
#define PerlLIO_open3(file, flag, perm) \ |
| 704 |
|
|
(*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm)) |
| 705 |
|
|
#define PerlLIO_read(fd, buf, count) \ |
| 706 |
|
|
(*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count)) |
| 707 |
|
|
#define PerlLIO_rename(oname, newname) \ |
| 708 |
|
|
(*PL_LIO->pRename)(PL_LIO, (oname), (newname)) |
| 709 |
|
|
#define PerlLIO_setmode(fd, mode) \ |
| 710 |
|
|
(*PL_LIO->pSetmode)(PL_LIO, (fd), (mode)) |
| 711 |
|
|
#define PerlLIO_stat(name, buf) \ |
| 712 |
|
|
(*PL_LIO->pNameStat)(PL_LIO, (name), (buf)) |
| 713 |
|
|
#define PerlLIO_tmpnam(str) \ |
| 714 |
|
|
(*PL_LIO->pTmpnam)(PL_LIO, (str)) |
| 715 |
|
|
#define PerlLIO_umask(mode) \ |
| 716 |
|
|
(*PL_LIO->pUmask)(PL_LIO, (mode)) |
| 717 |
|
|
#define PerlLIO_unlink(file) \ |
| 718 |
|
|
(*PL_LIO->pUnlink)(PL_LIO, (file)) |
| 719 |
|
|
#define PerlLIO_utime(file, time) \ |
| 720 |
|
|
(*PL_LIO->pUtime)(PL_LIO, (file), (time)) |
| 721 |
|
|
#define PerlLIO_write(fd, buf, count) \ |
| 722 |
|
|
(*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count)) |
| 723 |
|
|
|
| 724 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 725 |
|
|
|
| 726 |
|
|
#define PerlLIO_access(file, mode) access((file), (mode)) |
| 727 |
|
|
#define PerlLIO_chmod(file, mode) chmod((file), (mode)) |
| 728 |
|
|
#define PerlLIO_chown(file, owner, grp) chown((file), (owner), (grp)) |
| 729 |
|
|
#if defined(HAS_TRUNCATE) |
| 730 |
|
|
# define PerlLIO_chsize(fd, size) ftruncate((fd), (size)) |
| 731 |
|
|
#elif defined(HAS_CHSIZE) |
| 732 |
|
|
# define PerlLIO_chsize(fd, size) chsize((fd), (size)) |
| 733 |
|
|
#else |
| 734 |
|
|
# define PerlLIO_chsize(fd, size) my_chsize((fd), (size)) |
| 735 |
|
|
#endif |
| 736 |
|
|
#define PerlLIO_close(fd) close((fd)) |
| 737 |
|
|
#define PerlLIO_dup(fd) dup((fd)) |
| 738 |
|
|
#define PerlLIO_dup2(fd1, fd2) dup2((fd1), (fd2)) |
| 739 |
|
|
#define PerlLIO_flock(fd, op) FLOCK((fd), (op)) |
| 740 |
|
|
#define PerlLIO_fstat(fd, buf) Fstat((fd), (buf)) |
| 741 |
|
|
#define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf)) |
| 742 |
|
|
#define PerlLIO_isatty(fd) isatty((fd)) |
| 743 |
|
|
#define PerlLIO_link(oldname, newname) link((oldname), (newname)) |
| 744 |
|
|
#define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode)) |
| 745 |
|
|
#define PerlLIO_stat(name, buf) Stat((name), (buf)) |
| 746 |
|
|
#ifdef HAS_LSTAT |
| 747 |
|
|
# define PerlLIO_lstat(name, buf) lstat((name), (buf)) |
| 748 |
|
|
#else |
| 749 |
|
|
# define PerlLIO_lstat(name, buf) PerlLIO_stat((name), (buf)) |
| 750 |
|
|
#endif |
| 751 |
|
|
#define PerlLIO_mktemp(file) mktemp((file)) |
| 752 |
|
|
#define PerlLIO_mkstemp(file) mkstemp((file)) |
| 753 |
|
|
#define PerlLIO_open(file, flag) open((file), (flag)) |
| 754 |
|
|
#define PerlLIO_open3(file, flag, perm) open((file), (flag), (perm)) |
| 755 |
|
|
#define PerlLIO_read(fd, buf, count) read((fd), (buf), (count)) |
| 756 |
|
|
#define PerlLIO_rename(old, new) rename((old), (new)) |
| 757 |
|
|
#define PerlLIO_setmode(fd, mode) setmode((fd), (mode)) |
| 758 |
|
|
#define PerlLIO_tmpnam(str) tmpnam((str)) |
| 759 |
|
|
#define PerlLIO_umask(mode) umask((mode)) |
| 760 |
|
|
#define PerlLIO_unlink(file) unlink((file)) |
| 761 |
|
|
#define PerlLIO_utime(file, time) utime((file), (time)) |
| 762 |
|
|
#define PerlLIO_write(fd, buf, count) write((fd), (buf), (count)) |
| 763 |
|
|
|
| 764 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 765 |
|
|
|
| 766 |
|
|
/* |
| 767 |
|
|
Interface for perl memory allocation |
| 768 |
|
|
*/ |
| 769 |
|
|
|
| 770 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 771 |
|
|
|
| 772 |
|
|
/* IPerlMem */ |
| 773 |
|
|
struct IPerlMem; |
| 774 |
|
|
struct IPerlMemInfo; |
| 775 |
|
|
typedef void* (*LPMemMalloc)(struct IPerlMem*, size_t); |
| 776 |
|
|
typedef void* (*LPMemRealloc)(struct IPerlMem*, void*, size_t); |
| 777 |
|
|
typedef void (*LPMemFree)(struct IPerlMem*, void*); |
| 778 |
|
|
typedef void* (*LPMemCalloc)(struct IPerlMem*, size_t, size_t); |
| 779 |
|
|
typedef void (*LPMemGetLock)(struct IPerlMem*); |
| 780 |
|
|
typedef void (*LPMemFreeLock)(struct IPerlMem*); |
| 781 |
|
|
typedef int (*LPMemIsLocked)(struct IPerlMem*); |
| 782 |
|
|
|
| 783 |
|
|
struct IPerlMem |
| 784 |
|
|
{ |
| 785 |
|
|
LPMemMalloc pMalloc; |
| 786 |
|
|
LPMemRealloc pRealloc; |
| 787 |
|
|
LPMemFree pFree; |
| 788 |
|
|
LPMemCalloc pCalloc; |
| 789 |
|
|
LPMemGetLock pGetLock; |
| 790 |
|
|
LPMemFreeLock pFreeLock; |
| 791 |
|
|
LPMemIsLocked pIsLocked; |
| 792 |
|
|
}; |
| 793 |
|
|
|
| 794 |
|
|
struct IPerlMemInfo |
| 795 |
|
|
{ |
| 796 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 797 |
|
|
struct IPerlMem perlMemList; |
| 798 |
|
|
}; |
| 799 |
|
|
|
| 800 |
|
|
/* Interpreter specific memory macros */ |
| 801 |
|
|
#define PerlMem_malloc(size) \ |
| 802 |
|
|
(*PL_Mem->pMalloc)(PL_Mem, (size)) |
| 803 |
|
|
#define PerlMem_realloc(buf, size) \ |
| 804 |
|
|
(*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) |
| 805 |
|
|
#define PerlMem_free(buf) \ |
| 806 |
|
|
(*PL_Mem->pFree)(PL_Mem, (buf)) |
| 807 |
|
|
#define PerlMem_calloc(num, size) \ |
| 808 |
|
|
(*PL_Mem->pCalloc)(PL_Mem, (num), (size)) |
| 809 |
|
|
#define PerlMem_get_lock() \ |
| 810 |
|
|
(*PL_Mem->pGetLock)(PL_Mem) |
| 811 |
|
|
#define PerlMem_free_lock() \ |
| 812 |
|
|
(*PL_Mem->pFreeLock)(PL_Mem) |
| 813 |
|
|
#define PerlMem_is_locked() \ |
| 814 |
|
|
(*PL_Mem->pIsLocked)(PL_Mem) |
| 815 |
|
|
|
| 816 |
|
|
/* Shared memory macros */ |
| 817 |
|
|
#ifdef NETWARE |
| 818 |
|
|
|
| 819 |
|
|
#define PerlMemShared_malloc(size) \ |
| 820 |
|
|
(*PL_Mem->pMalloc)(PL_Mem, (size)) |
| 821 |
|
|
#define PerlMemShared_realloc(buf, size) \ |
| 822 |
|
|
(*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) |
| 823 |
|
|
#define PerlMemShared_free(buf) \ |
| 824 |
|
|
(*PL_Mem->pFree)(PL_Mem, (buf)) |
| 825 |
|
|
#define PerlMemShared_calloc(num, size) \ |
| 826 |
|
|
(*PL_Mem->pCalloc)(PL_Mem, (num), (size)) |
| 827 |
|
|
#define PerlMemShared_get_lock() \ |
| 828 |
|
|
(*PL_Mem->pGetLock)(PL_Mem) |
| 829 |
|
|
#define PerlMemShared_free_lock() \ |
| 830 |
|
|
(*PL_Mem->pFreeLock)(PL_Mem) |
| 831 |
|
|
#define PerlMemShared_is_locked() \ |
| 832 |
|
|
(*PL_Mem->pIsLocked)(PL_Mem) |
| 833 |
|
|
|
| 834 |
|
|
#else |
| 835 |
|
|
|
| 836 |
|
|
#define PerlMemShared_malloc(size) \ |
| 837 |
|
|
(*PL_MemShared->pMalloc)(PL_MemShared, (size)) |
| 838 |
|
|
#define PerlMemShared_realloc(buf, size) \ |
| 839 |
|
|
(*PL_MemShared->pRealloc)(PL_MemShared, (buf), (size)) |
| 840 |
|
|
#define PerlMemShared_free(buf) \ |
| 841 |
|
|
(*PL_MemShared->pFree)(PL_MemShared, (buf)) |
| 842 |
|
|
#define PerlMemShared_calloc(num, size) \ |
| 843 |
|
|
(*PL_MemShared->pCalloc)(PL_MemShared, (num), (size)) |
| 844 |
|
|
#define PerlMemShared_get_lock() \ |
| 845 |
|
|
(*PL_MemShared->pGetLock)(PL_MemShared) |
| 846 |
|
|
#define PerlMemShared_free_lock() \ |
| 847 |
|
|
(*PL_MemShared->pFreeLock)(PL_MemShared) |
| 848 |
|
|
#define PerlMemShared_is_locked() \ |
| 849 |
|
|
(*PL_MemShared->pIsLocked)(PL_MemShared) |
| 850 |
|
|
|
| 851 |
|
|
#endif |
| 852 |
|
|
|
| 853 |
|
|
/* Parse tree memory macros */ |
| 854 |
|
|
#define PerlMemParse_malloc(size) \ |
| 855 |
|
|
(*PL_MemParse->pMalloc)(PL_MemParse, (size)) |
| 856 |
|
|
#define PerlMemParse_realloc(buf, size) \ |
| 857 |
|
|
(*PL_MemParse->pRealloc)(PL_MemParse, (buf), (size)) |
| 858 |
|
|
#define PerlMemParse_free(buf) \ |
| 859 |
|
|
(*PL_MemParse->pFree)(PL_MemParse, (buf)) |
| 860 |
|
|
#define PerlMemParse_calloc(num, size) \ |
| 861 |
|
|
(*PL_MemParse->pCalloc)(PL_MemParse, (num), (size)) |
| 862 |
|
|
#define PerlMemParse_get_lock() \ |
| 863 |
|
|
(*PL_MemParse->pGetLock)(PL_MemParse) |
| 864 |
|
|
#define PerlMemParse_free_lock() \ |
| 865 |
|
|
(*PL_MemParse->pFreeLock)(PL_MemParse) |
| 866 |
|
|
#define PerlMemParse_is_locked() \ |
| 867 |
|
|
(*PL_MemParse->pIsLocked)(PL_MemParse) |
| 868 |
|
|
|
| 869 |
|
|
|
| 870 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 871 |
|
|
|
| 872 |
|
|
/* Interpreter specific memory macros */ |
| 873 |
|
|
#define PerlMem_malloc(size) malloc((size)) |
| 874 |
|
|
#define PerlMem_realloc(buf, size) realloc((buf), (size)) |
| 875 |
|
|
#define PerlMem_free(buf) free((buf)) |
| 876 |
|
|
#define PerlMem_calloc(num, size) calloc((num), (size)) |
| 877 |
|
|
#define PerlMem_get_lock() |
| 878 |
|
|
#define PerlMem_free_lock() |
| 879 |
|
|
#define PerlMem_is_locked() 0 |
| 880 |
|
|
|
| 881 |
|
|
/* Shared memory macros */ |
| 882 |
|
|
#define PerlMemShared_malloc(size) malloc((size)) |
| 883 |
|
|
#define PerlMemShared_realloc(buf, size) realloc((buf), (size)) |
| 884 |
|
|
#define PerlMemShared_free(buf) free((buf)) |
| 885 |
|
|
#define PerlMemShared_calloc(num, size) calloc((num), (size)) |
| 886 |
|
|
#define PerlMemShared_get_lock() |
| 887 |
|
|
#define PerlMemShared_free_lock() |
| 888 |
|
|
#define PerlMemShared_is_locked() 0 |
| 889 |
|
|
|
| 890 |
|
|
/* Parse tree memory macros */ |
| 891 |
|
|
#define PerlMemParse_malloc(size) malloc((size)) |
| 892 |
|
|
#define PerlMemParse_realloc(buf, size) realloc((buf), (size)) |
| 893 |
|
|
#define PerlMemParse_free(buf) free((buf)) |
| 894 |
|
|
#define PerlMemParse_calloc(num, size) calloc((num), (size)) |
| 895 |
|
|
#define PerlMemParse_get_lock() |
| 896 |
|
|
#define PerlMemParse_free_lock() |
| 897 |
|
|
#define PerlMemParse_is_locked() 0 |
| 898 |
|
|
|
| 899 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 900 |
|
|
|
| 901 |
|
|
/* |
| 902 |
|
|
Interface for perl process functions |
| 903 |
|
|
*/ |
| 904 |
|
|
|
| 905 |
|
|
|
| 906 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 907 |
|
|
|
| 908 |
|
|
#ifndef jmp_buf |
| 909 |
|
|
#include <setjmp.h> |
| 910 |
|
|
#endif |
| 911 |
|
|
|
| 912 |
|
|
/* IPerlProc */ |
| 913 |
|
|
struct IPerlProc; |
| 914 |
|
|
struct IPerlProcInfo; |
| 915 |
|
|
typedef void (*LPProcAbort)(struct IPerlProc*); |
| 916 |
|
|
typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*, |
| 917 |
|
|
const char*); |
| 918 |
|
|
typedef void (*LPProcExit)(struct IPerlProc*, int); |
| 919 |
|
|
typedef void (*LPProc_Exit)(struct IPerlProc*, int); |
| 920 |
|
|
typedef int (*LPProcExecl)(struct IPerlProc*, const char*, |
| 921 |
|
|
const char*, const char*, const char*, |
| 922 |
|
|
const char*); |
| 923 |
|
|
typedef int (*LPProcExecv)(struct IPerlProc*, const char*, |
| 924 |
|
|
const char*const*); |
| 925 |
|
|
typedef int (*LPProcExecvp)(struct IPerlProc*, const char*, |
| 926 |
|
|
const char*const*); |
| 927 |
|
|
typedef uid_t (*LPProcGetuid)(struct IPerlProc*); |
| 928 |
|
|
typedef uid_t (*LPProcGeteuid)(struct IPerlProc*); |
| 929 |
|
|
typedef gid_t (*LPProcGetgid)(struct IPerlProc*); |
| 930 |
|
|
typedef gid_t (*LPProcGetegid)(struct IPerlProc*); |
| 931 |
|
|
typedef char* (*LPProcGetlogin)(struct IPerlProc*); |
| 932 |
|
|
typedef int (*LPProcKill)(struct IPerlProc*, int, int); |
| 933 |
|
|
typedef int (*LPProcKillpg)(struct IPerlProc*, int, int); |
| 934 |
|
|
typedef int (*LPProcPauseProc)(struct IPerlProc*); |
| 935 |
|
|
typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*, |
| 936 |
|
|
const char*); |
| 937 |
|
|
typedef PerlIO* (*LPProcPopenList)(struct IPerlProc*, const char*, |
| 938 |
|
|
IV narg, SV **args); |
| 939 |
|
|
typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*); |
| 940 |
|
|
typedef int (*LPProcPipe)(struct IPerlProc*, int*); |
| 941 |
|
|
typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t); |
| 942 |
|
|
typedef int (*LPProcSetgid)(struct IPerlProc*, gid_t); |
| 943 |
|
|
typedef int (*LPProcSleep)(struct IPerlProc*, unsigned int); |
| 944 |
|
|
typedef int (*LPProcTimes)(struct IPerlProc*, struct tms*); |
| 945 |
|
|
typedef int (*LPProcWait)(struct IPerlProc*, int*); |
| 946 |
|
|
typedef int (*LPProcWaitpid)(struct IPerlProc*, int, int*, int); |
| 947 |
|
|
typedef Sighandler_t (*LPProcSignal)(struct IPerlProc*, int, Sighandler_t); |
| 948 |
|
|
typedef int (*LPProcFork)(struct IPerlProc*); |
| 949 |
|
|
typedef int (*LPProcGetpid)(struct IPerlProc*); |
| 950 |
|
|
#ifdef WIN32 |
| 951 |
|
|
typedef void* (*LPProcDynaLoader)(struct IPerlProc*, const char*); |
| 952 |
|
|
typedef void (*LPProcGetOSError)(struct IPerlProc*, |
| 953 |
|
|
SV* sv, DWORD dwErr); |
| 954 |
|
|
typedef int (*LPProcSpawnvp)(struct IPerlProc*, int, const char*, |
| 955 |
|
|
const char*const*); |
| 956 |
|
|
#endif |
| 957 |
|
|
typedef int (*LPProcLastHost)(struct IPerlProc*); |
| 958 |
|
|
typedef int (*LPProcGetTimeOfDay)(struct IPerlProc*, |
| 959 |
|
|
struct timeval*, void*); |
| 960 |
|
|
|
| 961 |
|
|
struct IPerlProc |
| 962 |
|
|
{ |
| 963 |
|
|
LPProcAbort pAbort; |
| 964 |
|
|
LPProcCrypt pCrypt; |
| 965 |
|
|
LPProcExit pExit; |
| 966 |
|
|
LPProc_Exit p_Exit; |
| 967 |
|
|
LPProcExecl pExecl; |
| 968 |
|
|
LPProcExecv pExecv; |
| 969 |
|
|
LPProcExecvp pExecvp; |
| 970 |
|
|
LPProcGetuid pGetuid; |
| 971 |
|
|
LPProcGeteuid pGeteuid; |
| 972 |
|
|
LPProcGetgid pGetgid; |
| 973 |
|
|
LPProcGetegid pGetegid; |
| 974 |
|
|
LPProcGetlogin pGetlogin; |
| 975 |
|
|
LPProcKill pKill; |
| 976 |
|
|
LPProcKillpg pKillpg; |
| 977 |
|
|
LPProcPauseProc pPauseProc; |
| 978 |
|
|
LPProcPopen pPopen; |
| 979 |
|
|
LPProcPclose pPclose; |
| 980 |
|
|
LPProcPipe pPipe; |
| 981 |
|
|
LPProcSetuid pSetuid; |
| 982 |
|
|
LPProcSetgid pSetgid; |
| 983 |
|
|
LPProcSleep pSleep; |
| 984 |
|
|
LPProcTimes pTimes; |
| 985 |
|
|
LPProcWait pWait; |
| 986 |
|
|
LPProcWaitpid pWaitpid; |
| 987 |
|
|
LPProcSignal pSignal; |
| 988 |
|
|
LPProcFork pFork; |
| 989 |
|
|
LPProcGetpid pGetpid; |
| 990 |
|
|
#ifdef WIN32 |
| 991 |
|
|
LPProcDynaLoader pDynaLoader; |
| 992 |
|
|
LPProcGetOSError pGetOSError; |
| 993 |
|
|
LPProcSpawnvp pSpawnvp; |
| 994 |
|
|
#endif |
| 995 |
|
|
LPProcLastHost pLastHost; |
| 996 |
|
|
LPProcPopenList pPopenList; |
| 997 |
|
|
LPProcGetTimeOfDay pGetTimeOfDay; |
| 998 |
|
|
}; |
| 999 |
|
|
|
| 1000 |
|
|
struct IPerlProcInfo |
| 1001 |
|
|
{ |
| 1002 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 1003 |
|
|
struct IPerlProc perlProcList; |
| 1004 |
|
|
}; |
| 1005 |
|
|
|
| 1006 |
|
|
#define PerlProc_abort() \ |
| 1007 |
|
|
(*PL_Proc->pAbort)(PL_Proc) |
| 1008 |
|
|
#define PerlProc_crypt(c,s) \ |
| 1009 |
|
|
(*PL_Proc->pCrypt)(PL_Proc, (c), (s)) |
| 1010 |
|
|
#define PerlProc_exit(s) \ |
| 1011 |
|
|
(*PL_Proc->pExit)(PL_Proc, (s)) |
| 1012 |
|
|
#define PerlProc__exit(s) \ |
| 1013 |
|
|
(*PL_Proc->p_Exit)(PL_Proc, (s)) |
| 1014 |
|
|
#define PerlProc_execl(c, w, x, y, z) \ |
| 1015 |
|
|
(*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z)) |
| 1016 |
|
|
#define PerlProc_execv(c, a) \ |
| 1017 |
|
|
(*PL_Proc->pExecv)(PL_Proc, (c), (a)) |
| 1018 |
|
|
#define PerlProc_execvp(c, a) \ |
| 1019 |
|
|
(*PL_Proc->pExecvp)(PL_Proc, (c), (a)) |
| 1020 |
|
|
#define PerlProc_getuid() \ |
| 1021 |
|
|
(*PL_Proc->pGetuid)(PL_Proc) |
| 1022 |
|
|
#define PerlProc_geteuid() \ |
| 1023 |
|
|
(*PL_Proc->pGeteuid)(PL_Proc) |
| 1024 |
|
|
#define PerlProc_getgid() \ |
| 1025 |
|
|
(*PL_Proc->pGetgid)(PL_Proc) |
| 1026 |
|
|
#define PerlProc_getegid() \ |
| 1027 |
|
|
(*PL_Proc->pGetegid)(PL_Proc) |
| 1028 |
|
|
#define PerlProc_getlogin() \ |
| 1029 |
|
|
(*PL_Proc->pGetlogin)(PL_Proc) |
| 1030 |
|
|
#define PerlProc_kill(i, a) \ |
| 1031 |
|
|
(*PL_Proc->pKill)(PL_Proc, (i), (a)) |
| 1032 |
|
|
#define PerlProc_killpg(i, a) \ |
| 1033 |
|
|
(*PL_Proc->pKillpg)(PL_Proc, (i), (a)) |
| 1034 |
|
|
#define PerlProc_pause() \ |
| 1035 |
|
|
(*PL_Proc->pPauseProc)(PL_Proc) |
| 1036 |
|
|
#define PerlProc_popen(c, m) \ |
| 1037 |
|
|
(*PL_Proc->pPopen)(PL_Proc, (c), (m)) |
| 1038 |
|
|
#define PerlProc_popen_list(m, n, a) \ |
| 1039 |
|
|
(*PL_Proc->pPopenList)(PL_Proc, (m), (n), (a)) |
| 1040 |
|
|
#define PerlProc_pclose(f) \ |
| 1041 |
|
|
(*PL_Proc->pPclose)(PL_Proc, (f)) |
| 1042 |
|
|
#define PerlProc_pipe(fd) \ |
| 1043 |
|
|
(*PL_Proc->pPipe)(PL_Proc, (fd)) |
| 1044 |
|
|
#define PerlProc_setuid(u) \ |
| 1045 |
|
|
(*PL_Proc->pSetuid)(PL_Proc, (u)) |
| 1046 |
|
|
#define PerlProc_setgid(g) \ |
| 1047 |
|
|
(*PL_Proc->pSetgid)(PL_Proc, (g)) |
| 1048 |
|
|
#define PerlProc_sleep(t) \ |
| 1049 |
|
|
(*PL_Proc->pSleep)(PL_Proc, (t)) |
| 1050 |
|
|
#define PerlProc_times(t) \ |
| 1051 |
|
|
(*PL_Proc->pTimes)(PL_Proc, (t)) |
| 1052 |
|
|
#define PerlProc_wait(t) \ |
| 1053 |
|
|
(*PL_Proc->pWait)(PL_Proc, (t)) |
| 1054 |
|
|
#define PerlProc_waitpid(p,s,f) \ |
| 1055 |
|
|
(*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f)) |
| 1056 |
|
|
#define PerlProc_signal(n, h) \ |
| 1057 |
|
|
(*PL_Proc->pSignal)(PL_Proc, (n), (h)) |
| 1058 |
|
|
#define PerlProc_fork() \ |
| 1059 |
|
|
(*PL_Proc->pFork)(PL_Proc) |
| 1060 |
|
|
#define PerlProc_getpid() \ |
| 1061 |
|
|
(*PL_Proc->pGetpid)(PL_Proc) |
| 1062 |
|
|
#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) |
| 1063 |
|
|
#define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) |
| 1064 |
|
|
|
| 1065 |
|
|
#ifdef WIN32 |
| 1066 |
|
|
#define PerlProc_DynaLoad(f) \ |
| 1067 |
|
|
(*PL_Proc->pDynaLoader)(PL_Proc, (f)) |
| 1068 |
|
|
#define PerlProc_GetOSError(s,e) \ |
| 1069 |
|
|
(*PL_Proc->pGetOSError)(PL_Proc, (s), (e)) |
| 1070 |
|
|
#define PerlProc_spawnvp(m, c, a) \ |
| 1071 |
|
|
(*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a)) |
| 1072 |
|
|
#endif |
| 1073 |
|
|
#define PerlProc_lasthost() \ |
| 1074 |
|
|
(*PL_Proc->pLastHost)(PL_Proc) |
| 1075 |
|
|
#define PerlProc_gettimeofday(t,z) \ |
| 1076 |
|
|
(*PL_Proc->pGetTimeOfDay)(PL_Proc,(t),(z)) |
| 1077 |
|
|
|
| 1078 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 1079 |
|
|
|
| 1080 |
|
|
#define PerlProc_abort() abort() |
| 1081 |
|
|
#define PerlProc_crypt(c,s) crypt((c), (s)) |
| 1082 |
|
|
#define PerlProc_exit(s) exit((s)) |
| 1083 |
|
|
#define PerlProc__exit(s) _exit((s)) |
| 1084 |
|
|
#define PerlProc_execl(c,w,x,y,z) \ |
| 1085 |
|
|
execl((c), (w), (x), (y), (z)) |
| 1086 |
|
|
#define PerlProc_execv(c, a) execv((c), (a)) |
| 1087 |
|
|
#define PerlProc_execvp(c, a) execvp((c), (a)) |
| 1088 |
|
|
#define PerlProc_getuid() getuid() |
| 1089 |
|
|
#define PerlProc_geteuid() geteuid() |
| 1090 |
|
|
#define PerlProc_getgid() getgid() |
| 1091 |
|
|
#define PerlProc_getegid() getegid() |
| 1092 |
|
|
#define PerlProc_getlogin() getlogin() |
| 1093 |
|
|
#define PerlProc_kill(i, a) kill((i), (a)) |
| 1094 |
|
|
#define PerlProc_killpg(i, a) killpg((i), (a)) |
| 1095 |
|
|
#define PerlProc_pause() Pause() |
| 1096 |
|
|
#define PerlProc_popen(c, m) my_popen((c), (m)) |
| 1097 |
|
|
#define PerlProc_popen_list(m,n,a) my_popen_list((m),(n),(a)) |
| 1098 |
|
|
#define PerlProc_pclose(f) my_pclose((f)) |
| 1099 |
|
|
#define PerlProc_pipe(fd) pipe((fd)) |
| 1100 |
|
|
#define PerlProc_setuid(u) setuid((u)) |
| 1101 |
|
|
#define PerlProc_setgid(g) setgid((g)) |
| 1102 |
|
|
#define PerlProc_sleep(t) sleep((t)) |
| 1103 |
|
|
#define PerlProc_times(t) times((t)) |
| 1104 |
|
|
#define PerlProc_wait(t) wait((t)) |
| 1105 |
|
|
#define PerlProc_waitpid(p,s,f) waitpid((p), (s), (f)) |
| 1106 |
|
|
#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) |
| 1107 |
|
|
#define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) |
| 1108 |
|
|
#define PerlProc_signal(n, h) signal((n), (h)) |
| 1109 |
|
|
#define PerlProc_fork() my_fork() |
| 1110 |
|
|
#define PerlProc_getpid() getpid() |
| 1111 |
|
|
#define PerlProc_gettimeofday(t,z) gettimeofday((t),(z)) |
| 1112 |
|
|
|
| 1113 |
|
|
#ifdef WIN32 |
| 1114 |
|
|
#define PerlProc_DynaLoad(f) \ |
| 1115 |
|
|
win32_dynaload((f)) |
| 1116 |
|
|
#define PerlProc_GetOSError(s,e) \ |
| 1117 |
|
|
win32_str_os_error((s), (e)) |
| 1118 |
|
|
#define PerlProc_spawnvp(m, c, a) \ |
| 1119 |
|
|
win32_spawnvp((m), (c), (a)) |
| 1120 |
|
|
#undef PerlProc_signal |
| 1121 |
|
|
#define PerlProc_signal(n, h) win32_signal((n), (h)) |
| 1122 |
|
|
#endif |
| 1123 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 1124 |
|
|
|
| 1125 |
|
|
/* |
| 1126 |
|
|
Interface for perl socket functions |
| 1127 |
|
|
*/ |
| 1128 |
|
|
|
| 1129 |
|
|
#if defined(PERL_IMPLICIT_SYS) |
| 1130 |
|
|
|
| 1131 |
|
|
/* PerlSock */ |
| 1132 |
|
|
struct IPerlSock; |
| 1133 |
|
|
struct IPerlSockInfo; |
| 1134 |
|
|
typedef u_long (*LPHtonl)(struct IPerlSock*, u_long); |
| 1135 |
|
|
typedef u_short (*LPHtons)(struct IPerlSock*, u_short); |
| 1136 |
|
|
typedef u_long (*LPNtohl)(struct IPerlSock*, u_long); |
| 1137 |
|
|
typedef u_short (*LPNtohs)(struct IPerlSock*, u_short); |
| 1138 |
|
|
typedef SOCKET (*LPAccept)(struct IPerlSock*, SOCKET, |
| 1139 |
|
|
struct sockaddr*, int*); |
| 1140 |
|
|
typedef int (*LPBind)(struct IPerlSock*, SOCKET, |
| 1141 |
|
|
const struct sockaddr*, int); |
| 1142 |
|
|
typedef int (*LPConnect)(struct IPerlSock*, SOCKET, |
| 1143 |
|
|
const struct sockaddr*, int); |
| 1144 |
|
|
typedef void (*LPEndhostent)(struct IPerlSock*); |
| 1145 |
|
|
typedef void (*LPEndnetent)(struct IPerlSock*); |
| 1146 |
|
|
typedef void (*LPEndprotoent)(struct IPerlSock*); |
| 1147 |
|
|
typedef void (*LPEndservent)(struct IPerlSock*); |
| 1148 |
|
|
typedef int (*LPGethostname)(struct IPerlSock*, char*, int); |
| 1149 |
|
|
typedef int (*LPGetpeername)(struct IPerlSock*, SOCKET, |
| 1150 |
|
|
struct sockaddr*, int*); |
| 1151 |
|
|
typedef struct hostent* (*LPGethostbyaddr)(struct IPerlSock*, const char*, |
| 1152 |
|
|
int, int); |
| 1153 |
|
|
typedef struct hostent* (*LPGethostbyname)(struct IPerlSock*, const char*); |
| 1154 |
|
|
typedef struct hostent* (*LPGethostent)(struct IPerlSock*); |
| 1155 |
|
|
typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int); |
| 1156 |
|
|
typedef struct netent* (*LPGetnetbyname)(struct IPerlSock*, const char*); |
| 1157 |
|
|
typedef struct netent* (*LPGetnetent)(struct IPerlSock*); |
| 1158 |
|
|
typedef struct protoent*(*LPGetprotobyname)(struct IPerlSock*, const char*); |
| 1159 |
|
|
typedef struct protoent*(*LPGetprotobynumber)(struct IPerlSock*, int); |
| 1160 |
|
|
typedef struct protoent*(*LPGetprotoent)(struct IPerlSock*); |
| 1161 |
|
|
typedef struct servent* (*LPGetservbyname)(struct IPerlSock*, const char*, |
| 1162 |
|
|
const char*); |
| 1163 |
|
|
typedef struct servent* (*LPGetservbyport)(struct IPerlSock*, int, |
| 1164 |
|
|
const char*); |
| 1165 |
|
|
typedef struct servent* (*LPGetservent)(struct IPerlSock*); |
| 1166 |
|
|
typedef int (*LPGetsockname)(struct IPerlSock*, SOCKET, |
| 1167 |
|
|
struct sockaddr*, int*); |
| 1168 |
|
|
typedef int (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int, |
| 1169 |
|
|
char*, int*); |
| 1170 |
|
|
typedef unsigned long (*LPInetAddr)(struct IPerlSock*, const char*); |
| 1171 |
|
|
typedef char* (*LPInetNtoa)(struct IPerlSock*, struct in_addr); |
| 1172 |
|
|
typedef int (*LPListen)(struct IPerlSock*, SOCKET, int); |
| 1173 |
|
|
typedef int (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int); |
| 1174 |
|
|
typedef int (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int, |
| 1175 |
|
|
int, struct sockaddr*, int*); |
| 1176 |
|
|
typedef int (*LPSelect)(struct IPerlSock*, int, char*, char*, |
| 1177 |
|
|
char*, const struct timeval*); |
| 1178 |
|
|
typedef int (*LPSend)(struct IPerlSock*, SOCKET, const char*, int, |
| 1179 |
|
|
int); |
| 1180 |
|
|
typedef int (*LPSendto)(struct IPerlSock*, SOCKET, const char*, |
| 1181 |
|
|
int, int, const struct sockaddr*, int); |
| 1182 |
|
|
typedef void (*LPSethostent)(struct IPerlSock*, int); |
| 1183 |
|
|
typedef void (*LPSetnetent)(struct IPerlSock*, int); |
| 1184 |
|
|
typedef void (*LPSetprotoent)(struct IPerlSock*, int); |
| 1185 |
|
|
typedef void (*LPSetservent)(struct IPerlSock*, int); |
| 1186 |
|
|
typedef int (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int, |
| 1187 |
|
|
const char*, int); |
| 1188 |
|
|
typedef int (*LPShutdown)(struct IPerlSock*, SOCKET, int); |
| 1189 |
|
|
typedef SOCKET (*LPSocket)(struct IPerlSock*, int, int, int); |
| 1190 |
|
|
typedef int (*LPSocketpair)(struct IPerlSock*, int, int, int, |
| 1191 |
|
|
int*); |
| 1192 |
|
|
#ifdef WIN32 |
| 1193 |
|
|
typedef int (*LPClosesocket)(struct IPerlSock*, SOCKET s); |
| 1194 |
|
|
#endif |
| 1195 |
|
|
|
| 1196 |
|
|
struct IPerlSock |
| 1197 |
|
|
{ |
| 1198 |
|
|
LPHtonl pHtonl; |
| 1199 |
|
|
LPHtons pHtons; |
| 1200 |
|
|
LPNtohl pNtohl; |
| 1201 |
|
|
LPNtohs pNtohs; |
| 1202 |
|
|
LPAccept pAccept; |
| 1203 |
|
|
LPBind pBind; |
| 1204 |
|
|
LPConnect pConnect; |
| 1205 |
|
|
LPEndhostent pEndhostent; |
| 1206 |
|
|
LPEndnetent pEndnetent; |
| 1207 |
|
|
LPEndprotoent pEndprotoent; |
| 1208 |
|
|
LPEndservent pEndservent; |
| 1209 |
|
|
LPGethostname pGethostname; |
| 1210 |
|
|
LPGetpeername pGetpeername; |
| 1211 |
|
|
LPGethostbyaddr pGethostbyaddr; |
| 1212 |
|
|
LPGethostbyname pGethostbyname; |
| 1213 |
|
|
LPGethostent pGethostent; |
| 1214 |
|
|
LPGetnetbyaddr pGetnetbyaddr; |
| 1215 |
|
|
LPGetnetbyname pGetnetbyname; |
| 1216 |
|
|
LPGetnetent pGetnetent; |
| 1217 |
|
|
LPGetprotobyname pGetprotobyname; |
| 1218 |
|
|
LPGetprotobynumber pGetprotobynumber; |
| 1219 |
|
|
LPGetprotoent pGetprotoent; |
| 1220 |
|
|
LPGetservbyname pGetservbyname; |
| 1221 |
|
|
LPGetservbyport pGetservbyport; |
| 1222 |
|
|
LPGetservent pGetservent; |
| 1223 |
|
|
LPGetsockname pGetsockname; |
| 1224 |
|
|
LPGetsockopt pGetsockopt; |
| 1225 |
|
|
LPInetAddr pInetAddr; |
| 1226 |
|
|
LPInetNtoa pInetNtoa; |
| 1227 |
|
|
LPListen pListen; |
| 1228 |
|
|
LPRecv pRecv; |
| 1229 |
|
|
LPRecvfrom pRecvfrom; |
| 1230 |
|
|
LPSelect pSelect; |
| 1231 |
|
|
LPSend pSend; |
| 1232 |
|
|
LPSendto pSendto; |
| 1233 |
|
|
LPSethostent pSethostent; |
| 1234 |
|
|
LPSetnetent pSetnetent; |
| 1235 |
|
|
LPSetprotoent pSetprotoent; |
| 1236 |
|
|
LPSetservent pSetservent; |
| 1237 |
|
|
LPSetsockopt pSetsockopt; |
| 1238 |
|
|
LPShutdown pShutdown; |
| 1239 |
|
|
LPSocket pSocket; |
| 1240 |
|
|
LPSocketpair pSocketpair; |
| 1241 |
|
|
#ifdef WIN32 |
| 1242 |
|
|
LPClosesocket pClosesocket; |
| 1243 |
|
|
#endif |
| 1244 |
|
|
}; |
| 1245 |
|
|
|
| 1246 |
|
|
struct IPerlSockInfo |
| 1247 |
|
|
{ |
| 1248 |
|
|
unsigned long nCount; /* number of entries expected */ |
| 1249 |
|
|
struct IPerlSock perlSockList; |
| 1250 |
|
|
}; |
| 1251 |
|
|
|
| 1252 |
|
|
#define PerlSock_htonl(x) \ |
| 1253 |
|
|
(*PL_Sock->pHtonl)(PL_Sock, x) |
| 1254 |
|
|
#define PerlSock_htons(x) \ |
| 1255 |
|
|
(*PL_Sock->pHtons)(PL_Sock, x) |
| 1256 |
|
|
#define PerlSock_ntohl(x) \ |
| 1257 |
|
|
(*PL_Sock->pNtohl)(PL_Sock, x) |
| 1258 |
|
|
#define PerlSock_ntohs(x) \ |
| 1259 |
|
|
(*PL_Sock->pNtohs)(PL_Sock, x) |
| 1260 |
|
|
#define PerlSock_accept(s, a, l) \ |
| 1261 |
|
|
(*PL_Sock->pAccept)(PL_Sock, s, a, l) |
| 1262 |
|
|
#define PerlSock_bind(s, n, l) \ |
| 1263 |
|
|
(*PL_Sock->pBind)(PL_Sock, s, n, l) |
| 1264 |
|
|
#define PerlSock_connect(s, n, l) \ |
| 1265 |
|
|
(*PL_Sock->pConnect)(PL_Sock, s, n, l) |
| 1266 |
|
|
#define PerlSock_endhostent() \ |
| 1267 |
|
|
(*PL_Sock->pEndhostent)(PL_Sock) |
| 1268 |
|
|
#define PerlSock_endnetent() \ |
| 1269 |
|
|
(*PL_Sock->pEndnetent)(PL_Sock) |
| 1270 |
|
|
#define PerlSock_endprotoent() \ |
| 1271 |
|
|
(*PL_Sock->pEndprotoent)(PL_Sock) |
| 1272 |
|
|
#define PerlSock_endservent() \ |
| 1273 |
|
|
(*PL_Sock->pEndservent)(PL_Sock) |
| 1274 |
|
|
#define PerlSock_gethostbyaddr(a, l, t) \ |
| 1275 |
|
|
(*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t) |
| 1276 |
|
|
#define PerlSock_gethostbyname(n) \ |
| 1277 |
|
|
(*PL_Sock->pGethostbyname)(PL_Sock, n) |
| 1278 |
|
|
#define PerlSock_gethostent() \ |
| 1279 |
|
|
(*PL_Sock->pGethostent)(PL_Sock) |
| 1280 |
|
|
#define PerlSock_gethostname(n, l) \ |
| 1281 |
|
|
(*PL_Sock->pGethostname)(PL_Sock, n, l) |
| 1282 |
|
|
#define PerlSock_getnetbyaddr(n, t) \ |
| 1283 |
|
|
(*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t) |
| 1284 |
|
|
#define PerlSock_getnetbyname(c) \ |
| 1285 |
|
|
(*PL_Sock->pGetnetbyname)(PL_Sock, c) |
| 1286 |
|
|
#define PerlSock_getnetent() \ |
| 1287 |
|
|
(*PL_Sock->pGetnetent)(PL_Sock) |
| 1288 |
|
|
#define PerlSock_getpeername(s, n, l) \ |
| 1289 |
|
|
(*PL_Sock->pGetpeername)(PL_Sock, s, n, l) |
| 1290 |
|
|
#define PerlSock_getprotobyname(n) \ |
| 1291 |
|
|
(*PL_Sock->pGetprotobyname)(PL_Sock, n) |
| 1292 |
|
|
#define PerlSock_getprotobynumber(n) \ |
| 1293 |
|
|
(*PL_Sock->pGetprotobynumber)(PL_Sock, n) |
| 1294 |
|
|
#define PerlSock_getprotoent() \ |
| 1295 |
|
|
(*PL_Sock->pGetprotoent)(PL_Sock) |
| 1296 |
|
|
#define PerlSock_getservbyname(n, p) \ |
| 1297 |
|
|
(*PL_Sock->pGetservbyname)(PL_Sock, n, p) |
| 1298 |
|
|
#define PerlSock_getservbyport(port, p) \ |
| 1299 |
|
|
(*PL_Sock->pGetservbyport)(PL_Sock, port, p) |
| 1300 |
|
|
#define PerlSock_getservent() \ |
| 1301 |
|
|
(*PL_Sock->pGetservent)(PL_Sock) |
| 1302 |
|
|
#define PerlSock_getsockname(s, n, l) \ |
| 1303 |
|
|
(*PL_Sock->pGetsockname)(PL_Sock, s, n, l) |
| 1304 |
|
|
#define PerlSock_getsockopt(s,l,n,v,i) \ |
| 1305 |
|
|
(*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i) |
| 1306 |
|
|
#define PerlSock_inet_addr(c) \ |
| 1307 |
|
|
(*PL_Sock->pInetAddr)(PL_Sock, c) |
| 1308 |
|
|
#define PerlSock_inet_ntoa(i) \ |
| 1309 |
|
|
(*PL_Sock->pInetNtoa)(PL_Sock, i) |
| 1310 |
|
|
#define PerlSock_listen(s, b) \ |
| 1311 |
|
|
(*PL_Sock->pListen)(PL_Sock, s, b) |
| 1312 |
|
|
#define PerlSock_recv(s, b, l, f) \ |
| 1313 |
|
|
(*PL_Sock->pRecv)(PL_Sock, s, b, l, f) |
| 1314 |
|
|
#define PerlSock_recvfrom(s,b,l,f,from,fromlen) \ |
| 1315 |
|
|
(*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen) |
| 1316 |
|
|
#define PerlSock_select(n, r, w, e, t) \ |
| 1317 |
|
|
(*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t) |
| 1318 |
|
|
#define PerlSock_send(s, b, l, f) \ |
| 1319 |
|
|
(*PL_Sock->pSend)(PL_Sock, s, b, l, f) |
| 1320 |
|
|
#define PerlSock_sendto(s, b, l, f, t, tlen) \ |
| 1321 |
|
|
(*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen) |
| 1322 |
|
|
#define PerlSock_sethostent(f) \ |
| 1323 |
|
|
(*PL_Sock->pSethostent)(PL_Sock, f) |
| 1324 |
|
|
#define PerlSock_setnetent(f) \ |
| 1325 |
|
|
(*PL_Sock->pSetnetent)(PL_Sock, f) |
| 1326 |
|
|
#define PerlSock_setprotoent(f) \ |
| 1327 |
|
|
(*PL_Sock->pSetprotoent)(PL_Sock, f) |
| 1328 |
|
|
#define PerlSock_setservent(f) \ |
| 1329 |
|
|
(*PL_Sock->pSetservent)(PL_Sock, f) |
| 1330 |
|
|
#define PerlSock_setsockopt(s, l, n, v, len) \ |
| 1331 |
|
|
(*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len) |
| 1332 |
|
|
#define PerlSock_shutdown(s, h) \ |
| 1333 |
|
|
(*PL_Sock->pShutdown)(PL_Sock, s, h) |
| 1334 |
|
|
#define PerlSock_socket(a, t, p) \ |
| 1335 |
|
|
(*PL_Sock->pSocket)(PL_Sock, a, t, p) |
| 1336 |
|
|
#define PerlSock_socketpair(a, t, p, f) \ |
| 1337 |
|
|
(*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f) |
| 1338 |
|
|
|
| 1339 |
|
|
#ifdef WIN32 |
| 1340 |
|
|
#define PerlSock_closesocket(s) \ |
| 1341 |
|
|
(*PL_Sock->pClosesocket)(PL_Sock, s) |
| 1342 |
|
|
#endif |
| 1343 |
|
|
|
| 1344 |
|
|
#else /* PERL_IMPLICIT_SYS */ |
| 1345 |
|
|
|
| 1346 |
|
|
#define PerlSock_htonl(x) htonl(x) |
| 1347 |
|
|
#define PerlSock_htons(x) htons(x) |
| 1348 |
|
|
#define PerlSock_ntohl(x) ntohl(x) |
| 1349 |
|
|
#define PerlSock_ntohs(x) ntohs(x) |
| 1350 |
|
|
#define PerlSock_accept(s, a, l) accept(s, a, l) |
| 1351 |
|
|
#define PerlSock_bind(s, n, l) bind(s, n, l) |
| 1352 |
|
|
#define PerlSock_connect(s, n, l) connect(s, n, l) |
| 1353 |
|
|
|
| 1354 |
|
|
#define PerlSock_gethostbyaddr(a, l, t) gethostbyaddr(a, l, t) |
| 1355 |
|
|
#define PerlSock_gethostbyname(n) gethostbyname(n) |
| 1356 |
|
|
#define PerlSock_gethostent gethostent |
| 1357 |
|
|
#define PerlSock_endhostent endhostent |
| 1358 |
|
|
#define PerlSock_gethostname(n, l) gethostname(n, l) |
| 1359 |
|
|
|
| 1360 |
|
|
#define PerlSock_getnetbyaddr(n, t) getnetbyaddr(n, t) |
| 1361 |
|
|
#define PerlSock_getnetbyname(n) getnetbyname(n) |
| 1362 |
|
|
#define PerlSock_getnetent getnetent |
| 1363 |
|
|
#define PerlSock_endnetent endnetent |
| 1364 |
|
|
#define PerlSock_getpeername(s, n, l) getpeername(s, n, l) |
| 1365 |
|
|
|
| 1366 |
|
|
#define PerlSock_getprotobyname(n) getprotobyname(n) |
| 1367 |
|
|
#define PerlSock_getprotobynumber(n) getprotobynumber(n) |
| 1368 |
|
|
#define PerlSock_getprotoent getprotoent |
| 1369 |
|
|
#define PerlSock_endprotoent endprotoent |
| 1370 |
|
|
|
| 1371 |
|
|
#define PerlSock_getservbyname(n, p) getservbyname(n, p) |
| 1372 |
|
|
#define PerlSock_getservbyport(port, p) getservbyport(port, p) |
| 1373 |
|
|
#define PerlSock_getservent getservent |
| 1374 |
|
|
#define PerlSock_endservent endservent |
| 1375 |
|
|
|
| 1376 |
|
|
#define PerlSock_getsockname(s, n, l) getsockname(s, n, l) |
| 1377 |
|
|
#define PerlSock_getsockopt(s,l,n,v,i) getsockopt(s, l, n, v, i) |
| 1378 |
|
|
#define PerlSock_inet_addr(c) inet_addr(c) |
| 1379 |
|
|
#define PerlSock_inet_ntoa(i) inet_ntoa(i) |
| 1380 |
|
|
#define PerlSock_listen(s, b) listen(s, b) |
| 1381 |
|
|
#define PerlSock_recv(s, b, l, f) recv(s, b, l, f) |
| 1382 |
|
|
#define PerlSock_recvfrom(s, b, l, f, from, fromlen) \ |
| 1383 |
|
|
recvfrom(s, b, l, f, from, fromlen) |
| 1384 |
|
|
#define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t) |
| 1385 |
|
|
#define PerlSock_send(s, b, l, f) send(s, b, l, f) |
| 1386 |
|
|
#define PerlSock_sendto(s, b, l, f, t, tlen) \ |
| 1387 |
|
|
sendto(s, b, l, f, t, tlen) |
| 1388 |
|
|
#define PerlSock_sethostent(f) sethostent(f) |
| 1389 |
|
|
#define PerlSock_setnetent(f) setnetent(f) |
| 1390 |
|
|
#define PerlSock_setprotoent(f) setprotoent(f) |
| 1391 |
|
|
#define PerlSock_setservent(f) setservent(f) |
| 1392 |
|
|
#define PerlSock_setsockopt(s, l, n, v, len) \ |
| 1393 |
|
|
setsockopt(s, l, n, v, len) |
| 1394 |
|
|
#define PerlSock_shutdown(s, h) shutdown(s, h) |
| 1395 |
|
|
#define PerlSock_socket(a, t, p) socket(a, t, p) |
| 1396 |
|
|
#define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f) |
| 1397 |
|
|
|
| 1398 |
|
|
#ifdef WIN32 |
| 1399 |
|
|
#define PerlSock_closesocket(s) closesocket(s) |
| 1400 |
|
|
#endif |
| 1401 |
|
|
|
| 1402 |
|
|
#endif /* PERL_IMPLICIT_SYS */ |
| 1403 |
|
|
|
| 1404 |
|
|
#endif /* __Inc__IPerl___ */ |
| 1405 |
|
|
|