summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-10-18 18:15:10 -0700
committerGreg KH <gregkh@suse.de>2005-04-26 22:02:45 -0700
commit7257cb18458e6b51cc9655887b7f9745f704b71f (patch)
treed7ddc0f12844e7ed866905a47ff806fcb4919c66
parent0f634c33d7eb634737915dc1aa3b7d7342d1a5f2 (diff)
[PATCH] close the syslog
Seems that we never closed the opened syslog. Here is a patch to do this in all our binaries.
-rw-r--r--logging.h13
-rw-r--r--udev.c3
-rw-r--r--udevd.c5
-rw-r--r--udevinfo.c12
-rw-r--r--udevsend.c4
-rw-r--r--wait_for_sysfs.c3
6 files changed, 26 insertions, 14 deletions
diff --git a/logging.h b/logging.h
index 40c342c3ab..30f52c84ce 100644
--- a/logging.h
+++ b/logging.h
@@ -27,7 +27,8 @@
#define info(format, arg...) do { } while (0)
#define dbg(format, arg...) do { } while (0)
#define dbg_parse(format, arg...) do { } while (0)
-#define init_logging(foo) do { } while (0)
+#define logging_init(foo) do { } while (0)
+#define logging_close(foo) do { } while (0)
#ifdef LOG
#include <stdarg.h>
@@ -65,13 +66,19 @@ extern void log_message(int level, const char *format, ...)
/* each program that uses syslog must declare this variable somewhere */
extern unsigned char logname[LOGNAME_SIZE];
-#undef init_logging
-static inline void init_logging(char *program_name)
+#undef logging_init
+static inline void logging_init(char *program_name)
{
snprintf(logname, LOGNAME_SIZE,"%s[%d]", program_name, getpid());
openlog(logname, 0, LOG_DAEMON);
}
+#undef logging_close
+static inline void logging_close(void)
+{
+ closelog();
+}
+
#endif /* LOG */
#endif
diff --git a/udev.c b/udev.c
index b4b08b335b..10a937e472 100644
--- a/udev.c
+++ b/udev.c
@@ -122,7 +122,7 @@ int main(int argc, char *argv[], char *envp[])
main_argv = argv;
main_envp = envp;
- init_logging("udev");
+ logging_init("udev");
udev_init_config();
@@ -203,5 +203,6 @@ int main(int argc, char *argv[], char *envp[])
udevdb_exit();
exit:
+ logging_close();
return retval;
}
diff --git a/udevd.c b/udevd.c
index 811f62243e..421c25a6e8 100644
--- a/udevd.c
+++ b/udevd.c
@@ -150,7 +150,7 @@ static void udev_run(struct hotplug_msg *msg)
/* child */
execle(udev_bin, "udev", msg->subsystem, NULL, env);
dbg("exec of child failed");
- exit(1);
+ _exit(1);
break;
case -1:
dbg("fork of child failed");
@@ -403,7 +403,7 @@ int main(int argc, char *argv[])
struct sigaction act;
fd_set readfds;
- init_logging("udevd");
+ logging_init("udevd");
dbg("version %s", UDEV_VERSION);
if (getuid() != 0) {
@@ -549,5 +549,6 @@ int main(int argc, char *argv[])
}
exit:
close(ssock);
+ logging_close();
exit(1);
}
diff --git a/udevinfo.c b/udevinfo.c
index 8329fe7d06..763cfd139f 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -447,18 +447,18 @@ help:
int main(int argc, char *argv[], char *envp[])
{
- int retval;
+ int rc = 0;
main_argv = argv;
main_argc = argc;
- init_logging("udevinfo");
+ logging_init("udevinfo");
/* initialize our configuration */
udev_init_config();
- retval = process_options();
- if (retval != 0)
- exit(1);
- exit(0);
+ rc = process_options();
+
+ logging_close();
+ exit(rc);
}
diff --git a/udevsend.c b/udevsend.c
index 23ba1a1b00..883181c1b6 100644
--- a/udevsend.c
+++ b/udevsend.c
@@ -123,7 +123,7 @@ int main(int argc, char* argv[])
socklen_t addrlen;
int started_daemon = 0;
- init_logging("udevsend");
+ logging_init("udevsend");
dbg("version %s", UDEV_VERSION);
subsystem = get_subsystem(argv[1]);
@@ -215,5 +215,7 @@ exit:
if (sock != -1)
close(sock);
+ logging_close();
+
return retval;
}
diff --git a/wait_for_sysfs.c b/wait_for_sysfs.c
index 1d7044c61f..37de02261d 100644
--- a/wait_for_sysfs.c
+++ b/wait_for_sysfs.c
@@ -392,7 +392,7 @@ int main(int argc, char *argv[], char *envp[])
int rc = 0;
const char *error = NULL;
- init_logging("wait_for_sysfs");
+ logging_init("wait_for_sysfs");
if (argc != 2) {
dbg("error: subsystem");
@@ -475,5 +475,6 @@ exit:
dbg("result: waiting for sysfs successful '%s'", devpath);
}
+ logging_close();
exit(rc);
}