mirror of
git://sourceware.org/git/glibc.git
synced 2026-09-09 05:59:27 +08:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30de3b18a5 |
@@ -1,3 +1,98 @@
|
||||
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.
|
||||
|
||||
Fri Mar 29 11:29:46 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
|
||||
|
||||
* sysdeps/libm-ieee754/s_signgam.c (signgam): Renamed to __signgam,
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
int __signgam = 0;
|
||||
weak_alias (__signgam, signgam)
|
||||
int signgam = 0;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
@@ -23,7 +23,7 @@ static char rcsid[] = "$NetBSD: w_gamma.c,v 1.7 1995/11/20 22:06:43 jtc Exp $";
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
extern int __signgam;
|
||||
extern int signgam;
|
||||
|
||||
#ifdef __STDC__
|
||||
double __gamma(double x)
|
||||
@@ -33,10 +33,10 @@ extern int __signgam;
|
||||
#endif
|
||||
{
|
||||
#ifdef _IEEE_LIBM
|
||||
return __ieee754_lgamma_r(x,&__signgam);
|
||||
return __ieee754_lgamma_r(x,&signgam);
|
||||
#else
|
||||
double y;
|
||||
y = __ieee754_lgamma_r(x,&__signgam);
|
||||
y = __ieee754_lgamma_r(x,&signgam);
|
||||
if(_LIB_VERSION == _IEEE_) return y;
|
||||
if(!__finite(y)&&__finite(x)) {
|
||||
if(__floor(x)==x&&x<=0.0)
|
||||
@@ -46,5 +46,5 @@ extern int __signgam;
|
||||
} else
|
||||
return y;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
weak_alias (__gamma, gamma)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/* 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 <stdio.h>
|
||||
#include <wchar.h>
|
||||
|
||||
|
||||
wint_t
|
||||
btowc (c)
|
||||
int c;
|
||||
{
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
if (WEOF != (wint_t) EOF)
|
||||
return WEOF;
|
||||
else
|
||||
return c;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/* 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>
|
||||
|
||||
|
||||
/* The mbrlen function has an internal shift state which gets used if
|
||||
the PS parameter is NULL. */
|
||||
static mbstate_t internal;
|
||||
|
||||
|
||||
size_t
|
||||
mbrlen (s, n, ps)
|
||||
const char *s;
|
||||
size_t n;
|
||||
mbstate_t *ps;
|
||||
{
|
||||
return mbrtowc (NULL, s, n, ps ?: &internal);
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/* 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>
|
||||
|
||||
|
||||
size_t
|
||||
mbrtowc (pwc, s, n, ps)
|
||||
wchar_t *pwc;
|
||||
const char *s;
|
||||
size_t n;
|
||||
mbstate_t *ps;
|
||||
{
|
||||
wchar_t to_wide;
|
||||
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
|
||||
if (s == NULL)
|
||||
{
|
||||
pwc = NULL;
|
||||
s = "";
|
||||
n = 1;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
return (size_t) -2;
|
||||
|
||||
/* For now. */
|
||||
to_wide = (wchar_t) *s;
|
||||
|
||||
if (pwc != NULL)
|
||||
*pwc = to_wide;
|
||||
|
||||
if (pwc == L'\0')
|
||||
{
|
||||
*ps = 0; /* This is required. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Return code (size_t)-1 cannot happend for now. */
|
||||
return 1;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/* 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>
|
||||
|
||||
|
||||
int
|
||||
mbsinit (ps)
|
||||
const mbstate_t *ps;
|
||||
{
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
|
||||
return *ps == 0;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/* 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>
|
||||
|
||||
|
||||
size_t
|
||||
mbsrtowcs (dst, src, len, ps)
|
||||
wchar_t *dst;
|
||||
const char **src;
|
||||
size_t len;
|
||||
mbstate_t *ps;
|
||||
{
|
||||
size_t result = 0;
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
|
||||
while (len > 0 && **src != '\0')
|
||||
{
|
||||
/* For now there is no possibly illegal MB char sequence. */
|
||||
if (dst != NULL)
|
||||
dst[result] = (wchar_t) **src;
|
||||
++result;
|
||||
++(*src);
|
||||
--len;
|
||||
}
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (dst != NULL)
|
||||
{
|
||||
dst[result] = L'\0';
|
||||
*ps = 0;
|
||||
}
|
||||
*src = NULL;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
+168
@@ -0,0 +1,168 @@
|
||||
/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* ISO Standard: 7.16.4 General wide-string utilities <wchar.h>
|
||||
*/
|
||||
|
||||
#ifndef _WCHAR_H
|
||||
|
||||
#define _WCHAR_H 1
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Get size_t, wchar_t, uwchar_t and NULL from <stddef.h>. */
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
/* #define __need_uwchar_t */
|
||||
#define __need_NULL
|
||||
/* __need_WCHAR_MAX */
|
||||
/* __need_WCHAR_MIN */
|
||||
#include <stddef.h>
|
||||
|
||||
/* FIXME: Should go with this or another name in stddef.h. */
|
||||
typedef unsigned int uwchar_t;
|
||||
|
||||
/* Conversion state information. */
|
||||
typedef int mbstate_t; /* FIXME */
|
||||
|
||||
/* Should come from <stddef.h> */
|
||||
#define WCHAR_MIN ((wchar_t) 0) /* FIXME */
|
||||
#define WCHAR_MAX (~WCHAR_MIN) /* FIXME */
|
||||
|
||||
#ifndef WEOF
|
||||
# define WEOF (0xffffffffu)
|
||||
#endif
|
||||
|
||||
/* FIXME: should this go into <stddef.h>??? */
|
||||
#if 0
|
||||
#define __need_wint_t
|
||||
#include <stddef.h>
|
||||
#else
|
||||
/* Integral type unchanged by default argument promotions that can
|
||||
hold any value corresponding to members of the extended character
|
||||
set, as well as at least one value that does not correspond to any
|
||||
member of the extended character set. */
|
||||
typedef unsigned int wint_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* Copy SRC to DEST. */
|
||||
extern wchar_t *wcscpy __P ((wchar_t *__dest, __const wchar_t *__src));
|
||||
/* Copy no more than N wide-characters of SRC to DEST. */
|
||||
extern wchar_t *wcsncpy __P ((wchar_t *__dest, __const wchar_t *__src,
|
||||
size_t __n));
|
||||
|
||||
/* Append SRC onto DEST. */
|
||||
extern wchar_t *wcscat __P ((wchar_t *__dest, __const wchar_t *__src));
|
||||
/* Append no more than N wide-characters of SRC onto DEST. */
|
||||
extern wchar_t *wcsncat __P ((wchar_t *__dest, __const wchar_t *__src,
|
||||
size_t __n));
|
||||
|
||||
/* Compare S1 and S2. */
|
||||
extern int wcscmp __P ((__const wchar_t *__s1, __const wchar_t *__s2));
|
||||
/* Compare N wide-characters of S1 and S2. */
|
||||
extern int wcsncmp __P ((__const wchar_t *__s1, __const wchar_t *__s2,
|
||||
size_t __n));
|
||||
|
||||
/* Duplicate S, returning an identical malloc'd string. */
|
||||
extern wchar_t *wcsdup __P ((__const wchar_t *__s));
|
||||
|
||||
/* Find the first occurence of WC in WCS. */
|
||||
extern wchar_t *wcschr __P ((__const wchar_t *__wcs, wchar_t __wc));
|
||||
/* Find the last occurence of WC in WCS. */
|
||||
extern wchar_t *wcsrchr __P ((__const wchar_t *__wcs, wchar_t __wc));
|
||||
|
||||
/* Return the length of the initial segmet of WCS which
|
||||
consists entirely of wide-characters not in REJECT. */
|
||||
extern size_t wcscspn __P ((__const wchar_t *__wcs,
|
||||
__const wchar_t *__reject));
|
||||
/* Return the length of the initial segmet of WCS which
|
||||
consists entirely of wide-characters in ACCEPT. */
|
||||
extern size_t wcsspn __P ((__const wchar_t *__wcs, __const wchar_t *__accept));
|
||||
/* Find the first occurence in WCS of any character in ACCEPT. */
|
||||
extern wchar_t *wcspbrk __P ((__const wchar_t *__wcs,
|
||||
__const wchar_t *__accept));
|
||||
/* Find the first occurence of NEEDLE in HAYSTACK. */
|
||||
extern wchar_t *wcsstr __P ((__const wchar_t *__haystack,
|
||||
__const wchar_t *__needle));
|
||||
/* Divide WCS into tokens separated by characters in DELIM. */
|
||||
extern wchar_t *wcstok __P ((wchar_t *__s, __const wchar_t *__delim,
|
||||
wchar_t **ptr));
|
||||
|
||||
/* Return the number of wide-characters in S. */
|
||||
extern size_t wcslen __P ((__const wchar_t *__s));
|
||||
|
||||
|
||||
/* Search N bytes of S for C. */
|
||||
extern wchar_t *wmemchr __P ((__const wchar_t *__s, wchar_t __c, size_t __n));
|
||||
|
||||
/* Compare N bytes of S1 and S2. */
|
||||
extern int wmemcmp __P ((__const wchar_t *__s1, __const wchar_t *__s2,
|
||||
size_t __n));
|
||||
|
||||
/* Copy N bytes of SRC to DEST. */
|
||||
extern wchar_t *wmemcpy __P ((wchar_t *__s1, __const wchar_t *__s2,
|
||||
size_t __n));
|
||||
|
||||
/* Copy N bytes of SRC to DEST, guaranteeing
|
||||
correct behavior for overlapping strings. */
|
||||
extern wchar_t *wmemmove __P ((wchar_t *__s1, __const wchar_t *__s2,
|
||||
size_t __N));
|
||||
|
||||
/* Set N bytes of S to C. */
|
||||
extern wchar_t *wmemset __P ((wchar_t *__s, wchar_t __c, size_t __n));
|
||||
|
||||
|
||||
/* Determine whether C constitutes a valid (one-byte) multibyte
|
||||
character. */
|
||||
extern wint_t btowc __P ((int __c));
|
||||
|
||||
/* Determine whether C corresponds to a member of the extended
|
||||
character set whose multibyte representation is a single byte. */
|
||||
extern int wctob __P ((wint_t __c));
|
||||
|
||||
/* Determine whether PS points to an object representing the initial
|
||||
state. */
|
||||
extern int mbsinit __P ((__const mbstate_t *__ps));
|
||||
|
||||
/* Return number of bytes in multibyte character pointed to by S. */
|
||||
extern size_t mbrlen __P ((__const char *__s, size_t __n, mbstate_t *ps));
|
||||
|
||||
/* Write wide character representation of multibyte character pointed
|
||||
to by S to PWC. */
|
||||
extern size_t mbrtowc __P ((wchar_t *__pwc, __const char *__s, size_t __n,
|
||||
mbstate_t *__p));
|
||||
|
||||
/* Write multibyte representation of wide character WC to S. */
|
||||
extern size_t wcrtomb __P ((char *__s, wchar_t __wc, mbstate_t *__ps));
|
||||
|
||||
/* Write wide character representation of multibyte chracter string SRC
|
||||
to DST. */
|
||||
extern size_t mbsrtowcs __P ((wchar_t *__dst, __const char **__src,
|
||||
size_t __len, mbstate_t *__ps));
|
||||
|
||||
/* Write multibyte character representation of wide character string
|
||||
SRC to DST. */
|
||||
extern size_t wcsrtombs __P ((char *__dst, __const wchar_t **__src,
|
||||
size_t __len, mbstate_t *__ps));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* wchar.h */
|
||||
@@ -0,0 +1,60 @@
|
||||
/* 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 <errno.h>
|
||||
#include <wchar.h>
|
||||
|
||||
|
||||
size_t
|
||||
wcrtomb (s, wc, ps)
|
||||
char *s;
|
||||
wchar_t wc;
|
||||
mbstate_t *ps;
|
||||
{
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
|
||||
char fake[1];
|
||||
|
||||
if (s == NULL)
|
||||
{
|
||||
s = fake;
|
||||
wc = L'\0';
|
||||
}
|
||||
|
||||
if (wc == L'\0')
|
||||
{
|
||||
/* FIXME Write any shift sequence to get to *PS == NULL. */
|
||||
*ps = 0;
|
||||
*s = '\0';
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* FIXME For now we don't handle real multi-byte encodings. */
|
||||
if ((wc & ~0xff) != 0)
|
||||
{
|
||||
errno = EILSEQ;
|
||||
return (size_t) -1;
|
||||
}
|
||||
|
||||
*s = (char) wc;
|
||||
return 1;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/* 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 <errno.h>
|
||||
#include <wchar.h>
|
||||
|
||||
|
||||
size_t
|
||||
wcsrtombs (dst, src, len, ps)
|
||||
char *dst;
|
||||
const wchar_t **src;
|
||||
size_t len;
|
||||
mbstate_t *ps;
|
||||
{
|
||||
size_t result = 0;
|
||||
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
|
||||
while (len > 0 && **src != L'\0')
|
||||
{
|
||||
if ((**src & ~0xff) != 0)
|
||||
{
|
||||
errno = EILSEQ;
|
||||
return (size_t) -1;
|
||||
}
|
||||
|
||||
if (dst != NULL)
|
||||
dst[result] = (char) **src;
|
||||
++result;
|
||||
++(*src);
|
||||
--len;
|
||||
}
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (dst != NULL)
|
||||
{
|
||||
dst[result] = '\0';
|
||||
*ps = 0;
|
||||
}
|
||||
*src = NULL;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* The original strstr() file contains the following comment:
|
||||
*
|
||||
* My personal strstr() implementation that beats most other algorithms.
|
||||
* Until someone tells me otherwise, I assume that this is the
|
||||
* fastest implementation of strstr() in C.
|
||||
* I deliberately chose not to comment it. You should have at least
|
||||
* as much fun trying to understand it, as I had to write it :-).
|
||||
*
|
||||
* Stephen R. van den Berg, berg@pool.informatik.rwth-aachen.de */
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
wchar_t *
|
||||
wcsstr (haystack, needle)
|
||||
const wchar_t *haystack;
|
||||
const wchar_t *needle;
|
||||
{
|
||||
register wchar_t b, c;
|
||||
|
||||
if ((b = *needle) != L'\0')
|
||||
{
|
||||
haystack--; /* possible ANSI violation */
|
||||
do
|
||||
if ((c = *++haystack) == L'\0')
|
||||
goto ret0;
|
||||
while (c != b);
|
||||
|
||||
if (!(c = *++needle))
|
||||
goto foundneedle;
|
||||
++needle;
|
||||
goto jin;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
register wchar_t a;
|
||||
register const wchar_t *rhaystack, *rneedle;
|
||||
|
||||
do
|
||||
{
|
||||
if (!(a = *++haystack))
|
||||
goto ret0;
|
||||
if (a == b)
|
||||
break;
|
||||
if ((a = *++haystack) == L'\0')
|
||||
goto ret0;
|
||||
shloop: ;
|
||||
}
|
||||
while (a != b);
|
||||
|
||||
jin: if (!(a = *++haystack))
|
||||
goto ret0;
|
||||
|
||||
if (a != c)
|
||||
goto shloop;
|
||||
|
||||
if (*(rhaystack = haystack-- + 1) == (a = *(rneedle = needle)))
|
||||
do
|
||||
{
|
||||
if (a == L'\0')
|
||||
goto foundneedle;
|
||||
if (*++rhaystack != (a = *++needle))
|
||||
break;
|
||||
if (a == L'\0')
|
||||
goto foundneedle;
|
||||
}
|
||||
while (*++rhaystack == (a = *++needle));
|
||||
|
||||
needle = rneedle; /* took the register-poor approach */
|
||||
|
||||
if (a == L'\0')
|
||||
break;
|
||||
}
|
||||
}
|
||||
foundneedle:
|
||||
return (wchar_t*) haystack;
|
||||
ret0:
|
||||
return NULL;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
/* 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 <stdio.h>
|
||||
#include <wchar.h>
|
||||
|
||||
|
||||
int
|
||||
wctob (c)
|
||||
wint_t c;
|
||||
{
|
||||
/*************************************************************\
|
||||
|* This is no complete implementation. While the multi-byte *|
|
||||
|* character handling is not finished this will do. *|
|
||||
\*************************************************************/
|
||||
|
||||
return (c & ~0xff) == 0 ? c : EOF;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* 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;
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/* 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>
|
||||
|
||||
|
||||
int
|
||||
wmemcmp (s1, s2, n)
|
||||
const wchar_t *s1;
|
||||
const wchar_t *s2;
|
||||
size_t n;
|
||||
{
|
||||
register uwchar_t c1;
|
||||
register uwchar_t c2;
|
||||
|
||||
while (n >= 4)
|
||||
{
|
||||
c1 = (uwchar_t) s1[0];
|
||||
c2 = (uwchar_t) s2[0];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
c1 = (uwchar_t) s1[1];
|
||||
c2 = (uwchar_t) s2[1];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
c1 = (uwchar_t) s1[2];
|
||||
c2 = (uwchar_t) s2[2];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
c1 = (uwchar_t) s1[3];
|
||||
c2 = (uwchar_t) s2[3];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
s1 += 4;
|
||||
s2 += 4;
|
||||
n -= 4;
|
||||
}
|
||||
|
||||
if (n > 0)
|
||||
{
|
||||
c1 = (uwchar_t) s1[0];
|
||||
c2 = (uwchar_t) s2[0];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
++s1;
|
||||
++s2;
|
||||
--n;
|
||||
}
|
||||
if (n > 0)
|
||||
{
|
||||
c1 = (uwchar_t) s1[0];
|
||||
c2 = (uwchar_t) s2[0];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
++s1;
|
||||
++s2;
|
||||
--n;
|
||||
}
|
||||
if (n > 0)
|
||||
{
|
||||
c1 = (uwchar_t) s1[0];
|
||||
c2 = (uwchar_t) s2[0];
|
||||
if (c1 - c2 != 0)
|
||||
return c1 - c2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/* 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>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
wchar_t *
|
||||
wmemcpy (s1, s2, n)
|
||||
wchar_t *s1;
|
||||
const wchar_t *s2;
|
||||
size_t n;
|
||||
{
|
||||
return (wchar_t *) memcpy ((char *) s1, (char *) s2, n * sizeof (wchar_t));
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/* 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>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
wchar_t *
|
||||
wmemmove (s1, s2, n)
|
||||
wchar_t *s1;
|
||||
const wchar_t *s2;
|
||||
size_t n;
|
||||
{
|
||||
return (wchar_t *) memmove ((char *) s1, (char *) s2, n * sizeof (wchar_t));
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/* 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 *
|
||||
wmemset (s, c, n)
|
||||
wchar_t *s;
|
||||
wchar_t c;
|
||||
size_t n;
|
||||
{
|
||||
register wchar_t *wp = s;
|
||||
|
||||
while (n >= 4)
|
||||
{
|
||||
wp[0] = c;
|
||||
wp[1] = c;
|
||||
wp[2] = c;
|
||||
wp[3] = c;
|
||||
wp += 4;
|
||||
n -= 4;
|
||||
}
|
||||
|
||||
if (n > 0)
|
||||
{
|
||||
*wp++ = c;
|
||||
--n;
|
||||
}
|
||||
if (n > 0)
|
||||
{
|
||||
*wp++ = c;
|
||||
--n;
|
||||
}
|
||||
if (n > 0)
|
||||
*wp = c;
|
||||
|
||||
return s;
|
||||
}
|
||||
Reference in New Issue
Block a user