From: Alin Gabriel Serdean Date: Thu, 12 Nov 2020 21:34:46 +0000 (+0000) Subject: common: Add get_process_name implementation for Windows X-Git-Tag: v16.1.0~201^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F38291%2Fhead;p=ceph.git 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 --- 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)