1998-04-08 20:06  Ulrich Drepper  <drepper@cygnus.com>

	* iconv/gconv_conf.c (__gconv_read_conf): Use __realpath not realpath.
	* iconv/gconv_db.c: Use __ protected regex functions.
	* iconv/gconv_simple.c: Use __mbsinit not mbsinit.
	* posix/getopt_init.c: Use __getpid not getpid.
	* posix/regex.c: Rename all global functions to start with __ and
	make old names weak aliases.
	* posix/regex.h: Adopt prototypes for this.
	* stdlib/canonicalize.c: Define __realpath, make canonicalize_file_name
	a weak alias and use __getcwd instead of getcwd.
	* stdlib/stdlib.h: Declare __realpath and __canonicalize_file_name.
	* stdlib/strtod.c: Use __btowc instead of btowc.
	* stdlib/strtol.c: Likewise.
	* sysdeps/libm-ieee754/s_matherr.c: Weaken definition of matherr.
	* sysdeps/unix/sysv/linux/errlist.c: Make sure definitions of sys_nerr
	and sys_errlist are weak.
	* wcsmbs/btowc.c: Define function as __btowc and make btowc weak alias.
	* wcsmbs/mbrtowc.c: Use __mbsinit not mbsinit.
	* wcsmbs/mbsnrtowcs.c: Likewise.
	* wcsmbs/mbsrtowcs.c: Likewise.
	* wcsmbs/wcsnrtombs.c: Likewise.
	* wcsmbs/wcsrtombs.c: Likewise.
	* wcsmbs/mbsinit.c: Define function as __mbsinit and make mbsinit
	weak alias.
	* wcsmbs/wchar.h: Declare __btowc and __mbsinit.
	* wctype/wctype.c: Define function as __wctype and make wctype
	weak alias.
	* wctype/wctype.h: Declare __wctype.
This commit is contained in:
Ulrich Drepper 1998-04-08 20:27:31 +00:00
parent cd2bd5915d
commit 2ad4fab214
25 changed files with 223 additions and 42 deletions

6
BUGS
View File

@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete)
----------------------------------------------
Time-stamp: <1998-03-03T15:29:53-0800 drepper>
Time-stamp: <1998-04-08T09:29:12-0700 drepper>
This following list contains those bugs which I'm aware of. Please
make sure that bugs you report are not listed here. If you can fix one
@ -60,6 +60,10 @@ Severity: [ *] to [***]
[ *] The libm-ieee `scalb' function gives wrong results for
non-integral second parameters.
[ *] The *scanf() functions currently do not handle %l[ and %ls parameters
correctly since the parsing of the multi-byte characters does not
yet use mbsrtowcs().
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ulrich Drepper
drepper@cygnus.com

View File

@ -1,3 +1,33 @@
1998-04-08 20:06 Ulrich Drepper <drepper@cygnus.com>
* iconv/gconv_conf.c (__gconv_read_conf): Use __realpath not realpath.
* iconv/gconv_db.c: Use __ protected regex functions.
* iconv/gconv_simple.c: Use __mbsinit not mbsinit.
* posix/getopt_init.c: Use __getpid not getpid.
* posix/regex.c: Rename all global functions to start with __ and
make old names weak aliases.
* posix/regex.h: Adopt prototypes for this.
* stdlib/canonicalize.c: Define __realpath, make canonicalize_file_name
a weak alias and use __getcwd instead of getcwd.
* stdlib/stdlib.h: Declare __realpath and __canonicalize_file_name.
* stdlib/strtod.c: Use __btowc instead of btowc.
* stdlib/strtol.c: Likewise.
* sysdeps/libm-ieee754/s_matherr.c: Weaken definition of matherr.
* sysdeps/unix/sysv/linux/errlist.c: Make sure definitions of sys_nerr
and sys_errlist are weak.
* wcsmbs/btowc.c: Define function as __btowc and make btowc weak alias.
* wcsmbs/mbrtowc.c: Use __mbsinit not mbsinit.
* wcsmbs/mbsnrtowcs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Likewise.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/mbsinit.c: Define function as __mbsinit and make mbsinit
weak alias.
* wcsmbs/wchar.h: Declare __btowc and __mbsinit.
* wctype/wctype.c: Define function as __wctype and make wctype
weak alias.
* wctype/wctype.h: Declare __wctype.
1998-04-08 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfscanf.c: Perform test in %l[ handling correctly.

View File

@ -1,6 +1,6 @@
Open jobs for finishing GNU libc:
---------------------------------
Status: March 1998
Status: April 1998
If you have time and talent to take over any of the jobs below please
contact <bug-glibc@gnu.org>.
@ -50,7 +50,7 @@ contact <bug-glibc@gnu.org>.
- exp2
each with float, double, and long double arguments.
with long double arguments.
Beside this most of the complex math functions which are new in
ISO C 9X should be improved. Writing some of them in assembler is
@ -101,3 +101,14 @@ contact <bug-glibc@gnu.org>.
int foo __P ((int, int, int, int));
Blargh!
[16] The libio stream file functions should be extended in a way to use
mmap to map the file and use it as the buffer to user sees. For
read-only streams this should be rather easy and it avoids all read()
calls.
A more sophisticated solution would use mmap also for writing. The
standards do not demand that the file on the disk is always in the
correct form so it would be possible to enlarge it always according
to the page size and install the correct length only for fclose() and
fflush() calls.

View File

@ -404,7 +404,7 @@ __gconv_read_conf (void)
#endif
char real_elem[MAXPATHLEN];
if (realpath (elem, real_elem) != NULL)
if (__realpath (elem, real_elem) != NULL)
{
size_t elem_len = strlen (real_elem);
char *filename, *tmp;

View File

@ -329,8 +329,8 @@ find_derivation (const char *toset, const char *toset_expand,
{
regex_t *newp = (regex_t *) malloc (sizeof (regex_t));
if (regcomp (newp, __gconv_modules_db[cnt]->from_pattern,
REG_EXTENDED | REG_ICASE) != 0)
if (__regcomp (newp, __gconv_modules_db[cnt]->from_pattern,
REG_EXTENDED | REG_ICASE) != 0)
{
/* Something is wrong. Remember this. */
free (newp);
@ -345,8 +345,8 @@ find_derivation (const char *toset, const char *toset_expand,
/* Try to match the from name. */
regmatch_t match[4];
if (regexec (__gconv_modules_db[cnt]->from_regex,
current->result_set, 4, match, 0) == 0
if (__regexec (__gconv_modules_db[cnt]->from_regex,
current->result_set, 4, match, 0) == 0
&& match[0].rm_so == 0
&& current->result_set[match[0].rm_eo] == '\0')
{
@ -600,7 +600,7 @@ free_mem (void)
for (cnt = 0; cnt < __gconv_nmodules; ++cnt)
{
if (__gconv_modules_db[cnt]->from_regex != NULL)
regfree ((regex_t *) __gconv_modules_db[cnt]->from_regex);
__regfree ((regex_t *) __gconv_modules_db[cnt]->from_regex);
/* Modules which names do not start with a slash are builtin
transformations and the memory is not allocated dynamically. */

View File

@ -586,7 +586,7 @@ __gconv_transform_utf8_ucs4 (struct gconv_step *step,
break;
}
if (*inlen == 0 && !mbsinit (data->statep))
if (*inlen == 0 && !__mbsinit (data->statep))
{
/* We have an incomplete character at the end. */
result = GCONV_INCOMPLETE_INPUT;
@ -705,7 +705,7 @@ __gconv_transform_ucs2_ucs4 (struct gconv_step *step,
break;
}
if (*inlen == 0 && !mbsinit (data->statep))
if (*inlen == 0 && !__mbsinit (data->statep))
{
/* We have an incomplete character at the end. */
result = GCONV_INCOMPLETE_INPUT;
@ -837,7 +837,7 @@ __gconv_transform_ucs4_ucs2 (struct gconv_step *step,
break;
}
if (*inlen == 0 && !mbsinit (data->statep))
if (*inlen == 0 && !__mbsinit (data->statep))
{
/* We have an incomplete character at the end. */
result = GCONV_INCOMPLETE_INPUT;

View File

@ -1,5 +1,5 @@
/* Perform additional initialization for getopt functions in GNU libc.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -54,7 +54,7 @@ __getopt_clean_environment (char **env)
/* Generate name of the environment variable. We must know the PID
and we must not use `sprintf'. */
if (__libc_pid == 0xf00baa)
__libc_pid = getpid ();
__libc_pid = __getpid ();
/* Construct "_<PID>_GNU_nonoption_argv_flags_=" string. */
cp = memcpy (&var[sizeof (var) - sizeof (envvar_tail)], envvar_tail,

View File

@ -51,6 +51,29 @@
#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
# include <wctype.h>
# include <wchar.h>
/* We have to keep the namespace clean. */
# define regfree(preg) __regfree (preg)
# define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef)
# define regcomp(preg, pattern, cflags) __regcomp (preg, pattern, cflags)
# define regerror(errcode, preg, errbuf, errbuf_size) \
__regerror(errcode, preg, errbuf, errbuf_size)
# define re_set_registers(bu, re, nu, st, en) \
__re_set_registers (bu, re, nu, st, en)
# define re_match_2(bufp, string1, size1, string2, size2, pos, regs, stop) \
__re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
# define re_match(bufp, string, size, pos, regs) \
__re_match (bufp, string, size, pos, regs)
# define re_search(bufp, string, size, startpos, range, regs) \
__re_search (bufp, string, size, startpos, range, regs)
# define re_compile_pattern(pattern, length, bufp) \
__re_compile_pattern (pattern, length, bufp)
# define re_set_syntax(syntax) __re_set_syntax (syntax)
# define re_search_2(bufp, st1, s1, st2, s2, startpos, range, regs, stop) \
__re_search_2 (bufp, st1, s1, st2, s2, startpos, range, regs, stop)
# define re_compile_fastmap(bufp) __re_compile_fastmap (bufp)
#define btowc __btowc
#endif
/* This is for other GNU distributions with internationalized messages. */
@ -104,8 +127,12 @@ char *realloc ();
# ifndef INHIBIT_STRING_HEADER
# if defined HAVE_STRING_H || defined STDC_HEADERS || defined _LIBC
# include <string.h>
# if !defined bzero && !defined _LIBC
# define bzero(s, n) (memset (s, '\0', n), (s))
# ifndef bzero
# ifndef _LIBC
# define bzero(s, n) (memset (s, '\0', n), (s))
# else
# define bzero(s, n) __bzero (s, n)
# endif
# endif
# else
# include <strings.h>
@ -941,7 +968,13 @@ printchar (c)
syntax, so it can be changed between regex compilations. */
/* This has no initializer because initialized variables in Emacs
become read-only after dumping. */
#ifdef _LIBC
reg_syntax_t __re_syntax_options;
weak_alias (__re_syntax_options, re_syntax_options)
# define re_syntax_options __re_syntax_options
#else
reg_syntax_t re_syntax_options;
#endif
/* Specify the precise syntax of regexps for compilation. This provides
@ -966,6 +999,9 @@ re_set_syntax (syntax)
#endif /* DEBUG */
return ret;
}
#ifdef _LIBC
weak_alias (__re_set_syntax, re_set_syntax)
#endif
/* This table gives an error message for each of the error codes listed
in regex.h. Obviously the order here has to be same as there.
@ -1053,9 +1089,17 @@ static const char *re_error_msgid[] =
# if defined MATCH_MAY_ALLOCATE
/* 4400 was enough to cause a crash on Alpha OSF/1,
whose default stack limit is 2mb. */
# ifdef _LIBC
long int __re_max_failures = 4000;
# else
long int re_max_failures = 4000;
# endif
# else
# ifdef _LIBC
long int __re_max_failures = 2000;
# else
long int re_max_failures = 2000;
# endif
# endif
union fail_stack_elt
@ -1078,11 +1122,24 @@ typedef struct
# if defined MATCH_MAY_ALLOCATE
/* 4400 was enough to cause a crash on Alpha OSF/1,
whose default stack limit is 2mb. */
# ifdef _LIBC
int __re_max_failures = 20000;
# else
int re_max_failures = 20000;
# endif
# else
# ifdef _LIBC
int __re_max_failures = 2000;
# else
int re_max_failures = 2000;
# endif
# endif
#ifdef _LIBC
weak_alias (__re_max_failures, re_max_failures)
# define re_max_failures __re_max_failures
#endif
union fail_stack_elt
{
unsigned char *pointer;
@ -1694,7 +1751,11 @@ typedef struct
# define CHAR_CLASS_MAX_LENGTH 256
# endif
# define IS_CHAR_CLASS(string) wctype (string)
# ifdef _LIBC
# define IS_CHAR_CLASS(string) __wctype (string)
# else
# define IS_CHAR_CLASS(string) wctype (string)
# endif
#else
# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */
@ -2189,7 +2250,7 @@ regex_compile (pattern, size, syntax, bufp)
wctype_t wt;
int ch;
wt = wctype (str);
wt = IS_CHAR_CLASS (str);
if (wt == 0)
FREE_STACK_RETURN (REG_ECTYPE);
@ -2201,8 +2262,13 @@ regex_compile (pattern, size, syntax, bufp)
for (ch = 0; ch < 1 << BYTEWIDTH; ++ch)
{
# ifdef _LIBC
if (__iswctype (__btowc (ch), wt))
SET_LIST_BIT (ch);
#else
if (iswctype (btowc (ch), wt))
SET_LIST_BIT (ch);
#endif
if (translate && (is_upper || is_lower)
&& (ISUPPER (ch) || ISLOWER (ch)))
@ -3370,6 +3436,9 @@ re_compile_fastmap (bufp)
RESET_FAIL_STACK ();
return 0;
} /* re_compile_fastmap */
#ifdef _LIBC
weak_alias (__re_compile_fastmap, re_compile_fastmap)
#endif
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use
@ -3405,6 +3474,9 @@ re_set_registers (bufp, regs, num_regs, starts, ends)
regs->start = regs->end = (regoff_t *) 0;
}
}
#ifdef _LIBC
weak_alias (__re_set_registers, re_set_registers)
#endif
/* Searching routines. */
@ -3421,6 +3493,9 @@ re_search (bufp, string, size, startpos, range, regs)
return re_search_2 (bufp, NULL, 0, string, size, startpos, range,
regs, size);
}
#ifdef _LIBC
weak_alias (__re_search, re_search)
#endif
/* Using the compiled pattern in BUFP->buffer, first tries to match the
@ -3577,6 +3652,9 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop)
}
return -1;
} /* re_search_2 */
#ifdef _LIBC
weak_alias (__re_search_2, re_search_2)
#endif
/* This converts PTR, a pointer into one of the search strings `string1'
and `string2' into an offset from the beginning of that string. */
@ -3678,6 +3756,9 @@ re_match (bufp, string, size, pos, regs)
# endif
return result;
}
# ifdef _LIBC
weak_alias (__re_match, re_match)
# endif
#endif /* not emacs */
static boolean group_match_null_string_p _RE_ARGS ((unsigned char **p,
@ -3723,6 +3804,9 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
#endif
return result;
}
#ifdef _LIBC
weak_alias (__re_match_2, re_match_2)
#endif
/* This is a separate function so that we can force an alloca cleanup
afterwards. */
@ -5416,6 +5500,9 @@ re_compile_pattern (pattern, length, bufp)
return NULL;
return gettext (re_error_msgid[(int) ret]);
}
#ifdef _LIBC
weak_alias (__re_compile_pattern, re_compile_pattern)
#endif
/* Entry points compatible with 4.2 BSD regex library. We don't define
them unless specifically requested. */
@ -5586,6 +5673,9 @@ regcomp (preg, pattern, cflags)
return (int) ret;
}
#ifdef _LIBC
weak_alias (__regcomp, regcomp)
#endif
/* regexec searches for a given pattern, specified by PREG, in the
@ -5662,6 +5752,9 @@ regexec (preg, string, nmatch, pmatch, eflags)
/* We want zero return to mean success, unlike `re_search'. */
return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH;
}
#ifdef _LIBC
weak_alias (__regexec, regexec)
#endif
/* Returns a message corresponding to an error code, ERRCODE, returned
@ -5707,6 +5800,9 @@ regerror (errcode, preg, errbuf, errbuf_size)
return msg_size;
}
#ifdef _LIBC
weak_alias (__regerror, regerror)
#endif
/* Free dynamically allocated space used by PREG. */
@ -5731,5 +5827,8 @@ regfree (preg)
free (preg->translate);
preg->translate = NULL;
}
#ifdef _LIBC
weak_alias (__regfree, regfree)
#endif
#endif /* not emacs */

View File

@ -1,6 +1,6 @@
/* Definitions for data structures and routines for the regular
expression library, version 0.12.
Copyright (C) 1985,89,90,91,92,93,95,96,97 Free Software Foundation, Inc.
Copyright (C) 1985,89,90,91,92,93,95,96,97,98 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
@ -441,11 +441,15 @@ typedef struct
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
extern reg_syntax_t __re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
BUFFER. Return NULL if successful, and an error string if not. */
extern const char *__re_compile_pattern
_RE_ARGS ((const char *pattern, size_t length,
struct re_pattern_buffer *buffer));
extern const char *re_compile_pattern
_RE_ARGS ((const char *pattern, size_t length,
struct re_pattern_buffer *buffer));
@ -454,6 +458,7 @@ extern const char *re_compile_pattern
/* Compile a fastmap for the compiled pattern in BUFFER; used to
accelerate searches. Return 0 if successful and -2 if was an
internal error. */
extern int __re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
@ -462,6 +467,9 @@ extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
characters. Return the starting position of the match, -1 for no
match, or -2 for an internal error. Also return register
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
extern int __re_search
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, int range, struct re_registers *regs));
extern int re_search
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, int range, struct re_registers *regs));
@ -469,6 +477,10 @@ extern int re_search
/* Like `re_search', but search in the concatenation of STRING1 and
STRING2. Also, stop searching at index START + STOP. */
extern int __re_search_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, int range, struct re_registers *regs, int stop));
extern int re_search_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
@ -477,12 +489,19 @@ extern int re_search_2
/* Like `re_search', but return how many characters in STRING the regexp
in BUFFER matched, starting at position START. */
extern int __re_match
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, struct re_registers *regs));
extern int re_match
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, struct re_registers *regs));
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
extern int __re_match_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, struct re_registers *regs, int stop));
extern int re_match_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
@ -501,6 +520,9 @@ extern int re_match_2
Unless this function is called, the first search or match using
PATTERN_BUFFER will allocate its own register data, without
freeing the old data. */
extern void __re_set_registers
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
unsigned num_regs, regoff_t *starts, regoff_t *ends));
extern void re_set_registers
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
unsigned num_regs, regoff_t *starts, regoff_t *ends));

View File

@ -1,5 +1,5 @@
/* Return the canonical absolute name of a given file.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998 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
@ -74,7 +74,7 @@ canonicalize (const char *name, char *resolved)
if (name[0] != '/')
{
if (!getcwd (rpath, path_max))
if (!__getcwd (rpath, path_max))
goto error;
dest = strchr (rpath, '\0');
}
@ -147,7 +147,7 @@ canonicalize (const char *name, char *resolved)
goto error;
}
n = readlink (rpath, buf, path_max);
n = __readlink (rpath, buf, path_max);
if (n < 0)
goto error;
buf[n] = '\0';
@ -191,11 +191,13 @@ error:
free (rpath);
return NULL;
}
strong_alias (canonicalize, __realpath)
weak_alias (canonicalize, realpath)
char *
canonicalize_file_name (const char *name)
__canonicalize_file_name (const char *name)
{
return canonicalize (name, NULL);
}
weak_alias (__canonicalize_file_name, canonicalize_file_name)

View File

@ -573,6 +573,7 @@ extern int system __P ((__const char *__command));
/* Return a malloc'd string containing the canonical absolute name of the
named file. The last file name component need not exist, and may be a
symlink to a nonexistent file. */
extern char *__canonicalize_file_name __P ((__const char *__name));
extern char *canonicalize_file_name __P ((__const char *__name));
#endif
@ -583,6 +584,7 @@ extern char *canonicalize_file_name __P ((__const char *__name));
name is PATH_MAX chars or more, returns null with `errno' set to
ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the
name in RESOLVED. */
extern char *__realpath __P ((__const char *__name, char *__resolved));
extern char *realpath __P ((__const char *__name, char *__resolved));
#endif

View File

@ -459,7 +459,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
else
{
/* Figure out the thousands separator character. */
thousands = btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP));
thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP));
if (thousands == WEOF)
thousands = L'\0';
if (thousands == L'\0')
@ -470,7 +470,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
grouping = NULL;
/* Find the locale's decimal point character. */
decimal = btowc (*_NL_CURRENT (LC_NUMERIC, DECIMAL_POINT));
decimal = __btowc (*_NL_CURRENT (LC_NUMERIC, DECIMAL_POINT));
if (decimal == WEOF)
decimal = L'.';
assert (decimal != L'\0');

View File

@ -263,7 +263,7 @@ INTERNAL (strtol) (nptr, endptr, base, group LOCALE_PARAM)
{
/* Figure out the thousands separator character. */
# if defined _LIBC || defined _HAVE_BTOWC
thousands = btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP));
thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP));
if (thousands == WEOF)
thousands = L'\0';
# endif

View File

@ -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.
* ====================================================
*/
@ -18,9 +18,13 @@ static char rcsid[] = "$NetBSD: s_matherr.c,v 1.6 1995/05/10 20:47:53 jtc Exp $"
#include "math_private.h"
#ifdef __STDC__
int __matherr(struct exception *x)
int
weak_function
__matherr(struct exception *x)
#else
int __matherr(x)
int
weak_function
__matherr(x)
struct exception *x;
#endif
{

View File

@ -38,16 +38,17 @@ extern const char *const *__old_sys_errlist;
const int __old_sys_nerr = OLD_ERRLIST_SIZE;
strong_alias (__old_sys_nerr, _old_sys_nerr);
weak_alias (__old_sys_nerr, _old_sys_nerr)
symbol_version (__old_sys_nerr, _sys_nerr, GLIBC_2.0);
symbol_version (_old_sys_nerr, sys_nerr, GLIBC_2.0);
strong_alias (__old_sys_errlist, _old_sys_errlist);
weak_alias (__old_sys_errlist, _old_sys_errlist);
symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0);
symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0);
strong_alias (__new_sys_nerr, _new_sys_nerr)
weak_alias (__new_sys_nerr, _new_sys_nerr)
default_symbol_version (__new_sys_nerr, _sys_nerr, GLIBC_2.1);
default_symbol_version (_new_sys_nerr, sys_nerr, GLIBC_2.1);
strong_alias (__new_sys_errlist, _new_sys_errlist)
weak_alias (__new_sys_errlist, _new_sys_errlist)
default_symbol_version (__new_sys_errlist, _sys_errlist, GLIBC_2.1);
default_symbol_version (_new_sys_errlist, sys_errlist, GLIBC_2.1);

View File

@ -25,7 +25,7 @@
wint_t
btowc (c)
__btowc (c)
int c;
{
char buf[sizeof (wchar_t)];
@ -67,3 +67,4 @@ btowc (c)
return *(wchar_t *)buf;
}
weak_alias (__btowc, btowc)

View File

@ -79,7 +79,7 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
if (data.outbufavail > 0 && *(wchar_t *)data.outbuf == L'\0')
{
/* The converted character is the NUL character. */
assert (mbsinit (data.statep));
assert (__mbsinit (data.statep));
result = 0;
}
else

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
@ -29,8 +29,9 @@
value collected so far. Especially, we don't have different shift
states. */
int
mbsinit (ps)
__mbsinit (ps)
const mbstate_t *ps;
{
return ps == NULL || ps->count == 0;
}
weak_alias (__mbsinit, mbsinit)

View File

@ -110,7 +110,7 @@ __mbsnrtowcs (dst, src, nmc, len, ps)
&& ((wchar_t *) dst)[result - 1] == L'\0')
{
assert (result > 0);
assert (mbsinit (data.statep));
assert (__mbsinit (data.statep));
*src = NULL;
--result;
}

View File

@ -103,7 +103,7 @@ __mbsrtowcs (dst, src, len, ps)
&& ((wchar_t *) dst)[result - 1] == L'\0')
{
assert (result > 0);
assert (mbsinit (data.statep));
assert (__mbsinit (data.statep));
*src = NULL;
--result;
}

View File

@ -198,6 +198,7 @@ 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));
extern wint_t btowc __P ((int __c));
/* Determine whether C corresponds to a member of the extended
@ -206,6 +207,7 @@ 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));
extern int mbsinit __P ((__const mbstate_t *__ps));
/* Write wide character representation of multibyte character pointed

View File

@ -111,7 +111,7 @@ __wcsnrtombs (dst, src, nwc, len, ps)
&& dst[data.outbufavail - 1] == '\0')
{
assert (data.outbufavail > 0);
assert (mbsinit (data.statep));
assert (__mbsinit (data.statep));
*src = NULL;
--result;
}

View File

@ -107,7 +107,7 @@ __wcsrtombs (dst, src, len, ps)
&& dst[data.outbufavail - 1] == '\0')
{
assert (data.outbufavail > 0);
assert (mbsinit (data.statep));
assert (__mbsinit (data.statep));
*src = NULL;
--result;
}

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
@ -23,7 +23,7 @@
#include <locale/localeinfo.h>
wctype_t
wctype (const char *property)
__wctype (const char *property)
{
const char *names;
wctype_t result;
@ -51,3 +51,4 @@ wctype (const char *property)
return SWAPU32 (result);
#endif
}
weak_alias (__wctype, wctype)

View File

@ -151,6 +151,7 @@ extern int iswxdigit __P ((wint_t __wc));
/* Construct value that describes a class of wide characters identified
by the string argument PROPERTY. */
extern wctype_t __wctype __P ((__const char *__property));
extern wctype_t wctype __P ((__const char *__property));
/* Determine whether the wide-character WC has the property described by