misc tweaks
[p5sagit/p5-mst-13.2.git] / vms / vmsish.h
index c994140..e74c7fb 100644 (file)
 #include <stsdef.h>  /* bitmasks for exit status testing */
 
 /* Suppress compiler warnings from DECC for VMS-specific extensions:
- * GLOBALEXT, NOSHAREEXT, READONLYEXT: global[dr]ef declarations
  * ADDRCONSTEXT,NEEDCONSTEXT: initialization of data with non-constant values
  *                            (e.g. pointer fields of descriptors)
  */
 #ifdef __DECC
-#  pragma message disable (GLOBALEXT,NOSHAREEXT,READONLYEXT,ADDRCONSTEXT,NEEDCONSTEXT)
+#  pragma message disable (ADDRCONSTEXT,NEEDCONSTEXT)
 #endif
 
 /* DEC's C compilers and gcc use incompatible definitions of _to(upp|low)er() */
 #  include <unistd.h> /* DECC has this; VAXC and gcc don't */
 #endif
 
+/* VAXC doesn't have a unary plus operator, so we need to get there indirectly */
+#if defined(VAXC) && !defined(__DECC)
+#  define NO_UNARY_PLUS
+#endif
+
 #ifdef NO_PERL_TYPEDEFS /* a2p; we don't want Perl's special routines */
 #  define DONT_MASK_RTL_CALLS
 #endif
 
 /* DECC introduces this routine in the RTL as of VMS 7.0; for now,
  * we'll use ours, since it gives us the full VMS exit status. */
-#ifdef __PID_T
-#  define Pid_t pid_t
-#else
-#  define Pid_t unsigned int
-#endif
 #define waitpid my_waitpid
 
 /* Don't redeclare standard RTL routines in Perl's header files;
  */
 #define BIG_TIME
 
-/* USE_STAT_RDEV:
- *     This symbol is defined if this system has a stat structure declaring
- *     st_rdev
- */
-#define USE_STAT_RDEV  /**/
-
 /* ACME_MESS:
  *     This symbol, if defined, indicates that error messages should be 
  *     should be generated in a format that allows the use of the Acme
 #define COMPLEX_STATUS 1       /* We track both "POSIX" and VMS values */
 
 #define HINT_V_VMSISH          24
-#define HINT_M_VMSISH_STATUS   0x01000000 /* system, $? return VMS status */
-#define HINT_M_VMSISH_EXIT     0x02000000 /* exit(1) ==> SS$_NORMAL */
-#define HINT_M_VMSISH_TIME     0x04000000 /* times are local, not UTC */
-#define NATIVE_HINTS           (hints >> HINT_V_VMSISH)  /* used in op.c */
+#define HINT_M_VMSISH_STATUS   0x20000000 /* system, $? return VMS status */
+#define HINT_M_VMSISH_EXIT     0x40000000 /* exit(1) ==> SS$_NORMAL */
+#define HINT_M_VMSISH_TIME     0x80000000 /* times are local, not UTC */
+#define NATIVE_HINTS           (PL_hints >> HINT_V_VMSISH)  /* used in op.c */
 
-#define TEST_VMSISH(h) (curcop->op_private & ((h) >> HINT_V_VMSISH))
+#define TEST_VMSISH(h) (PL_curcop->op_private & ((h) >> HINT_V_VMSISH))
 #define VMSISH_STATUS  TEST_VMSISH(HINT_M_VMSISH_STATUS)
 #define VMSISH_EXIT    TEST_VMSISH(HINT_M_VMSISH_EXIT)
 #define VMSISH_TIME    TEST_VMSISH(HINT_M_VMSISH_TIME)
 #endif
 
 #define BIT_BUCKET "_NLA0:"
-#define PERL_SYS_INIT(c,v)     vms_image_init((c),(v)), MALLOC_INIT
+#define PERL_SYS_INIT(c,v)     vms_image_init((c),(v)); MALLOC_INIT
 #define PERL_SYS_TERM()                MALLOC_TERM
 #define dXSUB_SYS
 #define HAS_KILL
 #define HAS_UTIME              /**/
 
 /* HAS_GROUP
- *     This symbol, if defined, indicates that the getgrnam(),
- *     getgrgid(), and getgrent() routines are available to 
- *     get group entries.
+ *     This symbol, if defined, indicates that the getgrnam() and
+ *     getgrgid() routines are available to get group entries.
+ *     The getgrent() has a separate definition, HAS_GETGRENT.
  */
 #undef HAS_GROUP               /**/
 
 /* HAS_PASSWD
- *     This symbol, if defined, indicates that the getpwnam(),
- *     getpwuid(), and getpwent() routines are available to 
- *     get password entries.
+ *     This symbol, if defined, indicates that the getpwnam() and
+ *     getpwuid() routines are available to get password entries.
+ *     The getpwent() has a separate definition, HAS_GETPWENT.
  */
 #define HAS_PASSWD             /**/
 
@@ -381,7 +374,9 @@ struct utimbuf {
 #  define sigdelset(t, u) my_sigdelset(t, u)
 #  define sigismember(t, u) my_sigismember(t, u)
 #  define sigprocmask(t, u, v) my_sigprocmask(t, u, v)
+#  ifndef _SIGSET_T
    typedef int sigset_t;
+#  endif
    /* The tools for sigprocmask() are there, just not the routine itself */
 #  ifndef SIG_UNBLOCK
 #    define SIG_UNBLOCK 1