]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/xlog.c
Cleaned up warnings in rmtab.c and xlog.c
[nfs-utils.git] / support / nfs / xlog.c
index e1e4c3f0bf412817ea6e9ca633266b949c72f7ca..5ac9ba0e6a4d0657d2d9f9440319522921363cf6 100644 (file)
@@ -15,7 +15,9 @@
  *             as is, with no warranty expressed or implied.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include <unistd.h>
 #include <signal.h>
@@ -129,39 +131,33 @@ xlog_enabled(int fac)
 
 /* Write something to the system logfile and/or stderr */
 void
-xlog(int kind, const char *fmt, ...)
+xlog_backend(int kind, const char *fmt, va_list args)
 {
-       char            buff[1024];
-       va_list         args;
-       int             n;
+       va_list args2 = NULL;
 
        if (!(kind & (L_ALL)) && !(logging && (kind & logmask)))
                return;
 
-       va_start(args, fmt);
-       vsnprintf(buff, sizeof (buff), fmt, args);
-       va_end(args);
-
-       if ((n = strlen(buff)) > 0 && buff[n-1] == '\n')
-               buff[--n] = '\0';
+       if (log_stderr)
+               va_copy(args2, args);
 
        if (log_syslog) {
                switch (kind) {
                case L_FATAL:
-                       syslog(LOG_ERR, "%s", buff);
+                       vsyslog(LOG_ERR, fmt, args);
                        break;
                case L_ERROR:
-                       syslog(LOG_ERR, "%s", buff);
+                       vsyslog(LOG_ERR, fmt, args);
                        break;
                case L_WARNING:
-                       syslog(LOG_WARNING, "%s", buff);
+                       vsyslog(LOG_WARNING, fmt, args);
                        break;
                case L_NOTICE:
-                       syslog(LOG_NOTICE, "%s", buff);
+                       vsyslog(LOG_NOTICE, fmt, args);
                        break;
                default:
                        if (!log_stderr)
-                               syslog(LOG_DEBUG, "%s", buff);
+                               vsyslog(LOG_INFO, fmt, args);
                        break;
                }
        }
@@ -173,16 +169,49 @@ xlog(int kind, const char *fmt, ...)
 
                time(&now);
                tm = localtime(&now);
-               fprintf(stderr, "%s[%d] %04d-%02d-%02d %02d:%02d:%02d %s\n",
+               fprintf(stderr, "%s[%d] %04d-%02d-%02d %02d:%02d:%02d ",
                                log_name, log_pid,
                                tm->tm_year+1900, tm->tm_mon + 1, tm->tm_mday,
-                               tm->tm_hour, tm->tm_min, tm->tm_sec,
-                               buff);
+                               tm->tm_hour, tm->tm_min, tm->tm_sec);
 #else
-               fprintf(stderr, "%s: %s\n", log_name, buff);
+               fprintf(stderr, "%s: ", log_name);
 #endif
+               vfprintf(stderr, fmt, args2);
+               fprintf(stderr, "\n");
+               va_end(args2);
        }
 
        if (kind == L_FATAL)
                exit(1);
 }
+
+void
+xlog(int kind, const char* fmt, ...)
+{
+       va_list args;
+
+       va_start(args, fmt);
+       xlog_backend(kind, fmt, args);
+       va_end(args);
+}
+
+void
+xlog_warn(const char* fmt, ...)
+{
+       va_list args;
+
+       va_start(args, fmt);
+       xlog_backend(L_WARNING, fmt, args);
+       va_end(args);
+}
+
+
+void
+xlog_err(const char* fmt, ...)
+{
+       va_list args;
+
+       va_start(args, fmt);
+       xlog_backend(L_FATAL, fmt, args);
+       va_end(args);
+}