#include "perlio.h"
#ifndef Sighandler_t
+# if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
+typedef Signal_t (*Sighandler_t) (int, siginfo_t*, void*);
+# else
typedef Signal_t (*Sighandler_t) (int);
+# endif
#endif
#if defined(PERL_IMPLICIT_SYS)
typedef int (*LPError)(struct IPerlStdIO*, FILE*);
typedef void (*LPClearerr)(struct IPerlStdIO*, FILE*);
typedef int (*LPGetc)(struct IPerlStdIO*, FILE*);
-typedef char* (*LPGetBase)(struct IPerlStdIO*, FILE*);
+typedef STDCHAR* (*LPGetBase)(struct IPerlStdIO*, FILE*);
typedef int (*LPGetBufsiz)(struct IPerlStdIO*, FILE*);
typedef int (*LPGetCnt)(struct IPerlStdIO*, FILE*);
-typedef char* (*LPGetPtr)(struct IPerlStdIO*, FILE*);
+typedef STDCHAR* (*LPGetPtr)(struct IPerlStdIO*, FILE*);
typedef char* (*LPGets)(struct IPerlStdIO*, FILE*, char*, int);
typedef int (*LPPutc)(struct IPerlStdIO*, FILE*, int);
typedef int (*LPPuts)(struct IPerlStdIO*, FILE*, const char*);
typedef void (*LPSetCnt)(struct IPerlStdIO*, FILE*, int);
#ifndef NETWARE
-typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, char*);
+typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, STDCHAR*);
#elif defined(NETWARE)
-typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, char*, int);
+typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, STDCHAR*, int);
#endif
typedef void (*LPSetlinebuf)(struct IPerlStdIO*, FILE*);
#define PerlSIO_set_cnt(f,c) PerlIOProc_abort()
#endif
#if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE)
-#define PerlSIO_set_ptr(f,p) FILE_ptr(f) = (p)
+#define PerlSIO_set_ptr(f,p) (FILE_ptr(f) = (p))
#else
#define PerlSIO_set_ptr(f,p) PerlIOProc_abort()
#endif
typedef int (*LPChdir)(struct IPerlDir*, const char*);
typedef int (*LPRmdir)(struct IPerlDir*, const char*);
typedef int (*LPDirClose)(struct IPerlDir*, DIR*);
-typedef DIR* (*LPDirOpen)(struct IPerlDir*, char*);
+typedef DIR* (*LPDirOpen)(struct IPerlDir*, const char*);
typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*);
typedef void (*LPDirRewind)(struct IPerlDir*, DIR*);
typedef void (*LPDirSeek)(struct IPerlDir*, DIR*, long);
typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*);
typedef int (*LPLIOUmask)(struct IPerlLIO*, int);
typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*);
-typedef int (*LPLIOUtime)(struct IPerlLIO*, char*, struct utimbuf*);
+typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*);
typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*,
unsigned int);
#define PerlLIO_access(file, mode) access((file), (mode))
#define PerlLIO_chmod(file, mode) chmod((file), (mode))
#define PerlLIO_chown(file, owner, grp) chown((file), (owner), (grp))
-#define PerlLIO_chsize(fd, size) chsize((fd), (size))
+#if defined(HAS_TRUNCATE)
+# define PerlLIO_chsize(fd, size) ftruncate((fd), (size))
+#elif defined(HAS_CHSIZE)
+# define PerlLIO_chsize(fd, size) chsize((fd), (size))
+#else
+# define PerlLIO_chsize(fd, size) my_chsize((fd), (size))
+#endif
#define PerlLIO_close(fd) close((fd))
#define PerlLIO_dup(fd) dup((fd))
#define PerlLIO_dup2(fd1, fd2) dup2((fd1), (fd2))
typedef void (*LPProcAbort)(struct IPerlProc*);
typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*,
const char*);
-typedef void (*LPProcExit)(struct IPerlProc*, int);
-typedef void (*LPProc_Exit)(struct IPerlProc*, int);
+typedef void (*LPProcExit)(struct IPerlProc*, int)
+ __attribute__noreturn__;
+typedef void (*LPProc_Exit)(struct IPerlProc*, int)
+ __attribute__noreturn__;
typedef int (*LPProcExecl)(struct IPerlProc*, const char*,
const char*, const char*, const char*,
const char*);
#endif /* __Inc__IPerl___ */
+/*
+ * Local variables:
+ * c-indentation-style: bsd
+ * c-basic-offset: 4
+ * indent-tabs-mode: t
+ * End:
+ *
+ * ex: set ts=8 sts=4 sw=4 noet:
+ */