aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2020-03-11 17:12:22 +0100
committerAndreas Schneider <asn@samba.org>2020-03-19 17:12:41 +0100
commit3ab29a2b4bbe1217d37333a8881ca906e07a3f0d (patch)
tree9c8b9be4dacef34760b336e849701b8459c8b292
parentc42bd7816325c460f07036101aab282049cd72df (diff)
downloadresolv_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.cmake10
-rw-r--r--config.h.cmake7
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/resolv_wrapper.c25
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);
}