]> andersk Git - openssh.git/blobdiff - log.c
*** empty log message ***
[openssh.git] / log.c
diff --git a/log.c b/log.c
index 11633fe3fd19703d0af1c7c5cb6ab4b067929f73..685717aef8c24226a912107393f92574aa762646 100644 (file)
--- a/log.c
+++ b/log.c
@@ -34,7 +34,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: log.c,v 1.17 2001/03/04 17:42:28 millert Exp $");
+RCSID("$OpenBSD: log.c,v 1.25 2003/01/11 18:29:43 markus Exp $");
 
 #include "log.h"
 #include "xmalloc.h"
@@ -57,6 +57,9 @@ static struct {
        { "DAEMON",     SYSLOG_FACILITY_DAEMON },
        { "USER",       SYSLOG_FACILITY_USER },
        { "AUTH",       SYSLOG_FACILITY_AUTH },
+#ifdef LOG_AUTHPRIV
+       { "AUTHPRIV",   SYSLOG_FACILITY_AUTHPRIV },
+#endif
        { "LOCAL0",     SYSLOG_FACILITY_LOCAL0 },
        { "LOCAL1",     SYSLOG_FACILITY_LOCAL1 },
        { "LOCAL2",     SYSLOG_FACILITY_LOCAL2 },
@@ -65,7 +68,7 @@ static struct {
        { "LOCAL5",     SYSLOG_FACILITY_LOCAL5 },
        { "LOCAL6",     SYSLOG_FACILITY_LOCAL6 },
        { "LOCAL7",     SYSLOG_FACILITY_LOCAL7 },
-       { NULL, 0 }
+       { NULL,         SYSLOG_FACILITY_NOT_SET }
 };
 
 static struct {
@@ -82,40 +85,31 @@ static struct {
        { "DEBUG1",     SYSLOG_LEVEL_DEBUG1 },
        { "DEBUG2",     SYSLOG_LEVEL_DEBUG2 },
        { "DEBUG3",     SYSLOG_LEVEL_DEBUG3 },
-       { NULL, 0 }
+       { NULL,         SYSLOG_LEVEL_NOT_SET }
 };
 
 SyslogFacility
 log_facility_number(char *name)
 {
        int i;
+
        if (name != NULL)
                for (i = 0; log_facilities[i].name; i++)
                        if (strcasecmp(log_facilities[i].name, name) == 0)
                                return log_facilities[i].val;
-       return (SyslogFacility) - 1;
+       return SYSLOG_FACILITY_NOT_SET;
 }
 
 LogLevel
 log_level_number(char *name)
 {
        int i;
+
        if (name != NULL)
                for (i = 0; log_levels[i].name; i++)
                        if (strcasecmp(log_levels[i].name, name) == 0)
                                return log_levels[i].val;
-       return (LogLevel) - 1;
-}
-/* Fatal messages.  This function never returns. */
-
-void
-fatal(const char *fmt,...)
-{
-       va_list args;
-       va_start(args, fmt);
-       do_log(SYSLOG_LEVEL_FATAL, fmt, args);
-       va_end(args);
-       fatal_cleanup();
+       return SYSLOG_LEVEL_NOT_SET;
 }
 
 /* Error messages that should be logged. */
@@ -124,6 +118,7 @@ void
 error(const char *fmt,...)
 {
        va_list args;
+
        va_start(args, fmt);
        do_log(SYSLOG_LEVEL_ERROR, fmt, args);
        va_end(args);
@@ -132,9 +127,10 @@ error(const char *fmt,...)
 /* Log this message (information that usually should go to the log). */
 
 void
-log(const char *fmt,...)
+logit(const char *fmt,...)
 {
        va_list args;
+
        va_start(args, fmt);
        do_log(SYSLOG_LEVEL_INFO, fmt, args);
        va_end(args);
@@ -146,6 +142,7 @@ void
 verbose(const char *fmt,...)
 {
        va_list args;
+
        va_start(args, fmt);
        do_log(SYSLOG_LEVEL_VERBOSE, fmt, args);
        va_end(args);
@@ -157,6 +154,7 @@ void
 debug(const char *fmt,...)
 {
        va_list args;
+
        va_start(args, fmt);
        do_log(SYSLOG_LEVEL_DEBUG1, fmt, args);
        va_end(args);
@@ -166,6 +164,7 @@ void
 debug2(const char *fmt,...)
 {
        va_list args;
+
        va_start(args, fmt);
        do_log(SYSLOG_LEVEL_DEBUG2, fmt, args);
        va_end(args);
@@ -175,6 +174,7 @@ void
 debug3(const char *fmt,...)
 {
        va_list args;
+
        va_start(args, fmt);
        do_log(SYSLOG_LEVEL_DEBUG3, fmt, args);
        va_end(args);
@@ -223,6 +223,19 @@ fatal_remove_cleanup(void (*proc) (void *context), void *context)
            (u_long) proc, (u_long) context);
 }
 
+/* Remove all cleanups, to be called after fork() */
+void
+fatal_remove_all_cleanups(void)
+{
+       struct fatal_cleanup *cu, *next_cu;
+
+       for (cu = fatal_cleanups; cu; cu = next_cu) {
+               next_cu = cu->next;
+               xfree(cu);
+       }
+       fatal_cleanups = NULL;
+}
+
 /* Cleanup and exit */
 void
 fatal_cleanup(void)
@@ -237,7 +250,7 @@ fatal_cleanup(void)
        for (cu = fatal_cleanups; cu; cu = next_cu) {
                next_cu = cu->next;
                debug("Calling cleanup 0x%lx(0x%lx)",
-                     (u_long) cu->proc, (u_long) cu->context);
+                   (u_long) cu->proc, (u_long) cu->context);
                (*cu->proc) (cu->context);
        }
        exit(255);
@@ -265,7 +278,7 @@ log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr)
                log_level = level;
                break;
        default:
-               fprintf(stderr, "Unrecognized internal syslog level code %d",
+               fprintf(stderr, "Unrecognized internal syslog level code %d\n",
                    (int) level);
                exit(1);
        }
@@ -284,12 +297,10 @@ log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr)
        case SYSLOG_FACILITY_AUTH:
                log_facility = LOG_AUTH;
                break;
-#if 0                  /* This is broken. =) - BAL */
-#ifdef LOG_AUTHPRIV            /** BAL: Verify */
-       case SYSLOG_FACILITY_AUTHPRIV
-               log_facility = AUTHPRIV;
-               break
-#endif
+#ifdef LOG_AUTHPRIV
+       case SYSLOG_FACILITY_AUTHPRIV:
+               log_facility = LOG_AUTHPRIV;
+               break;
 #endif
        case SYSLOG_FACILITY_LOCAL0:
                log_facility = LOG_LOCAL0;
@@ -317,7 +328,7 @@ log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr)
                break;
        default:
                fprintf(stderr,
-                   "Unrecognized internal syslog facility code %d",
+                   "Unrecognized internal syslog facility code %d\n",
                    (int) facility);
                exit(1);
        }
@@ -376,11 +387,14 @@ do_log(LogLevel level, const char *fmt, va_list args)
        } else {
                vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);
        }
+       /* Escape magic chars in output. */
+       strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_OCTAL);
+       
        if (log_on_stderr) {
-               fprintf(stderr, "%s\r\n", msgbuf);
+               fprintf(stderr, "%s\r\n", fmtbuf);
        } else {
                openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility);
-               syslog(pri, "%.500s", msgbuf);
+               syslog(pri, "%.500s", fmtbuf);
                closelog();
        }
 }
This page took 0.0513 seconds and 4 git commands to generate.