summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgreg@kroah.com <greg@kroah.com>2004-02-02 08:19:41 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:13:20 -0700
commit95a6f4c8acafe7031087667aa556a50a6a091c93 (patch)
tree8f7775e25d9315f20c0cc44cac362976e96627d2
parent3a7798f4714c88021b6ac0cda3e1d818a3fa7a07 (diff)
[PATCH] rework the logging code so that each program logs with the proper name in the syslog.
-rw-r--r--Makefile11
-rw-r--r--libsysfs/sysfs.h6
-rw-r--r--logging.h28
-rw-r--r--udev.c2
-rw-r--r--udevd.c3
-rw-r--r--udevinfo.c3
-rw-r--r--udevsend.c3
7 files changed, 40 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 05d5da5a33..386583b7eb 100644
--- a/Makefile
+++ b/Makefile
@@ -195,7 +195,6 @@ OBJS = udev_config.o \
udev-add.o \
udev-remove.o \
udevdb.o \
- logging.o \
namedev.o \
namedev_parse.o \
$(SYSFS) \
@@ -254,15 +253,15 @@ $(ROOT): udev.o $(OBJS) $(HEADERS) $(GEN_HEADERS)
$(STRIPCMD) $@
$(HELPER): udevinfo.o $(OBJS) $(HEADERS)
- $(LD) $(LDFLAGS) -o $@ $(CRT0) udevinfo.o logging.o udev_config.o udevdb.o $(SYSFS) $(TDB) $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ $(LD) $(LDFLAGS) -o $@ $(CRT0) udevinfo.o udev_config.o udevdb.o $(SYSFS) $(TDB) $(LIB_OBJS) $(ARCH_LIB_OBJS)
$(STRIPCMD) $@
-$(DAEMON): udevd.h udevd.o udevd.o logging.o
- $(LD) $(LDFLAGS) -lpthread -o $@ $(CRT0) udevd.o logging.o $(LIB_OBJS) $(ARCH_LIB_OBJS)
+$(DAEMON): udevd.h udevd.o
+ $(LD) $(LDFLAGS) -lpthread -o $@ $(CRT0) udevd.o $(LIB_OBJS) $(ARCH_LIB_OBJS)
$(STRIPCMD) $@
-$(SENDER): udevd.h udevsend.o udevd.o logging.o
- $(LD) $(LDFLAGS) -o $@ $(CRT0) udevsend.o logging.o $(LIB_OBJS) $(ARCH_LIB_OBJS)
+$(SENDER): udevd.h udevsend.o
+ $(LD) $(LDFLAGS) -o $@ $(CRT0) udevsend.o $(LIB_OBJS) $(ARCH_LIB_OBJS)
$(STRIPCMD) $@
clean:
diff --git a/libsysfs/sysfs.h b/libsysfs/sysfs.h
index 4ea4919351..49c9285bc3 100644
--- a/libsysfs/sysfs.h
+++ b/libsysfs/sysfs.h
@@ -34,7 +34,7 @@
/* Debugging */
#ifdef DEBUG
-#include <syslog.h>
+#include "../logging.h"
#define dprintf(format, arg...) \
do { \
log_message (LOG_DEBUG , "%s: " format , __FUNCTION__ , ## arg); \
@@ -43,8 +43,4 @@
#define dprintf(format, arg...) do { } while (0)
#endif
-extern int log_message (int level, const char *format, ...)
- __attribute__ ((format (printf, 2, 3)));
-
-
#endif /* _SYSFS_H_ */
diff --git a/logging.h b/logging.h
index df5922b3e6..e233ddc889 100644
--- a/logging.h
+++ b/logging.h
@@ -1,9 +1,9 @@
/*
* logging.h
*
- * Userspace devfs
+ * Simple logging functions that can be compiled away into nothing.
*
- * Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com>
+ * Copyright (C) 2003,2004 Greg Kroah-Hartman <greg@kroah.com>
* Copyright (C) 2004 Kay Sievers <kay.sievers@vrfy.org>
*
* This program is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
#define dbg_parse(format, arg...) do { } while (0)
#ifdef LOG
+#include <stdarg.h>
#include <syslog.h>
#undef info
@@ -54,9 +55,26 @@
} while (0)
#endif
-#endif /* LOG */
-
-extern int log_message (int level, const char *format, ...)
+static void log_message (int level, const char *format, ...)
__attribute__ ((format (printf, 2, 3)));
+static inline void log_message (int level, const char *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ vsyslog(level, format, args);
+ va_end(args);
+}
+
+/* each program must declare this variable somewhere */
+extern unsigned char logname[42];
+
+static inline void init_logging(char *program_name)
+{
+ snprintf(logname, 42,"%s[%d]", program_name, getpid());
+ openlog(logname, 0, LOG_DAEMON);
+}
+
+#endif /* LOG */
#endif
diff --git a/udev.c b/udev.c
index 38b26916c9..b45fb336be 100644
--- a/udev.c
+++ b/udev.c
@@ -38,6 +38,7 @@
/* global variables */
char **main_argv;
char **main_envp;
+unsigned char logname[42];
static void sig_handler(int signum)
{
@@ -174,6 +175,7 @@ int main(int argc, char **argv, char **envp)
main_argv = argv;
main_envp = envp;
+ init_logging("udev");
dbg("version %s", UDEV_VERSION);
return udev_hotplug(argc, argv);
diff --git a/udevd.c b/udevd.c
index dc7d581c24..331b7e4b84 100644
--- a/udevd.c
+++ b/udevd.c
@@ -42,6 +42,7 @@
#include "logging.h"
+unsigned char logname[42];
static pthread_mutex_t msg_lock;
static pthread_mutex_t msg_active_lock;
static pthread_cond_t msg_active;
@@ -354,6 +355,8 @@ int main(int argc, char *argv[])
pthread_t mgr_exec_tid;
int retval;
+ init_logging("udevd");
+
/* only let one version of the daemon run at any one time */
if (one_and_only() != 0)
exit(0);
diff --git a/udevinfo.c b/udevinfo.c
index 4d28755b2f..71a9a6d93e 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -38,6 +38,7 @@
char **main_argv;
int main_argc;
+unsigned char logname[42];
static int print_all_attributes(const char *path)
{
@@ -412,6 +413,8 @@ int main(int argc, char *argv[], char *envp[])
main_argv = argv;
main_argc = argc;
+ init_logging("udevinfo");
+
/* initialize our configuration */
udev_init_config();
diff --git a/udevsend.c b/udevsend.c
index 0ddc6839de..6af9df7704 100644
--- a/udevsend.c
+++ b/udevsend.c
@@ -40,6 +40,7 @@
#include "udevd.h"
#include "logging.h"
+unsigned char logname[42];
static inline char *get_action(void)
{
@@ -126,6 +127,8 @@ int main(int argc, char* argv[])
int sock;
struct sockaddr_un saddr;
+ init_logging("udevsend");
+
subsystem = argv[1];
if (subsystem == NULL) {
dbg("no subsystem");