diff options
author | Gergely Nagy <algernon@balabit.hu> | 2012-08-10 12:34:31 +0200 |
---|---|---|
committer | Gergely Nagy <algernon@balabit.hu> | 2012-08-10 12:38:14 +0200 |
commit | d6634ebdd1d631be2f8e6a8aab2f1ca558ea10dd (patch) | |
tree | ff41285f9981f0512cc0443fec31ad8edd560c73 | |
parent | 1e3ef078ff10db76cb0a5196d26ad416b5aa1789 (diff) | |
download | libumberlog-d6634ebdd1d631be2f8e6a8aab2f1ca558ea10dd.tar.gz libumberlog-d6634ebdd1d631be2f8e6a8aab2f1ca558ea10dd.tar.xz libumberlog-d6634ebdd1d631be2f8e6a8aab2f1ca558ea10dd.zip |
Greatly simplify ul_openlog()
Instead of checking the flags for LOG_UL_NODISCOVER in every branch,
check it once in the beginning for LOG_UL_NODISCOVER | LOG_UL_NOCACHE,
and bail out early.
This greatly improves the readability of the code.
Signed-off-by: Gergely Nagy <algernon@balabit.hu>
-rw-r--r-- | lib/umberlog.c | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/lib/umberlog.c b/lib/umberlog.c index 706942a..f995ecd 100644 --- a/lib/umberlog.c +++ b/lib/umberlog.c @@ -103,30 +103,40 @@ void ul_openlog (const char *ident, int option, int facility) { old_openlog (ident, option, facility); + pthread_mutex_lock (&ul_process_data.lock); ul_process_data.flags = option; ul_process_data.facility = facility; ul_process_data.ident = ident; + /* If either NODISCOVER or NOCACHE is set, don't cache stuff we + won't use. */ if ((ul_process_data.flags & (LOG_UL_NODISCOVER | LOG_UL_NOCACHE)) != 0) - ul_process_data.pid = -1; - else - ul_process_data.pid = getpid (); - if ((ul_process_data.flags & - (LOG_UL_NODISCOVER | LOG_UL_NOCACHE | LOG_UL_NOCACHE_UID)) != 0) { - ul_process_data.gid = (gid_t)-1; - ul_process_data.uid = (uid_t)-1; + ul_process_data.pid = -1; + ul_process_data.gid = -1; + ul_process_data.uid = -1; + ul_process_data.hostname[0] = '\0'; + pthread_mutex_unlock (&ul_process_data.lock); + return; + } + + ul_process_data.pid = getpid(); + + /* UID/GID caching can be toggled separately, so check that too, + and set them to -1 if caching is disabled. */ + if ((ul_process_data.flags & LOG_UL_NOCACHE_UID) != 0) + { + ul_process_data.gid = -1; + ul_process_data.uid = -1; } else { ul_process_data.gid = getgid (); ul_process_data.uid = getuid (); } - if ((ul_process_data.flags & (LOG_UL_NODISCOVER | LOG_UL_NOCACHE)) != 0) - ul_process_data.hostname[0] = '\0'; - else - gethostname (ul_process_data.hostname, _POSIX_HOST_NAME_MAX); + + gethostname (ul_process_data.hostname, _POSIX_HOST_NAME_MAX); pthread_mutex_unlock (&ul_process_data.lock); } @@ -134,9 +144,9 @@ void ul_closelog (void) { old_closelog (); + pthread_mutex_lock (&ul_process_data.lock); ul_process_data.ident = NULL; - ul_process_data.pid = -1; ul_process_data.gid = (gid_t)-1; ul_process_data.uid = (uid_t)-1; |