summaryrefslogtreecommitdiffstats
path: root/src/nss-mymachines/nss-mymachines.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-12-10 12:46:23 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-12-10 20:52:03 +0100
commite5d5edc3ff0dbf1f0ef2f8076ca64f54eabcd116 (patch)
tree2011d301799538f9e9c8af55aba4f994613cca6d /src/nss-mymachines/nss-mymachines.c
parentnss-systemd: initialize logging (diff)
downloadsystemd-e5d5edc3ff0dbf1f0ef2f8076ca64f54eabcd116.tar.xz
systemd-e5d5edc3ff0dbf1f0ef2f8076ca64f54eabcd116.zip
nss-mymachines: initialize logging
No logging is done directly by nss-mymachines.c code, but we call into sd-bus, which will log.
Diffstat (limited to 'src/nss-mymachines/nss-mymachines.c')
-rw-r--r--src/nss-mymachines/nss-mymachines.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
index 53f0492116..44715bb3e5 100644
--- a/src/nss-mymachines/nss-mymachines.c
+++ b/src/nss-mymachines/nss-mymachines.c
@@ -2,6 +2,7 @@
#include <netdb.h>
#include <nss.h>
+#include <pthread.h>
#include "sd-bus.h"
#include "sd-login.h"
@@ -14,12 +15,27 @@
#include "format-util.h"
#include "hostname-util.h"
#include "in-addr-util.h"
+#include "log.h"
#include "macro.h"
#include "memory-util.h"
#include "nss-util.h"
#include "signal-util.h"
#include "string-util.h"
+static void setup_logging(void) {
+ /* We need a dummy function because log_parse_environment is a macro. */
+ log_parse_environment();
+}
+
+static void setup_logging_once(void) {
+ static pthread_once_t once = PTHREAD_ONCE_INIT;
+ assert_se(pthread_once(&once, setup_logging) == 0);
+}
+
+#define NSS_ENTRYPOINT_BEGIN \
+ BLOCK_SIGNALS(NSS_SIGNALS_BLOCK); \
+ setup_logging_once()
+
NSS_GETHOSTBYNAME_PROTOTYPES(mymachines);
NSS_GETPW_PROTOTYPES(mymachines);
NSS_GETGR_PROTOTYPES(mymachines);
@@ -94,7 +110,7 @@ enum nss_status _nss_mymachines_gethostbyname4_r(
int n_ifindices, r;
PROTECT_ERRNO;
- BLOCK_SIGNALS(NSS_SIGNALS_BLOCK);
+ NSS_ENTRYPOINT_BEGIN;
assert(name);
assert(pat);
@@ -244,7 +260,7 @@ enum nss_status _nss_mymachines_gethostbyname3_r(
int r;
PROTECT_ERRNO;
- BLOCK_SIGNALS(NSS_SIGNALS_BLOCK);
+ NSS_ENTRYPOINT_BEGIN;
assert(name);
assert(result);