glibc/wcsmbs/wmemchr.c

63 lines
1.6 KiB
C
Raw Normal View History

Mon Apr 1 13:34:55 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu> * stdio-common/tst-printf.c (main): Add new test case. * sysdeps/generic/setenv.c (unsetenv): Use old-style definition. Mon Apr 1 11:39:10 Ulrich Drepper <drepper@gnu.ai.mit.edu> * stdlib/strtod.c (STRTOD): Fix handling of American style FP numbers. * stdio-common/vfprintf.c (vfprintf): Don't increment format string pointer twice after seeing `*'. Sun Mar 31 17:31:54 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu> * MakeTAGS (po/SYS_libc.pot): Prepend header processed from po/header.pot. Sun Mar 31 18:07:32 1996 Ulrich Drepper <drepper@gnu.ai.mit.edu> * locale/Makefile (others, install-bin): Compiling locale works again. (locale-modules): locale has no --dump option anymore. Remove ctypedump. * locale/programs/config.h: Don't declare euidaccess. Use #include_next to get libc's config.h. * locale/programs/ctypedump.c: Not needed anymore. Dump option of locale is removed. * locale/programs/locale.c: Adapt for new locale implementation. * stdio-common/_itoa.h (_itoa_word): Define as inline function. * stdio-common/_itoa.c (_itoa_lower_digits, _itoa_upper_digits): Don't declare static because used in _itoa_word inline function. * stdio-common/printf-parse.h: Prepare for use in wide-char stdio implementation. (find_spec): Take additional argument to work with mbrlen instead of mblen. (parse_one_spec): Ditto. * stdio-common/printf-prs.c: Prepare for use in wide-char stdio implementation. * stdio-common/printf.h: Mark change for wide-char handling. Changing it now would result in incompatibilities. * stdio-common/vfprintf.c: New and fast implementation. * wcsmbs/Makefile (routines): Remove pre-ISO C multibyte functions mbsadvance, mbscat, mbschr, mbscmp, mbscpy, mbsdup, mbslen, mbsncat, mbsncmp, mbsncpy, mbsrchr, mbstomb. Change wcswcs to wcsstr. Add wmemchr, wmemcmp, wmemcpy, wmemmove, wmemset, btowc, wctob, mbsinit, mbrlen, mbrtowc, wcrtomb, mbsrtowcs, wcsrtombs. * wcsmbs/btowc.c, wcsmbs/mbrlen.c, wcsmbs/mbrtowc.c, wcsmbs/mbsinit.c, wcsmbs/mbsrtowcs.c, wcsmbs/wchar.h, wcsmbs/wcrtomb.c, wcsmbs/wcsrtombs.c, wcsmbs/wcsstr.c, wcsmbs/wctob.c, wcsmbs/wmemchr.c, wcsmbs/wmemcmp.c, wcsmbs/wmemcpy.c, wcsmbs/wmemmove.c, wcsmbs/wmemset.c: New function according to ISO C amendment 1. * wchar.h: Wrapper around "wcsmbs/wchar.h". * wcsmbs/wcscat.c, wcsmbs/wcschr.c, wcsmbs/wcscmp.c, wcsmbs/wcscpy.c, wcsmbs/wcscspn.c, wcsmbs/wcsdup.c, wcsmbs/wcslen.c, wcsmbs/wcsncat.c, wcsmbs/wcsncmp.c, wcsmbs/wcsncpy.c, wcsmbs/wcspbrk.c, wcsmbs/wcsrchr.c, wcsmbs/wcsspn.c, wcsmbs/wcstok.c: Changed to conform with ISO C amendment 1. * wcsmbs/mbsadvance.c, wcsmbs/mbscat.c, wcsmbs/mbschr.c, wcsmbs/mbscmp.c, wcsmbs/mbscpy.c, wcsmbs/mbsdup.c, wcsmbs/mbslen.c, wcsmbs/mbsncat.c, wcsmbs/mbsncmp.c, wcsmbs/mbsncpy.c, wcsmbs/mbsrchr.c, wcsmbs/mbstomb.c, wcsmbs/mbstr.h, wcsmbs/wcstr.h, wcsmbs/wcswcs.c: Removed. Implement functions from early drafts, not part of final standard. Sun Mar 31 16:50:41 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu> * setjmp/setjmp.h (jmp_buf): Change gratuitous struct tag name to __jmp_bug_tag so its C++ implicit typedef does not conflict with the __jmp_buf typedef. * Makerules (BUILD_CFLAGS) [! objdir]: Use $(..)config.h when compiling in the source directories. Fri Mar 29 16:26:35 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu> * sysdeps/libm-ieee754/w_gamma.c: Use signgam instead of __signgam. * sysdeps/libm-ieee754/s_signgam.c: Undo last change.
1996-04-02 15:27:17 +02:00
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <wchar.h>
wchar_t *
wmemchr (s, c, n)
register const wchar_t *s;
register wchar_t c;
register size_t n;
{
/* For performance reasons unfold the loop four times. */
while (n >= 4)
{
if (s[0] == c)
return (wchar_t *) s;
if (s[1] == c)
return (wchar_t *) &s[1];
if (s[2] == c)
return (wchar_t *) &s[2];
if (s[3] == c)
return (wchar_t *) &s[3];
s += 4;
n -= 4;
}
if (n > 0)
{
if (*s == c)
return (wchar_t *) s;
++s;
--n;
}
if (n > 0)
{
if (*s == c)
return (wchar_t *) s;
++s;
--n;
}
if (n > 0)
if (*s == c)
return (wchar_t *) s;
return NULL;
}