From 8513a5eded77eccce9cf2bd2c389b17bc59487e9 Mon Sep 17 00:00:00 2001 From: Alin Gabriel Serdean Date: Thu, 12 Nov 2020 21:34:46 +0000 Subject: [PATCH] common: Add get_process_name implementation for Windows This patch adds get_process_name for Windows based on GetModuleFileName. Signed-off-by: Alin Gabriel Serdean --- src/common/code_environment.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/common/code_environment.cc b/src/common/code_environment.cc index 414e2b62ada2..a821dfcdeace 100644 --- a/src/common/code_environment.cc +++ b/src/common/code_environment.cc @@ -79,6 +79,31 @@ int get_process_name(char *buf, int len) return 0; } +#elif defined(_WIN32) + +int get_process_name(char *buf, int len) +{ + if (len <= 0) { + return -EINVAL; + } + + int length = GetModuleFileNameA(nullptr, buf, len); + if (length <= 0) + return -ENOSYS; + + char* start = strrchr(buf, '\\'); + if (!start) + return -ENOSYS; + start++; + char* end = strstr(start, ".exe"); + if (!end) + return -ENOSYS; + + memmove(buf, start, end - start); + buf[end - start] = '\0'; + return 0; +} + #else int get_process_name(char *buf, int len) -- 2.47.3