diff options
author | Paul Green <Paul.Green@stratus.com> | 2011-11-04 15:19:28 -0400 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-11-04 13:25:44 -0700 |
commit | 05954a8b9f14e33d62acd061f4cdda5f0cfd0ec0 (patch) | |
tree | b217104335f3b41c0724f16d19b35050183fd5db /vos | |
parent | f0d0a205cc02c769ca48d6df00f3eea304ff91d8 (diff) | |
download | perl-05954a8b9f14e33d62acd061f4cdda5f0cfd0ec0.tar.gz |
Build perl using the dynamic linking capabilities of OpenVOS Release 17.1. Remove private copies of some POSIX functions that are now implemented by OpenVOS.
Diffstat (limited to 'vos')
-rw-r--r-- | vos/syslog.h | 75 | ||||
-rw-r--r-- | vos/vos.c | 241 | ||||
-rw-r--r-- | vos/vosish.h | 6 |
3 files changed, 2 insertions, 320 deletions
diff --git a/vos/syslog.h b/vos/syslog.h deleted file mode 100644 index 1916fc1b34..0000000000 --- a/vos/syslog.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Beginning of modification history */ -/* Written 02-08-13 by PG */ -/* End of modification history */ - -/* This header conforms to IEEE Std 1003.1-2001 */ - -#ifndef _INCLUDED_SYSLOG_H -#define _INCLUDED_SYSLOG_H - -/* values of the "logopt" option of openlog */ - -#define LOG_PID 1 -#define LOG_CONS 2 -#define LOG_NDELAY 4 -#define LOG_ODELAY 8 -#define LOG_NOWAIT 16 - -/* values of the "facility" argument of openlog - and of the "priority" argument of syslog */ - -#define LOG_KERN 0 -#define LOG_USER (1<<3) -#define LOG_MAIL (2<<3) -#define LOG_NEWS (3<<3) -#define LOG_UUCP (4<<3) -#define LOG_DAEMON (5<<3) -#define LOG_AUTH (6<<3) -#define LOG_CRON (7<<3) -#define LOG_LPR (8<<3) -#define LOG_LOCAL0 (9<<3) -#define LOG_LOCAL1 (10<<3) -#define LOG_LOCAL2 (11<<3) -#define LOG_LOCAL3 (12<<3) -#define LOG_LOCAL4 (13<<3) -#define LOG_LOCAL5 (14<<3) -#define LOG_LOCAL6 (15<<3) -#define LOG_LOCAL7 (16<<3) - -/* macro for constructing "maskpri" arg to setlogmask */ - -#define LOG_MASK(p) (1 << (p)) - -/* values of the "priority" argument of syslog */ - -#define LOG_EMERG 0 -#define LOG_ALERT 1 -#define LOG_CRIT 2 -#define LOG_ERR 3 -#define LOG_WARNING 4 -#define LOG_NOTICE 5 -#define LOG_INFO 6 -#define LOG_DEBUG 7 - -#undef __P -#ifdef __PROTOTYPES__ -#define __P(args) args -#else -#define __P(args) () -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern void closelog __P((void)); -extern void openlog __P((const char *ident, int logopt, - int facility)); -extern int setlogmask __P((int maskpri)); -extern void syslog __P((int priority, const char * message, ...)); - -#ifdef __cplusplus -} -#endif - -#endif /* _INCLUDED_SYSLOG_H */ @@ -8,6 +8,8 @@ add syslog entries. */ /* Modified 08-02-04 by Paul Green (Paul.Green@stratus.com) to open the syslog file in the working dir. */ +/* Modified 11-10-17 by Paul Green to remove the dummy copies + of socketpair() and the syslog functions. */ /* End of modification history */ #include <errno.h> @@ -18,8 +20,6 @@ #include <sys/types.h> #include <unistd.h> -#include "vos/syslog.h" - /* VOS doesn't supply a truncate function, so we build one up from the available POSIX functions. */ @@ -35,18 +35,6 @@ truncate(const char *path, off_t len) return code; } -/* VOS doesn't implement AF_UNIX (AF_LOCAL) style sockets, and - the perl emulation of them hangs on VOS (due to stcp-1257), - so we supply this version that always fails. */ - -int -socketpair (int family, int type, int protocol, int fd[2]) { - fd[0] = 0; - fd[1] = 0; - errno = ENOSYS; - return -1; -} - /* Supply a private version of the power function that returns 1 for x**0. This avoids c-1471. Abigail's Japh tests depend on this fix. We leave all the other cases to the VOS C @@ -65,228 +53,3 @@ double x, y; return(s_crt_pow(&x,&y)); } - -/* entries */ - -extern void s$log_system_message ( -/* char_varying (256) *message_text, - char_varying (66) *module_name, - short int *error_code */ ); - -/* constants */ - -#define ALL_PRIORITIES 255 /* 8 priorities, all enabled */ -#define BUFFER_LEN 256 -#define IDENT_LEN 64 -#define MSG_LEN 256 -#define PATH_LEN 257 - -/* static */ - -int vos_syslog_facility = LOG_USER>>3; -int vos_syslog_fd = -1; -int vos_syslog_logopt = 0; -char vos_syslog_ident[IDENT_LEN] = ""; -int vos_syslog_ident_len = 0; -int vos_syslog_mask = ALL_PRIORITIES; -char vos_syslog_path[PATH_LEN] = "syslog"; - -char vos_syslog_facility_name [17][10] = { - "[KERN] ", /* LOG_KERN */ - "[USER] ", /* LOG_USER */ - "[MAIL] ", /* LOG_MAIL */ - "[NEWS] ", /* LOG_NEWS */ - "[UUCP] ", /* LOG_UUCP */ - "[DAEMON] ", /* LOG_DAEMON */ - "[AUTH] ", /* LOG_AUTH */ - "[CRON] ", /* LOG_CRON */ - "[LPR] ", /* LOG_LPR */ - "[LOCAL0] ", /* LOG_LOCAL0 */ - "[LOCAL1] ", /* LOG_LOCAL1 */ - "[LOCAL2] ", /* LOG_LOCAL2 */ - "[LOCAL3] ", /* LOG_LOCAL3 */ - "[LOCAL4] ", /* LOG_LOCAL4 */ - "[LOCAL5] ", /* LOG_LOCAL5 */ - "[LOCAL6] ", /* LOG_LOCAL6 */ - "[LOCAL7] "}; /* LOG_LOCAL7 */ - -/* syslog functions */ - -static void open_syslog (void) -{ - if (vos_syslog_fd >= 0) - return; - - vos_syslog_fd = open (vos_syslog_path, O_RDWR | O_CREAT | O_APPEND, 0777); - if (vos_syslog_fd < 0) - fprintf (stderr, "Unable to open %s (errno=%d, os_errno=%d)\n", - vos_syslog_path, errno, os_errno); -} - -void closelog (void) -{ - if (vos_syslog_fd >= 0) - close (vos_syslog_fd); - - vos_syslog_facility = LOG_USER>>3; - vos_syslog_fd = -1; - vos_syslog_logopt = 0; - vos_syslog_ident[0] = '\0'; - vos_syslog_ident_len = 0; - vos_syslog_mask = ALL_PRIORITIES; - return; -} - -void openlog (const char *ident, int logopt, int facility) -{ -int n; - - if (ident != NULL) - { - strncpy (vos_syslog_ident, ident, sizeof (vos_syslog_ident)); - n = IDENT_LEN - - strnlen (vos_syslog_ident, sizeof (vos_syslog_ident)); - strncat (vos_syslog_ident, ": ", n); - vos_syslog_ident_len = strnlen (vos_syslog_ident, - sizeof (vos_syslog_ident)); - } - - vos_syslog_logopt = logopt; - vos_syslog_facility = facility>>3; - - if ((logopt & LOG_NDELAY) == LOG_NDELAY) - open_syslog (); - - return; -} - -int setlogmask (int maskpri) -{ -int old_mask; - - old_mask = vos_syslog_mask; - - if (maskpri > 0) - vos_syslog_mask = maskpri; - - return old_mask; -} - -void syslog (int priority, const char *format, ...) -{ -va_list ap; -int bare_facility; -int bare_priority; -int buffer_n; -char buffer[BUFFER_LEN]; -short int code; -char_varying(MSG_LEN) message; -char_varying(66) module_name; -int n; -int pid_n; -char pid_string[32]; -int r; -int user_n; -char user_string[256]; - - /* Calculate priority and facility value. */ - - bare_priority = priority & 3; - bare_facility = priority >> 3; - - /* If the priority is not set in the mask, do not log the - message. */ - - if ((vos_syslog_mask & LOG_MASK(bare_priority)) == 0) - return; - - /* Output facility name. */ - - if (bare_facility == 0) - bare_facility = vos_syslog_facility; - - strcpy (buffer, vos_syslog_facility_name[bare_facility]); - - /* Output priority value. */ - - /* TBD */ - - /* Output identity string. */ - - buffer_n = BUFFER_LEN - strlen (buffer); - strncat (buffer, vos_syslog_ident, buffer_n); - - /* Output process ID. */ - - if ((vos_syslog_logopt & LOG_PID) == LOG_PID) - { - pid_n = snprintf (pid_string, sizeof (pid_string), - "PID=0x%x ", getpid ()); - if (pid_n) - { - buffer_n = BUFFER_LEN - strlen (buffer); - strncat (buffer, pid_string, buffer_n); - } - } - - /* Output formatted message. */ - - va_start (ap, format); - user_n = vsnprintf (user_string, sizeof (user_string), format, ap); - va_end (ap); - - /* Ensure string ends in a newline. */ - - if (user_n > 0) - { - if (user_n >= sizeof (user_string)) - user_n = sizeof (user_string) - 1; - - /* arrays are zero-origin.... */ - - if (user_string [user_n-1] != '\n') - { - user_string [user_n-1] = '\n'; - user_string [user_n++] = '\0'; - } - } - else - { - user_string [0] = '\n'; - user_string [1] = '\0'; - user_n = 1; - } - - buffer_n = BUFFER_LEN - strnlen (buffer, sizeof (buffer)); - strncat (buffer, user_string, buffer_n); - - /* If the log is not open, try to open it now. */ - - if (vos_syslog_fd < 0) - open_syslog (); - - /* Try to write the message to the syslog file. */ - - if (vos_syslog_fd < 0) - r = -1; - else - { - buffer_n = strnlen (buffer, sizeof (buffer)); - r = write (vos_syslog_fd, buffer, buffer_n); - } - - /* If we were unable to write to the log and if LOG_CONS is - set, send it to the console. */ - - if (r < 0) - if ((vos_syslog_logopt & LOG_CONS) == LOG_CONS) - { - strcpy_vstr_nstr (&message, "syslog: "); - n = MSG_LEN - sizeof ("syslog: "); - strncat_vstr_nstr (&message, buffer, n); - strcpy_vstr_nstr (&module_name, ""); - s$log_system_message (&message, &module_name, &code); - } - - return; -} diff --git a/vos/vosish.h b/vos/vosish.h index c9e37654e0..36b3b410a4 100644 --- a/vos/vosish.h +++ b/vos/vosish.h @@ -8,11 +8,5 @@ is a work-around for posix-1302. */ #undef SA_SIGINFO -/* The following declaration is an avoidance for posix-950. */ -extern int ioctl (int fd, int request, ...); - /* Specify a prototype for truncate() since we are supplying one. */ extern int truncate (const char *path, off_t len); - -/* Specify a prototype for socketpair() since we supplying one. */ -extern int socketpair (int family, int type, int protocol, int fd[2]); |