--- src/pulse/util.c | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/src/pulse/util.c b/src/pulse/util.c index c5cfc8c..e44a864 100644 --- a/src/pulse/util.c +++ b/src/pulse/util.c @@ -49,6 +49,11 @@ #include <sys/prctl.h> #endif +#ifdef OS_IS_DARWIN +#include <libgen.h> +#include <sys/sysctl.h> +#endif + #include <pulse/xmalloc.h> #include <pulse/timeval.h> @@ -221,6 +226,27 @@ char *pa_get_binary_name(char *s, size_t l) { } #endif +#if OS_IS_DARWIN + { + int mib[] = { CTL_KERN, KERN_PROCARGS, getpid(), 0 }; + size_t len, nmib = (sizeof(mib) / sizeof(mib[0])) - 1; + char *buf; + + sysctl(mib, nmib, NULL, &len, NULL, 0); + buf = (char *) pa_xmalloc(len); + + if (sysctl(mib, nmib, buf, &len, NULL, 0) == 0) { + pa_strlcpy(s, basename(buf), l); + pa_xfree(buf); + return s; + } + + pa_xfree(buf); + + /* fall thru */ + } +#endif /* OS_IS_DARWIN */ + errno = ENOENT; return NULL; } -- 1.7.1