Make GET_PROGRAM_NAME work with uCLibc using the __progname hack.
authorFelix Kuehling <fxkuehl@gmx.de>
Sat, 10 Jul 2004 11:25:02 +0000 (11:25 +0000)
committerFelix Kuehling <fxkuehl@gmx.de>
Sat, 10 Jul 2004 11:25:02 +0000 (11:25 +0000)
Improved that hack to remove leading directory names.

src/mesa/drivers/dri/common/xmlconfig.c

index 308f415b870b3d52aa4c36f98af3c90df14a37d3..aa7df8ded32455c2e08e896e0b049f9c0abab2af 100644 (file)
@@ -48,7 +48,7 @@
 
 #undef GET_PROGRAM_NAME
 
-#if defined(__GNU_LIBRARY__) || defined(__GLIBC__)
+#if (defined(__GNU_LIBRARY__) || defined(__GLIBC__)) && !defined(__UCLIBC__)
 #    define GET_PROGRAM_NAME() program_invocation_short_name
 #elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
 #    include <osreldate.h>
 #endif
 
 #if !defined(GET_PROGRAM_NAME)
-#    if defined(OpenBSD) || defined(NetBSD)
-/* This is a hack. It's said to work on OpenBSD, NetBSD and GNU. It's
+#    if defined(OpenBSD) || defined(NetBSD) || defined(__UCLIBC__)
+/* This is a hack. It's said to work on OpenBSD, NetBSD and GNU.
+ * Rogelio M.Serrano Jr. reported it's also working with UCLIBC. It's
  * used as a last resort, if there is no documented facility available. */
 static const char *__getProgramName () {
     extern const char *__progname;
-    return progname;
+    char * arg = strrchr(__progname, '/');
+    if (arg)
+        return arg+1;
+    else
+        return __progname;
 }
 #        define GET_PROGRAM_NAME() __getProgramName()
 #    else