From 3f322af6c93f7eb4c6ce5ceb789416aae10a50bd Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 10 Sep 2010 20:23:49 +0200 Subject: [PATCH] langinfo, nl_langinfo: Fix for IRIX 5.3. * m4/langinfo_h.m4 (gl_LANGINFO_H): Test whether langinfo.h defines T_FMT_AMPM, YESEXPR. Set HAVE_LANGINFO_T_FMT_AMPM, HAVE_LANGINFO_YESEXPR. * modules/langinfo (Makefile.am): Substitute HAVE_LANGINFO_T_FMT_AMPM, HAVE_LANGINFO_YESEXPR. * lib/langinfo.in.h (T_FMT_AMPM, GNULIB_defined_T_FMT_AMPM): Define if HAVE_LANGINFO_T_FMT_AMPM is 0. (YESEXPR, NOEXPR, GNULIB_defined_YESEXPR): Define if HAVE_LANGINFO_YESEXPR is 0. * lib/nl_langinfo.c (rpl_nl_langinfo): Handle also T_FMT_AMPM, YESEXPR, NOEXPR. * doc/posix-headers/langinfo.texi: Mention the IRIX 5.3 problem. * doc/posix-functions/nl_langinfo.texi: Likewise. Reported by Eric Blake. --- ChangeLog | 18 ++++++++++++++++++ doc/posix-functions/nl_langinfo.texi | 4 ++++ doc/posix-headers/langinfo.texi | 4 ++++ lib/langinfo.in.h | 11 +++++++++++ lib/nl_langinfo.c | 10 ++++++++++ m4/langinfo_h.m4 | 30 ++++++++++++++++++++++++++++-- modules/langinfo | 2 ++ 7 files changed, 77 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47613441e..16f4a2183 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,23 @@ 2010-09-10 Bruno Haible + langinfo, nl_langinfo: Fix for IRIX 5.3. + * m4/langinfo_h.m4 (gl_LANGINFO_H): Test whether langinfo.h defines + T_FMT_AMPM, YESEXPR. Set HAVE_LANGINFO_T_FMT_AMPM, + HAVE_LANGINFO_YESEXPR. + * modules/langinfo (Makefile.am): Substitute HAVE_LANGINFO_T_FMT_AMPM, + HAVE_LANGINFO_YESEXPR. + * lib/langinfo.in.h (T_FMT_AMPM, GNULIB_defined_T_FMT_AMPM): Define if + HAVE_LANGINFO_T_FMT_AMPM is 0. + (YESEXPR, NOEXPR, GNULIB_defined_YESEXPR): Define if + HAVE_LANGINFO_YESEXPR is 0. + * lib/nl_langinfo.c (rpl_nl_langinfo): Handle also T_FMT_AMPM, YESEXPR, + NOEXPR. + * doc/posix-headers/langinfo.texi: Mention the IRIX 5.3 problem. + * doc/posix-functions/nl_langinfo.texi: Likewise. + Reported by Eric Blake. + +2010-09-10 Bruno Haible + pty, readutmp: Fix for FreeBSD 8.0 and OpenBSD 4.6. * doc/glibc-functions/login_tty.texi: Mention the include file problem on FreeBSD 8.0 and OpenBSD 4.6. diff --git a/doc/posix-functions/nl_langinfo.texi b/doc/posix-functions/nl_langinfo.texi index 03aaed2b7..27b8c16d9 100644 --- a/doc/posix-functions/nl_langinfo.texi +++ b/doc/posix-functions/nl_langinfo.texi @@ -18,6 +18,10 @@ glibc 2.0.6, OpenBSD 3.8. The constants @code{ERA}, @code{ERA_D_FMT}, @code{ERA_D_T_FMT}, @code{ERA_T_FMT}, @code{ALT_DIGITS} are not supported on some platforms: OpenBSD 3.8. +@item +The constants @code{T_FMT_AMPM}, @code{YESEXPR}, @code{NOEXPR} are not +supported on some platforms: +IRIX 5.3. @end itemize Portability problems not fixed by Gnulib: diff --git a/doc/posix-headers/langinfo.texi b/doc/posix-headers/langinfo.texi index fa48cee63..e39f13fbc 100644 --- a/doc/posix-headers/langinfo.texi +++ b/doc/posix-headers/langinfo.texi @@ -17,6 +17,10 @@ glibc 2.0.6, OpenBSD 3.8. The constants @code{ERA}, @code{ERA_D_FMT}, @code{ERA_D_T_FMT}, @code{ERA_T_FMT}, @code{ALT_DIGITS} are not defined on some platforms: OpenBSD 3.8. +@item +The constants @code{T_FMT_AMPM}, @code{YESEXPR}, @code{NOEXPR} are not +defined on some platforms: +IRIX 5.3. @end itemize Portability problems not fixed by Gnulib: diff --git a/lib/langinfo.in.h b/lib/langinfo.in.h index 54fa1af35..b79908a65 100644 --- a/lib/langinfo.in.h +++ b/lib/langinfo.in.h @@ -112,6 +112,11 @@ typedef int nl_item; # define GNULIB_defined_CODESET 1 # endif +# if !@HAVE_LANGINFO_T_FMT_AMPM@ +# define T_FMT_AMPM 10006 +# define GNULIB_defined_T_FMT_AMPM 1 +# endif + # if !@HAVE_LANGINFO_ERA@ # define ERA 10047 # define ERA_D_FMT 10048 @@ -121,6 +126,12 @@ typedef int nl_item; # define GNULIB_defined_ERA 1 # endif +# if !@HAVE_LANGINFO_YESEXPR@ +# define YESEXPR 10053 +# define NOEXPR 10054 +# define GNULIB_defined_YESEXPR 1 +# endif + #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ diff --git a/lib/nl_langinfo.c b/lib/nl_langinfo.c index e81c81e7d..a3d0d11eb 100644 --- a/lib/nl_langinfo.c +++ b/lib/nl_langinfo.c @@ -67,6 +67,10 @@ rpl_nl_langinfo (nl_item item) return ""; } # endif +# if GNULIB_defined_T_FMT_AMPM + case T_FMT_AMPM: + return "%I:%M:%S %p"; +# endif # if GNULIB_defined_ERA case ERA: /* The format is not standardized. In glibc it is a sequence of strings @@ -93,6 +97,12 @@ rpl_nl_langinfo (nl_item item) strings, appended in memory. */ return "\0\0\0\0\0\0\0\0\0\0"; # endif +# if GNULIB_defined_YESEXPR + case YESEXPR: + return "^[yY]"; + case NOEXPR: + return "^[nN]"; +# endif default: break; } diff --git a/m4/langinfo_h.m4 b/m4/langinfo_h.m4 index 11a56980f..c5824c6c8 100644 --- a/m4/langinfo_h.m4 +++ b/m4/langinfo_h.m4 @@ -1,4 +1,4 @@ -# langinfo_h.m4 serial 6 +# langinfo_h.m4 serial 7 dnl Copyright (C) 2009-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -21,7 +21,7 @@ AC_DEFUN([gl_LANGINFO_H], if test $ac_cv_header_langinfo_h = yes; then HAVE_LANGINFO_H=1 dnl Determine what defines. CODESET and ERA etc. are missing - dnl on OpenBSD 3.8. + dnl on OpenBSD 3.8. T_FMT_AMPM an YESEXPR, NOEXPR are missing on IRIX 5.3. AC_CACHE_CHECK([whether langinfo.h defines CODESET], [gl_cv_header_langinfo_codeset], [AC_COMPILE_IFELSE( @@ -34,6 +34,18 @@ int a = CODESET; if test $gl_cv_header_langinfo_codeset = yes; then HAVE_LANGINFO_CODESET=1 fi + AC_CACHE_CHECK([whether langinfo.h defines T_FMT_AMPM], + [gl_cv_header_langinfo_t_fmt_ampm], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include +int a = T_FMT_AMPM; +]])], + [gl_cv_header_langinfo_t_fmt_ampm=yes], + [gl_cv_header_langinfo_t_fmt_ampm=no]) + ]) + if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then + HAVE_LANGINFO_T_FMT_AMPM=1 + fi AC_CACHE_CHECK([whether langinfo.h defines ERA], [gl_cv_header_langinfo_era], [AC_COMPILE_IFELSE( @@ -46,12 +58,26 @@ int a = ERA; if test $gl_cv_header_langinfo_era = yes; then HAVE_LANGINFO_ERA=1 fi + AC_CACHE_CHECK([whether langinfo.h defines YESEXPR], + [gl_cv_header_langinfo_yesexpr], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include +int a = YESEXPR; +]])], + [gl_cv_header_langinfo_yesexpr=yes], + [gl_cv_header_langinfo_yesexpr=no]) + ]) + if test $gl_cv_header_langinfo_yesexpr = yes; then + HAVE_LANGINFO_YESEXPR=1 + fi else HAVE_LANGINFO_H=0 fi AC_SUBST([HAVE_LANGINFO_H]) AC_SUBST([HAVE_LANGINFO_CODESET]) + AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM]) AC_SUBST([HAVE_LANGINFO_ERA]) + AC_SUBST([HAVE_LANGINFO_YESEXPR]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. diff --git a/modules/langinfo b/modules/langinfo index c7f545e7b..b6f5373d7 100644 --- a/modules/langinfo +++ b/modules/langinfo @@ -28,7 +28,9 @@ langinfo.h: langinfo.in.h $(CXXDEFS_H) $(WARN_ON_USE_H) -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \ -e 's|@''GNULIB_NL_LANGINFO''@|$(GNULIB_NL_LANGINFO)|g' \ -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \ + -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \ -e 's|@''HAVE_LANGINFO_ERA''@|$(HAVE_LANGINFO_ERA)|g' \ + -e 's|@''HAVE_LANGINFO_YESEXPR''@|$(HAVE_LANGINFO_YESEXPR)|g' \ -e 's|@''HAVE_NL_LANGINFO''@|$(HAVE_NL_LANGINFO)|g' \ -e 's|@''REPLACE_NL_LANGINFO''@|$(REPLACE_NL_LANGINFO)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -- 2.11.0