X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl.h;h=e8d0cc935256d07d5e183160a20bf75ca2c8e787;hb=0617aed7fc09c616342e9b0d35b7881d7c1472b1;hp=7b091719eff533c9733bda72081477a725432af4;hpb=1f5ae88c2684e44a679c8989ef332af3fc865544;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perl.h b/perl.h index 7b09171..e8d0cc9 100644 --- a/perl.h +++ b/perl.h @@ -31,7 +31,9 @@ # define PERL_IMPLICIT_CONTEXT # endif # ifndef PERL_IMPLICIT_SYS -/*# define PERL_IMPLICIT_SYS*/ /* XXX not done yet */ +# ifdef WIN32 +# define PERL_IMPLICIT_SYS /* XXX not implemented everywhere yet */ +# endif # endif #endif @@ -40,7 +42,9 @@ # define PERL_IMPLICIT_CONTEXT # endif # ifndef PERL_IMPLICIT_SYS -/*# define PERL_IMPLICIT_SYS*/ /* XXX not done yet */ +# ifdef WIN32 +# define PERL_IMPLICIT_SYS /* XXX not implemented everywhere yet */ +# endif # endif #endif @@ -86,8 +90,8 @@ the perl interpreter. | Perl Host | +-----------+ ^ - | - v + | + v +-----------+ +-----------+ | Perl Core |<->| Extension | +-----------+ +-----------+ ... @@ -684,16 +688,16 @@ Free_t Perl_mfree (Malloc_t where); #ifdef USE_THREADS # define ERRSV (thr->errsv) -# define ERRHV (thr->errhv) # define DEFSV THREADSV(0) # define SAVE_DEFSV save_threadsv(0) #else # define ERRSV GvSV(PL_errgv) -# define ERRHV GvHV(PL_errgv) # define DEFSV GvSV(PL_defgv) # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #endif /* USE_THREADS */ +#define ERRHV GvHV(PL_errgv) /* XXX unused, here for compatibility */ + #ifndef errno extern int errno; /* ANSI allows errno to be an lvalue expr. * For example in multithreaded environments @@ -1044,7 +1048,7 @@ Free_t Perl_mfree (Malloc_t where); # define IVSIZE LONGSIZE #endif #define IV_DIG (BIT_DIGITS(IVSIZE * 8)) -#define UV_DIG (BIT_DIGITS(IVSIZE * 8)) +#define UV_DIG (BIT_DIGITS(UVSIZE * 8)) /* * The macros INT2PTR and NUM2PTR are (despite their names) @@ -1073,9 +1077,7 @@ Free_t Perl_mfree (Malloc_t where); #define PTR2NV(p) NUM2PTR(NV,p) #ifdef USE_LONG_DOUBLE -# if defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE) -# define LDoub_t long double -# else +# if !(defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE)) # undef USE_LONG_DOUBLE /* Ouch! */ # endif #endif @@ -1119,43 +1121,48 @@ Free_t Perl_mfree (Malloc_t where); default value for printing floating point numbers in Gconvert. (see config.h) */ -#ifdef I_LIMITS -#include -#endif -#ifdef I_FLOAT -#include -#endif -#ifndef HAS_LDBL_DIG -#if LONG_DOUBLESIZE == 10 -#define LDBL_DIG 18 /* assume IEEE */ -#else -#if LONG_DOUBLESIZE == 16 -#define LDBL_DIG 33 /* assume IEEE */ -#else -#if LONG_DOUBLESIZE == DOUBLESIZE -#define LDBL_DIG DBL_DIG /* bummer */ -#endif -#endif -#endif -#endif +# ifdef I_LIMITS +# include +# endif +# ifdef I_FLOAT +# include +# endif +# ifndef HAS_LDBL_DIG +# if LONG_DOUBLESIZE == 10 +# define LDBL_DIG 18 /* assume IEEE */ +# else +# if LONG_DOUBLESIZE == 12 +# define LDBL_DIG 18 /* gcc? */ +# else +# if LONG_DOUBLESIZE == 16 +# define LDBL_DIG 33 /* assume IEEE */ +# else +# if LONG_DOUBLESIZE == DOUBLESIZE +# define LDBL_DIG DBL_DIG /* bummer */ +# endif +# endif +# endif +# endif +# endif #endif #ifdef USE_LONG_DOUBLE -# define HAS_LDOUB - typedef LDoub_t NV; + typedef long double NV; # define NVSIZE LONG_DOUBLESIZE # define NV_DIG LDBL_DIG -# define Perl_modf modfl -# define Perl_frexp frexpl -# define Perl_cos cosl -# define Perl_sin sinl -# define Perl_sqrt sqrtl -# define Perl_exp expl -# define Perl_log logl -# define Perl_atan2 atan2l -# define Perl_pow powl -# define Perl_floor floorl -# define Perl_fmod fmodl +# ifdef HAS_SQRTL +# define Perl_modf modfl +# define Perl_frexp frexpl +# define Perl_cos cosl +# define Perl_sin sinl +# define Perl_sqrt sqrtl +# define Perl_exp expl +# define Perl_log logl +# define Perl_atan2 atan2l +# define Perl_pow powl +# define Perl_floor floorl +# define Perl_fmod fmodl +# endif #else typedef double NV; # define NVSIZE DOUBLESIZE @@ -1388,9 +1395,6 @@ typedef struct loop LOOP; typedef struct Outrec Outrec; typedef struct interpreter PerlInterpreter; -#ifndef __BORLANDC__ -typedef struct ff FF; /* XXX not defined anywhere, should go? */ -#endif typedef struct sv SV; typedef struct av AV; typedef struct hv HV; @@ -1422,17 +1426,13 @@ typedef union any ANY; #include "handy.h" -#ifdef USE_64_BITS -# define USE_64_BIT_FILES -#endif - -#if defined(USE_64_BIT_FILES) || defined(USE_LARGE_FILES) -# define USE_64_BIT_OFFSETS /* Explicit */ +#if defined(USE_LARGE_FILES) +# define USE_64_BIT_RAWIO /* Explicit */ # define USE_64_BIT_STDIO #endif -#if LSEEKSIZE == 8 && !defined(USE_64_BIT_OFFSETS) -# define USE_64_BIT_OFFSETS /* Implicit */ +#if LSEEKSIZE == 8 && !defined(USE_64_BIT_RAWIO) +# define USE_64_BIT_RAWIO /* Implicit */ #endif /* Do we need FSEEKSIZE? */ @@ -1449,7 +1449,7 @@ typedef union any ANY; #define USE_FREOPEN64 #endif -#ifdef USE_64_BIT_OFFSETS +#ifdef USE_64_BIT_RAWIO # ifdef HAS_OFF64_T # undef Off_t # define Off_t off64_t @@ -1458,7 +1458,7 @@ typedef union any ANY; # endif /* Most 64-bit environments have defines like _LARGEFILE_SOURCE that * will trigger defines like the ones below. Some 64-bit environments, - * however, do not. */ + * however, do not. Therefore we have to explicitly mix and match. */ # if defined(USE_OPEN64) # define open open64 # endif @@ -1688,7 +1688,6 @@ typedef pthread_key_t perl_key; /* This defines a way to flush all output buffers. This may be a * performance issue, so we allow people to disable it. - * XXX the default needs a Configure test, as it may not work everywhere. */ #ifndef PERL_FLUSHALL_FOR_CHILD # if defined(FFLUSH_NULL) || defined(USE_SFIO) @@ -1770,7 +1769,8 @@ union any { I32 any_i32; IV any_iv; long any_long; - void (*any_dptr) (pTHXo_ void*); + void (*any_dptr) (void*); + void (*any_dxptr) (pTHXo_ void*); }; #endif @@ -1936,6 +1936,22 @@ typedef I32 CHECKPOINT; # endif #endif +#ifdef IV_IS_QUAD +# define UVuf PERL_PRIu64 +# define IVdf PERL_PRId64 +# define UVof PERL_PRIo64 +# define UVxf PERL_PRIx64 +#else +# if LONGSIZE == 4 +# define UVuf "lu" +# define IVdf "ld" +# define UVof "lo" +# define UVxf "lx" +# else + /* Any good ideas? */ +# endif +#endif + /* Used with UV/IV arguments: */ /* XXXX: need to speed it up */ #define CLUMP_2UV(iv) ((iv) < 0 ? 0 : (UV)(iv)) @@ -1963,7 +1979,13 @@ Gid_t getegid (void); #endif #ifndef Perl_debug_log -#define Perl_debug_log PerlIO_stderr() +# define Perl_debug_log PerlIO_stderr() +#endif + +#ifndef Perl_error_log +# define Perl_error_log (PL_stderrgv \ + ? IoOFP(GvIOp(PL_stderrgv)) \ + : PerlIO_stderr()) #endif #ifdef DEBUGGING @@ -2559,6 +2581,7 @@ typedef void (CPERLscope(*regfree_t)) (pTHX_ struct regexp* r); int Perl_yylex(pTHX_ YYSTYPE *lvalp, int *lcharp); #endif +typedef void (*DESTRUCTORFUNC_NOCONTEXT_t) (void*); typedef void (*DESTRUCTORFUNC_t) (pTHXo_ void*); typedef void (*SVFUNC_t) (pTHXo_ SV*); typedef I32 (*SVCOMPARE_t) (pTHXo_ SV*, SV*); @@ -3136,12 +3159,21 @@ typedef struct am_table_short AMTS; # include # ifndef HAS_UNION_SEMUN /* Provide the union semun. */ union semun { - int val; - struct semid_ds *buf; - unsigned short *array; + int val; + struct semid_ds *buf; + unsigned short *array; }; # endif # ifdef USE_SEMCTL_SEMUN +# ifdef IRIX32_SEMUN_BROKEN_BY_GCC + union gccbug_semun { + int val; + struct semid_ds *buf; + unsigned short *array; + char __dummy[5]; + }; +# define semun gccbug_semun +# endif # define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun) # else # ifdef USE_SEMCTL_SEMID_DS @@ -3170,12 +3202,23 @@ typedef struct am_table_short AMTS; # include /* for f?statvfs() */ #endif #ifdef I_SYS_MOUNT -# include /* for *BSD f?statfs() */ +# include /* for *BSD f?statfs() or getmnt() */ #endif #ifdef I_MNTENT # include /* for getmntent() */ #endif +#undef PERL_MOUNT_NOSUID +#if !defined(PERL_MOUNT_NOSUID) && defined(MNT_NOSUID) +# define PERL_MOUNT_NOSUID MNT_NOSUID +#endif +#if !defined(PERL_MOUNT_NOSUID) && defined(MS_NOSUID) +# define PERL_MOUNT_NOSUID MS_NOSUID +#endif +#if !defined(PERL_MOUNT_NOSUID) && defined(M_NOSUID) +# define PERL_MOUNT_NOSUID M_NOSUID +#endif + #endif /* IAMSUID */ /* and finally... */