diff options
author | Andreas Schneider <asn@samba.org> | 2019-11-06 18:33:59 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2019-11-11 15:44:13 +0100 |
commit | 7c34da8278adbc57b4f18c8290cdfb5d71629ef5 (patch) | |
tree | 955fa1601cf66a548a49bd259d43ff61bd6d933f | |
parent | 8076f3d59b88d9a8d6649b1b98815089ad217b5f (diff) | |
download | nss_wrapper-7c34da8278adbc57b4f18c8290cdfb5d71629ef5.tar.gz nss_wrapper-7c34da8278adbc57b4f18c8290cdfb5d71629ef5.tar.xz nss_wrapper-7c34da8278adbc57b4f18c8290cdfb5d71629ef5.zip |
nwrap: Improve logging function
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r-- | src/nss_wrapper.c | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/src/nss_wrapper.c b/src/nss_wrapper.c index 9f5fdd9..1bcd3b1 100644 --- a/src/nss_wrapper.c +++ b/src/nss_wrapper.c @@ -243,6 +243,19 @@ enum nwrap_dbglvl_e { NWRAP_LOG_TRACE }; +#ifndef HAVE_GETPROGNAME +static const char *getprogname(void) +{ +#if defined(HAVE_PROGRAM_INVOCATION_SHORT_NAME) + return program_invocation_short_name; +#elif defined(HAVE_GETEXECNAME) + return getexecname(); +#else + return NULL; +#endif /* HAVE_PROGRAM_INVOCATION_SHORT_NAME */ +} +#endif /* HAVE_GETPROGNAME */ + static void nwrap_log(enum nwrap_dbglvl_e dbglvl, const char *func, const char *format, ...) PRINTF_ATTRIBUTE(3, 4); # define NWRAP_LOG(dbglvl, ...) nwrap_log((dbglvl), __func__, __VA_ARGS__) @@ -254,41 +267,48 @@ static void nwrap_log(enum nwrap_dbglvl_e dbglvl, va_list va; const char *d; unsigned int lvl = 0; - int pid = getpid(); + const char *prefix = "NWRAP"; + const char *progname = getprogname(); d = getenv("NSS_WRAPPER_DEBUGLEVEL"); if (d != NULL) { lvl = atoi(d); } + if (lvl < dbglvl) { + return; + } + va_start(va, format); vsnprintf(buffer, sizeof(buffer), format, va); va_end(va); - if (lvl >= dbglvl) { - switch (dbglvl) { - case NWRAP_LOG_ERROR: - fprintf(stderr, - "NWRAP_ERROR(%d) - %s: %s\n", - pid, func, buffer); - break; - case NWRAP_LOG_WARN: - fprintf(stderr, - "NWRAP_WARN(%d) - %s: %s\n", - pid, func, buffer); - break; - case NWRAP_LOG_DEBUG: - fprintf(stderr, - "NWRAP_DEBUG(%d) - %s: %s\n", - pid, func, buffer); - break; - case NWRAP_LOG_TRACE: - fprintf(stderr, - "NWRAP_TRACE(%d) - %s: %s\n", - pid, func, buffer); - break; - } + switch (dbglvl) { + case NWRAP_LOG_ERROR: + prefix = "NWRAP_ERROR"; + break; + case NWRAP_LOG_WARN: + prefix = "NWRAP_WARN"; + break; + case NWRAP_LOG_DEBUG: + prefix = "NWRAP_DEBUG"; + break; + case NWRAP_LOG_TRACE: + prefix = "NWRAP_TRACE"; + break; } + + if (progname == NULL) { + progname = "<unknown>"; + } + + fprintf(stderr, + "%s[%s (%u)] - %s: %s\n", + prefix, + progname, + (unsigned int)getpid(), + func, + buffer); } struct nwrap_libc_fns { |