From: kay.sievers@vrfy.org Date: Tue, 19 Oct 2004 01:15:10 +0000 (-0700) Subject: [PATCH] close the syslog X-Git-Tag: 040~12 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7257cb18458e6b51cc9655887b7f9745f704b71f;p=systemd [PATCH] close the syslog Seems that we never closed the opened syslog. Here is a patch to do this in all our binaries. --- diff --git a/logging.h b/logging.h index 40c342c3..30f52c84 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 @@ -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 b4b08b33..10a937e4 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 811f6224..421c25a6 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 8329fe7d..763cfd13 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 23ba1a1b..883181c1 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 1d7044c6..37de0226 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); }