diff options
author | Stefan Metzmacher <metze@samba.org> | 2020-03-11 17:12:22 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2020-03-19 17:12:41 +0100 |
commit | 3ab29a2b4bbe1217d37333a8881ca906e07a3f0d (patch) | |
tree | 9c8b9be4dacef34760b336e849701b8459c8b292 | |
parent | c42bd7816325c460f07036101aab282049cd72df (diff) | |
download | resolv_wrapper-3ab29a2b4bbe1217d37333a8881ca906e07a3f0d.tar.gz resolv_wrapper-3ab29a2b4bbe1217d37333a8881ca906e07a3f0d.tar.xz resolv_wrapper-3ab29a2b4bbe1217d37333a8881ca906e07a3f0d.zip |
rwrap: improve logging messages by including getprogname()
This it basically the same as used in socket_wrapper.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r-- | ConfigureChecks.cmake | 10 | ||||
-rw-r--r-- | config.h.cmake | 7 | ||||
-rw-r--r-- | src/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/resolv_wrapper.c | 25 |
4 files changed, 41 insertions, 4 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index ae817d9..ae9437b 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -44,7 +44,17 @@ check_include_file(sys/types.h HAVE_SYS_TYPES_H) check_include_file(resolv.h HAVE_RESOLV_H) check_include_file(arpa/nameser.h HAVE_ARPA_NAMESER_H) +# SYMBOLS +set(CMAKE_REQUIRED_FLAGS -D_GNU_SOURCE) +check_symbol_exists(program_invocation_short_name + "errno.h" + HAVE_PROGRAM_INVOCATION_SHORT_NAME) +unset(CMAKE_REQUIRED_FLAGS) + # FUNCTIONS +check_function_exists(getprogname HAVE_GETPROGNAME) +check_function_exists(getexecname HAVE_GETEXECNAME) + find_library(RESOLV_LIRBRARY resolv) if (RESOLV_LIRBRARY) set(HAVE_LIBRESOLV TRUE) diff --git a/config.h.cmake b/config.h.cmake index 6ff75a6..0c2fa35 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -13,8 +13,15 @@ #cmakedefine HAVE_RESOLV_H 1 #cmakedefine HAVE_ARPA_NAMESER_H 1 +/**************************** SYMBOLS ****************************/ + +#cmakedefine HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 + /*************************** FUNCTIONS ***************************/ +#cmakedefine HAVE_GETPROGNAME 1 +#cmakedefine HAVE_GETEXECNAME 1 + #cmakedefine HAVE_RES_INIT 1 #cmakedefine HAVE___RES_INIT 1 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 04d5395..42e9f42 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,7 +5,8 @@ target_link_libraries(resolv_wrapper ${RWRAP_REQUIRED_LIBRARIES}) target_compile_options(resolv_wrapper PRIVATE - ${DEFAULT_C_COMPILE_FLAGS}) + ${DEFAULT_C_COMPILE_FLAGS} + -D_GNU_SOURCE) target_include_directories(resolv_wrapper PRIVATE ${CMAKE_BINARY_DIR}) diff --git a/src/resolv_wrapper.c b/src/resolv_wrapper.c index c88893e..cbca248 100644 --- a/src/resolv_wrapper.c +++ b/src/resolv_wrapper.c @@ -83,6 +83,19 @@ enum rwrap_dbglvl_e { RWRAP_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 rwrap_log(enum rwrap_dbglvl_e dbglvl, const char *func, const char *format, ...) PRINTF_ATTRIBUTE(3, 4); # define RWRAP_LOG(dbglvl, ...) rwrap_log((dbglvl), __func__, __VA_ARGS__) @@ -94,8 +107,8 @@ static void rwrap_log(enum rwrap_dbglvl_e dbglvl, va_list va; const char *d; unsigned int lvl = 0; - int pid = getpid(); const char *prefix = NULL; + const char *progname = NULL; d = getenv("RESOLV_WRAPPER_DEBUGLEVEL"); if (d != NULL) { @@ -128,10 +141,16 @@ static void rwrap_log(enum rwrap_dbglvl_e dbglvl, break; } + progname = getprogname(); + if (progname == NULL) { + progname = "<unknown>"; + } + fprintf(stderr, - "%s(%d) - %s: %s\n", + "%s[%s (%u)] - %s: %s\n", prefix, - pid, + progname, + (unsigned int)getpid(), func, buffer); } |