On Fri, 10 May 2019 at 16:46, Józef Kucia <joseph.kucia(a)gmail.com> wrote:
+const char *vkd3d_get_program_name(void) +{ +#ifdef _GNU_SOURCE + char *name; + + if ((name = strrchr(program_invocation_name, '/'))) + { + const char *path = realpath("/proc/self/exe", NULL); + + /* Try to strip command line arguments. */ + if (path && !strncmp(path, program_invocation_name, strlen(path))) + { + const char *p = strrchr(path, '/'); + + if (p) + return p + 1; + } + + return name + 1; + } + + if ((name = strrchr(program_invocation_name, '\\'))) + return name + 1; + + return program_invocation_name; + +#else + return NULL; +#endif +} realpath() allocates memory.