X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=vms%2Fvmsish.h;h=1a29aa6b59636b8c4fac48d2ec239b433c2d22e4;hb=96a925ab0077cdd24bd7d328f20be3d5373d4885;hp=93af772415dadee062bd21abc763475871a619f9;hpb=5c2d7af2a41ad0642e7ae40c61d42000f908a0e0;p=p5sagit%2Fp5-mst-13.2.git diff --git a/vms/vmsish.h b/vms/vmsish.h index 93af772..1a29aa6 100644 --- a/vms/vmsish.h +++ b/vms/vmsish.h @@ -146,6 +146,7 @@ #define my_getpwuid Perl_my_getpwuid #define my_flush Perl_my_flush #define readdir Perl_readdir +#define readdir_r Perl_readdir_r #else #define my_getenv_len(a,b,c) Perl_my_getenv_len(aTHX_ a,b,c) #define vmssetenv(a,b,c) Perl_vmssetenv(aTHX_ a,b,c) @@ -191,6 +192,7 @@ #define my_getpwuid(a) Perl_my_getpwuid(aTHX_ a) #define my_flush(a) Perl_my_flush(aTHX_ a) #define readdir(a) Perl_readdir(aTHX_ a) +#define readdir_r(a,b,c) Perl_readdir_r(aTHX_ a,b,c) #endif #define my_gconvert Perl_my_gconvert #define telldir Perl_telldir @@ -285,18 +287,27 @@ #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; + double inv_rand_max; +}; +#define VMSISH_HUSHED (PL_sys_intern.hushed) +#define MY_INV_RAND_MAX (PL_sys_intern.inv_rand_max) + /* Flags for vmstrnenv() */ #define PERL__TRNENV_SECURE 0x01 +#define PERL__TRNENV_JOIN_SEARCHLIST 0x02 /* Handy way to vet calls to VMS system services and RTL routines. */ #define _ckvmssts(call) STMT_START { register unsigned long int __ckvms_sts; \ @@ -498,9 +509,13 @@ struct utimbuf { * help it out a bit. */ # ifndef DONT_MASK_RTL_CALLS -# define sigaction(a,b,c) Perl_my_sigaction(a,b,c) +# define sigaction(a,b,c) Perl_my_sigaction(aTHX_ a,b,c) # endif #endif +#ifdef KILL_BY_SIGPRC +# define kill Perl_my_kill +#endif + /* VMS doesn't use a real sys_nerr, but we need this when scanning for error * messages in text strings . . . @@ -551,6 +566,7 @@ typedef struct _dirdesc { char *pattern; struct dirent entry; struct dsc$descriptor_s pat; + void *mutex; } DIR; #define rewinddir(dirp) seekdir((dirp), 0) @@ -758,9 +774,15 @@ FILE * Perl_my_tmpfile (); #ifndef HOMEGROWN_POSIX_SIGNALS int Perl_my_sigaction (pTHX_ int, const struct sigaction*, struct sigaction*); #endif +#ifdef KILL_BY_SIGPRC +unsigned int Perl_sig_to_vmscondition (int); +int Perl_my_kill (int, int); +void Perl_csighandler_init (void); +#endif int Perl_my_utime (pTHX_ char *, struct utimbuf *); void Perl_vms_image_init (int *, char ***); struct dirent * Perl_readdir (pTHX_ DIR *); +int Perl_readdir_r(pTHX_ DIR *, struct dirent *, struct dirent **); long telldir (DIR *); void Perl_seekdir (pTHX_ DIR *, long); void closedir (DIR *);