util: better handle program names from wine
authorTimothy Arceri <tarceri@itsqueeze.com>
Thu, 16 Aug 2018 05:29:06 +0000 (15:29 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Fri, 17 Aug 2018 23:20:39 +0000 (09:20 +1000)
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>
src/util/u_process.c

index 5bf3f56..5e59276 100644 (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__)