This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Some low-hanging -Wunreachable-code fruits.
[perl5.git] / vos / vos.c
index ee3993d..0b3c334 100644 (file)
--- a/vos/vos.c
+++ b/vos/vos.c
@@ -6,6 +6,10 @@
      have pow(0,0) return 1, avoiding c-1471. */
 /* Modified 06-09-25 by Paul Green (Paul.Green@stratus.com) to
      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>
@@ -16,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.  */
 
@@ -33,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
@@ -63,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] = "/Stratus/Green/build_farm/build_farm.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;
-}