#define COMPLEX_STATUS 1 /* We track both "POSIX" and VMS values */
#define HINT_V_VMSISH 24
-#define HINT_M_VMSISH_HUSHED 0x20000000 /* stifle error msgs on exit */
#define HINT_M_VMSISH_STATUS 0x40000000 /* system, $? return VMS status */
#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) (PL_curcop->op_private & ((h) >> HINT_V_VMSISH))
-#define VMSISH_HUSHED TEST_VMSISH(HINT_M_VMSISH_HUSHED)
#define VMSISH_STATUS TEST_VMSISH(HINT_M_VMSISH_STATUS)
#define VMSISH_TIME TEST_VMSISH(HINT_M_VMSISH_TIME)
+/* VMS-specific data storage */
+
+#define HAVE_INTERP_INTERN
+struct interp_intern {
+ int hushed;
+ float inv_rand_max;
+ struct dsc$descriptor_s VMScmd;
+};
+#define VMSISH_HUSHED (PL_sys_intern.hushed)
+#define MY_INV_RAND_MAX (PL_sys_intern.inv_rand_max)
+#define VMSCMD (PL_sys_intern.VMScmd)
+
/* Flags for vmstrnenv() */
#define PERL__TRNENV_SECURE 0x01
# define sa_mask sv_mask
# define sigsuspend(set) sigpause(*set)
# define sigpending(a) (not_here("sigpending"),0)
+#else
+/*
+ * The C RTL's sigaction fails to check for invalid signal numbers so we
+ * help it out a bit.
+ */
+# ifndef DONT_MASK_RTL_CALLS
+# define sigaction(a,b,c) Perl_my_sigaction(a,b,c)
+# endif
#endif
/* VMS doesn't use a real sys_nerr, but we need this when scanning for error
int Perl_kill_file (pTHX_ char *);
int Perl_my_chdir (pTHX_ char *);
FILE * Perl_my_tmpfile ();
+#ifndef HOMEGROWN_POSIX_SIGNALS
+int Perl_my_sigaction (pTHX_ int, const struct sigaction*, struct sigaction*);
+#endif
int Perl_my_utime (pTHX_ char *, struct utimbuf *);
void Perl_vms_image_init (int *, char ***);
struct dirent * Perl_readdir (pTHX_ DIR *);