1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-17 12:41:05 +03:00
Commit Graph

33 Commits

Author SHA1 Message Date
Eric Blake
2b430e392c Add rawmemchr module, matching glibc.
* modules/string (Makefile.am): New indicator.
* m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Set it.
* lib/string.in.h (rawmemchr): Declare when appropriate.
* modules/rawmemchr: New file.
* m4/rawmemchr.m4: Likewise.
* lib/rawmemchr.c: Likewise.
* modules/rawmemchr-tests: Likewise.
* tests/test-rawmemchr.c: Likewise.
* doc/glibc-functions/rawmemchr.texi (rawmemchr): Document
module.
* modules/strchrnul (Depends-on): Add rawmemchr.
* lib/strchrnul.c (strchrnul): Optimize a corner case.

Signed-off-by: Eric Blake <ebb9@byu.net>
2008-04-28 17:12:24 -06:00
Eric Blake
9c063a2afd Convert strcasestr module to use Two-Way algorithm.
* modules/strcasestr-simple: New module, based on the old
strcasestr, but with Two-Way rather than KMP.
* modules/strcasestr (Depends-on): Change to strcasestr-simple.
* lib/string.in.h (rpl_strcasestr): Declare.
* m4/strcasestr.m4 (gl_FUNC_STRCASESTR): Check for linear
performance.
* lib/strcasestr.c (strcasestr): Simplify, and avoid malloc.
* modules/string (Makefile.am): Support strcasestr.
* m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Likewise.
* modules/strcasestr-tests (Depends-on): Check for alarm.
* tests/test-strcasestr.c: Augment test.
* lib/str-two-way.h: Clean up stray macro.
* NEWS: Document new module.
* MODULES.html.sh (string handling): Likewise.
* doc/functions/strcasestr.texi: New file.
* doc/gnulib.texi (Function Substitutes): New node.  Move memmem
here, since it is not a POSIX function.

Signed-off-by: Eric Blake <ebb9@byu.net>
2008-01-14 20:34:33 -07:00
Bruno Haible
f94627382d Replace strsignal if it does not work fine. 2008-01-15 02:25:14 +01:00
Colin Watson
bd642010dd New module 'strsignal'. 2008-01-14 00:26:30 +01:00
Eric Blake
96facb24aa Avoid quadratic strstr implementations.
* lib/strstr.c: New file.
* m4/strstr.m4: Likewise.
* modules/strstr: Likewise.
* modules/strstr-tests: Likewise.
* tests/test-strstr.c: Likewise.
* lib/string.in.h (rpl_strstr): Declare.
(memmem) [GNULIB_POSIXCHECK]: Document speed issue.
* m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Support strstr.
* modules/string (Makefile.am): Likewise.
* MODULES.html.sh (string handling): Mention new module.
* doc/functions/strstr.texi (strstr): Document the bug.

Signed-off-by: Eric Blake <ebb9@byu.net>
2008-01-10 14:31:04 -07:00
Eric Blake
fc068cf4eb Fix memmem to avoid O(n^2) worst-case complexity.
* lib/memmem.c (knuth_morris_pratt): New function.
(memmem): Use it if first few naive iterations fail.
* m4/memmem.m4 (gl_FUNC_MEMMEM): Detect cygwin bug.
* modules/memcmp (License): Set to LGPLv2+, not LGPL.
* modules/memchr (License): Likewise.
* modules/memmem (Depends-on): Add memcmp, memchr, stdbool, and
malloca.
* tests/test-memmem.c: Rewrite, borrowing ideas from
test-mbsstr1.c; the old version wouldn't even compile!
* modules/memmem-tests: New file.
* lib/string.in.h (rpl_memmem): Add declaration.
* modules/string (Makefile.am): Substitute REPLACE_MEMMEM.
* m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Default for
REPLACE_MEMMEM.

Signed-off-by: Eric Blake <ebb9@byu.net>
2007-12-20 06:02:01 -07:00
Bruno Haible
a8c5982a27 Move declarations of str{,n}casecmp from <string.h> to <strings.h>. 2007-12-03 12:50:59 +01:00
Bruno Haible
3e74d28383 Rename string_.h to string.in.h. 2007-10-02 00:33:23 +02:00
Eric Blake
d5d3e86d32 Fix strerror on Interix.
* lib/string_.h (strerror): Declare replacement.
* doc/functions/strerror.texi (strerror): Document the Interix
shortcoming.
* modules/string (Makefile.am): Support new hooks.
* m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Add new hooks.
* m4/strerror.m4 (gl_FUNC_STRERROR): Defer to
gl_FUNC_STRERROR_SEPARATE.
(gl_FUNC_STRERROR_SEPARATE): Check for Interix bug.
* lib/strerror.c (rpl_strerror): Provide replacement.
* modules/strerror (Depends-on): Add string.
(configure.ac): Detect use of module.
* tests/test-strerror.c: New file.
* modules/strerror-tests: New test module.
* modules/argp (Depends-on): Add strerror.
* modules/error (Depends-on): Likewise.
Reported by Martin Koeppe.

Signed-off-by: Eric Blake <ebb9@byu.net>
2007-09-25 10:40:16 -06:00
Bruno Haible
89861a8be8 Use the synonymous term LGPLv2. 2007-07-16 10:45:26 +00:00
Paul Eggert
b6a9d33ee8 * m4/include_next.m4 (gl_INCLUDE_NEXT): Define and AC_SUBST
INCLUDE_NEXT.
(gl_CHECK_NEXT_HEADERS): New macro.
* m4/fcntl_h.m4 (gl_FCNTL_H): use gl_CHECK_NEXT_HEADERS instead of
the obsolescent gl_ABSOLUTE_HEADER.
* m4/float_h.m4 (gl_FLOAT_H): Likewise.
* m4/inttypes.m4 (gl_INTTYPES_H): Likewise.
* m4/math_h.m4 (gl_MATH_H): Likewise.
* m4/search_h.m4 (gl_SEARCH_H): Likewise.
* m4/signal_h.m4 (gl_SIGNAL_H): Likewise.
* m4/stdint.m4 (gl_STDINT_H): Likewise.
* m4/stdio_h.m4 (gl_STDIO_H): Likewise.
* m4/stdlib_h.m4 (gl_STDLIB_H): Likewise.
* m4/string_h.m4 (gl_HEADER_STRING_H_BODY): Likewise.
* m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Likewise.
* m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_BODY): Likewise.
* m4/time_h.m4 (gl_HEADER_TIME_H_BODY): Likewise.
* m4/unistd_h.m4 (gl_UNISTD_H): Likewise.
* m4/wchar.m4 (gl_WCHAR_H): Likewise.
* m4/wctype.m4 (gl_WCTYPE_H): Likewise.
* m4/inttypes.m4 (gl_INTTYPES_H): Define
_GL_JUST_INCLUDE_SYSTEM_INTTYPES_H to avoid the problem of unclean
builds, since ABSOLUTE_INTTYPES_H is no longer being defined.
* m4/stdint.m4 (gl_STDINT_H): Likewise, for
_GL_JUST_INCLUDE_SYSTEM_STDINT_H.
* lib/fcntl_.h: Use @INCLUDE_NEXT@ @NEXT_foo_H@
rather than @HAVE_INCLUDE_NEXT@ and @ABSOLUTE_foo_H@.
* lib/float_.h: Likewise.
* lib/inttypes_.h: Likewise.
* lib/math_.h: Likewise.
* lib/search_.h: Likewise.
* lib/signal_.h: Likewise.
* lib/stdint_.h: Likewise.
* lib/stdio_.h: Likewise.
* lib/stdlib_.h: Likewise.
* lib/string_.h: Likewise.
* lib/sys_stat_.h: Likewise.
* lib/sys_time_.h: Likewise.
* lib/time_.h: Likewise.
* lib/unistd_.h: Likewise.
* lib/wchar_.h: Likewise.
* lib/wctype_.h: Likewise.
* modules/fcntl (Depends-on): Depend on absolute-header, not
include_next.
(Makefile): Substitute INCLUDE_NEXT and NEXT_foo_H, not
HAVE_INCLUDE_NEXT and ABSOLUTE_foo_H.
* modules/float: Likewise.
* modules/inttypes: Likewise.
* modules/math: Likewise.
* modules/search: Likewise.
* modules/signal: Likewise.
* modules/stdint: Likewise.
* modules/stdio: Likewise.
* modules/stdlib: Likewise.
* modules/string: Likewise.
* modules/sys_stat: Likewise.
* modules/sys_time: Likewise.
* modules/time: Likewise.
* modules/unistd: Likewise.
* modules/wchar: Likewise.
* modules/wctype: Likewise.
* modules/sys_stat: Change maintainer to "all".
* modules/unistd: Likewise.
2007-06-21 04:39:09 +00:00
Bruno Haible
60ed215df0 New module 'mbsnlen'. 2007-06-11 00:29:30 +00:00
Paul Eggert
ab681e53f8 * lib/fcntl_.h: Prefer #include_next <foo.h> to #include
@ABSOLUTE_FOO_H@ if @HAVE_INCLUDE_NEXT@.  This works better with
GCC 4.2, which otherwise issues a lot of warnings.
* lib/inttypes_.h, lib/math_.h, lib/search_.h, lib/signal_.h:
* lib/stdint_.h, lib/stdio_.h, lib/stdlib_.h, lib/string_.h:
* lib/sys_time_.h, lib/time_.h, lib/wchar_.h, lib/wctype_.h: Likewise.
* lib/stdlib_.h: Don't bother with #pragma GCC system_header, as
it should no longer be needed.
* lib/string_.h: Likewise.
* modules/absolute-header (HAVE_INCLUDE_NEXT): New 'make' define.
* modules/fcntl (fcntl.h): Substitute @HAVE_INCLUDE_NEXT@.
* modules/inttypes (inttypes.h): Likewise.
* modules/math (math.h): Likewise.
* modules/search (search.h): Likewise.
* modules/signal (signal.h): Likewise.
* modules/stdint (stdint.h): Likewise.
* modules/stdio (stdio.h): Likewise.
* modules/stdlib (stdlib.h): Likewise.
* modules/string (string.h): Likewise.
* modules/sys_time (sys/time.h): Likewise.
* modules/time (time.h): Likewise.
* modules/wchar (wchar.h): Likewise.
* modules/wctype (wtype.h): Likewise.
2007-05-17 06:14:29 +00:00
Bruno Haible
5d2cd3c5f0 New module 'link-warning'. 2007-02-17 22:21:32 +00:00
Bruno Haible
58d5932625 New module 'mbspcasecmp'. 2007-02-15 03:07:04 +00:00
Bruno Haible
b5b2e76ad8 New module 'mbsncasecmp'. 2007-02-15 02:57:13 +00:00
Bruno Haible
ef66119f6b New module 'mbslen'. 2007-02-11 17:02:31 +00:00
Bruno Haible
62992ed63f New module 'mbssep'. 2007-02-06 01:59:41 +00:00
Bruno Haible
0c5f9b8dce New module 'mbstok_r'. 2007-02-05 03:30:43 +00:00
Bruno Haible
2a2eb44016 New module 'mbsspn'. 2007-02-05 03:23:34 +00:00
Bruno Haible
33a590e2d5 New module 'mbspbrk'. 2007-02-05 03:12:26 +00:00
Bruno Haible
f410f7db6d New module 'mbscspn'. 2007-02-05 03:06:40 +00:00
Bruno Haible
9dcc0e0540 New module 'mbscasestr'. Reduced goal of 'strcasestr'. 2007-02-05 02:42:27 +00:00
Bruno Haible
3e3363f6fe Simplify handling of strncasecmp. Improve link warning. 2007-02-05 02:15:46 +00:00
Bruno Haible
89e9e678bf Change the conditions under which strcasecmp.c is compiled. 2007-02-05 02:09:22 +00:00
Bruno Haible
623e3b9edb New module 'mbscasecmp'. strcasecmp is not expected to work with multibyte
strings.
2007-02-05 01:57:07 +00:00
Bruno Haible
0e6e2d08f8 New module 'mbsstr'. Remove module 'strstr'. 2007-02-05 01:36:34 +00:00
Bruno Haible
f213651e6f New module 'mbsrchr'. 2007-02-05 01:16:13 +00:00
Bruno Haible
22a636592e New module 'mbschr'. 2007-02-05 01:01:37 +00:00
Eric Blake
eb84fa936d * m4/string_h.m4 (gl_STRING_MODULE_INDICATOR): Correct m4 usage
bug.
* modules/string (Makefile.am): Remove redundant replacement.
* modules/regex (Depends-on): Add mempcpy.
2007-02-01 05:01:17 +00:00
Bruno Haible
01bffc033d Enforce the use of gnulib modules for unportable <string.h> functions. 2007-02-01 00:29:52 +00:00
Bruno Haible
c16199ce77 Declare strcasestr() in the <string.h> replacement, rather than in
strcasestr.h.
2007-01-27 13:17:15 +00:00
Paul Eggert
1e4ece4ab9 * doc/gnulib-tool.texi (Initial import): Update to match current
behavior with strdup module.
* lib/.cppi-disable: Remove strcase.h, strdup.h, strndup.h, strnlen.h.
* lib/memmem.h: Remove; all uses removed.  This is now done
by <string.h>.
* lib/mempcpy.h: Likewise.
* lib/memrchr.h: Likewise.
* lib/stpcpy.h: Likewise.
* lib/stpncpy.h: Likewise.
* lib/strcase.h: Likewise.
* lib/strchrnul.h: Likewise.
* lib/strdup.h: Likewise.
* lib/strndup.h: Likewise.
* lib/strnlen.h: Likewise.
* lib/strpbrk.h: Likewise.
* lib/strsep.h: Likewise.
* lib/strstr.h: Likewise.
* lib/strtok_r.h: Likewise.
* lib/string_.h: New file.
* lib/argp-namefrob.h: Don't include no-longer-existent include files.
Rely on <string.h> instead.
* lib/canon-host.c: Likewise.
* lib/chdir-long.c: Likewise.
* lib/concatpath.c: Likewise.
* lib/exclude.c: Likewise.
* lib/fchdir.c: Likewise.
* lib/getaddrinfo.c: Likewise.
* lib/getcwd.c: Likewise.
* lib/getsubopt.c: Likewise.
* lib/glob.c: Likewise.
* lib/hard-locale.c: Likewise.
* lib/iconvme.c: Likewise.
* lib/javacomp.c: Likewise.
* lib/mempcpy.c: Likewise.
* lib/memrchr.c: Likewise.
* lib/regex_internal.h: Likewise.
* lib/stpncpy.c: Likewise.
* lib/strcasecmp.c: Likewise.
* lib/strchrnul.c: Likewise.
* lib/strdup.c: Likewise.
* lib/striconv.c: Likewise.
* lib/striconveh.c: Likewise.
* lib/striconveha.c: Likewise.
* lib/strncasecmp.c: Likewise.
* lib/strndup.c: Likewise.
* lib/strnlen.c: Likewise.
* lib/strsep.c: Likewise.
* lib/strstr.c: Likewise.
* lib/strtok_r.c: Likewise.
* lib/userspec.c: Likewise.
* lib/w32spawn.h: Likewise.
* lib/xstrndup.c: Likewise.
* lib/mountlist.c (strstr): Remove decl.
* m4/string_h.m4: New file.
* m4/memmem.m4 (gl_FUNC_MEMMEM): Set HAVE_DECL_MEMMEM if necessary.
* m4/mempcpy.m4 (gl_FUNC_MEMPCPY): Set HAVE_MEMPCPY if necessary.
* m4/memrchr.m4 (gl_FUNC_MEMRCHR): Set HAVE_MEMRCHR
* m4/stpcpy.m4 (gl_FUNC_STPCPY): Set HAVE_STPCPY if necessary.
* m4/stpncpy.m4 (gl_PREREQ_STPNCPY): Set HAVE_STPNCPY if necessary.
* m4/strcase.m4 (gl_FUNC_STRCASECMP):
Set REPLACE_STRCASECMP if necessary.
(gl_FUNC_STRNCASECMP): Set HAVE_DECL_STRNCASECMP if necessary.
* m4/strchrnul.m4 (gl_FUNC_STRCHRNUL): Set HAVE_STRCHRNUL if necessary.
* m4/strdup.m4 (gl_FUNC_STRDUP): Set HAVE_DECL_STRDUP if necessary.
* m4/strndup.m4 (gl_FUNC_STRNDUP): Set HAVE_DECL_STRNLEN and
HAVE_DECL_STRDUP if necessary.
(gl_PREREQ_STRNLEN): Don't bother to check for strnlen decl,
since gl_FUNC_STRNDUP does that now.
* m4/strnlen.m4 (gl_FUNC_STRNLEN): Set HAVE_DECL_STRNLEN if necessary.
Check for decl here...
(gl_PREREQ_STRNLEN): ... not here.
* m4/strpbrk.m4 (gl_FUNC_STRPBRK): Set HAVE_STRPBRK if necessary.
* m4/strsep.m4 (gl_FUNC_STRSEP): Set HAVE_STRSEP if necessary.
* m4/strstr.m4 (gl_FUNC_STRSTR): Set REPLACE_STRSTR if necessary.
* m4/strtok_r.m4 (gl_FUNC_STRTOK_R): Set HAVE_DECL_STRTOK_R if
necessary.
* modules/string: New file.
* modules/memmem (Files): Remove special-purpose include file.
(Depends-on): Add string.
(Include): Include <string.h>, not the removed file.
* modules/mempcpy: Likewise.
* modules/memrchr: Likewise.
* modules/stpcpy: Likewise.
* modules/stpncpy: Likewise.
* modules/strcase: Likewise.
* modules/strchrnul: Likewise.
* modules/strdup: Likewise.
* modules/strndup: Likewise.
* modules/strnlen: Likewise.
* modules/strpbrk: Likewise.
* modules/strsep: Likewise.
* modules/strstr: Likewise.
* modules/strtok_r: Likewise.
* tests/test-dirname.c: Don't include "stdup.h", since
<string.h> now suffices.
* tests/test-memmem.c: Don't include "memmem.h", since
<string.h> now suffices.
2007-01-26 22:16:55 +00:00