summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGergely Nagy <algernon@balabit.hu>2012-08-10 12:34:31 +0200
committerGergely Nagy <algernon@balabit.hu>2012-08-10 12:38:14 +0200
commitd6634ebdd1d631be2f8e6a8aab2f1ca558ea10dd (patch)
treeff41285f9981f0512cc0443fec31ad8edd560c73
parent1e3ef078ff10db76cb0a5196d26ad416b5aa1789 (diff)
downloadlibumberlog-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.c34
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;