2002-08-29 Kazuhiro Fujieda <fujieda@jaist.ac.jp>

* libc/include/wchar.h: Define NULL. Define WEOF more general
        way. Declare functions in newlib manner.
        * libc/stdlib/Makefile.am: Delete wmem*.c
        * libc/stdlib/Makefile.in: Regenerated.
        * libc/stdlib/wmemchr.c: Delete.
        * libc/stdlib/wmemcmp.c: Ditto.
        * libc/stdlib/wmemcpy.c: Ditto.
        * libc/stdlib/wmemmove.c: Ditto.
        * libc/stdlib/wmemset.c: Ditto.
        * libc/string/Makefile.am: Add wmem*.c and wcs*.c.
        * libc/string/Makefile.in: Regenerated.
        * libc/string/wcscat.c: New file derived from the NetBSD C Library.
        * libc/string/wcschr.c: Ditto.
        * libc/string/wcscmp.c: Ditto.
        * libc/string/wcscpy.c: Ditto.
        * libc/string/wcscspn.c: Ditto.
        * libc/string/wcslcat.c: Ditto.
        * libc/string/wcslcpy.c: Ditto.
        * libc/string/wcslen.c: Ditto.
        * libc/string/wcsncat.c: Ditto.
        * libc/string/wcsncmp.c: Ditto.
        * libc/string/wcsncpy.c: Ditto.
        * libc/string/wcspbrk.c: Ditto.
        * libc/string/wcsrchr.c: Ditto.
        * libc/string/wcsspn.c: Ditto.
        * libc/string/wcsstr.c: Ditto.
        * libc/string/wmemchr.c: Ditto.
        * libc/string/wmemcmp.c: Ditto.
        * libc/string/wmemcpy.c: Ditto.
        * libc/string/wmemmove.c: Ditto.
        * libc/string/wmemset.c: Ditto.
This commit is contained in:
Jeff Johnston 2002-08-29 19:38:25 +00:00
parent 86620e2190
commit 890e7a1d1a
26 changed files with 1698 additions and 87 deletions

View File

@ -1,3 +1,37 @@
2002-08-29 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
* libc/include/wchar.h: Define NULL. Define WEOF more general
way. Declare functions in newlib manner.
* libc/stdlib/Makefile.am: Delete wmem*.c
* libc/stdlib/Makefile.in: Regenerated.
* libc/stdlib/wmemchr.c: Delete.
* libc/stdlib/wmemcmp.c: Ditto.
* libc/stdlib/wmemcpy.c: Ditto.
* libc/stdlib/wmemmove.c: Ditto.
* libc/stdlib/wmemset.c: Ditto.
* libc/string/Makefile.am: Add wmem*.c and wcs*.c.
* libc/string/Makefile.in: Regenerated.
* libc/string/wcscat.c: New file derived from the NetBSD C Library.
* libc/string/wcschr.c: Ditto.
* libc/string/wcscmp.c: Ditto.
* libc/string/wcscpy.c: Ditto.
* libc/string/wcscspn.c: Ditto.
* libc/string/wcslcat.c: Ditto.
* libc/string/wcslcpy.c: Ditto.
* libc/string/wcslen.c: Ditto.
* libc/string/wcsncat.c: Ditto.
* libc/string/wcsncmp.c: Ditto.
* libc/string/wcsncpy.c: Ditto.
* libc/string/wcspbrk.c: Ditto.
* libc/string/wcsrchr.c: Ditto.
* libc/string/wcsspn.c: Ditto.
* libc/string/wcsstr.c: Ditto.
* libc/string/wmemchr.c: Ditto.
* libc/string/wmemcmp.c: Ditto.
* libc/string/wmemcpy.c: Ditto.
* libc/string/wmemmove.c: Ditto.
* libc/string/wmemset.c: Ditto.
2002-08-29 Jeff Johnston <jjohnstn@redhat.com>
* libc/locale/locale.c (_setlocale_r)[MB_CAPABLE]: Fix so

View File

@ -11,8 +11,12 @@
/* For _mbstate_t definition. */
#include <sys/_types.h>
#ifndef NULL
#define NULL 0
#endif
#ifndef WEOF
# define WEOF (0xffffffffu)
# define WEOF ((wint_t)-1)
#endif
#ifndef MBSTATE_T
@ -20,18 +24,33 @@
typedef _mbstate_t mbstate_t;
#endif /* MBSTATE_T */
wint_t btowc (int c);
int wctob (wint_t c);
int mbsinit(const mbstate_t *ps);
size_t mbrlen(const char *s, size_t n, mbstate_t *ps);
size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);
size_t mbsrtowcs(wchar_t *dst, const char **src, size_t len, mbstate_t *ps);
size_t wcsrtombs(char *dst, const wchar_t **src, size_t len, mbstate_t *ps);
wchar_t *wmemchr(const wchar_t *ws, wchar_t wc, size_t n);
int wmemcmp(const wchar_t *ws1, const wchar_t *ws2, size_t n);
wchar_t *wmemcpy(wchar_t *ws1, const wchar_t *ws2, size_t n);
wchar_t *wmemmove(wchar_t *ws1, const wchar_t *ws2, size_t n);
wchar_t *wmemset(wchar_t *ws, wchar_t wc, size_t n);
wint_t _EXFUN(btowc, (int));
int _EXFUN(wctob, (wint_t));
size_t _EXFUN(mbrlen, (const char * , size_t, mbstate_t *));
size_t _EXFUN(mbrtowc, (wchar_t * , const char * , size_t, mbstate_t *));
int _EXFUN(mbsinit, (const mbstate_t *));
size_t _EXFUN(mbsrtowcs, (wchar_t * , const char ** , size_t, mbstate_t *));
size_t _EXFUN(wcrtomb, (char * , wchar_t, mbstate_t *));
size_t _EXFUN(wcsrtombs, (char * , const wchar_t ** , size_t, mbstate_t *));
wchar_t *_EXFUN(wcscat, (wchar_t * , const wchar_t *));
wchar_t *_EXFUN(wcschr, (const wchar_t *, wchar_t));
int _EXFUN(wcscmp, (const wchar_t *, const wchar_t *));
wchar_t *_EXFUN(wcscpy, (wchar_t * , const wchar_t *));
size_t _EXFUN(wcscspn, (const wchar_t *, const wchar_t *));
size_t _EXFUN(wcslcat, (wchar_t *, const wchar_t *, size_t));
size_t _EXFUN(wcslcpy, (wchar_t *, const wchar_t *, size_t));
size_t _EXFUN(wcslen, (const wchar_t *));
wchar_t *_EXFUN(wcsncat, (wchar_t * , const wchar_t * , size_t));
int _EXFUN(wcsncmp, (const wchar_t *, const wchar_t *, size_t));
wchar_t *_EXFUN(wcsncpy, (wchar_t * , const wchar_t * , size_t));
wchar_t *_EXFUN(wcspbrk, (const wchar_t *, const wchar_t *));
wchar_t *_EXFUN(wcsrchr, (const wchar_t *, wchar_t));
size_t _EXFUN(wcsspn, (const wchar_t *, const wchar_t *));
wchar_t *_EXFUN(wcsstr, (const wchar_t *, const wchar_t *));
wchar_t *_EXFUN(wmemchr, (const wchar_t *, wchar_t, size_t));
int _EXFUN(wmemcmp, (const wchar_t *, const wchar_t *, size_t));
wchar_t *_EXFUN(wmemcpy, (wchar_t * , const wchar_t * , size_t));
wchar_t *_EXFUN(wmemmove, (wchar_t *, const wchar_t *, size_t));
wchar_t *_EXFUN(wmemset, (wchar_t *, wchar_t, size_t));
#endif /* _WCHAR_H_ */

View File

@ -49,12 +49,7 @@ GENERAL_SOURCES = \
wcstombs.c \
wcstombs_r.c \
wctomb.c \
wctomb_r.c \
wmemchr.c \
wmemcmp.c \
wmemcpy.c \
wmemmove.c \
wmemset.c
wctomb_r.c
EXTENDED_SOURCES = \
drand48.c \

View File

@ -155,12 +155,7 @@ GENERAL_SOURCES = \
wcstombs.c \
wcstombs_r.c \
wctomb.c \
wctomb_r.c \
wmemchr.c \
wmemcmp.c \
wmemcpy.c \
wmemmove.c \
wmemset.c
wctomb_r.c
EXTENDED_SOURCES = \
@ -312,15 +307,12 @@ LIBS = @LIBS@
@USE_LIBTOOL_FALSE@realloc.$(OBJEXT) strtod.$(OBJEXT) strtol.$(OBJEXT) \
@USE_LIBTOOL_FALSE@strtoul.$(OBJEXT) wcstombs.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcstombs_r.$(OBJEXT) wctomb.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wctomb_r.$(OBJEXT) wmemchr.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wmemcmp.$(OBJEXT) wmemcpy.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wmemmove.$(OBJEXT) wmemset.$(OBJEXT) \
@USE_LIBTOOL_FALSE@drand48.$(OBJEXT) ecvtbuf.$(OBJEXT) efgcvt.$(OBJEXT) \
@USE_LIBTOOL_FALSE@erand48.$(OBJEXT) jrand48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@lcong48.$(OBJEXT) lrand48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@mrand48.$(OBJEXT) msize.$(OBJEXT) mtrim.$(OBJEXT) \
@USE_LIBTOOL_FALSE@nrand48.$(OBJEXT) rand48.$(OBJEXT) seed48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@srand48.$(OBJEXT) strtoll.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wctomb_r.$(OBJEXT) drand48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@ecvtbuf.$(OBJEXT) efgcvt.$(OBJEXT) erand48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@jrand48.$(OBJEXT) lcong48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@lrand48.$(OBJEXT) mrand48.$(OBJEXT) msize.$(OBJEXT) \
@USE_LIBTOOL_FALSE@mtrim.$(OBJEXT) nrand48.$(OBJEXT) rand48.$(OBJEXT) \
@USE_LIBTOOL_FALSE@seed48.$(OBJEXT) srand48.$(OBJEXT) strtoll.$(OBJEXT) \
@USE_LIBTOOL_FALSE@strtoll_r.$(OBJEXT) strtoull.$(OBJEXT) \
@USE_LIBTOOL_FALSE@strtoull_r.$(OBJEXT)
LTLIBRARIES = $(noinst_LTLIBRARIES)
@ -334,11 +326,10 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
@USE_LIBTOOL_TRUE@mbstowcs.lo mbstowcs_r.lo mbtowc.lo mbtowc_r.lo \
@USE_LIBTOOL_TRUE@mlock.lo mprec.lo mstats.lo rand.lo rand_r.lo \
@USE_LIBTOOL_TRUE@realloc.lo strtod.lo strtol.lo strtoul.lo wcstombs.lo \
@USE_LIBTOOL_TRUE@wcstombs_r.lo wctomb.lo wctomb_r.lo wmemchr.lo \
@USE_LIBTOOL_TRUE@wmemcmp.lo wmemcpy.lo wmemmove.lo wmemset.lo \
@USE_LIBTOOL_TRUE@drand48.lo ecvtbuf.lo efgcvt.lo erand48.lo jrand48.lo \
@USE_LIBTOOL_TRUE@lcong48.lo lrand48.lo mrand48.lo msize.lo mtrim.lo \
@USE_LIBTOOL_TRUE@nrand48.lo rand48.lo seed48.lo srand48.lo strtoll.lo \
@USE_LIBTOOL_TRUE@wcstombs_r.lo wctomb.lo wctomb_r.lo drand48.lo \
@USE_LIBTOOL_TRUE@ecvtbuf.lo efgcvt.lo erand48.lo jrand48.lo lcong48.lo \
@USE_LIBTOOL_TRUE@lrand48.lo mrand48.lo msize.lo mtrim.lo nrand48.lo \
@USE_LIBTOOL_TRUE@rand48.lo seed48.lo srand48.lo strtoll.lo \
@USE_LIBTOOL_TRUE@strtoll_r.lo strtoull.lo strtoull_r.lo
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)

View File

@ -44,7 +44,27 @@ GENERAL_SOURCES = \
strxfrm.c \
strstr.c \
swab.c \
u_strerr.c
u_strerr.c \
wcscat.c \
wcschr.c \
wcscmp.c \
wcscpy.c \
wcscspn.c \
wcslcat.c \
wcslcpy.c \
wcslen.c \
wcsncat.c \
wcsncmp.c \
wcsncpy.c \
wcspbrk.c \
wcsrchr.c \
wcsspn.c \
wcsstr.c \
wmemchr.c \
wmemcmp.c \
wmemcpy.c \
wmemmove.c \
wmemset.c
if ELIX_LEVEL_1
LIB_OBJS =
@ -83,7 +103,11 @@ index.def rindex.def strcspn.def strpbrk.def swab.def \
memchr.def strcat.def strerror.def strerror_r.def strrchr.def \
memcmp.def strchr.def strlen.def strnlen.def strspn.def \
strcasecmp.def strncasecmp.def strlwr.def strupr.def memccpy.def \
mempcpy.def
mempcpy.def \
wcscat.def wcschr.def wcscmp.def wcscpy.def wcscspn.def \
wcslcat.def wcslcpy.def wcslen.def wcsncat.def wcsncmp.def \
wcsncpy.def wcspbrk.def wcsrchr.def wcsspn.def wcsstr.def \
wmemchr.def wmemcmp.def wmemcpy.def wmemmove.def wmemset.def
SUFFIXES = .def

View File

@ -150,7 +150,27 @@ GENERAL_SOURCES = \
strxfrm.c \
strstr.c \
swab.c \
u_strerr.c
u_strerr.c \
wcscat.c \
wcschr.c \
wcscmp.c \
wcscpy.c \
wcscspn.c \
wcslcat.c \
wcslcpy.c \
wcslen.c \
wcsncat.c \
wcsncmp.c \
wcsncpy.c \
wcspbrk.c \
wcsrchr.c \
wcsspn.c \
wcsstr.c \
wmemchr.c \
wmemcmp.c \
wmemcpy.c \
wmemmove.c \
wmemset.c
@ELIX_LEVEL_1_TRUE@LIB_OBJS =
@ELIX_LEVEL_1_FALSE@LIB_OBJS = @ELIX_LEVEL_1_FALSE@\
@ -181,7 +201,11 @@ index.def rindex.def strcspn.def strpbrk.def swab.def \
memchr.def strcat.def strerror.def strerror_r.def strrchr.def \
memcmp.def strchr.def strlen.def strnlen.def strspn.def \
strcasecmp.def strncasecmp.def strlwr.def strupr.def memccpy.def \
mempcpy.def
mempcpy.def \
wcscat.def wcschr.def wcscmp.def wcscpy.def wcscspn.def \
wcslcat.def wcslcpy.def wcslen.def wcsncat.def wcsncmp.def \
wcsncpy.def wcspbrk.def wcsrchr.def wcsspn.def wcsstr.def \
wmemchr.def wmemcmp.def wmemcpy.def wmemmove.def wmemset.def
SUFFIXES = .def
@ -214,7 +238,15 @@ LIBS = @LIBS@
@USE_LIBTOOL_FALSE@strpbrk.$(OBJEXT) strrchr.$(OBJEXT) strsep.$(OBJEXT) \
@USE_LIBTOOL_FALSE@strspn.$(OBJEXT) strtok.$(OBJEXT) strtok_r.$(OBJEXT) \
@USE_LIBTOOL_FALSE@strupr.$(OBJEXT) strxfrm.$(OBJEXT) strstr.$(OBJEXT) \
@USE_LIBTOOL_FALSE@swab.$(OBJEXT) u_strerr.$(OBJEXT)
@USE_LIBTOOL_FALSE@swab.$(OBJEXT) u_strerr.$(OBJEXT) wcscat.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcschr.$(OBJEXT) wcscmp.$(OBJEXT) wcscpy.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcscspn.$(OBJEXT) wcslcat.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcslcpy.$(OBJEXT) wcslen.$(OBJEXT) wcsncat.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcsncmp.$(OBJEXT) wcsncpy.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcspbrk.$(OBJEXT) wcsrchr.$(OBJEXT) wcsspn.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wcsstr.$(OBJEXT) wmemchr.$(OBJEXT) wmemcmp.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wmemcpy.$(OBJEXT) wmemmove.$(OBJEXT) \
@USE_LIBTOOL_FALSE@wmemset.$(OBJEXT)
LTLIBRARIES = $(noinst_LTLIBRARIES)
@USE_LIBTOOL_TRUE@libstring_la_OBJECTS = bcopy.lo bzero.lo index.lo \
@ -225,7 +257,12 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
@USE_LIBTOOL_TRUE@strlen.lo strlwr.lo strncasecmp.lo strncat.lo \
@USE_LIBTOOL_TRUE@strncmp.lo strncpy.lo strnlen.lo strpbrk.lo \
@USE_LIBTOOL_TRUE@strrchr.lo strsep.lo strspn.lo strtok.lo strtok_r.lo \
@USE_LIBTOOL_TRUE@strupr.lo strxfrm.lo strstr.lo swab.lo u_strerr.lo
@USE_LIBTOOL_TRUE@strupr.lo strxfrm.lo strstr.lo swab.lo u_strerr.lo \
@USE_LIBTOOL_TRUE@wcscat.lo wcschr.lo wcscmp.lo wcscpy.lo wcscspn.lo \
@USE_LIBTOOL_TRUE@wcslcat.lo wcslcpy.lo wcslen.lo wcsncat.lo wcsncmp.lo \
@USE_LIBTOOL_TRUE@wcsncpy.lo wcspbrk.lo wcsrchr.lo wcsspn.lo wcsstr.lo \
@USE_LIBTOOL_TRUE@wmemchr.lo wmemcmp.lo wmemcpy.lo wmemmove.lo \
@USE_LIBTOOL_TRUE@wmemset.lo
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)

View File

@ -0,0 +1,84 @@
/*
FUNCTION
<<wcscat>>---concatenate two wide-character strings
INDEX
wcscat
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcscat(wchar_t *<[s1]>, const wchar_t *<[s2]>);
TRAD_SYNOPSIS
wchar_t *wcscat(<[s1]>, <[s2]>
wchar_t *<[s1]>;
const wchar_t *<[s2]>;
DESCRIPTION
The <<wcscat>> function appends a copy of the wide-character string
pointed to by <[s2]> (including the terminating null wide-character
code) to the end of the wide-character string pointed to by <[s1]>.
The initial wide-character code of <[s2]> overwrites the null
wide-character code at the end of <[s1]>. If copying takes place between
objects that overlap, the behaviour is undefined.
RETURNS
The <<wcscat>> function returns <[s1]>;
no return value is reserved to indicate an error.
PORTABILITY
<<wcscat>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcscat.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcscat.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcscat, (s1, s2),
wchar_t * s1 _AND
_CONST wchar_t * s2)
{
wchar_t *p;
wchar_t *q;
_CONST wchar_t *r;
p = s1;
while (*p)
p++;
q = p;
r = s2;
while (*r)
*q++ = *r++;
*q = '\0';
return s1;
}

View File

@ -0,0 +1,81 @@
/*
FUNCTION
<<wcschr>>---wide-character string scanning operation
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcschr(const wchar_t *<[s]>, wchar_t <[c]>);
TRAD_SYNOPSIS
wchar_t *wcschr(<[s]>, <[c]>
const wchar_t *<[s]>;
wchar_t <[c]>;
DESCRIPTION
The <<wcschr>> function locates the first occurrence of <[c]> in the
wide-character string pointed to by <[s]>. The value of <[c]> must be a
character representable as a type wchar_t and must be a wide-character
code corresponding to a valid character in the current locale.
The terminating null wide-character string.
RETURNS
Upon completion, <<wcschr>> returns a pointer to the wide-character
code, or a null pointer if the wide-character code is not found.
PORTABILITY
<<wcschr>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcschr.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcschr.c,v 1.2 2000/12/21 05:07:25 itojun Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcschr, (s, c),
_CONST wchar_t * s _AND
wchar_t c)
{
_CONST wchar_t *p;
p = s;
while (*p)
{
if (*p == c)
{
/* LINTED interface specification */
return (wchar_t *) p;
}
p++;
}
return NULL;
}

View File

@ -0,0 +1,83 @@
/*
FUNCTION
<<wcscmp>>---compare two wide-character strings
ANSI_SYNOPSIS
#include <wchar.h>
int wcscmp(const wchar_t *<[s1]>, *<[s2]>);
TRAD_SYNOPSIS
int wcscmp(<[s1]>, <[s2]>
const wchar_t *<[s1]>, <[s2]>;
DESCRIPTION
The <<wcscmp>> function compares the wide-character string pointed to
by <[s1]> to the wide-character string pointed to by <[s2]>.
The sign of a non-zero return value is determined by the sign of the
difference between the values of the first pair of wide-character codes
that differ in the objects being compared.
RETURNS
Upon completion, <<wcscmp>> returns an integer greater than, equal to
or less than 0, if the wide-character string pointed to by <[s1]> is
greater than, equal to or less than the wide-character string pointed
to by <[s2]> respectively.
PORTABILITY
<<wcscmp>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD$ */
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Chris Torek.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <_ansi.h>
#include <wchar.h>
/*
* Compare strings.
*/
int
_DEFUN (wcscmp, (s1, s2),
_CONST wchar_t * s1 _AND
_CONST wchar_t * s2)
{
while (*s1 == *s2++)
if (*s1++ == 0)
return (0);
/* XXX assumes wchar_t = short */
return (*(_CONST unsigned short *) s1 - *(_CONST unsigned short *) --s2);
}

View File

@ -1,3 +1,33 @@
/*
FUNCTION
<<wcscpy>>---copy a wide-character string
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcscpy(wchar_t *<[s1]>, const wchar_t *,<[s2]>);
TRAD_SYNOPSIS
wchar_t *wcscpy(<[s1]>, <[s2]>
wchar_t *<[s1]>;
const wchar_t *<[s2]>;
DESCRIPTION
The <<wcscpy>> function copies the wide-character string pointed to by
<[s2]> (including the terminating null wide-character code) into the
array pointed to by <[s1]>. If copying takes place between objects that
overlap, the behaviour is undefined.
RETURNS
The <<wcscpy>> function returns <[s1]>; no return value is reserved to
indicate an error.
PORTABILITY
<<wcscpy>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcscpy.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
@ -23,19 +53,26 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wmemmove.c,v 1.2 2000/12/20 14:08:31 itojun Exp
* citrus Id: wcscpy.c,v 1.2 2000/12/21 04:51:09 itojun Exp
*/
#include <_ansi.h>
#include <string.h>
#include <wchar.h>
wchar_t *
_DEFUN (wmemmove, (d, s, n),
wchar_t *d _AND
const wchar_t *s _AND
size_t n)
_DEFUN (wcscpy, (s1, s2),
wchar_t * s1 _AND
_CONST wchar_t * s2)
{
wchar_t *p;
_CONST wchar_t *q;
return (wchar_t *)memmove(d, s, n * sizeof(wchar_t));
*s1 = '\0';
p = s1;
q = s2;
while (*q)
*p++ = *q++;
*p = '\0';
return s1;
}

View File

@ -0,0 +1,85 @@
/*
FUNCTION
<<wcscspn>>---get length of a complementary wide substring
ANSI_SYNOPSIS
#include <wchar.h>
size_t wcscspn(const wchar_t *<[s]>, wchar_t *<[set]>);
TRAD_SYNOPSIS
size_t wcscspn(<[s]>, <[set]>
const wchar_t *<[s]>;
const wchar_t *<[set]>;
DESCRIPTION
The <<wcscspn>> function computes the length of the maximum initial
segment of the wide-character string pointed to by <[s]> which consists
entirely of wide-character codes not from the wide-character string
pointed to by <[set]>.
RETURNS
The <<wcscspn>> function returns the length of the initial substring of
<[s1]>; no return value is reserved to indicate an error.
PORTABILITY
<<wcscspn>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcscspn.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcscspn.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
*/
#include <_ansi.h>
#include <wchar.h>
size_t
_DEFUN (wcscspn, (s, set),
_CONST wchar_t * s _AND
_CONST wchar_t * set)
{
_CONST wchar_t *p;
_CONST wchar_t *q;
p = s;
while (*p)
{
q = set;
while (*q)
{
if (*p == *q)
goto done;
q++;
}
p++;
}
done:
return (p - s);
}

View File

@ -0,0 +1,108 @@
/*
FUNCTION
<<wcslcat>>---concatenate wide-character strings to specified length
ANSI_SYNOPSIS
#include <wchar.h>
size_t wcslcat(wchar_t *<[dst]>, const wchar_t *<[src]>, size_t <[siz]>);
TRAD_SYNOPSIS
#include <wchar.h>
size_t wcslcat(<[dst]>, <[src]>, <[siz]>
wchar_t *<[dst]>;
const wchar_t *<[src]>;
size_t <[siz]>;
DESCRIPTION
The <<wcslcat>> function appends wide-characters from <[src]> to
end of the <[dst]> wide-character string so that the resultant
wide-character string is not more than <[siz]> wide-characters
including terminating null wide-character code. A terminating
null wide-character is always added unless <[siz]> is 0. Thus,
the maximum number of wide-characters that can be appended from
<[src]> is <[siz]> - 1. If copying takes place between objects
that overlap, the behaviour is undefined.
RETURNS
Wide-character string length of initial <[dst]> plus the
wide-character string length of <[src]> (does not include
terminating null wide-characters). If the return value is
greater than or equal to <[siz]>, then truncation occurred and
not all wide-characters from <[src]> were appended.
PORTABILITY
No supporting OS subroutines are required.
*/
/* $NetBSD: wcslcat.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/* from OpenBSD: strlcat.c,v 1.3 2000/11/24 11:10:02 itojun Exp */
/*
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <_ansi.h>
#include <wchar.h>
/*
* Appends src to string dst of size siz (unlike wcsncat, siz is the
* full size of dst, not space left). At most siz-1 characters
* will be copied. Always NUL terminates (unless siz == 0).
* Returns wcslen(initial dst) + wcslen(src); if retval >= siz,
* truncation occurred.
*/
size_t
_DEFUN (wcslcat, (dst, src, siz),
wchar_t * dst _AND
_CONST wchar_t * src _AND
size_t siz)
{
wchar_t *d = dst;
_CONST wchar_t *s = src;
size_t n = siz;
size_t dlen;
/* Find the end of dst and adjust bytes left but don't go past end */
while (*d != '\0' && n-- != 0)
d++;
dlen = d - dst;
n = siz - dlen;
if (n == 0)
return (dlen + wcslen (s));
while (*s != '\0')
{
if (n != 1)
{
*d++ = *s;
n--;
}
s++;
}
*d = '\0';
return (dlen + (s - src)); /* count does not include NUL */
}

View File

@ -0,0 +1,102 @@
/*
FUNCTION
<<wcslcpy>>---copy a wide-character string to specified length
ANSI_SYNOPSIS
#include <wchar.h>
size_t wcslcpy(wchar_t *<[dst]>, const wchar_t *<[src]>, size_t <[siz]>);
TRAD_SYNOPSIS
#include <wchar.h>
size_t wcslcpy(<[dst]>, <[src]>, <[siz]>)
wchar_t *<[dst]>;
const wchar_t *<[src]>;
size_t <[siz]>;
DESCRIPTION
<<wcslcpy>> copies wide-characters from <[src]> to <[dst]>
such that up to <[siz]> - 1 characters are copied. A
terminating null is appended to the result, unless <[siz]>
is zero.
RETURNS
<<wcslcpy>> returns the number of wide-characters in <[src]>,
not including the terminating null wide-character. If the
return value is greater than or equal to <[siz]>, then
not all wide-characters were copied from <[src]> and truncation
occurred.
PORTABILITY
No supporting OS subroutines are required.
*/
/* $NetBSD: wcslcpy.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/* from OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp */
/*
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <_ansi.h>
#include <wchar.h>
/*
* Copy src to string dst of size siz. At most siz-1 characters
* will be copied. Always NUL terminates (unless siz == 0).
* Returns wcslen(src); if retval >= siz, truncation occurred.
*/
size_t
_DEFUN (wcslcpy, (dst, src, siz),
wchar_t * dst _AND
_CONST wchar_t * src _AND
size_t siz)
{
wchar_t *d = dst;
_CONST wchar_t *s = src;
size_t n = siz;
/* Copy as many bytes as will fit */
if (n != 0 && --n != 0)
{
do
{
if ((*d++ = *s++) == 0)
break;
}
while (--n != 0);
}
/* Not enough room in dst, add NUL and traverse rest of src */
if (n == 0)
{
if (siz != 0)
*d = '\0'; /* NUL-terminate dst */
while (*s++)
;
}
return (s - src - 1); /* count does not include NUL */
}

View File

@ -1,3 +1,31 @@
/*
FUNCTION
<<wcslen>>---get wide-character string length
ANSI_SYNOPSIS
#include <wchar.h>
size_t wcslen(const wchar_t *<[s]>);
TRAD_SYNOPSIS
size_t wcslen(<[s]>
const wchar_t *<[s]>;
DESCRIPTION
The <<wcslen>> function computes the number of wide-character codes
in the wide-character string to which <[s]> points, not including the
terminating null wide-character code.
RETURNS
The <<wcslen>> function returns the length of <[s]>; no return value is
reserved to indicate an error.
PORTABILITY
<<wcslen>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcslen.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
@ -23,27 +51,21 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wmemchr.c,v 1.2 2000/12/20 14:08:31 itojun Exp
* citrus Id: wcslen.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
*/
#include <_ansi.h>
#include <stdlib.h>
#include <wchar.h>
wchar_t *
_DEFUN (wmemchr, (s, c, n),
const wchar_t *s _AND
wchar_t c _AND
size_t n)
size_t
_DEFUN (wcslen, (s),
_CONST wchar_t * s)
{
size_t i;
_CONST wchar_t *p;
for (i = 0; i < n; i++) {
if (*s == c) {
/* LINTED const castaway */
return (wchar_t *)s;
}
s++;
}
return NULL;
p = s;
while (*p)
p++;
return p - s;
}

View File

@ -0,0 +1,90 @@
/*
FUNCTION
<<wcsncat>>---concatenate part of two wide-character strings
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcsncat(wchar_t *<[s1]>, const wchar_t *<[s2]>, size_t <[n]>);
TRAD_SYNOPSIS
wchar_t *wcsncat(<[s1]>, <[s2]>, <[n]>
wchar_t *<[s1]>;
const wchar_t *<[s2]>;
size_t <[n]>;
DESCRIPTION
The <<wcsncat>> function appends not more than <[n]> wide-character
codes (a null wide-character code and wide-character codes that follow
it are not appended) from the array pointed to by <[s2]> to the end of
the wide-character string pointed to by <[s1]>. The initial
wide-character code of <[s2]> overwrites the null wide-character code
at the end of <[s1]>.
A terminating null wide-character code is always appended to the result.
If copying takes place between objects that overlap, the behaviour is
undefined.
RETURNS
The <<wcsncat>> function returns <[s1]>; no return value is reserved to
indicate an error.
PORTABILITY
<<wcsncat>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcsncat.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcsncat.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcsncat, (s1, s2, n),
wchar_t * s1 _AND
_CONST wchar_t * s2 _AND
size_t n)
{
wchar_t *p;
wchar_t *q;
_CONST wchar_t *r;
p = s1;
while (*p)
p++;
q = p;
r = s2;
while (*r && n)
{
*q++ = *r++;
n--;
}
*q = '\0';
return s1;
}

View File

@ -0,0 +1,92 @@
/*
FUNCTION
<<wcsncmp>>---compare part of two wide-character strings
ANSI_SYNOPSIS
#include <wchar.h>
int wcsncmp(const wchar_t *<[s1]>, const wchar_t *<[s2]>, size_t <[n]>);
TRAD_SYNOPSIS
int wcsncmp(<[s1]>, <[s2]>, <[n]>
const wchar_t *<[s1]>;
const wchar_t *<[s2]>;
size_t <[n]>;
DESCRIPTION
The <<wcsncmp>> function compares not more than <[n]> wide-character
codes (wide-character codes that follow a null wide-character code are
not compared) from the array pointed to by <[s1]> to the array pointed
to by <[s2]>.
The sign of a non-zero return value is determined by the sign of the
difference between the values of the first pair of wide-character codes
that differ in the objects being compared.
RETURNS
Upon successful completion, <<wcsncmp>> returns an integer greater than,
equal to or less than 0, if the possibly null-terminated array pointed
to by <[s1]> is greater than, equal to or less than the possibly
null-terminated array pointed to by <[s2]> respectively.
PORTABILITY
<<wcsncmp>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD$ */
/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <_ansi.h>
#include <wchar.h>
int
_DEFUN (wcsncmp, (s1, s2, n),
_CONST wchar_t * s1 _AND
_CONST wchar_t * s2 _AND
size_t n)
{
if (n == 0)
return (0);
do
{
if (*s1 != *s2++)
{
/* XXX assumes wchar_t = short */
return (*(_CONST unsigned short *) s1 -
*(_CONST unsigned short *) --s2);
}
if (*s1++ == 0)
break;
}
while (--n != 0);
return (0);
}

View File

@ -0,0 +1,89 @@
/*
FUNCTION
<<wcsncpy>>---copy part of a wide-character string
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcsncpy(wchar_t *<[s1]>, const wchar_t *<[s2]>, size_t <[n]>);
TRAD_SYNOPSIS
wchar_t *wcsncpy(<[s1]>, <[s2]>, <[n]>
wchar_t *<[s1]>;
const wchar_t *<[s2]>;
size_t <[n]>;
DESCRIPTION
The <<wcsncpy>> function copies not more than n wide-character codes
(wide-character codes that follow a null wide-character code are not
copied) from the array pointed to by <[s2]> to the array pointed to
by <[s1]>. If copying takes place between objects that overlap, the
behaviour is undefined.
If the array pointed to by <[s2]> is a wide-character string that is
shorter than <[n]> wide-character codes, null wide-character codes are
appended to the copy in the array pointed to by <[s1]>, until <[n]>
wide-character codes in all are written.
RETURNS
The <<wcsncpy>> function returns <[s1]>; no return value is reserved to
indicate an error.
PORTABILITY
<<wcsncpy>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcsncpy.c,v 1.1 2000/12/23 23:14:36 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcsncpy.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcsncpy, (s1, s2, n),
wchar_t * s1 _AND
_CONST wchar_t * s2 _AND
size_t n)
{
wchar_t *p;
_CONST wchar_t *q;
*s1 = '\0';
p = s1;
q = s2;
while (n && *q)
{
*p++ = *q++;
n--;
}
*p = '\0';
return s1;
}

View File

@ -0,0 +1,86 @@
/*
FUNCTION
<<wcspbrk>>----scan wide-character string for a wide-character code
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcspbrk(const wchar_t *<[s]>, const wchar_t *<[set]>);
TRAD_SYNOPSIS
wchar_t *wcspbrk(<[s]>, <[set]>
const wchar_t *<[s]>;
const wchar_t *<[set]>;
DESCRIPTION
The <<wcspbrk>> function locates the first occurrence in the
wide-character string pointed to by <[s]> of any wide-character code
from the wide-character string pointed to by <[set]>.
RETURNS
Upon successful completion, <<wcspbrk>> returns a pointer to the
wide-character code or a null pointer if no wide-character code from
<[set]> occurs in <[s]>.
PORTABILITY
<<wcspbrk>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcspbrk.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcspbrk.c,v 1.2 2000/12/21 05:07:25 itojun Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcspbrk, (s, set),
_CONST wchar_t * s _AND
_CONST wchar_t * set)
{
_CONST wchar_t *p;
_CONST wchar_t *q;
p = s;
while (*p)
{
q = set;
while (*q)
{
if (*p == *q)
{
/* LINTED interface specification */
return (wchar_t *) p;
}
q++;
}
p++;
}
return NULL;
}

View File

@ -0,0 +1,86 @@
/*
FUNCTION
<<wcsrchr>>---wide-character string scanning operation
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcsrchr(const wchar_t *<[s]>, wchar_t <[c]>);
TRAD_SYNOPSIS
#include <wchar.h>
wchar_t *wcsrchr(<[s]>, <[c]>
const wchar_t *<[s]>;
wchar_t <[c]>;
DESCRIPTION
The <<wcsrchr>> function locates the last occurrence of <[c]> in the
wide-character string pointed to by <[s]>. The value of <[c]> must be a
character representable as a type wchar_t and must be a wide-character
code corresponding to a valid character in the current locale.
The terminating null wide-character code is considered to be part of
the wide-character string.
RETURNS
Upon successful completion, <<wcsrchr>> returns a pointer to the
wide-character code or a null pointer if <[c]> does not occur in the
wide-character string.
PORTABILITY
<<wcsrchr>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcsrchr.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcsrchr.c,v 1.2 2000/12/21 05:07:25 itojun Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcsrchr, (s, c),
_CONST wchar_t * s _AND
wchar_t c)
{
_CONST wchar_t *p;
p = s;
while (*p)
p++;
while (s <= p)
{
if (*p == c)
{
/* LINTED interface specification */
return (wchar_t *) p;
}
p--;
}
return NULL;
}

View File

@ -1,3 +1,33 @@
/*
FUNCTION
<<wcsspn>>---get length of a wide substring
ANSI_SYNOPSIS
#include <wchar.h>
size_t wcsspn(const wchar_t *<[s]>, const wchar_t *<[set]>);
TRAD_SYNOPSIS
size_t wcsspn(<[s]>, <[set]>
const wchar_t *<[s]>;
const wchar_t *<[set]>;
DESCRIPTION
The <<wcsspn>> function computes the length of the maximum initial
segment of the wide-character string pointed to by <[s]> which consists
entirely of wide-character codes from the wide-character string
pointed to by <[set]>.
RETURNS
The wcsspn() function returns the length <[s1]>; no return value is
reserved to indicate an error.
PORTABILITY
<<wcsspn>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wcsspn.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
@ -23,27 +53,34 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wmemcmp.c,v 1.2 2000/12/20 14:08:31 itojun Exp
* citrus Id: wcsspn.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
*/
#include <_ansi.h>
#include <wchar.h>
int
_DEFUN (wmemcmp, (s1, s2, n),
const wchar_t *s1 _AND
const wchar_t *s2 _AND
size_t n)
size_t
_DEFUN (wcsspn, (s, set),
_CONST wchar_t * s _AND
_CONST wchar_t * set)
{
size_t i;
_CONST wchar_t *p;
_CONST wchar_t *q;
for (i = 0; i < n; i++) {
if (*s1 != *s2) {
/* wchar might be unsigned */
return *s1 > *s2 ? 1 : -1;
}
s1++;
s2++;
p = s;
while (*p)
{
q = set;
while (*q)
{
if (*p == *q)
break;
}
return 0;
if (!*q)
goto done;
p++;
}
done:
return (p - s);
}

104
newlib/libc/string/wcsstr.c Normal file
View File

@ -0,0 +1,104 @@
/*
FUNCTION
<<wcsstr>>---find a wide-character substring
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wcsstr(const wchar_t *<[big]>, const wchar_t *<[little]>);
TRAD_SYNOPSIS
wchar_t *wcsstr(<[big]>, <[little]>
const wchar_t *<[big]>;
const wchar_t *<[little]>;
DESCRIPTION
The <<wcsstr>> function locates the first occurrence in the
wide-character string pointed to by <[big]> of the sequence of
wide-characters (excluding the terminating null wide-character) in the
wide-character string pointed to by <[little]>.
RETURNS
On successful completion, <<wcsstr>> returns a pointer to the located
wide-character string, or a null pointer if the wide-character string
is not found.
If <[little]> points to a wide-character string with zero length,
the function returns <[big]>.
PORTABILITY
<<wcsstr>> is ISO/IEC 9899/AMD1:1995 (ISO C).
*/
/* $NetBSD: wcsstr.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wcsstr.c,v 1.2 2000/12/21 05:07:25 itojun Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wcsstr, (big, little),
_CONST wchar_t * big _AND
_CONST wchar_t * little)
{
_CONST wchar_t *p;
_CONST wchar_t *q;
_CONST wchar_t *r;
if (!*little)
{
/* LINTED interface specification */
return (wchar_t *) big;
}
if (wcslen (big) < wcslen (little))
return NULL;
p = big;
q = little;
while (*p)
{
q = little;
r = p;
while (*q)
{
if (*r != *q)
break;
q++;
r++;
}
if (!*q)
{
/* LINTED interface specification */
return (wchar_t *) p;
}
p++;
}
return NULL;
}

View File

@ -0,0 +1,88 @@
/*
FUNCTION
<<wmemchr>>---find a wide-character in memory
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wmemchr(const wchar_t *<[s]>, wchar_t <[c]>, size_t <[n]>);
TRAD_SYNOPSIS
wchar_t *wmemchr(<[s]>, <[c]>, <[n]>
const wchar_t *<[s]>;
wchar_t <[c]>;
size_t <[n]>;
DESCRIPTION
The <<wmemchr>> function locates the first occurrence of <[c]> in the
initial <[n]> wide-characters of the object pointed to be <[s]>. This
function is not affected by locale and all wchar_t values are treated
identically. The null wide-character and wchar_t values not
corresponding to valid characters are not treated specially.
If <[n]> is zero, <[s]> must be a valid pointer and the function
behaves as if no valid occurrence of <[c]> is found.
RETURNS
The <<wmemchr>> function returns a pointer to the located
wide-character, or a null pointer if the wide-character does not occur
in the object.
PORTABILITY
<<wmemchr>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wmemchr.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wmemchr.c,v 1.2 2000/12/20 14:08:31 itojun Exp
*/
#include <_ansi.h>
#include <wchar.h>
wchar_t *
_DEFUN (wmemchr, (s, c, n),
_CONST wchar_t * s _AND
wchar_t c _AND
size_t n)
{
size_t i;
for (i = 0; i < n; i++)
{
if (*s == c)
{
/* LINTED const castaway */
return (wchar_t *) s;
}
s++;
}
return NULL;
}

View File

@ -0,0 +1,88 @@
/*
FUNCTION
<<wmemcmp>>---compare wide-characters in memory
ANSI_SYNOPSIS
#include <wchar.h>
int wmemcmp(const wchar_t *<[s1]>, const wchar_t *<[s2]>, size_t <[n]>);
TRAD_SYNOPSIS
int wmemcmp(<[s1]>, <[s2]>, <[n]>
const wchar_t *<[s1]>;
const wchar_t *<[s2]>;
size_t <[n]>;
DESCRIPTION
The <<wmemcmp>> function compares the first <[n]> wide-characters of the
object pointed to by <[s1]> to the first <[n]> wide-characters of the
object pointed to by <[s2]>. This function is not affected by locale
and all wchar_t values are treated identically. The null wide-character
and wchar_t values not corresponding to valid characters are not treated
specially.
If <[n]> is zero, <[s1]> and <[s2]> must be a valid pointers and the
function behaves as if the two objects compare equal.
RETURNS
The <<wmemcmp>> function returns an integer greater than, equal to,
or less than zero, accordingly as the object pointed to by <[s1]> is
greater than, equal to, or less than the object pointed to by <[s2]>.
PORTABILITY
<<wmemcmp>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wmemcmp.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wmemcmp.c,v 1.2 2000/12/20 14:08:31 itojun Exp
*/
#include <_ansi.h>
#include <wchar.h>
int
_DEFUN (wmemcmp, (s1, s2, n),
_CONST wchar_t * s1 _AND
_CONST wchar_t * s2 _AND
size_t n)
{
size_t i;
for (i = 0; i < n; i++)
{
if (*s1 != *s2)
{
/* wchar might be unsigned */
return *s1 > *s2 ? 1 : -1;
}
s1++;
s2++;
}
return 0;
}

View File

@ -1,3 +1,37 @@
/*
FUNCTION
<<wmemcpy>>---copy wide-characters in memory
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wmemcpy(wchar_t *<[d]>, const wchar_t *<[s]>, size_t <[n]>);
TRAD_SYNOPSIS
wchar_t *wmemcpy(<[d]>, <[s]>, <[n]>
wchar_t *<[d]>;
const wchar_t *<[s]>;
size_t <[n]>;
DESCRIPTION
The <<wmemcpy>> function copies <[n]> wide-characters from the object
pointed to by <[s]> to the object pointed to be <[d]>. This function
is not affected by locale and all wchar_t values are treated
identically. The null wide-character and wchar_t values not
corresponding to valid characters are not treated specially.
If <[n]> is zero, <[d]> and <[s]> must be a valid pointers, and the
function copies zero wide-characters.
RETURNS
The <<wmemcpy>> function returns the value of <[d]>.
PORTABILITY
<<wmemcpy>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wmemcpy.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
@ -32,10 +66,10 @@
wchar_t *
_DEFUN (wmemcpy, (d, s, n),
wchar_t *d _AND
const wchar_t *s _AND
wchar_t * d _AND
_CONST wchar_t * s _AND
size_t n)
{
return (wchar_t *)memcpy(d, s, n * sizeof(wchar_t));
return (wchar_t *) memcpy (d, s, n * sizeof (wchar_t));
}

View File

@ -0,0 +1,81 @@
/*
FUNCTION
<<wmemmove>>---wmemmove - copy wide-characters in memory with overlapping areas
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wmemmove(wchar_t *<[d]>, const wchar_t *<[s]>, size_t <[n]>);
TRAD_SYNOPSIS
wchar_t *wmemmove(<[d]>, <[s]>, <[n]>
wchar_t *<[d]>;
const wchar_t *<[s]>;
size_t <[n]>;
DESCRIPTION
The <<wmemmove>> function copies <[n]> wide-characters from the object
pointed to by <[s]> to the object pointed to by <[d]>. Copying takes
place as if the <[n]> wide-characters from the object pointed to by
<[s]> are first copied into a temporary array of <[n]> wide-characters
that does not overlap the objects pointed to by <[d]> or <[s]>, and then
the <[n]> wide-characters from the temporary array are copied into the
object pointed to by <[d]>.
This function is not affected by locale and all wchar_t values are
treated identically. The null wide-character and wchar_t values not
corresponding to valid characters are not treated specially.
If <[n]> is zero, <[d]> and <[s]> must be a valid pointers, and the
function copies zero wide-characters.
RETURNS
The <<wmemmove>> function returns the value of <[d]>.
PORTABILITY
<<wmemmove>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wmemmove.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* citrus Id: wmemmove.c,v 1.2 2000/12/20 14:08:31 itojun Exp
*/
#include <_ansi.h>
#include <string.h>
#include <wchar.h>
wchar_t *
_DEFUN (wmemmove, (d, s, n),
wchar_t * d _AND
_CONST wchar_t * s _AND
size_t n)
{
return (wchar_t *) memmove (d, s, n * sizeof (wchar_t));
}

View File

@ -1,3 +1,37 @@
/*
FUNCTION
<<wmemset>>---set wide-characters in memory
ANSI_SYNOPSIS
#include <wchar.h>
wchar_t *wmemset(wchar_t *<[s]>, wchar_t <[c]>, size_t <[n]>);
TRAD_SYNOPSIS
wchar_t *wmemset(<[s]>, <[c]>, <[n]>
wchar_t *<[s]>;
wchar_t <[c]>;
size_t <[n]>;
DESCRIPTION
The <<wmemset>> function copies the value of <[c]> into each of the
first <[n]> wide-characters of the object pointed to by <[s]>. This
function is not affected by locale and all wchar_t values are treated
identically. The null wide-character and wchar_t values not
corresponding to valid characters are not treated specially.
If <[n]> is zero, <[s]> must be a valid pointer and the function
copies zero wide-characters.
RETURNS
The <<wmemset>> functions returns the value of <[s]>.
PORTABILITY
<<wmemset>> is ISO/IEC 9899/AMD1:1995 (ISO C).
No supporting OS subroutines are required.
*/
/* $NetBSD: wmemset.c,v 1.1 2000/12/23 23:14:37 itojun Exp $ */
/*-
* Copyright (c)1999 Citrus Project,
* All rights reserved.