Skip processing a file if the file to be opened is '-'
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index 06a8857..b3ea9fb 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -470,7 +470,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
 #   include <stdlib.h>
 #endif
 
-#if !defined(PERL_FOR_X2P) && !defined(PERL_OBJECT)
+#if !defined(PERL_FOR_X2P) && !defined(WIN32)
 #  include "embed.h"
 #endif
 
@@ -891,10 +891,6 @@ Free_t   Perl_mfree (Malloc_t where);
 #undef UV
 #endif
 
-#ifdef I_INTTYPES
-#include <inttypes.h>
-#endif
-
 /*
     The IV type is supposed to be long enough to hold any integral
     value or a pointer.
@@ -905,7 +901,7 @@ typedef IVTYPE IV;
 typedef UVTYPE UV;
 
 #if defined(USE_64_BITS) && defined(HAS_QUAD)
-#  if QUADCASE == 4 && defined(INT64_MAX) /* quad is int64_t */
+#  if QUADKIND == QUAD_IS_INT64_T && defined(INT64_MAX)
 #    define IV_MAX INT64_MAX
 #    define IV_MIN INT64_MIN
 #    define UV_MAX UINT64_MAX
@@ -1326,30 +1322,38 @@ typedef struct xpvfm XPVFM;
 typedef struct xpvio XPVIO;
 typedef struct mgvtbl MGVTBL;
 typedef union any ANY;
+typedef struct ptr_tbl_ent PTR_TBL_ENT_t;
+typedef struct ptr_tbl PTR_TBL_t;
 
 #include "handy.h"
 
-#if defined(USE_LARGE_FILES)
-#   define USE_64_BIT_RAWIO /* Explicit */
-#   define USE_64_BIT_STDIO
+#ifndef NO_LARGE_FILES
+#   define USE_LARGE_FILES     /* If available. */
 #endif
 
-#if LSEEKSIZE == 8 && !defined(USE_64_BIT_RAWIO)
-#   define USE_64_BIT_RAWIO /* Implicit */
+#if defined(USE_LARGE_FILES) && !defined(NO_64_BIT_RAWIO)
+#   define USE_64_BIT_RAWIO    /* explicit */
+#   if LSEEKSIZE == 8 && !defined(USE_64_BIT_RAWIO)
+#       define USE_64_BIT_RAWIO        /* implicit */
+#   endif
 #endif
 
-/* Do we need FSEEKSIZE? */
+/* Notice the use of HAS_FSEEKO: now we are obligated to always use
+ * fseeko/ftello if possible.  Don't go #defining ftell to ftello yourself,
+ * however, because operating systems like to do that themself. */
+#ifndef FSEEKSIZE
+#   ifdef HAS_FSEEKO
+#       define FSEEKSIZE LSEEKSIZE
+#   else
+#       define FSEEKSIZE LONGSIZE
+#   endif  
+#endif
 
-/* I couldn't find any -Ddefine or -flags in IRIX 6.5 that would
- * have done the necessary symbol renaming using cpp. --jhi */
-#ifdef __sgi
-#define USE_FOPEN64
-#define USE_FSEEK64
-#define USE_FTELL64
-#define USE_FSETPOS64
-#define USE_FGETPOS64
-#define USE_TMPFILE64
-#define USE_FREOPEN64
+#if defined(USE_LARGE_FILES) && !defined(NO_64_BIT_STDIO)
+#   define USE_64_BIT_STDIO    /* explicit */
+#   if FSEEKSIZE == 8 && !defined(USE_64_BIT_STDIO)
+#       define USE_64_BIT_STDIO /* implicit */
+#   endif
 #endif
 
 #ifdef USE_64_BIT_RAWIO
@@ -1367,9 +1371,10 @@ typedef union any ANY;
 #   endif
 #   if defined(USE_LSEEK64)
 #       define lseek lseek64
-#   endif
-#   if defined(USE_LLSEEK)
-#       define lseek llseek
+#   else
+#       if defined(USE_LLSEEK)
+#           define lseek llseek
+#       endif
 #   endif
 #   if defined(USE_STAT64)
 #       define stat stat64
@@ -1409,10 +1414,10 @@ typedef union any ANY;
 #       define fopen fopen64
 #   endif
 #   if defined(USE_FSEEK64)
-#       define fseek fseek64
+#       define fseek fseek64 /* don't do fseeko here, see perlio.c */
 #   endif
 #   if defined(USE_FTELL64)
-#       define ftell ftell64
+#       define ftell ftell64 /* don't do ftello here, see perlio.c */
 #   endif
 #   if defined(USE_FSETPOS64)
 #       define fsetpos fsetpos64
@@ -1749,6 +1754,18 @@ struct scan_data_t;              /* Used in S_* functions in regcomp.c */
 
 typedef I32 CHECKPOINT;
 
+struct ptr_tbl_ent {
+    struct ptr_tbl_ent*                next;
+    void*                      oldval;
+    void*                      newval;
+};
+
+struct ptr_tbl {
+    struct ptr_tbl_ent**       tbl_ary;
+    UV                         tbl_max;
+    UV                         tbl_items;
+};
+
 #if defined(iAPX286) || defined(M_I286) || defined(I80286)
 #   define I286
 #endif
@@ -1831,27 +1848,6 @@ typedef I32 CHECKPOINT;
 #define NV_WITHIN_IV(nv) (I_V(nv) >= IV_MIN && I_V(nv) <= IV_MAX)
 #define NV_WITHIN_UV(nv) ((nv)>=0.0 && U_V(nv) >= UV_MIN && U_V(nv) <= UV_MAX)
 
-/* The correct way: a Configure test where (UV)~0 is cast to NV and back. */
-/* Believe. */
-#define IV_FITS_IN_NV
-/* Doubt. */
-#if defined(USE_LONG_DOUBLE) && \
-       defined(LDBL_MANT_DIG) && IV_DIG >= LDBL_MANT_DIG
-#   undef IV_FITS_IN_NV
-#else
-#   if defined(DBL_MANT_DIG) && IV_DIG >= DBL_MANT_DIG
-#       undef IV_FITS_IN_NV
-#   else
-#       if IV_DIG >= NV_DIG
-#           undef IV_FITS_IN_NV
-#       else
-#           if IVSIZE >= NVSIZE
-#               undef IV_FITS_IN_NV
-#           endif
-#       endif
-#   endif
-#endif
-
 /* Used with UV/IV arguments: */
                                        /* XXXX: need to speed it up */
 #define CLUMP_2UV(iv)  ((iv) < 0 ? 0 : (UV)(iv))
@@ -2662,6 +2658,10 @@ PERLVARA(object_compatibility,30,        char)
 /* this has structure inits, so it cannot be included before here */
 #  include "opcode.h"
 
+#else
+#  if defined(WIN32)
+#    include "embed.h"
+#  endif
 #endif  /* PERL_OBJECT */
 
 #ifndef PERL_GLOBAL_STRUCT
@@ -3024,7 +3024,7 @@ typedef struct am_table_short AMTS;
  * so perl may have to guard against stack overflow.
  */
 #ifndef PERL_STACK_OVERFLOW_CHECK
-#define PERL_STACK_OVERFLOW_CHECK()  0
+#define PERL_STACK_OVERFLOW_CHECK()  NOOP
 #endif
 
 /*
@@ -3034,7 +3034,7 @@ typedef struct am_table_short AMTS;
  * massively.
  */
 #ifndef PERL_ASYNC_CHECK
-#define PERL_ASYNC_CHECK()  0
+#define PERL_ASYNC_CHECK()  NOOP
 #endif
 
 /*
@@ -3044,7 +3044,7 @@ typedef struct am_table_short AMTS;
  * it to NULL.
  */
 #ifndef PERL_ALLOC_CHECK
-#define PERL_ALLOC_CHECK(p)  0
+#define PERL_ALLOC_CHECK(p)  NOOP
 #endif
 
 /*