util: Fix pa_get_binary_name() on Debian/kFreeBSD
authorPeter Meerwald <pmeerw@pmeerw.net>
Mon, 4 Aug 2014 12:45:23 +0000 (14:45 +0200)
committerPeter Meerwald <pmeerw@pmeerw.net>
Tue, 12 Aug 2014 20:13:23 +0000 (22:13 +0200)
Debian GNU/kFreeBSD uses a FreeBSD kernel and GLIBC,
it #defines __FreeBSD_kernel__, but not __FreeBSD__ nor __linux__
Debian GNU/kFreeBSD does have a /proc/self/exe

FreeBSD #defines __FreeBSD__ and __FreeBSD_kernel__

problem reporte here:
http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-July/020998.html

http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe and
http://stackoverflow.com/questions/933850/how-to-find-the-location-of-the-executable-in-c have some
background info

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
src/pulse/util.c

index 50f90b8..ace698c 100644 (file)
@@ -193,10 +193,10 @@ char *pa_get_binary_name(char *s, size_t l) {
     }
 #endif
 
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD_kernel__)
     {
         char *rp;
-        /* This works on Linux only */
+        /* This works on Linux and Debian/kFreeBSD */
 
         if ((rp = pa_readlink("/proc/self/exe"))) {
             pa_strlcpy(s, pa_path_get_filename(rp), l);