This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
use Perl_my_mkstemp() where appropriate
[perl5.git] / util.h
diff --git a/util.h b/util.h
index 3310b11..71531c7 100644 (file)
--- a/util.h
+++ b/util.h
@@ -8,6 +8,10 @@
  *
  */
 
+#ifndef PERL_UTIL_H_
+#define PERL_UTIL_H_
+
+
 #ifdef VMS
 #  define PERL_FILE_IS_ABSOLUTE(f) \
        (*(f) == '/'                                                    \
             || ((*(f) == '[' || *(f) == '<')                           \
                 && (isWORDCHAR((f)[1]) || strchr("$-_]>",(f)[1])))))
 
-#else          /* !VMS */
-#  if defined(WIN32) || defined(__CYGWIN__)
-#    define PERL_FILE_IS_ABSOLUTE(f) \
+#elif defined(WIN32) || defined(__CYGWIN__)
+#  define PERL_FILE_IS_ABSOLUTE(f) \
        (*(f) == '/' || *(f) == '\\'            /* UNC/rooted path */   \
         || ((f)[0] && (f)[1] == ':'))          /* drive name */
-#  else                /* !WIN32 */
-#  ifdef NETWARE
-#    define PERL_FILE_IS_ABSOLUTE(f) \
+#elif defined(NETWARE)
+#  define PERL_FILE_IS_ABSOLUTE(f) \
        (((f)[0] && (f)[1] == ':')              /* drive name */        \
         || ((f)[0] == '\\' && (f)[1] == '\\')  /* UNC path */  \
         ||     ((f)[3] == ':'))                                /* volume name, currently only sys */
-#  else                /* !NETWARE */
-#    if defined(DOSISH) || defined(__SYMBIAN32__)
-#      define PERL_FILE_IS_ABSOLUTE(f) \
+#elif defined(DOSISH) || defined(__SYMBIAN32__)
+#  define PERL_FILE_IS_ABSOLUTE(f) \
        (*(f) == '/'                                                    \
         || ((f)[0] && (f)[1] == ':'))          /* drive name */
-#    else      /* NEITHER DOSISH NOR SYMBIANISH */
-#      define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/')
-#    endif     /* DOSISH */
-#   endif      /* NETWARE */
-#  endif       /* WIN32 */
-#endif         /* VMS */
+#else  /* NEITHER DOSISH NOR SYMBIANISH */
+#  define PERL_FILE_IS_ABSOLUTE(f)     (*(f) == '/')
+#endif
 
 /*
 =head1 Miscellaneous Functions
@@ -85,6 +83,12 @@ typedef struct PERL_DRAND48_T perl_drand48_t;
 #define Perl_drand48_init(seed) (Perl_drand48_init_r(&PL_random_state, (seed)))
 #define Perl_drand48() (Perl_drand48_r(&PL_random_state))
 
+#ifdef PERL_CORE
+/* uses a different source of randomness to avoid interfering with the results
+ * of rand() */
+#define Perl_internal_drand48() (Perl_drand48_r(&PL_internal_random_state))
+#endif
+
 #ifdef USE_C_BACKTRACE
 
 typedef struct {
@@ -229,6 +233,28 @@ means arg not present, 1 is empty string/null byte */
 #  define HS_CXT cv
 #endif
 
+#define instr(haystack, needle) strstr(haystack, needle)
+
+#ifdef HAS_MEMMEM
+#   define ninstr(big, bigend, little, lend)                                \
+            ((char *) memmem((big), (bigend) - (big),                       \
+                             (little), (lend) - (little)))
+#endif
+
+#ifdef __Lynx__
+/* Missing proto on LynxOS */
+int mkstemp(char*);
+#endif
+
+#if defined(HAS_MKOSTEMP) && defined(PERL_CORE)
+#   define Perl_my_mkostemp(templte, flags) mkostemp(templte, flags)
+#endif
+#if defined(HAS_MKSTEMP) && defined(PERL_CORE)
+#   define Perl_my_mkstemp(templte) mkstemp(templte)
+#endif
+
+#endif /* PERL_UTIL_H_ */
+
 /*
  * ex: set ts=8 sts=4 sw=4 et:
  */