[ID 20001112.008] perlio.c's PerlIO_getpos ingores error return
[p5sagit/p5-mst-13.2.git] / iperlsys.h
index 0d9f699..55471cd 100644 (file)
@@ -78,11 +78,17 @@ extern void PerlIO_init (void);
 typedef Signal_t (*Sighandler_t) (int);
 #endif
 
+#ifndef Fpos_t
+#define Fpos_t Off_t
+#endif
+
 #if defined(PERL_IMPLICIT_SYS)
 
 #ifndef PerlIO
-typedef struct _PerlIO PerlIO;
-#endif
+typedef struct _PerlIO PerlIOl;
+typedef PerlIOl *PerlIO;
+#define PerlIO PerlIO
+#endif /* No PerlIO */
 
 /* IPerlStdIO          */
 struct IPerlStdIO;
@@ -120,7 +126,7 @@ typedef void                (*LPSetCnt)(struct IPerlStdIO*, PerlIO*, int);
 typedef void           (*LPSetPtrCnt)(struct IPerlStdIO*, PerlIO*, char*,
                            int);
 typedef void           (*LPSetlinebuf)(struct IPerlStdIO*, PerlIO*);
-typedef int            (*LPPrintf)(struct IPerlStdIO*, PerlIO*, const char*, 
+typedef int            (*LPPrintf)(struct IPerlStdIO*, PerlIO*, const char*,
                            ...);
 typedef int            (*LPVprintf)(struct IPerlStdIO*, PerlIO*, const char*,
                            va_list);
@@ -134,6 +140,7 @@ typedef int         (*LPSetpos)(struct IPerlStdIO*, PerlIO*,
 typedef void           (*LPInit)(struct IPerlStdIO*);
 typedef void           (*LPInitOSExtras)(struct IPerlStdIO*);
 typedef PerlIO*                (*LPFdupopen)(struct IPerlStdIO*, PerlIO*);
+typedef int            (*LPIsUtf8)(struct IPerlStdIO*, PerlIO*);
 
 struct IPerlStdIO
 {
@@ -176,6 +183,7 @@ struct IPerlStdIO
     LPInit             pInit;
     LPInitOSExtras     pInitOSExtras;
     LPFdupopen         pFdupopen;
+    LPIsUtf8           pIsUtf8;
 };
 
 struct IPerlStdIOInfo
@@ -185,14 +193,20 @@ struct IPerlStdIOInfo
 };
 
 #ifdef USE_STDIO_PTR
-#  define PerlIO_has_cntptr(f)         1       
-#  ifdef STDIO_CNT_LVALUE
-#    define PerlIO_canset_cnt(f)       1      
-#    ifdef STDIO_PTR_LVALUE
-#      define PerlIO_fast_gets(f)      1        
+#  define PerlIO_has_cntptr(f)         1
+#  ifdef STDIO_PTR_LVALUE
+#    ifdef  STDIO_CNT_LVALUE
+#      define PerlIO_canset_cnt(f)     1
+#      ifdef STDIO_PTR_LVAL_NOCHANGE_CNT
+#        define PerlIO_fast_gets(f)    1
+#      endif
+#    else /* STDIO_CNT_LVALUE */
+#      define PerlIO_canset_cnt(f)     0
+#    endif
+#  else /* STDIO_PTR_LVALUE */
+#    ifdef STDIO_PTR_LVAL_SETS_CNT
+#      define PerlIO_fast_gets(f)      1
 #    endif
-#  else
-#    define PerlIO_canset_cnt(f)       0      
 #  endif
 #else  /* USE_STDIO_PTR */
 #  define PerlIO_has_cntptr(f)         0
@@ -200,7 +214,7 @@ struct IPerlStdIOInfo
 #endif /* USE_STDIO_PTR */
 
 #ifndef PerlIO_fast_gets
-#define PerlIO_fast_gets(f)            0        
+#define PerlIO_fast_gets(f)            0
 #endif
 
 #ifdef FILE_base
@@ -268,7 +282,7 @@ struct IPerlStdIOInfo
 #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)          
+       (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a)
 #define PerlIO_tell(f)                                                 \
        (*PL_StdIO->pTell)(PL_StdIO, (f))
 #define PerlIO_seek(f,o,w)                                             \
@@ -288,18 +302,22 @@ struct IPerlStdIOInfo
        (*PL_StdIO->pInitOSExtras)(PL_StdIO)
 #define PerlIO_fdupopen(f)                                             \
        (*PL_StdIO->pFdupopen)(PL_StdIO, (f))
+#define PerlIO_isutf8(f)                                               \
+       (*PL_StdIO->pIsUtf8)(PL_StdIO, (f))
 
 #else  /* PERL_IMPLICIT_SYS */
 
 #include "perlsdio.h"
 #include "perl.h"
 #define PerlIO_fdupopen(f)             (f)
+#define PerlIO_isutf8(f)               0
 
 #endif /* PERL_IMPLICIT_SYS */
 
 #ifndef PERLIO_IS_STDIO
 #ifdef USE_SFIO
 #include "perlsfio.h"
+#define PerlIO_isutf8(f)               0
 #endif /* USE_SFIO */
 #endif /* PERLIO_IS_STDIO */
 
@@ -325,14 +343,11 @@ struct IPerlStdIOInfo
 #endif
 
 #ifndef PerlIO
-struct _PerlIO;
-#define PerlIO struct _PerlIO
+typedef struct _PerlIO PerlIOl;
+typedef PerlIOl *PerlIO;
+#define PerlIO PerlIO
 #endif /* No PerlIO */
 
-#ifndef Fpos_t
-#define Fpos_t long
-#endif
-
 #ifndef NEXT30_NO_ATTRIBUTE
 #ifndef HASATTRIBUTE       /* disable GNU-cc attribute checking? */
 #ifdef  __attribute__      /* Avoid possible redefinition errors */
@@ -344,7 +359,7 @@ struct _PerlIO;
 
 #ifndef PerlIO_stdoutf
 extern int     PerlIO_stdoutf          (const char *,...)
-                                       __attribute__((format (printf, 1, 2)));
+                                       __attribute__((__format__ (__printf__, 1, 2)));
 #endif
 #ifndef PerlIO_puts
 extern int     PerlIO_puts             (PerlIO *,const char *);
@@ -405,11 +420,11 @@ extern void       PerlIO_setlinebuf       (PerlIO *);
 #endif
 #ifndef PerlIO_printf
 extern int     PerlIO_printf           (PerlIO *, const char *,...)
-                                       __attribute__((format (printf, 2, 3)));
+                                       __attribute__((__format__ (__printf__, 2, 3)));
 #endif
 #ifndef PerlIO_sprintf
 extern int     PerlIO_sprintf          (char *, int, const char *,...)
-                                       __attribute__((format (printf, 3, 4)));
+                                       __attribute__((__format__ (__printf__, 3, 4)));
 #endif
 #ifndef PerlIO_vprintf
 extern int     PerlIO_vprintf          (PerlIO *, const char *, va_list);
@@ -474,7 +489,9 @@ extern int  PerlIO_setpos           (PerlIO *,const Fpos_t *);
 #ifndef PerlIO_fdupopen
 extern PerlIO *        PerlIO_fdupopen         (PerlIO *);
 #endif
-
+#ifndef PerlIO_isutf8
+extern int     PerlIO_isutf8           (PerlIO *);
+#endif
 
 /*
  *   Interface for directory functions
@@ -551,8 +568,8 @@ struct IPerlDirInfo
 
 #define PerlDir_mkdir(name, mode)      Mkdir((name), (mode))
 #ifdef VMS
-#  define PerlDir_chdir(n)             chdir(((n) && *(n)) ? (n) : "SYS$LOGIN")
-#else 
+#  define PerlDir_chdir(n)             Chdir(((n) && *(n)) ? (n) : "SYS$LOGIN")
+#else
 #  define PerlDir_chdir(name)          chdir((name))
 #endif
 #define PerlDir_rmdir(name)            rmdir((name))
@@ -595,8 +612,10 @@ typedef char*              (*LPENVGetenv_len)(struct IPerlEnv*,
 #endif
 #ifdef WIN32
 typedef unsigned long  (*LPEnvOsID)(struct IPerlEnv*);
-typedef char*          (*LPEnvLibPath)(struct IPerlEnv*, char*);
-typedef char*          (*LPEnvSiteLibPath)(struct IPerlEnv*, char*);
+typedef char*          (*LPEnvLibPath)(struct IPerlEnv*, const char*);
+typedef char*          (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*);
+typedef char*          (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*);
+typedef void           (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*);
 #endif
 
 struct IPerlEnv
@@ -618,6 +637,8 @@ struct IPerlEnv
     LPEnvOsID          pEnvOsID;
     LPEnvLibPath       pLibPath;
     LPEnvSiteLibPath   pSiteLibPath;
+    LPEnvVendorLibPath pVendorLibPath;
+    LPEnvGetChildIO    pGetChildIO;
 #endif
 };
 
@@ -663,6 +684,10 @@ struct IPerlEnvInfo
        (*PL_Env->pLibPath)(PL_Env,(str))
 #define PerlEnv_sitelib_path(str)                              \
        (*PL_Env->pSiteLibPath)(PL_Env,(str))
+#define PerlEnv_vendorlib_path(str)                            \
+       (*PL_Env->pVendorLibPath)(PL_Env,(str))
+#define PerlEnv_get_child_IO(ptr)                              \
+       (*PL_Env->pGetChildIO)(PL_Env, ptr)
 #endif
 
 #else  /* PERL_IMPLICIT_SYS */
@@ -686,6 +711,10 @@ struct IPerlEnvInfo
 
 #ifdef WIN32
 #define PerlEnv_os_id()                        win32_os_id()
+#define PerlEnv_lib_path(str)          win32_get_privlib(str)
+#define PerlEnv_sitelib_path(str)      win32_get_sitelib(str)
+#define PerlEnv_vendorlib_path(str)    win32_get_vendorlib(str)
+#define PerlEnv_get_child_IO(ptr)      win32_get_child_IO(ptr)
 #endif
 
 #endif /* PERL_IMPLICIT_SYS */
@@ -1244,7 +1273,7 @@ typedef int               (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int,
 typedef int            (*LPSelect)(struct IPerlSock*, int, char*, char*,
                            char*, const struct timeval*);
 typedef int            (*LPSend)(struct IPerlSock*, SOCKET, const char*, int,
-                           int); 
+                           int);
 typedef int            (*LPSendto)(struct IPerlSock*, SOCKET, const char*,
                            int, int, const struct sockaddr*, int);
 typedef void           (*LPSethostent)(struct IPerlSock*, int);