X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=vms%2Fvmsish.h;h=410031cca3d3a3476d70372fe977829517e77a4f;hb=88bf70ddad663558df6e83dce8f369f639fc7dd6;hp=991723223490c9d3b744684ef50b18755399b275;hpb=8cc95fdbe3687330bd987cea170494b4cd263d90;p=p5sagit%2Fp5-mst-13.2.git diff --git a/vms/vmsish.h b/vms/vmsish.h index 9917232..410031c 100644 --- a/vms/vmsish.h +++ b/vms/vmsish.h @@ -104,17 +104,24 @@ # define tounixpath_ts Perl_tounixpath_ts # define tovmspath Perl_tovmspath # define tovmspath_ts Perl_tovmspath_ts -# define getredirection Perl_getredirection +# define vms_image_init Perl_vms_image_init # define opendir Perl_opendir # define readdir Perl_readdir # define telldir Perl_telldir # define seekdir Perl_seekdir # define closedir Perl_closedir # define vmsreaddirversions Perl_vmsreaddirversions -# define getredirection Perl_getredirection +#if __VMS_VER < 70000000 || __DECC_VER < 50200000 # define my_gmtime Perl_my_gmtime # define my_localtime Perl_my_localtime # define my_time Perl_my_time +# define my_sigemptyset Perl_my_sigemptyset +# define my_sigfillset Perl_my_sigfillset +# define my_sigaddset Perl_my_sigaddset +# define my_sigdelset Perl_my_sigdelset +# define my_sigismember Perl_my_sigismember +# define my_sigprocmask Perl_my_sigprocmask +#endif # define cando_by_name Perl_cando_by_name # define flex_fstat Perl_flex_fstat # define flex_stat Perl_flex_stat @@ -125,6 +132,7 @@ # define do_aspawn Perl_do_aspawn # define do_spawn Perl_do_spawn # define my_fwrite Perl_my_fwrite +# define my_flush Perl_my_flush # define my_binmode Perl_my_binmode # define my_getpwnam Perl_my_getpwnam # define my_getpwuid Perl_my_getpwuid @@ -225,7 +233,7 @@ #endif #define BIT_BUCKET "_NLA0:" -#define PERL_SYS_INIT(c,v) getredirection((c),(v)) +#define PERL_SYS_INIT(c,v) vms_image_init((c),(v)) #define PERL_SYS_TERM() #define dXSUB_SYS #define HAS_KILL @@ -284,6 +292,9 @@ */ #define fwrite1 my_fwrite +/* By default, flush data all the way to disk, not just to RMS buffers */ +#define Fflush(fp) my_flush(fp) + /* Use our own rmdir() */ #define rmdir(name) do_rmdir(name) @@ -327,9 +338,34 @@ struct utimbuf { * in VMS 6.0 or later use. We also add shims for time() and localtime() * so we can run on UTC by default. */ +#if __VMS_VER < 70000000 || __DECC_VER < 50200000 #define gmtime(t) my_gmtime(t) #define localtime(t) my_localtime(t) #define time(t) my_time(t) +#define sigemptyset(t) my_sigemptyset(t) +#define sigfillset(t) my_sigfillset(t) +#define sigaddset(t, u) my_sigaddset(t, u) +#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) +typedef int sigset_t; +/* The tools for sigprocmask() are there, just not the routine itself */ +# ifndef SIG_UNBLOCK +# define SIG_UNBLOCK 1 +# endif +# ifndef SIG_BLOCK +# define SIG_BLOCK 2 +# endif +# ifndef SIG_SETMASK +# define SIG_SETMASK 3 +# endif +# define sigaction sigvec +# define sa_flags sv_onstack +# define sa_handler sv_handler +# define sa_mask sv_mask +# define sigsuspend(set) sigpause(*set) +# define sigpending(a) (not_here("sigpending"),0) +#endif /* VMS doesn't use a real sys_nerr, but we need this when scanning for error * messages in text strings . . . @@ -357,9 +393,6 @@ struct utimbuf { #define Stat(name,bufptr) flex_stat(name,bufptr) #define Fstat(fd,bufptr) flex_fstat(fd,bufptr) -/* By default, flush data all the way to disk, not just to RMS buffers */ -#define Fflush(fp) ((fflush(fp) || fsync(fileno(fp))) ? EOF : 0) - /* Setup for the dirent routines: * opendir(), closedir(), readdir(), seekdir(), telldir(), and * vmsreaddirversions(), and preprocessor stuff on which these depend: @@ -499,7 +532,6 @@ typedef unsigned myino_t; #endif void prime_env_iter _((void)); -void getredirection _((int *, char ***)); void init_os_extras _(()); /* prototype section start marker; `typedef' passes through cpp */ typedef char __VMS_PROTOTYPES__; @@ -510,7 +542,7 @@ Pid_t my_waitpid _((Pid_t, int *, int)); char * my_gconvert _((double, int, int, char *)); int do_rmdir _((char *)); int kill_file _((char *)); -int my_mkdir _((char *, mode_t)); +int my_mkdir _((char *, Mode_t)); int my_utime _((char *, struct utimbuf *)); char * rmsexpand _((char *, char *, char *, unsigned)); char * rmsexpand_ts _((char *, char *, char *, unsigned)); @@ -526,16 +558,28 @@ char * tounixpath _((char *, char *)); char * tounixpath_ts _((char *, char *)); char * tovmspath _((char *, char *)); char * tovmspath_ts _((char *, char *)); -void getredirection _(()); +void vms_image_init _((int *, char ***)); DIR * opendir _((char *)); struct dirent * readdir _((DIR *)); long telldir _((DIR *)); void seekdir _((DIR *, long)); void closedir _((DIR *)); void vmsreaddirversions _((DIR *, int)); +#ifdef my_gmtime struct tm * my_gmtime _((const time_t *)); struct tm * my_localtime _((const time_t *)); time_t my_time _((time_t *)); +#endif /* We're assuming these three come as a package */ +/* We're just gonna assume that if we've got an antique here that we */ +/* need the signal functions */ +#if __VMS_VER < 70000000 || __DECC_VER < 50200000 +int my_sigemptyset _((sigset_t *)); +int my_sigfillset _((sigset_t *)); +int my_sigaddset _((sigset_t *, int)); +int my_sigdelset _((sigset_t *, int)); +int my_sigismember _((sigset_t *, int)); +int my_sigprocmask _((int, sigset_t *, sigset_t *)); +#endif I32 cando_by_name _((I32, I32, char *)); int flex_fstat _((int, struct mystat *)); int flex_stat _((char *, struct mystat *)); @@ -546,6 +590,7 @@ bool vms_do_exec _((char *)); unsigned long int do_aspawn _((SV *, SV **, SV **)); unsigned long int do_spawn _((char *)); int my_fwrite _((void *, size_t, size_t, FILE *)); +int my_flush _((FILE *)); FILE * my_binmode _((FILE *, char)); struct passwd * my_getpwnam _((char *name)); struct passwd * my_getpwuid _((Uid_t uid));