# HG changeset patch # User Paul Eggert # Date 1295372416 28800 # Node ID c6bc5712a6a9e6fdf275eac3768fd2a336c913b2 # Parent 9fdeb5972bf5122510f0c56d29d80a01ebdcef16 strftime: remove dependencies on multibyte modules strftime depended on mbrlen, mbsinit, and wchar, but these modules are needed only if ! MULTIBYTE_IS_FORMAT_SAFE, and that is true only if __osf__ is defined, and I suspect OSF doesn't need these other modules. If my guess is wrong, we'll need to come up with a variant of strftime that doesn't need the multibyte modules. I discovered this problem when attempting modify Emacs to use the strftime module. With the previous gnulib, this caused Emacs to need 31 new files, ranging from lib/config.charset to m4/wint_t.m4. This was overkill and I expect would be offputting to the Emacs maintainers. After this change, only 6 new files are needed, namely strftime.[ch], srtftime.m4, stdbool.in.h, stdbool.m4, and tm_gmtoff.m4. * lib/strftime.c (MULTIBYTE_IS_FORMAT_SAFE): Define to 1 always. Suggested by Bruno Haible in . * m4/strftime.m4 (gl_FUNC_STRFTIME): Do not require AC_TYPE_MBSTATE_T, and do not check for wchar.h. * modules/strftime (Files): Remove m4/mbstate_t.m4. (Depends-on): Remove mbrlen, mbsinit, wchar. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +2011-01-18 Paul Eggert + + strftime: remove dependencies on multibyte modules + + strftime depended on mbrlen, mbsinit, and wchar, but these modules + are needed only if ! MULTIBYTE_IS_FORMAT_SAFE, and that is true + only if __osf__ is defined, and I suspect OSF doesn't need these + other modules. If my guess is wrong, we'll need to come up with a + variant of strftime that doesn't need the multibyte modules. + + I discovered this problem when attempting modify Emacs to use the + strftime module. With the previous gnulib, this caused Emacs to + need 31 new files, ranging from lib/config.charset to + m4/wint_t.m4. This was overkill and I expect would be offputting + to the Emacs maintainers. After this change, only 6 new files are + needed, namely strftime.[ch], srtftime.m4, stdbool.in.h, + stdbool.m4, and tm_gmtoff.m4. + + * lib/strftime.c (MULTIBYTE_IS_FORMAT_SAFE): Define to 1 always. + Suggested by Bruno Haible in + . + * m4/strftime.m4 (gl_FUNC_STRFTIME): Do not require AC_TYPE_MBSTATE_T, + and do not check for wchar.h. + * modules/strftime (Files): Remove m4/mbstate_t.m4. + (Depends-on): Remove mbrlen, mbsinit, wchar. + 2011-01-18 Bruno Haible Tests for module 'get-rusage-as'. diff --git a/lib/strftime.c b/lib/strftime.c --- a/lib/strftime.c +++ b/lib/strftime.c @@ -48,8 +48,11 @@ GB18030, EUC-TW, BIG5, BIG5-HKSCS, CP950, EUC-JP, EUC-KR, CP949, SHIFT_JIS, CP932, JOHAB) are safe for formats, because the byte '%' cannot occur in a multibyte character except in the first byte. - But this does not hold for the DEC-HANYU encoding used on OSF/1. */ -#if !defined __osf__ + + The DEC-HANYU encoding used on OSF/1 is not safe for formats, but + this encoding has never been seen in real-life use, so we ignore + it. */ +#if !(defined __osf__ && 0) # define MULTIBYTE_IS_FORMAT_SAFE 1 #endif #define DO_MULTIBYTE (! MULTIBYTE_IS_FORMAT_SAFE) diff --git a/m4/strftime.m4 b/m4/strftime.m4 --- a/m4/strftime.m4 +++ b/m4/strftime.m4 @@ -21,11 +21,9 @@ # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. AC_REQUIRE([AC_STRUCT_TIMEZONE]) - AC_REQUIRE([AC_TYPE_MBSTATE_T]) AC_REQUIRE([gl_TM_GMTOFF]) AC_CHECK_FUNCS_ONCE([tzset]) - AC_CHECK_HEADERS_ONCE([wchar.h]) AC_DEFINE([my_strftime], [nstrftime], [Define to the name of the strftime replacement function.]) diff --git a/modules/strftime b/modules/strftime --- a/modules/strftime +++ b/modules/strftime @@ -4,17 +4,13 @@ Files: lib/strftime.h lib/strftime.c -m4/mbstate_t.m4 m4/tm_gmtoff.m4 m4/strftime.m4 Depends-on: extensions -mbrlen -mbsinit stdbool time_r -wchar configure.ac: gl_FUNC_GNU_STRFTIME