Fix regex code so it doesn't rely on strcasecmp.
[gnulib.git] / ChangeLog
index 80bfad5..058132f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,258 @@
+2007-02-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix regex code so it doesn't rely on strcasecmp.
+       * lib/regex_internal.h: Include <langinfo.h> only if _LIBC is defined.
+       Otherwise, include gnulib's langinfo.h.
+       * lib/regcomp.c (init_dfa): Don't use strcasecmp, as it can have
+       undesirable behavior in non-C locales.  Instead, rely on locale_charset.
+       * m4/regex.m4 (gl_PREREQ_REGEX): Don't require AM_LANGINFO_CODESET.
+       * modules/regex (FILES): Remove m4/codeset.m4.
+       (Depends-on): Add localcharset.  Remove strcase.
+
+2007-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/unlinkdir.m4 (gl_UNLINKDIR): Fix m4 quoting bug.
+       * m4/unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Likewise.
+
+2007-02-13  Bruno Haible  <bruno@clisp.org>
+
+       * m4/intdiv0.m4 (gt_INTDIV0): Assume ANSI C. Fix underquoting bug.
+       Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
+
+2007-02-12  Bruno Haible  <bruno@clisp.org>
+
+       * lib/string_.h (memmem, mempcpy, memrchr, stpcpy, stpncpy, strchrnul,
+       strdup, strndup, strnlen, strpbrk, strsep, strtok_r): If
+       GNULIB_POSIXCHECK and the gnulib module not enabled, provoke a link-
+       time warning rather than a link error.
+
+2007-02-12  Bruno Haible  <bruno@clisp.org>
+
+       * m4/locale-fr.m4 (gt_LOCALE_FR): Fix m4 quoting bug.
+       * m4/locale-zh.m4 (gt_LOCALE_ZH_CN): Likewise.
+       Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
+
+2007-02-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/string_.h (strncasecmp): Fix typo: this macro takes 3
+       args, not 2.
+
+2007-02-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       New module 'time', so that apps can include <time.h> as per
+       POSIX and GNU instead of separate include files like time_r.h
+       and timegm.h.  This implementation tries out a simpler approach
+       for replacing decls in standard include files (as compared to
+       the string module), somewhat as an experiment.
+
+       * config/srclist.txt: Comment out mktime.c for now.
+       * doc/gnulib-tool.texi (Initial import): Don't use time_r as an example
+       since it doesn't apply any more.  Use generic wording instead.
+       * MODULES.html.sh (Support for systems lacking POSIX:2001): New module
+       'time'.
+       * lib/time_.h, m4/time_h.m4, modules/time: New files.
+       * lib/strptime.h, lib/time_r.h, lib/timegm.h: Remove.
+       * lib/mktime.c: Include config.h depending on _LIBC, not HAVE_CONFIG_H.
+       Don't include <sys/types.h>; no longer needed since we assume C89.
+       * lib/mktime.c: Don't include "time_r.h"; no longer needed.
+       * lib/strftime.c: Likewise.
+       * lib/time_r.c: Likewise.
+       * lib/nanosleep.c (nanosleep): #undef after include files, not before.
+       * lib/nanosleep.c: Include <time.h> first, to check interface.
+       * lib/strptime.c: Likewise.
+       * lib/time_r.c: Likewise.
+       * lib/timegm.c: Likewise.
+       * lib/strptime.c: Don't include strptime.h or time_r.h; no longer
+       needed.
+       * lib/timegm.c: Don't include timegm.h; no longer needed.
+       * lib/timespec.h: Don't include <sys/time.h> before <time.h>;
+       time.h now handles any problems in that area.
+       (struct timespec, nanosleep): Remove; time.h now arranges for these.
+       * lib/xnanosleep.c: Don't include timespec.h; no longer needed now
+       that time.h defines struct timespec.
+       * m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Check that nanosleep is declared.
+       Set REPLACE_NANOSLEEP.  Don't AC_DEFINE nanosleep; the time module now
+       handles that.
+       * m4/strptime.m4 (gl_FUNC_STPRTIME): Set REPLACE_STRPTIME.
+       * m4/time_r.m4 (gl_TIME_R): Don't define HAVE_TIME_R_POSIX; no longer
+       needed.  Set REPLACE_LOCALTIME.
+       * m4/timegm.m4 (gl_FUNC_TIMEGM): Set REPLACE_TIMEGM.
+       * m4/timespec.m4 (gl_CHECK_TYPE_STRUCT_TIMESPEC): Move to time_h.m4.
+       (gl_TIMESPEC): Don't check for sys/time.h or struct timespec or
+       nanosleep; time_h.m4 now does that.  Don't require
+       gl_USE_SYSTEM_EXTENSIONS; no longer needed directly, and the time
+       module handles this now.
+       * modules/getdate (Depends-on): Remove timespec.  Add time.
+       * modules/nanosleep (Depends-on): Likewise.
+       * modules/stat-time (Depends-on): Likewise.
+       * modules/nanosleep (Include): Include time.h, not timespec.h.
+       * modules/strptime (Files): Remove lib/strptime.h.
+       (Depends-on): Add extensions, time.
+       (Include): Include time.h, not strptime.h.
+       * modules/time_r (Files): Remove lib/time_r.h.
+       (Depends-on): Add time.
+       (Include): Include time.h, not time_r.h.
+       * modules/timegm: Likewise.
+       * modules/timespec (Description): Now does timespec-related decls
+       of our own, instead of struct timespec itself.
+       (Depends-on): Add time; remove extensions.
+       (Maintainer): Add self.
+       * modules/utimecmp (Depends-on): Add time; remove timespec.
+       * modules/utimens (Depends-on): Likewise.
+       * modules/xnanosleep (Depends-on): Likewise.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * lib/c-strstr.c: Include allocsa.h.
+       (knuth_morris_pratt): Use allocsa/freesa instead of malloc/free.
+       * lib/c-strcasestr.c: Include allocsa.h.
+       (knuth_morris_pratt): Use allocsa/freesa instead of malloc/free.
+       * lib/strcasestr.c: Include allocsa.h.
+       (knuth_morris_pratt): Use allocsa/freesa instead of malloc/free.
+       * lib/mbsstr.c: Include allocsa.h.
+       (knuth_morris_pratt_unibyte, knuth_morris_pratt_multibyte): Use
+       allocsa/freesa instead of malloc/free.
+       * lib/mbscasestr.c: Include allocsa.h.
+       (knuth_morris_pratt_unibyte, knuth_morris_pratt_multibyte): Use
+       allocsa/freesa instead of malloc/free.
+       * modules/c-strstr (Depends-on): Add allocsa.
+       * modules/c-strcasestr (Depends-on): Likewise.
+       * modules/strcasestr (Depends-on): Likewise.
+       * modules/mbsstr (Depends-on): Likewise.
+       * modules/mbscasestr (Depends-on): Likewise.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * lib/mbsspn.c (mbsspn): Fix bug. Remove unnecessary strlen call.
+
+       * modules/mbsspn-tests: New file.
+       * tests/test-mbsspn.sh: New file.
+       * tests/test-mbsspn.c: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * lib/mbspbrk.c (mbspbrk): Remove unneeded cast.
+
+       * modules/mbspbrk-tests: New file.
+       * tests/test-mbspbrk.sh: New file.
+       * tests/test-mbspbrk.c: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * lib/mbscspn.c (mbscspn): Remove unnecessary strlen call and
+       unneeded cast.
+
+       * modules/mbscspn-tests: New file.
+       * tests/test-mbscspn.sh: New file.
+       * tests/test-mbscspn.c: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * modules/mbscasecmp-tests: New file.
+       * tests/test-mbscasecmp.sh: New file.
+       * tests/test-mbscasecmp.c: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Ensure O(n) worst-case complexity of mbscasestr.
+       * lib/mbscasestr.c: Include stdbool.h.
+       (knuth_morris_pratt_unibyte, knuth_morris_pratt_multibyte): New
+       functions.
+       (mbscasestr): Add some bookkeeping. Invoke knuth_morris_pratt_* when
+       the bookkeeping indicates that it's worth it.
+       * modules/mbscasestr (Depends-on): Add stdbool, mbslen, strnlen.
+
+       * modules/mbscasestr-tests: New file.
+       * tests/test-mbscasestr1.c: New file.
+       * tests/test-mbscasestr2.sh: New file.
+       * tests/test-mbscasestr2.c: New file.
+       * tests/test-mbscasestr3.sh: New file.
+       * tests/test-mbscasestr3.c: New file.
+       * tests/test-mbscasestr4.sh: New file.
+       * tests/test-mbscasestr4.c: New file.
+       * m4/locale-tr.m4: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Ensure O(n) worst-case complexity of mbsstr.
+       * lib/mbsstr.c: Include stdbool.h.
+       (knuth_morris_pratt_unibyte, knuth_morris_pratt_multibyte): New
+       functions.
+       (mbsstr): Add some bookkeeping. Invoke knuth_morris_pratt_* when the
+       bookkeeping indicates that it's worth it.
+       * modules/mbsstr (Depends-on): Add stdbool, mbslen, strnlen.
+
+       * modules/mbsstr-tests: New file.
+       * tests/test-mbsstr1.c: New file.
+       * tests/test-mbsstr2.sh: New file.
+       * tests/test-mbsstr2.c: New file.
+       * tests/test-mbsstr3.sh: New file.
+       * tests/test-mbsstr3.c: New file.
+       * m4/locale-fr.m4: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * lib/mbsrchr.c (mbsrchr): Fix bug.
+
+       * modules/mbsrchr-tests: New file.
+       * tests/test-mbsrchr.sh: New file.
+       * tests/test-mbsrchr.c: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       * lib/mbschr.c (mbschr): Fix bug.
+
+       * modules/mbschr-tests: New file.
+       * tests/test-mbschr.sh: New file.
+       * tests/test-mbschr.c: New file.
+       * m4/locale-zh.m4: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Support for copying multibyte string iterators.
+       * lib/mbiter.h: Include <string.h>.
+       (mbiter_multi_copy): New function.
+       (mbi_copy): New macro.
+       * lib/mbuiter.h: Include <string.h>.
+       (mbuiter_multi_copy): New function.
+       (mbui_copy): New macro.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       New module mbslen.
+       * modules/mbslen: New file.
+       * lib/mbslen.c: New file.
+       * lib/string_.h (mbslen): New declaration.
+       * m4/mbslen.m4: New file.
+       * m4/string_h.m4 (gl_STRING_MODULE_INDICATOR_DEFAULTS): Initialize
+       GNULIB_MBSLEN.
+       * modules/string (string.h): Also substitute GNULIB_MBSLEN.
+       * MODULES.html.sh (Internationalization functions): Add mbslen.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Ensure O(n) worst-case complexity of strcasestr substitute.
+       * lib/strcasestr.c: Include stdbool.h.
+       (knuth_morris_pratt): New function.
+       (strcasestr): Add some bookkeeping. Invoke knuth_morris_pratt when the
+       bookkeeping indicates that it's worth it.
+       * modules/strcasestr (Depends-on): Add stdbool, strnlen.
+
+       * modules/strcasestr-tests: New file.
+       * tests/test-strcasestr.c: New file.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Ensure O(n) worst-case complexity of c_strcasestr.
+       * lib/c-strcasestr.c: Include stdbool.h, string.h.
+       (knuth_morris_pratt): New function.
+       (c_strcasestr): Add some bookkeeping. Invoke knuth_morris_pratt when
+       the bookkeeping indicates that it's worth it.
+       * modules/c-strcasestr (Depends-on): Add stdbool, strnlen.
+
+       * modules/c-strcasestr-tests: New file.
+       * tests/test-c-strcasestr.c: New file.
+
 2007-02-11  Bruno Haible  <bruno@clisp.org>
 
        Ensure O(n) worst-case complexity of c_strstr.
 
 2007-02-11  Bruno Haible  <bruno@clisp.org>
 
-       * m4/javacomp.m4 (gt_JAVACOMP): Work around a 'tr' bug in coreutils.
-       Reported by Joel E. Denny <jdenny@ces.clemson.edu>,
+       * m4/javacomp.m4 (gt_JAVACOMP): Work around a 'tr' bug in coreutils
+       5.2.1 and earlier, whereby \055 was treated just like the range
+       delimiter '-'.  Reported by Joel E. Denny <jdenny@ces.clemson.edu>.
 
 2007-02-08  Bruno Haible  <bruno@clisp.org>