strstr: expand test coverage
[gnulib.git] / ChangeLog
index 4693863..e349a4e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,461 @@
+2011-02-25  Eric Blake  <eblake@redhat.com>
+
+       strstr: expand test coverage
+       * tests/test-strstr.c (main): Add much shorter trigger.  Fix C89
+       compilation.
+       * tests/test-memmem.c (main): Duplicate tests.
+       * tests/test-strcasestr.c (main): Likewise.
+       * tests/test-c-strcasestr.c (main): Likewise.
+
+2011-02-25  Jim Meyering  <meyering@redhat.com>
+
+       maint.mk: detect missing-NL-at-EOF, too
+       * top/maint.mk (sc_prohibit_empty_lines_at_EOF): Adjust so that
+       it also detects when a file lacks a newline at EOF.
+       (require_exactly_one_NL_at_EOF_): Renamed from
+       detect_empty_lines_at_EOF_.  I opted not to rename the rule,
+       since people may well have .x-sc_... file names tied to the
+       existing name.  Suggested by Eric Blake.
+
+2011-02-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       dirname: move m4/dos.m4 functionality into lib/dosname.h
+
+       m4/dos.m4 needs to go.  It laboriously invokes the C compiler, and
+       extracts symbols from it, puts them into config.h; but it's much
+       easier to use the symbols directly.  filename.h already does this,
+       but it disagrees with dos.m4 in some respects.  This patch
+       introduces a different include file dosname.h that packages up
+       dos.m4, and then later we can work on merging filename.h and
+       dosname.h.  Applications that need only the easy-to-configure
+       symbols should consider including dosname.h rather than dirname.h.
+       * NEWS: Mention incompatible changes.
+       * m4/dos.m4: Remove.
+       * lib/dosname.h, modules/dosname: New files.
+       * lib/dirname.h (ISSLASH, FILE_SYSTEM_PREFIX_LEN):
+       (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE):
+       (IS_ABSOLUTE_FILE_NAME, IS_RELATIVE_FILE_NAME): Move to lib/dosname.h.
+       * lib/at-func.c, lib/at-func2.c, lib/openat.c, lib/savewd.c:
+       Include dosname.h, not dirname.h.
+       * lib/rmdir.c, lib/stat.c, lib/unlink.c, lib/unlinkat.c:
+       Include dosname.h, for definitions of symbols like ISSLASH
+       that used to be in config.h.
+       * m4/dirname.m4 (gl_DIRNAME_LGPL): Do not require gl_AC_DOS.
+       * m4/rmdir.m4 (gl_FUNC_RMDIR): Likewise.
+       * m4/stat.m4 (gl_FUNC_STAT): Likewise.
+       * m4/unlink.m4 (gl_FUNC_UNLINK): Likewise.
+       * modules/dirname-lgpl (Files): Omit m4/dos.m4.
+       * modules/rmdir (Files): Likewise.
+       * modules/stat (Files): Likewise.
+       * modules/unlink (Files): Likewise.
+       * modules/dirname-lgpl (Depends-on): Add dosname.
+       * modules/lstat (Depends-on): Likewise.
+       * modules/openat (Depends-on): Likewise.
+       * modules/rmdir (Depends-on): Likewise.
+       * modules/savewd (Depends-on): Likewise.
+       * modules/stat (Depends-on): Likewise.
+       * modules/unlink (Depends-on): Likewise.
+       * modules/openat (Depends-on): Remove dirname-lgpl.
+       * modules/savewd (Depends-on): Likewise.
+       * tests/test-dirname.c: Do not use removed symbols like
+       FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR.  Instead, use
+       the remaining symbols, e.g., ISSLASH ('\\').
+
+2011-02-25  Eric Blake  <eblake@redhat.com>
+
+       strstr: revert patches that introduced bug and pessimization
+       * lib/str-two-way.h: Add another reference.
+       (two_way_short_needle, two_way_long_needle): Revert changes from
+       2011-02-24; they pessimize search speed.
+       (critical_factorization): Partially revert changes from
+       2010-06-22; they violate the requirement that the left half of the
+       needle be smaller than the period of the needle.
+
+2011-02-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       filenamecat: remove unnecessary dependency on dirname-lgpl
+       * modules/filenamecat (Depends-on): Remove dirname-lgpl, as there
+       is no direct dependency, just an indirect one via filenamecat-lgpl.
+
+       remove: remove unnecessary use of m4/dos.m4
+       * m4/remove.m4 (gl_FUNC_REMOVE): Don't require gl_AC_DOS; not needed.
+       * modules/remove (FILES): Remove m4/dos.m4.
+
+       * lib/openat-proc.c: Don't include dirname.h; not needed.
+
+       backupfile: remove unnecessary use of m4/dos.m4
+       * m4/backupfile.m4 (gl_BACKUPFILE): Don't require gl_AC_DOS; none
+       of its symbols are used by the backupfile code.  backupfile.c does
+       use a symbol HAVE_DOS_FILE_NAMES, but that symbol is meant only
+       for the rare case of programs that want all their backup file
+       names to live within 8+3 limits, and dos.m4 doesn't address that.
+       * modules/backupfile (Files): Remove m4/dos.m4.
+
+2011-02-24  Jim Meyering  <meyering@redhat.com>
+
+       strstr: fix a bug whereby strstr would mistakenly return NULL
+       * lib/str-two-way.h (two_way_short_needle): Correct off-by-one error
+       in period calculation.
+       (two_way_long_needle): Likewise.
+       The original problem was reported by Mike Stump in
+       http://thread.gmane.org/gmane.comp.sysutils.autoconf.bugs/7834
+       Ralf Wildenhues provided the short needle and haystack.
+       * tests/test-strstr.c: Add Ralf's test case to trigger the bug.
+       Add a more involved test to trigger the bug in two_way_long_needle.
+
+2011-02-24  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)
+
+       gnulib-tool: remove use of bold display in help screen
+       * gnulib-tool (func_usage): Do not use bold display anymore in the
+       help screen.  That was just meant to be a temporary emphasis for a
+       backward-incompatible change.
+
+2011-02-23  Bruno Haible  <bruno@clisp.org>
+
+       Fix misindentation of preprocessor directives.
+       * lib/argp-namefrob.h: Reindent preprocessor directives.
+       * lib/getopt_int.h (struct _getopt_data): Likewise.
+       * lib/progreloc.c (maybe_executable, find_executable): Likewise.
+       * lib/vasnprintf.c (decode_long_double): Likewise.
+       * tests/test-argmatch.c: Insert blank lines, for clarity.
+       * tests/test-exclude.c: Likewise.
+
+2011-02-22  Bruno Haible  <bruno@clisp.org>
+
+       ioctl: Fix for MacOS X in 64-bit mode.
+       * lib/ioctl.c (rpl_ioctl): Zero-extend, not sign-extend, the request
+       value.
+       Suggested by Eric Blake.
+       Reported by Markus Gothe <nietzsche@lysator.liu.se>.
+
+2011-02-22  Jim Meyering  <meyering@redhat.com>
+
+       maint: sc_cpp_indent_check: remove the "only in lib/" restriction
+       * Makefile (sc_cpp_indent_check): Don't limit the check to files
+       in lib/.
+
+2011-02-22  Eric Blake  <eblake@redhat.com>
+
+       maint: avoid any CDPATH issue
+       * Makefile (sc_cpp_indent_check): Anchor cd argument.
+
+       maint: adjust cpp indentation for my modules, as well
+       * Makefile (sc_cpp_indent_check): Add my name.
+       * lib/fbufmode.c: Filter through cppi.
+       * lib/fpurge.c: Likewise.
+       * lib/freadable.c: Likewise.
+       * lib/freading.c: Likewise.
+       * lib/fwritable.c: Likewise.
+       * lib/fwriting.c: Likewise.
+       * lib/sigaction.c: Likewise.
+
+2011-02-22  Jim Meyering  <meyering@redhat.com>
+
+       maint: adjust cpp indentation to reflect nesting depth
+       I.e., in a block of code that begins with an unnested "#if",
+       put one space between the "#" in column 1 and following token.
+       For example,
+       -#include <sys/vfs.h>
+       +# include <sys/vfs.h>
+       Do this only in .c files that are part of a module I maintain.
+       * lib/linkat.c: Filter through cppi.
+       * lib/nanosleep.c: Likewise.
+       * lib/openat.c: Likewise.
+       * lib/openat-die.c: Likewise.
+       * lib/dup3.c: Likewise.
+       * lib/fchownat.c: Likewise.
+       * lib/flock.c: Likewise.
+       * lib/fsync.c: Likewise.
+       * lib/fts.c: Likewise.
+       * lib/getpass.c: Likewise.
+       * lib/gettimeofday.c: Likewise.
+       * lib/userspec.c: Likewise.
+       * Makefile (sc_cpp_indent_check): New rule, to check this.
+
+2011-02-22  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wctomb'.
+       * lib/stdlib.in.h (wctomb): New declaration.
+       * lib/wctomb.c: New file.
+       * lib/wctomb-impl.h: New file.
+       * m4/wctomb.m4: New file.
+       * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_WCTOMB,
+       REPLACE_WCTOMB.
+       * modules/stdlib (Makefile.am): Substitute GNULIB_WCTOMB,
+       REPLACE_WCTOMB.
+       * modules/wctomb: New file.
+       * tests/test-stdlib-c++.cc: Test signature of wctomb.
+       * doc/posix-functions/wctomb.texi: Mention the new module.
+       * modules/wctob (Depends-on): Add wctomb.
+
+2011-02-22  Bruno Haible  <bruno@clisp.org>
+
+       New module 'mbtowc'.
+       * lib/stdlib.in.h (mbtowc): New declaration.
+       * lib/mbtowc.c: New file.
+       * lib/mbtowc-impl.h: New file, from libutf8 with modifications.
+       * m4/mbtowc.m4: New file.
+       * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize GNULIB_MBTOWC,
+       REPLACE_MBTOWC.
+       * modules/stdlib (Makefile.am): Substitute GNULIB_MBTOWC,
+       REPLACE_MBTOWC.
+       * modules/mbtowc: New file.
+       * tests/test-stdlib-c++.cc: Test signature of mbtowc.
+       * doc/posix-functions/mbtowc.texi: Mention the new module.
+       * modules/btowc (Depends-on): Add mbtowc.
+
+2011-02-22  Bruno Haible  <bruno@clisp.org>
+
+       wcrtomb: Add more tests for native Windows platforms.
+       * tests/test-wcrtomb-w32-1.sh: New file.
+       * tests/test-wcrtomb-w32-2.sh: New file.
+       * tests/test-wcrtomb-w32-3.sh: New file.
+       * tests/test-wcrtomb-w32-4.sh: New file.
+       * tests/test-wcrtomb-w32-5.sh: New file.
+       * tests/test-wcrtomb-w32.c: New file.
+       * modules/wcrtomb-tests (Files): Add them.
+       (Makefile.am): Arrange to run these tests.
+       * tests/test-wcrtomb-w32-6.sh: New file, currently unused.
+       * tests/test-wcrtomb-w32-7.sh: New file, currently unused.
+
+2011-02-20  Bruno Haible  <bruno@clisp.org>
+
+       wcrtomb: Enhance test.
+       * tests/test-wcrtomb.c (main): Add test against bug with NULL argument.
+
+2011-02-20  Bruno Haible  <bruno@clisp.org>
+
+       mbrtowc: Tiny optimization.
+       * lib/mbrtowc.c (mbrtowc): Delay pstate assignment until it is needed.
+
+2011-02-20  Jim Meyering  <meyering@redhat.com>
+
+       test-exclude.c: remove unmatched #endif
+       * tests/test-exclude.c: Remove stray #endif, left over from
+       the change of a week ago.
+
+2011-02-19  Jim Meyering  <meyering@redhat.com>
+
+       git-version-gen: skip "-dirty" check when appropriate
+       * build-aux/git-version-gen: Don't run any git commands when the
+       version string comes from .tarball-version.  Prior to this, we
+       would run git update-index --refresh even from a just-unpacked
+       tarball directory, and that could affect a .git/ directory in a
+       parent of the build directory.  Reported by Mike Frysinger.
+
+2011-02-19  Bruno Haible  <bruno@clisp.org>
+
+       unictype/property-byname: Reduce the size of the 'data' segment.
+       * lib/unictype/pr_byname.gperf: Add gperf option '%pic'.
+
+2011-02-19  Bruno Haible  <bruno@clisp.org>
+
+       unictype/scripts: Reduce the size of the 'data' segment.
+       * lib/gen-uni-tables.c (output_scripts_byname): Emit gperf option
+       '%pic'.
+       * lib/unictype/scripts_byname.gperf: Regenerated.
+
+2011-02-19  Bruno Haible  <bruno@clisp.org>
+
+       stdint: Update documentation.
+       * doc/posix-headers/stdint.texi: Mention WCHAR_MIN, WCHAR_MAX problem.
+
+2011-02-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       stdint: omit redundant check for wchar.h
+       * m4/stdint.m4 (gl_STDINT_H): The earlier part of this macro now
+       always tests whether wchar.h exists, so remove the now-redundant test.
+
+2011-02-18  Bruno Haible  <bruno@clisp.org>
+
+       stdint: Cut dependency to module 'wchar'.
+       * lib/stdint.in.h: Include wchar.h only when HAVE_WCHAR_H is 1. Also
+       include the necessary prerequisites.
+       * m4/stdint.m4 (gl_STDINT_H): Test whether wchar.h exists.
+       * modules/stdint (Depends-on): Remove wchar.
+       (Makefile.am): Substitute HAVE_WCHAR_H.
+       This reverts part of a 2007-01-06 commit. Reported by Paul Eggert.
+
+2011-02-18  Eric Blake  <eblake@redhat.com>
+
+       longlong: skip, rather than fail, on cross-compilation
+       * m4/longlong.m4 (AC_TYPE_LONG_LONG_INT): Avoid aborting configure
+       when cross-compiling; regression from 2011-02-16.
+
+2011-02-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Mention 2011-02-08 change to stdlib.
+
+2011-02-17  Bruno Haible  <bruno@clisp.org>
+
+       getloadavg: Add comments about platforms.
+       * m4/getloadavg.m4: Add comment.
+       * lib/getloadavg.c: Likewise.
+
+2011-02-17  Bruno Haible  <bruno@clisp.org>
+
+       getloadavg: Fix link error on Solaris 2.6.
+       * modules/getloadavg (Link): New section.
+       * modules/getloadavg-tests (Makefile.am): Use GETLOADAVG_LIBS for
+       linking test-getloadavg.
+       * doc/glibc-functions/getloadavg.texi: Mention that Solaris 2.6 lacks
+       getloadavg.
+
+2011-02-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/getloadavg.c (getloadavg) [sgi]: Make ldav_off of type ptrdiff_t.
+       It was 'int', but this doesn't match the IRIX 6.5 manual.
+       Suggested by Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00207.html>.
+
+2011-02-17  Bruno Haible  <bruno@clisp.org>
+
+       havelib: Fix comments.
+       * m4/lib-link.m4 (AC_LIB_RPATH): Update comments after 2007-01-02
+       change.
+
+2011-02-17  Bruno Haible  <bruno@clisp.org>
+
+       havelib: Update config.rpath.
+       * build-aux/config.rpath: Update to match libtool.m4 from libtool-2.4.
+
+2011-02-17  Bruno Haible  <bruno@clisp.org>
+
+       getloadavg test: Add some plausibility checks.
+       * tests/test-getloadavg.c (check_avg): Print a warning when the value
+       is improbable.
+
+2011-02-16  Eric Blake  <eblake@redhat.com>
+
+       maintainer-makefile: make syntax-check a no-op from tarballs
+       * top/maint.mk (no-vc-detected): New rule.
+       (local-checks-available): Use it to avoid hanging if someone tries
+       'make syntax-check' from a tarball.  Also append to any non-syntax
+       checks already defined in cfg.mk.
+
+2011-02-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       longlong: tune, particularly for common case of c99
+
+       * m4/longlong.m4 (AC_TYPE_LONG_LONG_INT): Don't bother compiling
+       or running anything if c99, or if unsigned long long int does not
+       work.  In either case, we know the answer without further tests.
+       Do not compile _AC_TYPE_LONG_LONG_SNIPPET twice.  Instead, compile
+       it at most once, and use its results for both long long int and
+       unsigned long long int.  This is more likely to be efficient in
+       the common case where the program wants to check for both long
+       long int and unsigned long long int.
+       (AC_TYPE_UNSIGNED_LONG_LONG_INT): Don't bother compiling if c99,
+       since the answer is already known.
+
+2011-02-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       getloadavg: set errno
+       * lib/getloadavg.c: Set errno when returning -1.  If no other
+       error number looks appropriate, set it to ENOSYS if the getloadavg
+       looks like it can't possibly ever work, ENOTSUP otherwise.
+       Suggested by Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00187.html>.
+
+       getloadavg: trim unused parts and speed up 'configure'
+       * NEWS: Document this.
+       * lib/getloadavg.c: Ignore HAVE_GETLOADAVG; this file is now
+       always compiled if getloadavg is absent.
+       Move test code to ...
+       * tests/test-getloadavg.c: New file, containing previous
+       contents of test from lib/getloadavg.c.  It also contains
+       suggestions by Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00186.html>.
+       * modules/getloadavg-tests: New file.
+       * m4/getloadavg.m4 (gl_GETLOADAVG): Do not check for getloadavg twice.
+       Do tests in the same order as they're needed for getloadavg.c.
+       Omit setgid-related tests that generate symbols KMEM_GROUP,
+       NEET_SETGID, GETLOADAVG_PRIVILEGED; nobody seems to use those any more.
+       Do only the tests that are needed to see whether the system has
+       getloadavg, moving the other tests into ...
+       (gl_PREREQ_GETLOADAVG): ... here.  Do not define obsolete symbol
+       NLIST_NAME_UNION; nobody should be using it.  Do not define
+       symbols C_GETLOADAVG and HAVE_GETLOADAVG; they're no longer
+       relevant, as the user of this module shouldn't care how getloadavg
+       is implemented.
+
+       getloadavg: omit unused var
+       * lib/getloadavg.c (getloadavg): Omit unused local variable.
+
+2011-02-15  Jim Meyering  <meyering@redhat.com>
+
+       doc: update users.txt
+       * users.txt: Update iwhd's URL.
+
+2011-02-13  Bruno Haible  <bruno@clisp.org>
+
+       Consistent macro naming for macros that use GCC __attribute__.
+       * lib/di-set.h (_GL_ATTRIBUTE_NONNULL): Renamed from
+       _ATTRIBUTE_NONNULL_.
+       * lib/ino-map.h (_GL_ATTRIBUTE_NONNULL): Likewise.
+       * lib/hash.h (_GL_ATTRIBUTE_WUR): Renamed from ATTRIBUTE_WUR.
+       * lib/ignore-value.h (_GL_ATTRIBUTE_DEPRECATED): Renamed from
+       ATTRIBUTE_DEPRECATED.
+       * lib/openat.h (_GL_ATTRIBUTE_NORETURN): Renamed from
+       ATTRIBUTE_NORETURN.
+       * lib/sigpipe-die.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+       * lib/xmemdup0.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+       * lib/xstrtol.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+       * lib/xalloc.h (_GL_ATTRIBUTE_NORETURN): Likewise.
+       (_GL_ATTRIBUTE_MALLOC): Renamed from ATTRIBUTE_MALLOC.
+       (_GL_ATTRIBUTE_ALLOC_SIZE): Renamed from ATTRIBUTE_ALLOC_SIZE.
+       * lib/version-etc.h (_GL_ATTRIBUTE_SENTINEL): Renamed from
+       ATTRIBUTE_SENTINEL.
+       * lib/safe-alloc.h (_GL_ATTRIBUTE_RETURN_CHECK): Renamed from
+       ATTRIBUTE_RETURN_CHECK.
+       * tests/test-ignore-value.c (_GL_ATTRIBUTE_RETURN_CHECK): Likewise.
+       * tests/test-argmatch.c (_GL_ATTRIBUTE_NORETURN): Renamed from
+       ATTRIBUTE_NORETURN.
+       * tests/test-exclude.c (_GL_ATTRIBUTE_NORETURN): Likewise.
+       Reported by Paul Eggert.
+
+2011-02-13  Bruno Haible  <bruno@clisp.org>
+
+       Don't interfere with a program's definition of __attribute__.
+       * lib/argp.h (__attribute__): Remove definition.
+       (_GL_ATTRIBUTE_FORMAT): New macro.
+       (argp_error, __argp_error, argp_failure, __argp_failure): Use it.
+       * lib/argp-fmtstream.h (__attribute__): Remove definition.
+       (_GL_ATTRIBUTE_FORMAT): New macro.
+       (__argp_fmtstream_printf, argp_fmtstream_printf): Use it.
+       * lib/argp-help.c (hol_entry_long_iterate): Use __attribute__ only for
+       GCC 3 or newer.
+       * lib/error.h (__attribute__): Remove definition.
+       (_GL_ATTRIBUTE_FORMAT): New macro.
+       (error, error_at_line): Use it.
+       * lib/hash.h (__attribute__): Remove definition.
+       (ATTRIBUTE_WUR): Update definition. Define always.
+       * lib/openat.h (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       * lib/sigpipe-die.h (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       * lib/vasnprintf.h (__attribute__): Remove definition.
+       (_GL_ATTRIBUTE_FORMAT): New macro.
+       (asnprintf, vasnprintf): Use it.
+       * lib/xalloc.h (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       (ATTRIBUTE_MALLOC, ATTRIBUTE_ALLOC_SIZE): Define always.
+       * lib/xmemdup0.h (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       * lib/xprintf.h (__attribute__): Remove definition.
+       (_GL_ATTRIBUTE_FORMAT): New macro.
+       (xprintf, xvprintf, xfprintf, xvfprintf): Use it.
+       * lib/xstrtol.h (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       * lib/xvasprintf.h (__attribute__): Remove definition.
+       (_GL_ATTRIBUTE_FORMAT): New macro.
+       (xasprintf, xvasprintf): Use it.
+       * tests/test-argmatch.c (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       * tests/test-exclude.c (__attribute__): Remove definition.
+       (ATTRIBUTE_NORETURN): Update definition. Define always.
+       Reported by Paul Eggert.
+
 2011-02-13  Bruno Haible  <bruno@clisp.org>
 
        mbrtowc: Add more tests for native Windows platforms.