about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-23 22:17:17 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-23 22:17:17 +0000
commit4caef86ca68a3fea8fab5398bedc5e0e6c0d222b (patch)
tree4ed5e6e23fb6d99df8761dc425adbb91405915fb
parent8831788577cda2e19e27e6f1a793339abb9711fa (diff)
downloadglibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.tar.gz
glibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.tar.xz
glibc-4caef86ca68a3fea8fab5398bedc5e0e6c0d222b.zip
Update.
1999-01-23  Ulrich Drepper  <drepper@cygnus.com>

	* nss/nss_files/files-XXX.c (internal_getent): Make sure the buffer has
	at least two bytes (not one).  Correct buflen parameter type.
	* nss/nss_files/files-alias.c (get_next_alias): Make sure buffer
	has at least two bytes.  Use fgets_unlocked instead of fgets.

	* ctype/ctype.h: Don't user __tolower directly for tolower
	implementation.  Use inline function which tests for the range
	first.  Make _tolower equivalent to old tolower macros.
	Likewise for toupper.
	* ctype/ctype.c: Change tolower/toupper definition accordingly.

	* argp/argp-help.c: Use _tolower instead of tolower if possible.
	* inet/ether_aton_r.c: Likewise.
	* inet/ether_line.c: Likewise.
	* inet/rcmd.c: Likewise.
	* intl/l10nflist.c: Likewise.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/linereader.c: Likewise.
	* locale/programs/localedef.c: Likewise.
	* nis/nss_nis/nis-alias.c: Likewise.
	* nis/nss_nis/nis-network.c: Likewise.
	* posix/regex.c: Likewise.
	* resolv/inet_net_pton.c: Likewise.
	* stdio-common/printf_fp.c: Likewise.
	* stdio-common/vfscanf.c: Likewise.
	* sysdeps/generic/strcasestr.c: Likewise.

	* math/bits/mathcalls.h: Fix typo.
-rw-r--r--ChangeLog31
-rw-r--r--argp/argp-help.c6
-rw-r--r--inet/ether_aton_r.c6
-rw-r--r--inet/ether_line.c6
-rw-r--r--inet/rcmd.c2
-rw-r--r--intl/l10nflist.c4
-rw-r--r--locale/programs/ld-collate.c12
-rw-r--r--locale/programs/linereader.c6
-rw-r--r--locale/programs/localedef.c2
-rw-r--r--math/bits/mathcalls.h2
-rw-r--r--nis/nss_nis/nis-alias.c4
-rw-r--r--nis/nss_nis/nis-network.c4
-rw-r--r--nss/nss_files/files-XXX.c6
-rw-r--r--nss/nss_files/files-alias.c14
-rw-r--r--posix/regex.c10
-rw-r--r--resolv/inet_net_pton.c3
-rw-r--r--stdio-common/printf_fp.c4
-rw-r--r--stdio-common/vfscanf.c34
-rw-r--r--sysdeps/generic/strcasestr.c26
19 files changed, 114 insertions, 68 deletions
diff --git a/ChangeLog b/ChangeLog
index 976b1bb65b..064eb5cae9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+1999-01-23  Ulrich Drepper  <drepper@cygnus.com>
+
+	* nss/nss_files/files-XXX.c (internal_getent): Make sure the buffer has
+	at least two bytes (not one).  Correct buflen parameter type.
+	* nss/nss_files/files-alias.c (get_next_alias): Make sure buffer
+	has at least two bytes.  Use fgets_unlocked instead of fgets.
+
+	* ctype/ctype.h: Don't user __tolower directly for tolower
+	implementation.  Use inline function which tests for the range
+	first.  Make _tolower equivalent to old tolower macros.
+	Likewise for toupper.
+	* ctype/ctype.c: Change tolower/toupper definition accordingly.
+
+	* argp/argp-help.c: Use _tolower instead of tolower if possible.
+	* inet/ether_aton_r.c: Likewise.
+	* inet/ether_line.c: Likewise.
+	* inet/rcmd.c: Likewise.
+	* intl/l10nflist.c: Likewise.
+	* locale/programs/ld-collate.c: Likewise.
+	* locale/programs/linereader.c: Likewise.
+	* locale/programs/localedef.c: Likewise.
+	* nis/nss_nis/nis-alias.c: Likewise.
+	* nis/nss_nis/nis-network.c: Likewise.
+	* posix/regex.c: Likewise.
+	* resolv/inet_net_pton.c: Likewise.
+	* stdio-common/printf_fp.c: Likewise.
+	* stdio-common/vfscanf.c: Likewise.
+	* sysdeps/generic/strcasestr.c: Likewise.
+
+	* math/bits/mathcalls.h: Fix typo.
+
 1999-01-23  Roland McGrath  <roland@baalperazim.frob.com>
 
 	* sysdeps/gnu/errlist.awk: Add comment.
diff --git a/argp/argp-help.c b/argp/argp-help.c
index a3a1a12ef9..d78060d12c 100644
--- a/argp/argp-help.c
+++ b/argp/argp-help.c
@@ -1,5 +1,5 @@
 /* Hierarchial argument parsing help output
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Miles Bader <miles@gnu.ai.mit.edu>.
 
@@ -759,7 +759,11 @@ hol_entry_cmp (const struct hol_entry *entry1,
 	{
 	  char first1 = short1 ? short1 : long1 ? *long1 : 0;
 	  char first2 = short2 ? short2 : long2 ? *long2 : 0;
+#ifdef _tolower
+	  int lower_cmp = _tolower (first1) - _tolower (first2);
+#else
 	  int lower_cmp = tolower (first1) - tolower (first2);
+#endif
 	  /* Compare ignoring case, except when the options are both the
 	     same letter, in which case lower-case always comes first.  */
 	  return lower_cmp ? lower_cmp : first2 - first1;
diff --git a/inet/ether_aton_r.c b/inet/ether_aton_r.c
index 14ccd2574f..5ca21e8a1f 100644
--- a/inet/ether_aton_r.c
+++ b/inet/ether_aton_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -33,12 +33,12 @@ ether_aton_r (const char *asc, struct ether_addr *addr)
       unsigned int number;
       char ch;
 
-      ch = tolower (*asc++);
+      ch = _tolower (*asc++);
       if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'f'))
 	return NULL;
       number = isdigit (ch) ? (ch - '0') : (ch - 'a' + 10);
 
-      ch = tolower (*asc);
+      ch = _tolower (*asc);
       if ((cnt < 5 && ch != ':') || (cnt == 5 && ch != '\0' && !isspace (ch)))
 	{
 	  ++asc;
diff --git a/inet/ether_line.c b/inet/ether_line.c
index 9e9f7368b9..889be0a4e9 100644
--- a/inet/ether_line.c
+++ b/inet/ether_line.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1999 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
@@ -34,12 +34,12 @@ ether_line (const char *line, struct ether_addr *addr, char *hostname)
       unsigned int number;
       char ch;
 
-      ch = tolower (*line++);
+      ch = _tolower (*line++);
       if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'f'))
 	return -1;
       number = isdigit (ch) ? (ch - '0') : (ch - 'a' + 10);
 
-      ch = tolower (*line);
+      ch = _tolower (*line);
       if ((cnt < 5 && ch != ':') || (cnt == 5 && ch != '\0' && !isspace (ch)))
 	{
 	  ++line;
diff --git a/inet/rcmd.c b/inet/rcmd.c
index fe73342424..d8524f93c8 100644
--- a/inet/rcmd.c
+++ b/inet/rcmd.c
@@ -574,7 +574,7 @@ __ivaliduser2(hostf, raddr, luser, ruser, rhost)
 	}
 
 	for (;*p && !isspace(*p); ++p) {
-	    *p = tolower (*p);
+	    *p = _tolower (*p);
 	}
 
 	/* Next we want to find the permitted name for the remote user.  */
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
index b205b96c43..5edba3a4d8 100644
--- a/intl/l10nflist.c
+++ b/intl/l10nflist.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
 
    This file is part of the GNU C Library.  Its master source is NOT part of
@@ -384,7 +384,7 @@ _nl_normalize_codeset (codeset, name_len)
 
       for (cnt = 0; cnt < name_len; ++cnt)
 	if (isalpha (codeset[cnt]))
-	  *wp++ = tolower (codeset[cnt]);
+	  *wp++ = _tolower (codeset[cnt]);
 	else if (isdigit (codeset[cnt]))
 	  *wp++ = codeset[cnt];
 
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 5d2cb57820..772ab1af33 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
 
@@ -1764,12 +1764,12 @@ collate_simple_weight (struct linereader *lr, struct localedef_t *locale,
 		    int base;
 
 		    ++runp;
-		    if (tolower (*runp) == 'x')
+		    if (_tolower (*runp) == 'x')
 		      {
 			++runp;
 			base = 16;
 		      }
-		    else if (tolower (*runp) == 'd')
+		    else if (_tolower (*runp) == 'd')
 		      {
 			++runp;
 			base = 10;
@@ -1777,7 +1777,7 @@ collate_simple_weight (struct linereader *lr, struct localedef_t *locale,
 		    else
 		      base = 8;
 
-		    dp = strchr (digits, tolower (*runp));
+		    dp = strchr (digits, _tolower (*runp));
 		    if (dp == NULL || (dp - digits) >= base)
 		      {
 		      illegal_char:
@@ -1789,7 +1789,7 @@ illegal character constant in string"));
 		    wch = dp - digits;
 		    ++runp;
 
-		    dp = strchr (digits, tolower (*runp));
+		    dp = strchr (digits, _tolower (*runp));
 		    if (dp == NULL || (dp - digits) >= base)
 		      goto illegal_char;
 		    wch *= base;
@@ -1798,7 +1798,7 @@ illegal character constant in string"));
 
 		    if (base != 16)
 		      {
-			dp = strchr (digits, tolower (*runp));
+			dp = strchr (digits, _tolower (*runp));
 			if (dp != NULL && (dp - digits < base))
 			  {
 			    wch *= base;
diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
index 4406e1ab72..31278d63c2 100644
--- a/locale/programs/linereader.c
+++ b/locale/programs/linereader.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
@@ -300,7 +300,7 @@ get_toplvl_escape (struct linereader *lr)
       if (isdigit (ch))
 	byte = ch - '0';
       else
-	byte = tolower (ch) - 'a' + 10;
+	byte = _tolower (ch) - 'a' + 10;
 
       ch = lr_getc (lr);
       if ((base == 16 && !isxdigit (ch))
@@ -311,7 +311,7 @@ get_toplvl_escape (struct linereader *lr)
       if (isdigit (ch))
 	byte += ch - '0';
       else
-	byte += tolower (ch) - 'a' + 10;
+	byte += _tolower (ch) - 'a' + 10;
 
       ch = lr_getc (lr);
       if (base != 16 && isdigit (ch))
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index 98443b8e2d..5a7035dc13 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -558,7 +558,7 @@ normalize_codeset (codeset, name_len)
 
       for (cnt = 0; cnt < name_len; ++cnt)
 	if (isalpha (codeset[cnt]))
-	  *wp++ = tolower (codeset[cnt]);
+	  *wp++ = _tolower (codeset[cnt]);
 	else if (isdigit (codeset[cnt]))
 	  *wp++ = codeset[cnt];
 
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index 3f1d5b1223..025c4c78e4 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -275,7 +275,7 @@ __MATHDECL (int,ilogb,, (_Mdouble_ __x));
 /* Return X times (2 to the Nth power).  */
 __MATHCALL (scalbln,, (_Mdouble_ __x, long int __n));
 
-/* Round X to integral valuein floating-point format using current
+/* Round X to integral value in floating-point format using current
    rounding direction, but do not raise inexact exception.  */
 __MATHCALL (nearbyint,, (_Mdouble_ __x));
 
diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c
index d1dc992c83..64d0bf8de5 100644
--- a/nis/nss_nis/nis-alias.c
+++ b/nis/nss_nis/nis-alias.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -245,7 +245,7 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias,
 
   /* Convert name to lowercase.  */
   for (i = 0; i < namlen; ++i)
-    name2[i] = tolower (name[i]);
+    name2[i] = _tolower (name[i]);
   name2[i] = '\0';
 
   retval = yperr2nss (yp_match (domain, "mail.aliases", name2, namlen,
diff --git a/nis/nss_nis/nis-network.c b/nis/nss_nis/nis-network.c
index 7a1b65e584..4e8c94fe9a 100644
--- a/nis/nss_nis/nis-network.c
+++ b/nis/nss_nis/nis-network.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -195,7 +195,7 @@ _nss_nis_getnetbyname_r (const char *name, struct netent *net, char *buffer,
       int i;
 
       for (i = 0; i < namlen; ++i)
-	name2[i] = tolower (name[i]);
+	name2[i] = _tolower (name[i]);
       name2[i] = '\0';
 
       retval = yperr2nss (yp_match (domain, "networks.byname", name2,
diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c
index c1f3c4e4e2..f4f2f2ce68 100644
--- a/nss/nss_files/files-XXX.c
+++ b/nss/nss_files/files-XXX.c
@@ -1,5 +1,5 @@
 /* Common code for file-based databases in nss_files module.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999 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
@@ -162,14 +162,14 @@ CONCAT(_nss_files_end,ENTNAME) (void)
 
 static enum nss_status
 internal_getent (struct STRUCTURE *result,
-		 char *buffer, int buflen, int *errnop H_ERRNO_PROTO)
+		 char *buffer, size_t buflen, int *errnop H_ERRNO_PROTO)
 {
   char *p;
   struct parser_data *data = (void *) buffer;
   int linebuflen = buffer + buflen - data->linebuffer;
   int parse_result;
 
-  if (buflen < (int) sizeof *data + 1)
+  if (buflen < sizeof *data + 2)
     {
       *errnop = ERANGE;
       H_ERRNO_SET (NETDB_INTERNAL);
diff --git a/nss/nss_files/files-alias.c b/nss/nss_files/files-alias.c
index b18361f66c..b9bba9cb8f 100644
--- a/nss/nss_files/files-alias.c
+++ b/nss/nss_files/files-alias.c
@@ -1,5 +1,5 @@
 /* Mail alias file parser in nss_files module.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -148,10 +148,15 @@ get_next_alias (const char *match, struct aliasent *result,
       size_t room_left = buflen - (buflen % __alignof__ (char *));
       char *line;
 
+      /* Check whether the buffer is large enough for even trying to
+         read something.  */
+      if (room_left < 2)
+	goto no_more_room;
+
       /* Read the first line.  It must contain the alias name and
 	 possibly some alias names.  */
       first_unused[room_left - 1] = '\xff';
-      line = fgets (first_unused, room_left, stream);
+      line = fgets_unlocked (first_unused, room_left, stream);
       if (line == NULL)
 	/* Nothing to read.  */
 	break;
@@ -245,7 +250,8 @@ get_next_alias (const char *match, struct aliasent *result,
 			  while (! feof (listfile))
 			    {
 			      first_unused[room_left - 1] = '\xff';
-			      line = fgets (first_unused, room_left, listfile);
+			      line = fgets_unlocked (first_unused, room_left,
+						     listfile);
 			      if (line == NULL)
 				break;
 			      if (first_unused[room_left - 1] != '\xff')
@@ -345,7 +351,7 @@ get_next_alias (const char *match, struct aliasent *result,
 		  /* The just read character is a white space and so
 		     can be ignored.  */
 		  first_unused[room_left - 1] = '\xff';
-		  line = fgets (first_unused, room_left, stream);
+		  line = fgets_unlocked (first_unused, room_left, stream);
 		  if (first_unused[room_left - 1] != '\xff')
 		    goto no_more_room;
 		  cp = strpbrk (line, "#\n");
diff --git a/posix/regex.c b/posix/regex.c
index f05abc805d..74fcf9c45e 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -2,7 +2,7 @@
    version 0.12.
    (Implements POSIX draft P1003.2/D11.2, except for some of the
    internationalization features.)
-   Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
+   Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
 
    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
@@ -254,6 +254,12 @@ init_syntax_once ()
 #define ISUPPER(c) (ISASCII (c) && isupper (c))
 #define ISXDIGIT(c) (ISASCII (c) && isxdigit (c))
 
+#ifdef _tolower
+# define TOLOWER(c) _tolower(c)
+#else
+# define TOLOWER(c) tolower(c)
+#endif
+
 #ifndef NULL
 # define NULL (void *)0
 #endif
@@ -5628,7 +5634,7 @@ regcomp (preg, pattern, cflags)
 
       /* Map uppercase characters to corresponding lowercase ones.  */
       for (i = 0; i < CHAR_SET_SIZE; i++)
-        preg->translate[i] = ISUPPER (i) ? tolower (i) : i;
+        preg->translate[i] = ISUPPER (i) ? TOLOWER (i) : i;
     }
   else
     preg->translate = NULL;
diff --git a/resolv/inet_net_pton.c b/resolv/inet_net_pton.c
index bf6fe02ed8..d3f1350312 100644
--- a/resolv/inet_net_pton.c
+++ b/resolv/inet_net_pton.c
@@ -107,8 +107,7 @@ inet_net_pton_ipv4(src, dst, size)
 		src++;	/* skip x or X. */
 		while ((ch = *src++) != '\0' &&
 		       isascii(ch) && isxdigit(ch)) {
-			if (isupper(ch))
-				ch = tolower(ch);
+			ch = _tolower(ch);
 			n = strchr(xdigits, ch) - xdigits;
 			assert(n >= 0 && n <= 15);
 			*dst |= n;
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 2ec00806d7..bcd8a2d56e 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -1,5 +1,5 @@
 /* Floating point output for `printf'.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
 
@@ -709,7 +709,7 @@ __printf_fp (FILE *fp,
     int dig_max;
     int significant;
 
-    if (tolower (info->spec) == 'e')
+    if (_tolower (info->spec) == 'e')
       {
 	type = info->spec;
 	intdig_max = 1;
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index 174ecf523d..f05fc700dc 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -844,7 +844,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	      ADDW (c);
 	      c = inchar ();
 
-	      if (width != 0 && tolower (c) == 'x')
+	      if (width != 0 && _tolower (c) == 'x')
 		{
 		  if (base == 0)
 		    base = 16;
@@ -883,9 +883,9 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 		 we must recognize "(nil)" as well.  */
 	      if (wpsize == 0 && read_pointer && (width < 0 || width >= 0)
 		  && c == '('
-		  && tolower (inchar ()) == 'n'
-		  && tolower (inchar ()) == 'i'
-		  && tolower (inchar ()) == 'l'
+		  && _tolower (inchar ()) == 'n'
+		  && _tolower (inchar ()) == 'i'
+		  && _tolower (inchar ()) == 'l'
 		  && inchar () == ')')
 		/* We must produce the value of a NULL pointer.  A single
 		   '0' digit is enough.  */
@@ -980,46 +980,46 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	    negative = 0;
 
 	  /* Take care for the special arguments "nan" and "inf".  */
-	  if (tolower (c) == 'n')
+	  if (_tolower (c) == 'n')
 	    {
 	      /* Maybe "nan".  */
 	      ADDW (c);
-	      if (inchar () == EOF || tolower (c) != 'a')
+	      if (inchar () == EOF || _tolower (c) != 'a')
 		input_error ();
 	      ADDW (c);
-	      if (inchar () == EOF || tolower (c) != 'n')
+	      if (inchar () == EOF || _tolower (c) != 'n')
 		input_error ();
 	      ADDW (c);
 	      /* It is "nan".  */
 	      goto scan_float;
 	    }
-	  else if (tolower (c) == 'i')
+	  else if (_tolower (c) == 'i')
 	    {
 	      /* Maybe "inf" or "infinity".  */
 	      ADDW (c);
-	      if (inchar () == EOF || tolower (c) != 'n')
+	      if (inchar () == EOF || _tolower (c) != 'n')
 		input_error ();
 	      ADDW (c);
-	      if (inchar () == EOF || tolower (c) != 'f')
+	      if (inchar () == EOF || _tolower (c) != 'f')
 		input_error ();
 	      ADDW (c);
 	      /* It is as least "inf".  */
 	      if (inchar () != EOF)
 		{
-		  if (tolower (c) == 'i')
+		  if (_tolower (c) == 'i')
 		    {
 		      /* No we have to read the rest as well.  */
 		      ADDW (c);
-		      if (inchar () == EOF || tolower (c) != 'n')
+		      if (inchar () == EOF || _tolower (c) != 'n')
 			input_error ();
 		      ADDW (c);
-		      if (inchar () == EOF || tolower (c) != 'i')
+		      if (inchar () == EOF || _tolower (c) != 'i')
 			input_error ();
 		      ADDW (c);
-		      if (inchar () == EOF || tolower (c) != 't')
+		      if (inchar () == EOF || _tolower (c) != 't')
 			input_error ();
 		      ADDW (c);
-		      if (inchar () == EOF || tolower (c) != 'y')
+		      if (inchar () == EOF || _tolower (c) != 'y')
 			input_error ();
 		      ADDW (c);
 		    }
@@ -1036,7 +1036,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	    {
 	      ADDW (c);
 	      c = inchar ();
-	      if (tolower (c) == 'x')
+	      if (_tolower (c) == 'x')
 		{
 		  /* It is a number in hexadecimal format.  */
 		  ADDW (c);
@@ -1060,7 +1060,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	      else if (got_e && wp[wpsize - 1] == exp_char
 		       && (c == '-' || c == '+'))
 		ADDW (c);
-	      else if (wpsize > 0 && !got_e && tolower (c) == exp_char)
+	      else if (wpsize > 0 && !got_e && _tolower (c) == exp_char)
 		{
 		  ADDW (exp_char);
 		  got_e = got_dot = 1;
diff --git a/sysdeps/generic/strcasestr.c b/sysdeps/generic/strcasestr.c
index a5786fac58..794b50beff 100644
--- a/sysdeps/generic/strcasestr.c
+++ b/sysdeps/generic/strcasestr.c
@@ -1,5 +1,5 @@
 /* Return the offset of one string within another.
-   Copyright (C) 1994, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1996, 1997, 1998, 1999 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
@@ -52,7 +52,7 @@ __strcasestr (phaystack, pneedle)
   haystack = (const unsigned char *) phaystack;
   needle = (const unsigned char *) pneedle;
 
-  b = tolower (*needle);
+  b = _tolower (*needle);
   if (b != '\0')
     {
       haystack--;				/* possible ANSI violation */
@@ -62,9 +62,9 @@ __strcasestr (phaystack, pneedle)
 	  if (c == '\0')
 	    goto ret0;
 	}
-      while (tolower (c) != b);
+      while (_tolower (c) != b);
 
-      c = tolower (*++needle);
+      c = _tolower (*++needle);
       if (c == '\0')
 	goto foundneedle;
       ++needle;
@@ -80,40 +80,40 @@ __strcasestr (phaystack, pneedle)
 	      a = *++haystack;
 	      if (a == '\0')
 		goto ret0;
-	      if (tolower (a) == b)
+	      if (_tolower (a) == b)
 		break;
 	      a = *++haystack;
 	      if (a == '\0')
 		goto ret0;
 shloop:	    }
-          while (tolower (a) != b);
+          while (_tolower (a) != b);
 
 jin:	  a = *++haystack;
 	  if (a == '\0')
 	    goto ret0;
 
-	  if (tolower (a) != c)
+	  if (_tolower (a) != c)
 	    goto shloop;
 
 	  rhaystack = haystack-- + 1;
 	  rneedle = needle;
-	  a = tolower (*rneedle);
+	  a = _tolower (*rneedle);
 
-	  if (tolower (*rhaystack) == a)
+	  if (_tolower (*rhaystack) == a)
 	    do
 	      {
 		if (a == '\0')
 		  goto foundneedle;
 		++rhaystack;
-		a = tolower (*++needle);
-		if (tolower (*rhaystack) != a)
+		a = _tolower (*++needle);
+		if (_tolower (*rhaystack) != a)
 		  break;
 		if (a == '\0')
 		  goto foundneedle;
 		++rhaystack;
-		a = tolower (*++needle);
+		a = _tolower (*++needle);
 	      }
-	    while (tolower (*rhaystack) == a);
+	    while (_tolower (*rhaystack) == a);
 
 	  needle = rneedle;		/* took the register-poor approach */