[pulseaudio-discuss] [PATCH] util: Fix pa_get_binary_name() on Debian/kFreeBSD

Peter Meerwald pmeerw at pmeerw.net
Mon Aug 4 07:52:42 PDT 2014


> > 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)


More information about the pulseaudio-discuss mailing list