util: better handle program names from wine

For some reason wine will sometimes give us a windows style path
for an application. For example when running the 64bit version
of Rage wine gives a Unix style path, but when running the 32bit
version is gives a windows style path.

If we detect no '/' in the path at all it should be safe to
assume we have a wine application and instead look for a '\'.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Timothy Arceri 2018-08-16 15:29:06 +10:00
parent d0803dea11
commit 3f9d8e9c88

View file

@ -40,11 +40,18 @@ extern char *program_invocation_name, *program_invocation_short_name;
static const char *
__getProgramName()
{
char * arg = strrchr(program_invocation_name, '/');
if (arg)
return arg+1;
else
return program_invocation_name;
char * arg = strrchr(program_invocation_name, '/');
if (arg)
return arg+1;
/* If there was no '/' at all we likely have a windows like path from
* a wine application.
*/
arg = strrchr(program_invocation_name, '\\');
if (arg)
return arg+1;
return program_invocation_name;
}
# define GET_PROGRAM_NAME() __getProgramName()
#elif defined(__CYGWIN__)