From: Perl 5 Porters Date: Fri, 26 Jul 1996 20:42:41 +0000 (+0000) Subject: perl 5.003_01: perl.h X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0c30d9ecc2111c0458e70394c4211e614fce29d3;p=p5sagit%2Fp5-mst-13.2.git perl 5.003_01: perl.h Update NeXT support Make HIDEMYMALLOC the default Add home-grown calloc() to MYMALLOC #defines Drop long long support under UTS Add new distinct GV type Add Plan9 support Use variable BIN_SH to find shell Allow redirection of output usually sent to stderr, so it can be handled separately from normal output Don't log memory allocations until we've got an interpreter set up Don't doubly define DEBUGGING_MSTATS Add globals and macros for improved signal handling, duplicate "my", strict untie, and debugger updates Rename some globals to avoid collisions with system headers --- diff --git a/perl.h b/perl.h index bfb9210..60b11f1 100644 --- a/perl.h +++ b/perl.h @@ -102,11 +102,18 @@ #endif #include + #ifdef USE_NEXT_CTYPE + +#if NX_CURRENT_COMPILER_RELEASE >= 400 +#include +#else /* NX_CURRENT_COMPILER_RELEASE < 400 */ #include -#else +#endif /* NX_CURRENT_COMPILER_RELEASE >= 400 */ + +#else /* !USE_NEXT_CTYPE */ #include -#endif +#endif /* USE_NEXT_CTYPE */ #ifdef I_LOCALE #include @@ -136,14 +143,16 @@ proto.h instead. I guess. The patch had no explanation. */ #ifdef MYMALLOC -# ifdef HIDEMYMALLOC +# ifndef DONT_HIDEMYMALLOC # define malloc Mymalloc # define realloc Myremalloc # define free Myfree +# define calloc Mycalloc # endif # define safemalloc malloc # define saferealloc realloc # define safefree free +# define safecalloc calloc #endif #define MEM_SIZE Size_t @@ -493,7 +502,7 @@ # define SLOPPYDIVIDE #endif -#if defined(cray) || defined(convex) || defined (uts) || BYTEORDER > 0xffff +#if defined(cray) || defined(convex) || BYTEORDER > 0xffff # define HAS_QUAD #endif @@ -505,7 +514,7 @@ # ifdef cray # define Quad_t int # else -# if defined(convex) || defined (uts) +# if defined(convex) # define Quad_t long long # else # define Quad_t long @@ -542,7 +551,7 @@ typedef struct hv HV; typedef struct cv CV; typedef struct regexp REGEXP; typedef struct gp GP; -typedef struct sv GV; +typedef struct gv GV; typedef struct io IO; typedef struct context CONTEXT; typedef struct block BLOCK; @@ -581,10 +590,18 @@ typedef I32 (*filter_t) _((int, SV *, int)); # if defined(VMS) # include "vmsish.h" # else -# include "unixish.h" +# if defined(PLAN9) +# include "./plan9/plan9ish.h" +# else +# include "unixish.h" +# endif # endif #endif +#ifndef SH_PATH /* May be a variable. */ +# define SH_PATH BIN_SH +#endif + #ifndef HAS_PAUSE #define pause() sleep((32767<<16)+32767) #endif @@ -730,6 +747,9 @@ Gid_t getegid _((void)); #endif #ifdef DEBUGGING +#ifndef Perl_debug_log +#define Perl_debug_log stderr +#endif #define YYDEBUG 1 #define DEB(a) a #define DEBUG(a) if (debug) a @@ -740,7 +760,7 @@ Gid_t getegid _((void)); #define DEBUG_o(a) if (debug & 16) a #define DEBUG_c(a) if (debug & 32) a #define DEBUG_P(a) if (debug & 64) a -#define DEBUG_m(a) if (debug & 128) a +#define DEBUG_m(a) if (curinterp && debug & 128) a #define DEBUG_f(a) if (debug & 256) a #define DEBUG_r(a) if (debug & 512) a #define DEBUG_x(a) if (debug & 1024) a @@ -854,7 +874,9 @@ I32 unlnk _((char*)); # define register # endif # ifdef MYMALLOC -# define DEBUGGING_MSTATS +# ifndef DEBUGGING_MSTATS +# define DEBUGGING_MSTATS +# endif # endif # define PAD_SV(po) pad_sv(po) #else @@ -867,9 +889,18 @@ I32 unlnk _((char*)); /* global state */ EXT PerlInterpreter * curinterp; /* currently running interpreter */ -#ifndef VMS /* VMS doesn't use environ array */ +/* VMS doesn't use environ array and NeXT has problems with crt0.o globals */ +#if !defined(VMS) && !(defined(NeXT) && defined(__DYNAMIC__)) extern char ** environ; /* environment variables supplied via exec */ -#endif +#else +# if defined(NeXT) && defined(__DYNAMIC__) + +# include +EXT char *** environ_pointer; +# define environ (*environ_pointer) +# endif +#endif /* environ processing */ + EXT int uid; /* current real user id */ EXT int euid; /* current effective user id */ EXT int gid; /* current real group id */ @@ -989,9 +1020,13 @@ EXT SV sv_yes; #ifdef DOINIT EXT char *sig_name[] = { SIG_NAME }; EXT int sig_num[] = { SIG_NUM }; +EXT SV * psig_ptr[sizeof(sig_num)/sizeof(*sig_num)]; +EXT SV * psig_name[sizeof(sig_num)/sizeof(*sig_num)]; #else EXT char *sig_name[]; EXT int sig_num[]; +EXT SV * psig_ptr[]; +EXT SV * psig_name[]; #endif #ifdef DOINIT @@ -1148,6 +1183,7 @@ EXT CV * compcv; /* currently compiling subroutine */ EXT AV * comppad; /* storage for lexically scoped temporaries */ EXT AV * comppad_name; /* variable names for "my" variables */ EXT I32 comppad_name_fill;/* last "introduced" variable offset */ +EXT I32 comppad_name_floor;/* start of vars in innermost block */ EXT I32 min_intro_pending;/* start of vars to introduce */ EXT I32 max_intro_pending;/* end of vars to introduce */ EXT I32 padix; /* max used index in current "register" pad */ @@ -1174,6 +1210,7 @@ EXT U32 hints; /* various compilation flags */ #define HINT_BLOCK_SCOPE 0x00000100 #define HINT_STRICT_SUBS 0x00000200 #define HINT_STRICT_VARS 0x00000400 +#define HINT_STRICT_UNTIE 0x00000800 /**************************************************************************/ /* This regexp stuff is global since it always happens within 1 expr eval */ @@ -1313,8 +1350,7 @@ IEXT HV * Idebstash; /* symbol table for perldb package */ IEXT SV * Icurstname; /* name of current package */ IEXT AV * Ibeginav; /* names of BEGIN subroutines */ IEXT AV * Iendav; /* names of END subroutines */ -IEXT AV * Ipad; /* storage for lexically scoped temporaries */ -IEXT AV * Ipadname; /* variable names for "my" variables */ +IEXT HV * Istrtab; /* shared string table */ /* memory management */ IEXT SV ** Itmps_stack; @@ -1360,6 +1396,7 @@ IEXT OP * Ieval_start; /* runtime control stuff */ IEXT COP * VOL Icurcop IINIT(&compiling); +IEXT COP * Icurcopdb IINIT(NULL); IEXT line_t Icopline IINIT(NOLINE); IEXT CONTEXT * Icxstack; IEXT I32 Icxstack_ix IINIT(-1); @@ -1368,7 +1405,7 @@ IEXT Sigjmp_buf Itop_env; IEXT I32 Irunlevel; /* stack stuff */ -IEXT AV * Istack; /* THE STACK */ +IEXT AV * Icurstack; /* THE STACK */ IEXT AV * Imainstack; /* the stack when nothing funny is happening */ IEXT SV ** Imystack_base; /* stack->array_ary */ IEXT SV ** Imystack_sp; /* stack pointer now */ @@ -1458,8 +1495,10 @@ EXT MGVTBL vtbl_envelem = {0, magic_setenv, 0, magic_clearenv, 0}; EXT MGVTBL vtbl_sig = {0, 0, 0, 0, 0}; -EXT MGVTBL vtbl_sigelem = {0, magic_setsig, - 0, 0, 0}; +EXT MGVTBL vtbl_sigelem = {magic_getsig, + magic_setsig, + 0, magic_clearsig, + 0}; EXT MGVTBL vtbl_pack = {0, 0, 0, magic_wipepack, 0}; EXT MGVTBL vtbl_packelem = {magic_getpack,