[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: monetary module build error with older glibc versions
From: |
Bruno Haible |
Subject: |
Re: monetary module build error with older glibc versions |
Date: |
Mon, 27 Nov 2017 00:27:47 +0100 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-98-generic; KDE/5.18.0; x86_64; ; ) |
Tom G. Christensen wrote:
> The monetary module is causing a build error on older glibc platforms
> (e.g. CentOS 5):
>
> depbase=`echo strfmon_l.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
> gcc -std=gnu99 -DHAVE_CONFIG_H -DEXEEXT=\"\" -DEXEEXT=\"\"
> -DNO_XMALLOC -DEXEEXT=\"\" -I. -I.. -DGNULIB_STRICT_CHECKING=1
> -fvisibility=hidden -g -
> O2 -MT strfmon_l.o -MD -MP -MF $depbase.Tpo -c -o strfmon_l.o
> strfmon_l.c &&\
> mv -f $depbase.Tpo $depbase.Po
> In file included from strfmon_l.c:20:
> ./monetary.h:530: error: expected declaration specifiers or '...' before
> 'locale_t'
> ./monetary.h:530: error: format string argument not a string type
> ./monetary.h:530: error: nonnull argument with out-of-range operand
> number (argument 1, operand 4)
> strfmon_l.c:32: error: conflicting types for 'rpl_strfmon_l'
> ./monetary.h:530: error: previous declaration of 'rpl_strfmon_l' was here
> make[4]: *** [strfmon_l.o] Error 1
>
>
> The issue seems to be that in older glibc versions locale_t is defined
> in <locale.h> instead of <xlocale.h> (which gets pulled in via
> <monetary.h>).
Thanks for the report. Fixed as follows:
2017-11-26 Bruno Haible <address@hidden>
strfmon_l: Fix compilation error with glibc 2.25.
Reported by Tom G. Christensen <address@hidden>
in <https://lists.gnu.org/r/bug-gnulib/2017-11/msg00051.html>.
* lib/monetary.in.h: Include also <locale.h>.
diff --git a/lib/monetary.in.h b/lib/monetary.in.h
index 52966c4..945f1ae 100644
--- a/lib/monetary.in.h
+++ b/lib/monetary.in.h
@@ -29,9 +29,13 @@
#ifndef address@hidden@_MONETARY_H
#define address@hidden@_MONETARY_H
-#if @GNULIB_STRFMON_L@ && @HAVE_XLOCALE_H@
+#if @GNULIB_STRFMON_L@
+# if @HAVE_XLOCALE_H@
/* Get locale_t on Mac OS X 10.12. */
-# include <xlocale.h>
+# include <xlocale.h>
+# endif
+/* Get locale_t on glibc 2.25. */
+# include <locale.h>
#endif
/* Like in <stdio.h>. */