> Portability problems not fixed by Gnulib: > @itemize > +@item > +The @code{struct lconv} type does not contain the members > +@code{int_p_cs_precedes}, @code{int_p_sign_posn}, @code{int_p_sep_by_space}, > +@code{int_n_cs_precedes}, @code{int_n_sign_posn}, @code{int_n_sep_by_space} > +on some platforms: > +OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2011-11, Cygwin > 1.5.x, mingw, MSVC 9. > @end itemize
While at it, it's easy to fix it for all platforms. The localeconv() override will follow shortly. 2012-03-25 Bruno Haible <br...@clisp.org> locale: Provide a complete 'struct lconv'. * m4/locale_h.m4 (gl_LOCALE_H): Set REPLACE_STRUCT_LCONV to 1 if 'struct lconv' does not contain int_p_cs_precedes. * tests/test-locale.c (main): Check that 'struct lconv' is complete. * doc/posix-headers/locale.texi: Update. --- doc/posix-headers/locale.texi.orig Sun Mar 25 13:54:50 2012 +++ doc/posix-headers/locale.texi Sun Mar 25 13:48:34 2012 @@ -24,7 +24,7 @@ @code{int_p_cs_precedes}, @code{int_p_sign_posn}, @code{int_p_sep_by_space}, @code{int_n_cs_precedes}, @code{int_n_sign_posn}, @code{int_n_sep_by_space} on some platforms: -glibc, Solaris 11 2011-11. +glibc, OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2011-11, Cygwin 1.5.x, mingw, MSVC 9. @item Some platforms provide a @code{NULL} macro that cannot be used in arbitrary @@ -34,10 +34,4 @@ Portability problems not fixed by Gnulib: @itemize -@item -The @code{struct lconv} type does not contain the members -@code{int_p_cs_precedes}, @code{int_p_sign_posn}, @code{int_p_sep_by_space}, -@code{int_n_cs_precedes}, @code{int_n_sign_posn}, @code{int_n_sep_by_space} -on some platforms: -OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, mingw, MSVC 9. @end itemize --- m4/locale_h.m4.orig Sun Mar 25 13:54:50 2012 +++ m4/locale_h.m4 Sun Mar 25 13:51:44 2012 @@ -1,4 +1,4 @@ -# locale_h.m4 serial 16 +# locale_h.m4 serial 17 dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -65,15 +65,18 @@ fi AC_SUBST([HAVE_XLOCALE_H]) - dnl Check whether 'struct lconv' is well-defined. + dnl Check whether 'struct lconv' is complete. dnl Bionic libc's 'struct lconv' is just a dummy. + dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, + dnl mingw, MSVC 9, it lacks the int_p_* and int_n_* members. AC_CACHE_CHECK([whether struct lconv is properly defined], [gl_cv_sys_struct_lconv_ok], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <locale.h> struct lconv l; - int x = sizeof (l.decimal_point);]], + int x = sizeof (l.decimal_point); + int y = sizeof (l.int_p_cs_precedes);]], [[]])], [gl_cv_sys_struct_lconv_ok=yes], [gl_cv_sys_struct_lconv_ok=no]) --- tests/test-locale.c.orig Sun Mar 25 13:54:50 2012 +++ tests/test-locale.c Sun Mar 25 13:49:19 2012 @@ -68,14 +68,12 @@ ls += sizeof (l.n_sep_by_space); ls += sizeof (*l.int_curr_symbol); ls += sizeof (l.int_frac_digits); -#if 0 ls += sizeof (l.int_p_cs_precedes); ls += sizeof (l.int_p_sign_posn); ls += sizeof (l.int_p_sep_by_space); ls += sizeof (l.int_n_cs_precedes); ls += sizeof (l.int_n_sign_posn); ls += sizeof (l.int_n_sep_by_space); -#endif return 0; }