Skip processing a file if the file to be opened is '-'
[p5sagit/p5-mst-13.2.git] / iperlsys.h
index 8d05812..9404d18 100644 (file)
 extern void PerlIO_init (void);
 #endif
 
-#ifdef PERL_OBJECT
+#ifndef Sighandler_t
+typedef Signal_t (*Sighandler_t) (int);
+#endif
+
+#if defined(PERL_IMPLICIT_SYS)
 
 #ifndef PerlIO
 typedef struct _PerlIO PerlIO;
@@ -258,7 +262,7 @@ struct IPerlStdIOInfo
        (*PL_StdIO->pSetPtrCnt)(PL_StdIO, (f), (p), (c))
 #define PerlIO_setlinebuf(f)                                           \
        (*PL_StdIO->pSetlinebuf)(PL_StdIO, (f))
-#define PerlIO_printf          fprintf
+#define PerlIO_printf          Perl_fprintf_nocontext
 #define PerlIO_stdoutf         *PL_StdIO->pPrintf
 #define PerlIO_vprintf(f,fmt,a)                                                \
        (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a)          
@@ -277,14 +281,15 @@ struct IPerlStdIOInfo
 #define PerlIO_init()                                                  \
        (*PL_StdIO->pInit)(PL_StdIO)
 #undef         init_os_extras
-#define init_os_extras(x)                                              \
+#define init_os_extras()                                               \
        (*PL_StdIO->pInitOSExtras)(PL_StdIO)
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #include "perlsdio.h"
+#include "perl.h"
 
-#endif /* PERL_OBJECT */
+#endif /* PERL_IMPLICIT_SYS */
 
 #ifndef PERLIO_IS_STDIO
 #ifdef USE_SFIO
@@ -466,7 +471,7 @@ extern int  PerlIO_setpos           (PerlIO *,const Fpos_t *);
  *   Interface for directory functions
  */
 
-#ifdef PERL_OBJECT
+#if defined(PERL_IMPLICIT_SYS)
 
 /* IPerlDir            */
 struct IPerlDir;
@@ -518,7 +523,7 @@ struct IPerlDirInfo
 #define PerlDir_tell(dir)                                      \
        (*PL_Dir->pTell)(PL_Dir, (dir))
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #define PerlDir_mkdir(name, mode)      Mkdir((name), (mode))
 #ifdef VMS
@@ -534,29 +539,33 @@ struct IPerlDirInfo
 #define PerlDir_seek(dir, loc)         seekdir((dir), (loc))
 #define PerlDir_tell(dir)              telldir((dir))
 
-#endif /* PERL_OBJECT */
+#endif /* PERL_IMPLICIT_SYS */
 
 /*
     Interface for perl environment functions
 */
 
-#ifdef PERL_OBJECT
+#if defined(PERL_IMPLICIT_SYS)
 
 /* IPerlEnv            */
 struct IPerlEnv;
 typedef char*          (*LPEnvGetenv)(struct IPerlEnv*, const char*);
 typedef int            (*LPEnvPutenv)(struct IPerlEnv*, const char*);
-typedef char *         (*LPEnvGetenv_len)(struct IPerlEnv*,
+typedef char*          (*LPEnvGetenv_len)(struct IPerlEnv*,
                                    const char *varname, unsigned long *len);
 typedef int            (*LPEnvUname)(struct IPerlEnv*, struct utsname *name);
 typedef void           (*LPEnvClearenv)(struct IPerlEnv*);
-typedef unsigned long  (*LPEnvOsID)(struct IPerlEnv*);
+typedef void*          (*LPEnvGetChildenv)(struct IPerlEnv*);
+typedef void           (*LPEnvFreeChildenv)(struct IPerlEnv*, void* env);
+typedef char*          (*LPEnvGetChilddir)(struct IPerlEnv*);
+typedef void           (*LPEnvFreeChilddir)(struct IPerlEnv*, char* dir);
 #ifdef HAS_ENVGETENV
-typedef char *         (*LPENVGetenv)(struct IPerlEnv*, const char *varname);
-typedef char *         (*LPENVGetenv_len)(struct IPerlEnv*,
+typedef char*          (*LPENVGetenv)(struct IPerlEnv*, const char *varname);
+typedef char*          (*LPENVGetenv_len)(struct IPerlEnv*,
                                    const char *varname, unsigned long *len);
 #endif
 #ifdef WIN32
+typedef unsigned long  (*LPEnvOsID)(struct IPerlEnv*);
 typedef char*          (*LPEnvLibPath)(struct IPerlEnv*, char*);
 typedef char*          (*LPEnvSiteLibPath)(struct IPerlEnv*, char*);
 #endif
@@ -568,6 +577,10 @@ struct IPerlEnv
     LPEnvGetenv_len    pGetenv_len;
     LPEnvUname         pEnvUname;
     LPEnvClearenv      pClearenv;
+    LPEnvGetChildenv   pGetChildenv;
+    LPEnvFreeChildenv  pFreeChildenv;
+    LPEnvGetChilddir   pGetChilddir;
+    LPEnvFreeChilddir  pFreeChilddir;
 #ifdef HAS_ENVGETENV
     LPENVGetenv                pENVGetenv;
     LPENVGetenv_len    pENVGetenv_len;
@@ -591,10 +604,16 @@ struct IPerlEnvInfo
        (*PL_Env->pGetenv)(PL_Env,(str))
 #define PerlEnv_getenv_len(str,l)                              \
        (*PL_Env->pGetenv_len)(PL_Env,(str), (l))
-#define PerlEnv_Clear()                                                \
-       (*PL_Env->pClearenv)(PL_Env)
-#define PerlEnv_Clear()                                                \
+#define PerlEnv_clearenv()                                     \
        (*PL_Env->pClearenv)(PL_Env)
+#define PerlEnv_get_childenv()                                 \
+       (*PL_Env->pGetChildenv)(PL_Env)
+#define PerlEnv_free_childenv(e)                               \
+       (*PL_Env->pFreeChildenv)(PL_Env, (e))
+#define PerlEnv_get_childdir()                                 \
+       (*PL_Env->pGetChilddir)(PL_Env)
+#define PerlEnv_free_childdir(d)                               \
+       (*PL_Env->pFreeChilddir)(PL_Env, (d))
 #ifdef HAS_ENVGETENV
 #  define PerlEnv_ENVgetenv(str)                               \
        (*PL_Env->pENVGetenv)(PL_Env,(str))
@@ -617,11 +636,16 @@ struct IPerlEnvInfo
        (*PL_Env->pSiteLibPath)(PL_Env,(str))
 #endif
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #define PerlEnv_putenv(str)            putenv((str))
 #define PerlEnv_getenv(str)            getenv((str))
 #define PerlEnv_getenv_len(str,l)      getenv_len((str), (l))
+#define PerlEnv_clear()                        clearenv()
+#define PerlEnv_get_childenv()         get_childenv()
+#define PerlEnv_free_childenv(e)       free_childenv((e))
+#define PerlEnv_get_childdir()         get_childdir()
+#define PerlEnv_free_childdir(d)       free_childdir((d))
 #ifdef HAS_ENVGETENV
 #  define PerlEnv_ENVgetenv(str)       ENVgetenv((str))
 #  define PerlEnv_ENVgetenv_len(str,l) ENVgetenv_len((str), (l))
@@ -635,13 +659,13 @@ struct IPerlEnvInfo
 #define PerlEnv_os_id()                        win32_os_id()
 #endif
 
-#endif /* PERL_OBJECT */
+#endif /* PERL_IMPLICIT_SYS */
 
 /*
     Interface for perl low-level IO functions
 */
 
-#ifdef PERL_OBJECT
+#if defined(PERL_IMPLICIT_SYS)
 
 /* IPerlLIO            */
 struct IPerlLIO;
@@ -658,6 +682,8 @@ typedef int         (*LPLIOFileStat)(struct IPerlLIO*, int, struct stat*);
 typedef int            (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int,
                            char*);
 typedef int            (*LPLIOIsatty)(struct IPerlLIO*, int);
+typedef int            (*LPLIOLink)(struct IPerlLIO*, const char*,
+                                    const char *);
 typedef long           (*LPLIOLseek)(struct IPerlLIO*, int, long, int);
 typedef int            (*LPLIOLstat)(struct IPerlLIO*, const char*,
                            struct stat*);
@@ -690,6 +716,7 @@ struct IPerlLIO
     LPLIOFileStat      pFileStat;
     LPLIOIOCtl         pIOCtl;
     LPLIOIsatty                pIsatty;
+    LPLIOLink          pLink;
     LPLIOLseek         pLseek;
     LPLIOLstat         pLstat;
     LPLIOMktemp                pMktemp;
@@ -734,6 +761,8 @@ struct IPerlLIOInfo
        (*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf))
 #define PerlLIO_isatty(fd)                                             \
        (*PL_LIO->pIsatty)(PL_LIO, (fd))
+#define PerlLIO_link(oldname, newname)                                 \
+       (*PL_LIO->pLink)(PL_LIO, (oldname), (newname))
 #define PerlLIO_lseek(fd, offset, mode)                                        \
        (*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode))
 #define PerlLIO_lstat(name, buf)                                       \
@@ -763,7 +792,7 @@ struct IPerlLIOInfo
 #define PerlLIO_write(fd, buf, count)                                  \
        (*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count))
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #define PerlLIO_access(file, mode)     access((file), (mode))
 #define PerlLIO_chmod(file, mode)      chmod((file), (mode))
@@ -776,6 +805,7 @@ struct IPerlLIOInfo
 #define PerlLIO_fstat(fd, buf)         Fstat((fd), (buf))
 #define PerlLIO_ioctl(fd, u, buf)      ioctl((fd), (u), (buf))
 #define PerlLIO_isatty(fd)             isatty((fd))
+#define PerlLIO_link(oldname, newname) link((oldname), (newname))
 #define PerlLIO_lseek(fd, offset, mode)        lseek((fd), (offset), (mode))
 #define PerlLIO_stat(name, buf)                Stat((name), (buf))
 #ifdef HAS_LSTAT
@@ -796,13 +826,13 @@ struct IPerlLIOInfo
 #define PerlLIO_utime(file, time)      utime((file), (time))
 #define PerlLIO_write(fd, buf, count)  write((fd), (buf), (count))
 
-#endif /* PERL_OBJECT */
+#endif /* PERL_IMPLICIT_SYS */
 
 /*
     Interface for perl memory allocation
 */
 
-#ifdef PERL_OBJECT
+#if defined(PERL_IMPLICIT_SYS)
 
 /* IPerlMem            */
 struct IPerlMem;
@@ -830,24 +860,21 @@ struct IPerlMemInfo
 #define PerlMem_free(buf)                                  \
        (*PL_Mem->pFree)(PL_Mem, (buf))
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #define PerlMem_malloc(size)           malloc((size))
 #define PerlMem_realloc(buf, size)     realloc((buf), (size))
 #define PerlMem_free(buf)              free((buf))
 
-#endif /* PERL_OBJECT */
+#endif /* PERL_IMPLICIT_SYS */
 
 /*
     Interface for perl process functions
 */
 
 
-#ifdef PERL_OBJECT
+#if defined(PERL_IMPLICIT_SYS)
 
-#ifndef Sighandler_t
-typedef Signal_t (*Sighandler_t) (int);
-#endif
 #ifndef jmp_buf
 #include <setjmp.h>
 #endif
@@ -1008,7 +1035,7 @@ struct IPerlProcInfo
        (*PL_Proc->pASpawn)(PL_Proc, (m), (c), (a))
 #endif
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #define PerlProc_abort()       abort()
 #define PerlProc_crypt(c,s)    crypt((c), (s))
@@ -1041,17 +1068,17 @@ struct IPerlProcInfo
 
 #ifdef WIN32
 #define PerlProc_DynaLoad(f)                                           \
-       win32_dynaload(aTHX_ (f))
+       win32_dynaload((f))
 #define PerlProc_GetOSError(s,e)                                       \
-       win32_str_os_error(aTHX_ (s), (e))
+       win32_str_os_error((s), (e))
 #endif
-#endif /* PERL_OBJECT */
+#endif /* PERL_IMPLICIT_SYS */
 
 /*
     Interface for perl socket functions
 */
 
-#ifdef PERL_OBJECT
+#if defined(PERL_IMPLICIT_SYS)
 
 /* PerlSock            */
 struct IPerlSock;
@@ -1265,7 +1292,7 @@ struct IPerlSockInfo
        (*PL_Sock->pClosesocket)(PL_Sock, s)
 #endif
 
-#else  /* PERL_OBJECT */
+#else  /* PERL_IMPLICIT_SYS */
 
 #define PerlSock_htonl(x)              htonl(x)
 #define PerlSock_htons(x)              htons(x)
@@ -1323,24 +1350,7 @@ struct IPerlSockInfo
 #define PerlSock_closesocket(s)                closesocket(s)
 #endif
 
-#endif /* PERL_OBJECT */
-
-/* Mention
-
-   HAS_READV
-   HAS_RECVMSG
-   HAS_SENDMSG
-   HAS_WRITEV
-   HAS_STRUCT_MSGHDR
-   HAS_STRUCT_CMSGHDR
-
-   here so that Configure picks them up.  Perl core does not
-   use them but somebody might want to extend Socket:: or IO::
-   someday.
-
-   Jarkko Hietaniemi November 1998
-
-   */
+#endif /* PERL_IMPLICIT_SYS */
 
 #endif /* __Inc__IPerl___ */