+2009-07-14 Bruno Haible <bruno@clisp.org>
+
+ * m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Guess it works on glibc systems.
+ Reported by anonymous kc.
+
+2009-07-07 Jim Meyering <meyering@redhat.com>
+
+ maint.mk: don't look for translatable strings in *.m4 or *.mk
+ * top/maint.mk (sc_po_check): Skip *.m4 and *.mk files,
+ when searching for translatable strings.
+
+2009-07-05 Jim Meyering <meyering@redhat.com>
+
+ remove superfluous parentheses in STREQ definition
+ * tests/test-argv-iter.c (STREQ): Remove redundant parentheses.
+ * lib/getugroups.c (STREQ): Likewise.
+ * lib/fnmatch.c (STREQ): Likewise.
+ Spotted by Bruno Haible.
+
+2009-07-04 Jim Meyering <meyering@redhat.com>
+
+ argv-iter: new module
+ * MODULES.html.sh: Add argv-iter.
+ * lib/argv-iter.c, lib/argv-iter.h: New files.
+ * modules/argv-iter: New file.
+ * modules/argv-iter-tests: New file.
+ * tests/test-argv-iter.c: Test it.
+
+2009-07-04 Bruno Haible <bruno@clisp.org>
+
+ Fix assertion.
+ * lib/git-merge-changelog.c (compute_mapping): In the case where file1
+ contains more exact copies of a given entry than file2, leave the extra
+ copies unpaired rather than aborting.
+ Reported by Eric Blake.
+
+2009-07-02 Bruno Haible <bruno@clisp.org>
+
+ Speedup git-merge-changelog for git cherry-pick.
+ * lib/git-merge-changelog.c (struct entries_mapping): New type.
+ (entries_mapping_get): New function, extracted from compute_mapping.
+ (entries_mapping_reverse_get): New function.
+ (compute_mapping): Add a 'full' argument. Return the result in a
+ 'struct entries_mapping'.
+ (main): Update. Access the mappings through entries_mapping_get.
+ Reported by Eric Blake.
+
+2009-07-02 Bruno Haible <bruno@clisp.org>
+
+ * lib/git-merge-changelog.c (compute_mapping): Fix determination of
+ best_i.
+
+2009-07-02 Bruno Haible <bruno@clisp.org>
+
+ Speed up approximate search for matching ChangeLog entries.
+ * lib/git-merge-changelog.c (entry_fstrcmp): Add a lower_bound
+ argument. Call fstrcmp_bounded instead of fstrcmp.
+ (compute_mapping, try_split_merged_entry, main): Update callers.
+
+2009-07-02 Bruno Haible <bruno@clisp.org>
+
+ * lib/git-merge-changelog.c (main): Add comment about git cherry-pick.
+
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ Reduce the number of uc_is_cased calls.
+ * lib/unicase.h (casing_suffix_context_t): Add
+ 'first_char_except_ignorable' field.
+ * lib/unicase/context.h (SCC_FINAL_SIGMA_MASK): Remove macro.
+ (SCC_MORE_ABOVE_MASK, SCC_BEFORE_DOT_MASK): Update.
+ * lib/unicase/empty-suffix-context.c (unicase_empty_suffix_context):
+ Update initializer.
+ * lib/unicase/u-casemap.h (FUNC): Don't invoke uc_is_cased on
+ case-ignorable characters.
+ * lib/unicase/u-ct-totitle.h (FUNC): Likewise.
+ * lib/unicase/u-suffix-context.h (FUNC2): Don't call uc_is_cased here.
+ * modules/unicase/u8-suffix-context (Depends-on): Remove unicase/cased.
+ * modules/unicase/u16-suffix-context (Depends-on): Likewise.
+ * modules/unicase/u32-suffix-context (Depends-on): Likewise.
+
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'unicase/ignorable'.
+ * modules/unicase/ignorable-tests: New file.
+ * tests/unicase/test-ignorable.c: New file, generated by
+ gen-uni-tables.
+
+ Tests for module 'unicase/cased'.
+ * modules/unicase/cased-tests: New file.
+ * tests/unicase/test-cased.c: New file, generated by gen-uni-tables.
+ * tests/unicase/test-predicate-part1.h: New file, derived from
+ tests/unictype/test-predicate-part1.h.
+ * tests/unicase/test-predicate-part2.h: New file, same as
+ tests/unictype/test-predicate-part2.h.
+
+ Fix evaluation of "Before C" condition of FINAL_SIGMA.
+ * lib/gen-uni-tables.c (is_cased, is_case_ignorable): New functions.
+ (output_casing_properties): New function.
+ (main): Call it.
+ * lib/unicase/cased.h: New file, generated by gen-uni-tables.
+ * lib/unicase/cased.c: Include unictype/bitmap.h.
+ (uc_is_cased): Define through a bitmap lookup.
+ * lib/unicase/ignorable.h: New file, generated by gen-uni-tables.
+ * lib/unicase/ignorable.c: Include unictype/bitmap.h.
+ (uc_is_case_ignorable): Define through a bitmap lookup.
+ * modules/unicase/cased (Files): Add lib/unicase/cased.h,
+ lib/unictype/bitmap.h.
+ (Depends-on): Add inline. Clean up.
+ * modules/unicase/ignorable (Files): Add lib/unicase/ignorable.h,
+ lib/unictype/bitmap.h.
+ (Depends-on): Add inline. Clean up.
+ * tests/unicase/test-u8-tolower.c (main): Add more tests of FINAL_SIGMA
+ recognition.
+ * tests/unicase/test-u16-tolower.c (main): Likewise.
+ * tests/unicase/test-u32-tolower.c (main): Likewise.
+
+2009-06-30 Bruno Haible <bruno@clisp.org>
+
+ * lib/unicase/u8-casemap.c: Don't include uniwbrk.h.
+ * lib/unicase/u16-casemap.c: Likewise.
+ * lib/unicase/u32-casemap.c: Likewise.
+
+2009-06-29 Bruno Haible <bruno@clisp.org>
+
+ Define u32_casefold as a wrapper around u32_ct_casefold.
+ * lib/unicase/u32-casefold.c: Update.
+ * modules/unicase/u32-casefold (Depends-on): Add
+ unicase/u32-ct-casefold, unicase/empty-prefix-context,
+ unicase/empty-suffix-context. Clean up.
+
+ Define u16_casefold as a wrapper around u16_ct_casefold.
+ * lib/unicase/u16-casefold.c: Update.
+ * modules/unicase/u16-casefold (Depends-on): Add
+ unicase/u16-ct-casefold, unicase/empty-prefix-context,
+ unicase/empty-suffix-context. Clean up.
+
+ Define u8_casefold as a wrapper around u8_ct_casefold.
+ * lib/unicase/u-casefold.h (FUNC): Delegate to U_CT_CASEFOLD.
+ * lib/unicase/u8-casefold.c: Update.
+ * modules/unicase/u8-casefold (Depends-on): Add unicase/u8-ct-casefold,
+ unicase/empty-prefix-context, unicase/empty-suffix-context. Clean up.
+
+ Define u32_totitle as a wrapper around u32_ct_totitle.
+ * lib/unicase/u32-totitle.c: Update.
+ * modules/unicase/u32-totitle (Depends-on): Add unicase/u32-ct-totitle,
+ unicase/empty-prefix-context, unicase/empty-suffix-context. Clean up.
+
+ Define u16_totitle as a wrapper around u16_ct_totitle.
+ * lib/unicase/u16-totitle.c: Update.
+ * modules/unicase/u16-totitle (Depends-on): Add unicase/u16-ct-totitle,
+ unicase/empty-prefix-context, unicase/empty-suffix-context. Clean up.
+
+ Define u8_totitle as a wrapper around u8_ct_totitle.
+ * lib/unicase/u-totitle.h (is_cased, is_case_ignorable): Remove
+ functions.
+ (FUNC): Delegate to U_CT_TOTITLE.
+ * lib/unicase/u8-totitle.c: Update.
+ * modules/unicase/u8-totitle (Depends-on): Add unicase/u8-ct-totitle,
+ unicase/empty-prefix-context, unicase/empty-suffix-context. Clean up.
+
+ * lib/unicase/u32-tolower.c (u32_tolower): Update u32_casemap
+ invocation.
+ * modules/unicase/u32-tolower (Depends-on): Add
+ unicase/empty-prefix-context, unicase/empty-suffix-context.
+
+ * lib/unicase/u16-tolower.c (u16_tolower): Update u16_casemap
+ invocation.
+ * modules/unicase/u16-tolower (Depends-on): Add
+ unicase/empty-prefix-context, unicase/empty-suffix-context.
+
+ * lib/unicase/u8-tolower.c (u8_tolower): Update u8_casemap invocation.
+ * modules/unicase/u8-tolower (Depends-on): Add
+ unicase/empty-prefix-context, unicase/empty-suffix-context.
+
+ * lib/unicase/u32-toupper.c (u32_toupper): Update u32_casemap
+ invocation.
+ * modules/unicase/u32-toupper (Depends-on): Add
+ unicase/empty-prefix-context, unicase/empty-suffix-context.
+
+ * lib/unicase/u16-toupper.c (u16_toupper): Update u16_casemap
+ invocation.
+ * modules/unicase/u16-toupper (Depends-on): Add
+ unicase/empty-prefix-context, unicase/empty-suffix-context.
+
+ * lib/unicase/u8-toupper.c (u8_toupper): Update u8_casemap invocation.
+ * modules/unicase/u8-toupper (Depends-on): Add
+ unicase/empty-prefix-context, unicase/empty-suffix-context.
+
+ New module 'unicase/u32-ct-casefold'.
+ * lib/unicase/u32-ct-casefold.c: New file.
+ * modules/unicase/u32-ct-casefold: New file.
+
+ New module 'unicase/u16-ct-casefold'.
+ * lib/unicase/u16-ct-casefold.c: New file.
+ * modules/unicase/u16-ct-casefold: New file.
+
+ New module 'unicase/u8-ct-casefold'.
+ * lib/unicase/u8-ct-casefold.c: New file.
+ * lib/unicase/u-ct-casefold.h: New file, derived from
+ lib/unicase/u-casefold.h.
+ * modules/unicase/u8-ct-casefold: New file.
+
+ New module 'unicase/u32-ct-totitle'.
+ * lib/unicase/u32-ct-totitle.c: New file.
+ * modules/unicase/u32-ct-totitle: New file.
+
+ New module 'unicase/u16-ct-totitle'.
+ * lib/unicase/u16-ct-totitle.c: New file.
+ * modules/unicase/u16-ct-totitle: New file.
+
+ New module 'unicase/u8-ct-totitle'.
+ * lib/unicase/u8-ct-totitle.c: New file.
+ * lib/unicase/u-ct-totitle.h: New file, derived from
+ lib/unicase/u-totitle.h.
+ * modules/unicase/u8-ct-totitle: New file.
+
+ New module 'unicase/u32-ct-tolower'.
+ * lib/unicase/u32-ct-tolower.c: New file.
+ * modules/unicase/u32-ct-tolower: New file.
+
+ New module 'unicase/u16-ct-tolower'.
+ * lib/unicase/u16-ct-tolower.c: New file.
+ * modules/unicase/u16-ct-tolower: New file.
+
+ New module 'unicase/u8-ct-tolower'.
+ * lib/unicase/u8-ct-tolower.c: New file.
+ * modules/unicase/u8-ct-tolower: New file.
+
+ New module 'unicase/u32-ct-toupper'.
+ * lib/unicase/u32-ct-toupper.c: New file.
+ * modules/unicase/u32-ct-toupper: New file.
+
+ New module 'unicase/u16-ct-toupper'.
+ * lib/unicase/u16-ct-toupper.c: New file.
+ * modules/unicase/u16-ct-toupper: New file.
+
+ New module 'unicase/u8-ct-toupper'.
+ * lib/unicase/u8-ct-toupper.c: New file.
+ * modules/unicase/u8-ct-toupper: New file.
+
+ Add context arguments to u*_casemap functions.
+ * lib/unicase/unicasemap.h: Include unicase.h.
+ (u8_casemap, u16_casemap, u32_casemap): Add prefix_context and
+ suffix_context arguments.
+ * lib/unicase/u-casemap.h (is_cased, is_case_ignorable): Remove
+ functions.
+ (FUNC): Add prefix_context and suffix_context arguments. Use
+ uc_is_cased and uc_is_case_ignorable.
+ * lib/unicase/u8-casemap.c: Include caseprop.h and context.h.
+ * lib/unicase/u16-casemap.c: Likewise.
+ * lib/unicase/u32-casemap.c: Likewise.
+ * modules/unicase/u8-casemap (Files): Add lib/unicase/context.h.
+ (Depends-on): Add unicase/cased, unicase/ignorable. Clean up.
+ * modules/unicase/u16-casemap (Files): Add lib/unicase/context.h.
+ (Depends-on): Add unicase/cased, unicase/ignorable. Clean up.
+ * modules/unicase/u32-casemap (Files): Add lib/unicase/context.h.
+ (Depends-on): Add unicase/cased, unicase/ignorable. Clean up.
+
+ New module 'unicase/u32-suffix-context'.
+ * lib/unicase/u32-suffix-context.c: New file.
+ * modules/unicase/u32-suffix-context: New file.
+
+ New module 'unicase/u16-suffix-context'.
+ * lib/unicase/u16-suffix-context.c: New file.
+ * modules/unicase/u16-suffix-context: New file.
+
+ New module 'unicase/u8-suffix-context'.
+ * lib/unicase/u8-suffix-context.c: New file.
+ * lib/unicase/u-suffix-context.h: New file.
+ * modules/unicase/u8-suffix-context: New file.
+
+ New module 'unicase/empty-suffix-context'.
+ * lib/unicase/empty-suffix-context.c: New file.
+ * modules/unicase/empty-suffix-context: New file.
+
+ New module 'unicase/u32-prefix-context'.
+ * lib/unicase/u32-prefix-context.c: New file.
+ * modules/unicase/u32-prefix-context: New file.
+
+ New module 'unicase/u16-prefix-context'.
+ * lib/unicase/u16-prefix-context.c: New file.
+ * modules/unicase/u16-prefix-context: New file.
+
+ New module 'unicase/u8-prefix-context'.
+ * lib/unicase/u8-prefix-context.c: New file.
+ * lib/unicase/u-prefix-context.h: New file.
+ * lib/unicase/context.h: New file.
+ * modules/unicase/u8-prefix-context: New file.
+
+ New module 'unicase/empty-prefix-context'.
+ * lib/unicase/empty-prefix-context.c: New file.
+ * modules/unicase/empty-prefix-context: New file.
+
+ New module 'unicase/ignorable'.
+ * lib/unicase/ignorable.c: New file.
+ * modules/unicase/ignorable: New file.
+
+ New module 'unicase/cased'.
+ * lib/unicase/caseprop.h: New file.
+ * lib/unicase/cased.c: New file.
+ * modules/unicase/cased: New file.
+
+ New functions for case mapping of substrings.
+ * lib/unicase.h (casing_prefix_context_t): New type.
+ (unicase_empty_prefix_context): New variable.
+ (u8_casing_prefix_context, u16_casing_prefix_context,
+ u32_casing_prefix_context, u8_casing_prefixes_context,
+ u16_casing_prefixes_context, u32_casing_prefixes_context): New
+ declarations.
+ (casing_suffix_context_t): New type.
+ (unicase_empty_suffix_context): New variable.
+ (u8_casing_suffix_context, u16_casing_suffix_context,
+ u32_casing_suffix_context, u8_casing_suffixes_context,
+ u16_casing_suffixes_context, u32_casing_suffixes_context,
+ u8_ct_toupper, u16_ct_toupper, u32_ct_toupper, u8_ct_tolower,
+ u16_ct_tolower, u32_ct_tolower, u8_ct_totitle, u16_ct_totitle,
+ u32_ct_totitle, u8_ct_casefold, u16_ct_casefold, u32_ct_casefold): New
+ declarations.
+
+2009-06-28 Jim Meyering <meyering@redhat.com>
+
+ boostrap: indent only with spaces
+ * build-aux/bootstrap: Indent only with spaces, never TABs.
+
+ bootstrap: split long lines
+ * build-aux/bootstrap: Keep line length < 80.
+
+ bootstrap: sync from coreutils
+ * build-aux/bootstrap: Honor variables like $ACLOCAL, etc.,
+ just as autoreconf does. Verify a list of prerequisite
+ package-name,version-number pairs if defined in bootstrap.conf.
+ Refer to README-prereq, if prerequisites are not satisfied.
+
+2009-06-27 Eric Blake <ebb9@byu.net>
+
+ tests: add test for bogus NULL definition
+ * tests/test-stdio.c: Ensure POSIX 2008 requirement on NULL.
+ * tests/test-stdlib.c: Likewise.
+ * tests/test-string.c: Likewise.
+ * tests/test-locale.c: Likewise.
+ * tests/test-unistd.c: Likewise.
+ * modules/stdio-tests (Depends-on): Add verify.
+ * modules/stdlib-tests (Depends-on): Likewise.
+ * modules/string-tests (Depends-on): Likewise.
+ * modules/locale-tests (Depends-on): Likewise.
+ * modules/unistd-tests (Depends-on): Likewise.
+
+2009-06-27 Paolo Bonzini <bonzini@gnu.org>
+
+ * m4/selinux-context-h (gl_HEADERS_SELINUX_CONTEXT_H): Remove
+ self-explaining comment.
+ * m4/selinux-selinux-h: Update serial.
+ (gl_LIBSELINUX): New macro, adding a warning for missing development
+ packages to code extracted from...
+ (gl_HEADERS_SELINUX_SELINUX_H): ... this one. Require gl_LIBSELINUX.
+ Add warning for missing development packages here, too.
+
+2009-06-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * build-aux/bootstrap: Do not use GIT_CONFIG_LOCAL.
+
+2009-06-25 Eric Blake <ebb9@byu.net>
+
+ version-etc: fix regression
+ * lib/version-etc.h (ATTRIBUTE_SENTINEL): Define for new enough
+ gcc.
+ (version_etc): Use it, to catch bugs with trailing NULL.
+ * lib/version-etc.c (version_etc_arn): Delete unused argument.
+ (version_etc_va): Fix logic bug.
+ * modules/version-etc-tests: Add test.
+ * tests/test-version-etc.c: New file.
+ * tests/test-version-etc.sh: Likewise.
+
+2009-06-25 Sam Steingold <sds@gnu.org>
+
+ * mbrtowc.m4 (gl_MBRTOWC_SANITYCHECK): Include <stdlib.h>, for the
+ mbtowc declaration.
+
+2009-06-25 Eric Blake <ebb9@byu.net>
+
+ fpurge: migrate into <stdio.h>
+ * lib/fpurge.h: Delete...
+ * lib/stdio.in.h (fpurge): ...and declare here, instead.
+ * lib/fpurge.c (fpurge): Change declaring header.
+ * modules/fpurge (Files): Drop deleted file.
+ (Depends-on): Add stdio.
+ (configure.ac): Set witness.
+ * modules/stdio (Makefile.am): Support fpurge macros.
+ * m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Likewise.
+ * m4/fpurge.m4 (gl_FUNC_FPURGE): Set appropriate variables.
+ * lib/fflush.c: Update client.
+ * tests/test-fpurge.c: Likewise.
+ * NEWS: Mention the change.
+
+2009-06-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * lib/argp-version-etc.c (program_authors): Add const
+ qualifier.
+ * lib/version-etc.c: Fix typos in the comments.
+ * modules/argp-version-etc: Depends on version-etc.
+
+2009-06-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ argp-version-etc: new module.
+
+ * lib/argp-version-etc.c: New file.
+ * lib/argp-version-etc.h: New file.
+ * modules/argp-version-etc: New file.
+ * modules/argp-version-etc-tests: New file.
+ * tests/test-argp-version-etc.c: New test.
+ * tests/test-argp-version-etc-1.sh: New test.
+
+2009-06-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Provide additional interfaces and documentation for version-etc
+ module.
+
+ * lib/version-etc.c (version_etc_arn, version_etc_ar): New
+ interfaces.
+ * lib/version-etc.h (version_etc_arn, version_etc_ar): New
+ prototypes.
+
+2009-06-24 Bruno Haible <bruno@clisp.org>
+
+ * m4/lib-link.m4 (AC_LIB_HAVE_LINKFLAGS): Fix description of
+ HAVE_LIB${NAME} macro.
+ Reported by Sam Steingold <sds@gnu.org>.
+
+2009-06-23 Simon Josefsson <simon@josefsson.org>
+
+ * modules/hash-tests (test_hash_LDADD): Link to libintl when
+ needed.
+
+2009-06-21 Bruno Haible <bruno@clisp.org>
+
+ Make two consecutive identical invocations of AC_LIB_HAVE_LINKFLAGS
+ work.
+ * m4/lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Reset HAVE_LIB${NAME}
+ together with LIB${NAME}, LTLIB${NAME}.
+ Reported by Sam Steingold <sds@gnu.org>.
+
+2009-06-20 Jim Meyering <meyering@redhat.com>
+
+ tests: make sc_require_test_exit_idiom more generic
+ * top/maint.mk (Exit_witness_file): New overridable variable.
+ (sc_require_test_exit_idiom): Don't hard-code tests/test-lib.sh.
+ Relax test for /^Exit \$fail$$/ to just /^Exit ./.
+
+2009-06-19 Jim Meyering <meyering@redhat.com>
+
+ hash: reverse order of src/dst parameters in an internal interface
+ * lib/hash.c (transfer_entries): Reverse order of parameters to
+ put DST before SRC. Adjust callers.
+
+ tests: test-hash: avoid wholesale duplication
+ * tests/test-hash.c (main): Don't copy/paste a 60-line loop.
+ Instead, use a loop and add a single conditional.
+
+ tests: test-hash: allow seed selection via a command line argument
+ * tests/test-hash.c (get_seed): New function.
+ (main): Use it.
+
+2009-06-19 Eric Blake <ebb9@byu.net>
+
+ hash: avoid memory leak on allocation failure
+ * lib/hash.c: (hash_rehash): Avoid memory leak on allocation
+ failure. Factor repeated algorithm...
+ (transfer_entries): ...into new helper routine.
+ (hash_delete): React to hash_rehash return value.
+
+ hash: reduce memory pressure in hash_rehash no-op case
+ * lib/hash.c (next_prime): Avoid overflow.
+ (hash_initialize): Factor bucket size computation...
+ (compute_bucket_size): ...into new helper function.
+ (hash_rehash): Use new function and open coding to reduce memory
+ pressure, and avoid a memory leak in USE_OBSTACK code.
+ Reported by Jim Meyering.
+
2009-06-18 Eric Blake <ebb9@byu.net>
+ hash: make rotation more obvious
+ * modules/hash (Depends-on): Add bitrotate and stdint.
+ * lib/bitrotate.h (rotl_sz, rotr_sz): New functions.
+ * lib/hash.c (headers): Drop limits.h. Add stdint.h.
+ (SIZE_MAX): Rely on headers for definition.
+ (hash_string) [USE_DIFF_HASH]: Use rotl_sz.
+ (raw_hasher): Use rotr_sz.
+ Suggested by Jim Meyering.
+
+ hash: fix memory leak in last patch
+ * lib/hash.c (hash_rehash): Avoid memory leak.
+
+ hash: avoid no-op rehashing
+ * lib/hash.c (hash_rehash): Recognize useless rehash attempts.
+
+ hash: provide default callback functions
+ * lib/hash.c (raw_hasher, raw_comparator): New functions.
+ (hash_initialize): Use them as defaults.
+ * tests/test-hash.c (main): Test this.
+
hash: minor optimization
* lib/hash.c (hash_lookup, hash_find_entry): Avoid function call
when possible.