> > 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 > > > > Signed-off-by: Peter Meerwald <pmeerw at pmeerw.net> > > --- > > src/pulse/util.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/src/pulse/util.c b/src/pulse/util.c > > index 50f90b8..42b160a 100644 > > --- a/src/pulse/util.c > > +++ b/src/pulse/util.c > > @@ -193,7 +193,7 @@ char *pa_get_binary_name(char *s, size_t l) { > > } > > #endif > > > > -#ifdef __linux__ > > +#if defined(__linux__) || defined(__FreeBSD_kernel__) > > If FreeBSD does not have /proc/self/exe, but defines > __FreeBSD_kernel__ then this check will pass, which I don't think is > intended. on FreeBSD it will call pa_readlink("/proc/self/exe") which will return NULL and then continue with the FreeBSD-specific code > Perhaps the check needs to be defined(__FreeBSD_kernel__) && > !defined(__FreeBSD__)? would work as well, I prefer simpler #defines; defined(__FreeBSD_kernel__) && defined(__GLIBC__) should do as well one extra readlink() doesn't hurt > Note the ifs: I do not know if real FreeBSD has /proc/self/exe, nor if > it defines __FreeBSD_kernel__ it does not have /proc/self/exe (at least default install) and it should #define __FreeBSD_kernel__ according to http://sourceforge.net/p/predef/wiki/Home/ p. -- Peter Meerwald +43-664-2444418 (mobile)