diff --git a/src/util/process_test.c b/src/util/process_test.c index ef7e2b4d4ad..fdd6ee6ba01 100644 --- a/src/util/process_test.c +++ b/src/util/process_test.c @@ -52,10 +52,14 @@ expect_equal_str(const char *expected, const char *actual, const char *test) static void test_util_get_process_name (void) { - #if !DETECT_OS_WINDOWS - const char* name = util_get_process_name(); - expect_equal_str("process_test", name, "util_get_process_name"); - #endif +#if DETECT_OS_WINDOWS + const char *expected = "process_test.exe"; +#else + const char *expected = "process_test"; +#endif + + const char *name = util_get_process_name(); + expect_equal_str(expected, name, "util_get_process_name"); } /* This test gets the real path from Meson (BUILD_FULL_PATH env var), diff --git a/src/util/u_process.c b/src/util/u_process.c index 68fda93a53b..9f847d1cc02 100644 --- a/src/util/u_process.c +++ b/src/util/u_process.c @@ -135,6 +135,23 @@ __getProgramName() } # define GET_PROGRAM_NAME() __getProgramName() +#elif defined(WIN32) +static const char * +__getProgramName() +{ + static const char *progname; + if (progname == NULL) { + static char buf[MAX_PATH]; + GetModuleFileNameA(NULL, buf, sizeof(buf)); + progname = strrchr(buf, '\\'); + if (progname) + progname++; + else + progname = buf; + } + return progname; +} +# define GET_PROGRAM_NAME() __getProgramName() #endif #if !defined(GET_PROGRAM_NAME)