From 4738c934bbf2a86aa62d752a130d13c524a47696 Mon Sep 17 00:00:00 2001 From: James Hilliard Date: Fri, 20 May 2022 20:18:07 -0600 Subject: [PATCH] Fix build on uclibc without locale support When uclibc is build with !UCLIBC_HAS_LOCALE the macro __LOCALE_C_ONLY will be set, use this to disable unsupported and not required(due to only supporting the C locale) locale functions. Signed-off-by: James Hilliard [james.hilliard1@gmail.com: backport from upstream commit 4738c934bbf2a86aa62d752a130d13c524a47696] --- spa/include/spa/utils/string.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spa/include/spa/utils/string.h b/spa/include/spa/utils/string.h index 43d19616c..edf4e954f 100644 --- a/spa/include/spa/utils/string.h +++ b/spa/include/spa/utils/string.h @@ -275,14 +275,20 @@ static inline int spa_scnprintf(char *buffer, size_t size, const char *format, . */ static inline float spa_strtof(const char *str, char **endptr) { +#ifndef __LOCALE_C_ONLY static locale_t locale = NULL; locale_t prev; +#endif float v; +#ifndef __LOCALE_C_ONLY if (SPA_UNLIKELY(locale == NULL)) locale = newlocale(LC_ALL_MASK, "C", NULL); prev = uselocale(locale); +#endif v = strtof(str, endptr); +#ifndef __LOCALE_C_ONLY uselocale(prev); +#endif return v; } @@ -319,14 +325,20 @@ static inline bool spa_atof(const char *str, float *val) */ static inline double spa_strtod(const char *str, char **endptr) { +#ifndef __LOCALE_C_ONLY static locale_t locale = NULL; locale_t prev; +#endif double v; +#ifndef __LOCALE_C_ONLY if (SPA_UNLIKELY(locale == NULL)) locale = newlocale(LC_ALL_MASK, "C", NULL); prev = uselocale(locale); +#endif v = strtod(str, endptr); +#ifndef __LOCALE_C_ONLY uselocale(prev); +#endif return v; } -- 2.25.1