From 685ff1dc25b7567a3655cd8b259a799ddd212353 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Tue, 11 May 2021 21:01:55 +0300 Subject: [PATCH] utils: provide strdupa() if not in libc FreeBSD does not have strdupa(), provide it locally then. Macro by: Gleb Popov --- src/modules/module-filter-chain.c | 1 + src/pipewire/utils.h | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index c110854b0..966152ccd 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -40,6 +40,7 @@ #include #include +#include #include #include #include diff --git a/src/pipewire/utils.h b/src/pipewire/utils.h index 317ee92d2..4614626d4 100644 --- a/src/pipewire/utils.h +++ b/src/pipewire/utils.h @@ -66,6 +66,16 @@ pw_strip(char *str, const char *whitespace); }) #endif +#if !defined(strdupa) +# define strdupa(s) \ + ({ \ + const char *__old = (s); \ + size_t __len = strlen(__old) + 1; \ + char *__new = (char *) alloca(__len); \ + (char *) memcpy(__new, __old, __len); \ + }) +#endif + #ifdef __cplusplus } /* extern "C" */ #endif