This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
support POSIX::uname() via win32_uname()
[perl5.git] / iperlsys.h
index f616533..03e3c08 100644 (file)
@@ -114,7 +114,7 @@ public:
     virtual int                Printf(PerlIO*, int &err, const char *,...) = 0;
     virtual int                Vprintf(PerlIO*, int &err, const char *, va_list) = 0;
     virtual long       Tell(PerlIO*, int &err) = 0;
-    virtual int                Seek(PerlIO*, off_t, int, int &err) = 0;
+    virtual int                Seek(PerlIO*, Off_t, int, int &err) = 0;
     virtual void       Rewind(PerlIO*, int &err) = 0;
     virtual PerlIO *   Tmpfile(int &err) = 0;
     virtual int                Getpos(PerlIO*, Fpos_t *, int &err) = 0;
@@ -127,10 +127,32 @@ public:
 #endif
 };
 
-#define PerlIO_canset_cnt(f)   1
-#define PerlIO_has_base(f)     1
-#define PerlIO_has_cntptr(f)   1
-#define PerlIO_fast_gets(f)    1
+
+
+#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        
+#    endif
+#  else
+#    define PerlIO_canset_cnt(f)       0      
+#  endif
+#else  /* USE_STDIO_PTR */
+#  define PerlIO_has_cntptr(f)         0
+#  define PerlIO_canset_cnt(f)         0
+#endif /* USE_STDIO_PTR */
+
+#ifndef PerlIO_fast_gets
+#define PerlIO_fast_gets(f)            0        
+#endif
+
+#ifdef FILE_base
+#define PerlIO_has_base(f)             1
+#else
+#define PerlIO_has_base(f)             0
+#endif
 
 #define PerlIO_stdin()         PL_piStdIO->Stdin()
 #define PerlIO_stdout()                PL_piStdIO->Stdout()
@@ -300,10 +322,10 @@ extern int        PerlIO_sprintf          _((char *, int, const char *,...))
 extern int     PerlIO_vprintf          _((PerlIO *, const char *, va_list));
 #endif
 #ifndef PerlIO_tell
-extern long    PerlIO_tell             _((PerlIO *));
+extern Off_t   PerlIO_tell             _((PerlIO *));
 #endif
 #ifndef PerlIO_seek
-extern int     PerlIO_seek             _((PerlIO *,off_t,int));
+extern int     PerlIO_seek             _((PerlIO *, Off_t, int));
 #endif
 #ifndef PerlIO_rewind
 extern void    PerlIO_rewind           _((PerlIO *));
@@ -428,10 +450,12 @@ public:
     virtual int                Putenv(const char *envstring, int &err) = 0;
     virtual char *     LibPath(char *patchlevel) =0;
     virtual char *     SiteLibPath(char *patchlevel) =0;
+    virtual int                Uname(struct utsname *name, int &err) =0;
 };
 
 #define PerlEnv_putenv(str)            PL_piENV->Putenv((str), ErrorNo())
 #define PerlEnv_getenv(str)            PL_piENV->Getenv((str), ErrorNo())
+#define PerlEnv_uname(name)            PL_piENV->Uname((name), ErrorNo())
 #ifdef WIN32
 #define PerlEnv_lib_path(str)          PL_piENV->LibPath((str))
 #define PerlEnv_sitelib_path(str)      PL_piENV->SiteLibPath((str))
@@ -441,6 +465,7 @@ public:
 
 #define PerlEnv_putenv(str)            putenv((str))
 #define PerlEnv_getenv(str)            getenv((str))
+#define PerlEnv_uname(name)            uname((name))
 
 #endif /* PERL_OBJECT */
 
@@ -612,6 +637,7 @@ class IPerlProc
 {
 public:
     virtual void       Abort(void) = 0;
+    virtual char *     Crypt(const char* clear, const char* salt) = 0;
     virtual void       Exit(int status) = 0;
     virtual void       _Exit(int status) = 0;
     virtual int                Execl(const char *cmdname, const char *arg0,
@@ -649,6 +675,7 @@ public:
 };
 
 #define PerlProc_abort()       PL_piProc->Abort()
+#define PerlProc_crypt(c,s)    PL_piProc->Crypt((c), (s))
 #define PerlProc_exit(s)       PL_piProc->Exit((s))
 #define PerlProc__exit(s)      PL_piProc->_Exit((s))
 #define PerlProc_execl(c, w, x, y, z)                                  \
@@ -691,6 +718,7 @@ public:
 #else  /* PERL_OBJECT */
 
 #define PerlProc_abort()       abort()
+#define PerlProc_crypt(c,s)    crypt((c), (s))
 #define PerlProc_exit(s)       exit((s))
 #define PerlProc__exit(s)      _exit((s))
 #define PerlProc_execl(c,w,x,y,z)                                      \
@@ -882,6 +910,7 @@ public:
 #define PerlSock_inet_addr(c)          inet_addr(c)
 #define PerlSock_inet_ntoa(i)          inet_ntoa(i)
 #define PerlSock_listen(s, b)          listen(s, b)
+#define PerlSock_recv(s, b, l, f)      recv(s, b, l, f)
 #define PerlSock_recvfrom(s, b, l, f, from, fromlen)                   \
        recvfrom(s, b, l, f, from, fromlen)
 #define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t)
@@ -901,5 +930,22 @@ public:
 
 #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 /* __Inc__IPerl___ */