about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog23
-rw-r--r--include/aliases.h19
-rw-r--r--include/netdb.h58
-rw-r--r--include/rpc/netdb.h23
-rw-r--r--inet/getnameinfo.c18
-rw-r--r--inet/netinet/in.h54
-rw-r--r--inet/rcmd.c2
-rw-r--r--inet/ruserpass.c2
-rw-r--r--string/strcoll.c2
-rw-r--r--string/strnlen.c4
-rw-r--r--string/strxfrm.c4
-rw-r--r--sysdeps/generic/_strerror.c2
-rw-r--r--sysdeps/generic/memrchr.c2
-rw-r--r--sysdeps/generic/strcasestr.c20
-rw-r--r--sysdeps/generic/strstr.c6
15 files changed, 191 insertions, 48 deletions
diff --git a/ChangeLog b/ChangeLog
index b0a4c15858..040e0c01f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2000-11-26  Ulrich Drepper  <drepper@redhat.com>
+
+	* inet/getnameinfo.c: Adjust casts to avoid warnings.
+	* inet/rcmd.c: Likewise.
+	* inet/ruserpass.c: Likewise.
+	* inet/netinet/in.h (IN6_IS_ADDR_UNSPECIFIED, IN6_IS_ADDR_LOOPBACK,
+	IN6_IS_ADDR_MULTICAST, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_SITELOCAL,
+	IN6_IS_ADDR_V4MAPPED, IN6_IS_ADDR_V4COMPAT, IN6_ARE_ADDR_EQUAL,
+	IN6_IS_ADDR_MC_NODELOCAL, IN6_IS_ADDR_MC_LINKLOCAL,
+	IN6_IS_ADDR_MC_SITELOCAL, IN6_IS_ADDR_MC_ORGLOCAL,
+	IN6_IS_ADDR_MC_GLOBAL): Preserve const in cast.
+	* include/aliases.h: Add prototypes for internal __getalias* functions.
+	* include/netdb.h: Add prototypes for __old_gethostent_r,
+	__old_gethostbyaddr_r, __old_gethostbyname_r, __old_gethostbyname2_r,
+	__old_getnetent_r, __old_getnetbyaddr_r, __old_getnetbyname_r,
+	__old_getservent_r, __old_getservbyname_r, __old_getservbyport_r,
+	__old_getprotoent_r, __old_getprotobyname_r, __old_getprotobynumber_r.
+	* include/rpc/netdb.h: Add prototypes for __old_getrpcbyname_r,
+	__old_getrpcbynumber_r, __old_getrpcent_r.
+
+	* include/rpc/netdb.h: Add __getrpcbyname_r, __getrpcbynumber_r,
+	__getrpcent_r prototypes.
+
 2000-11-25  Ulrich Drepper  <drepper@redhat.com>
 
 	* string/strcoll.c: Add casts to avoid warnings.
diff --git a/include/aliases.h b/include/aliases.h
index cfe459d02d..3932e52097 100644
--- a/include/aliases.h
+++ b/include/aliases.h
@@ -1 +1,20 @@
+#ifndef _ALIASES_H
 #include <inet/aliases.h>
+
+extern int __getaliasent_r (struct aliasent *__restrict __result_buf,
+			    char *__restrict __buffer, size_t __buflen,
+			    struct aliasent **__restrict __result);
+extern int __old_getaliasent_r (struct aliasent *__restrict __result_buf,
+				char *__restrict __buffer, size_t __buflen,
+				struct aliasent **__restrict __result);
+
+extern int __getaliasbyname_r (__const char *__restrict __name,
+			       struct aliasent *__restrict __result_buf,
+			       char *__restrict __buffer, size_t __buflen,
+			       struct aliasent **__restrict __result);
+extern int __old_getaliasbyname_r (__const char *__restrict __name,
+				   struct aliasent *__restrict __result_buf,
+				   char *__restrict __buffer, size_t __buflen,
+				   struct aliasent **__restrict __result);
+
+#endif
diff --git a/include/netdb.h b/include/netdb.h
index f30d46f222..6a60d4ec8c 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -6,6 +6,10 @@ extern int __gethostent_r (struct hostent *__restrict __result_buf,
 			   char *__restrict __buf, size_t __buflen,
 			   struct hostent **__restrict __result,
 			   int *__restrict __h_errnop);
+extern int __old_gethostent_r (struct hostent *__restrict __result_buf,
+			       char *__restrict __buf, size_t __buflen,
+			       struct hostent **__restrict __result,
+			       int *__restrict __h_errnop);
 
 extern int __gethostbyaddr_r (__const void *__restrict __addr,
 			      socklen_t __len, int __type,
@@ -13,65 +17,119 @@ extern int __gethostbyaddr_r (__const void *__restrict __addr,
 			      char *__restrict __buf, size_t __buflen,
 			      struct hostent **__restrict __result,
 			      int *__restrict __h_errnop);
+extern int __old_gethostbyaddr_r (__const void *__restrict __addr,
+				  socklen_t __len, int __type,
+				  struct hostent *__restrict __result_buf,
+				  char *__restrict __buf, size_t __buflen,
+				  struct hostent **__restrict __result,
+				  int *__restrict __h_errnop);
 
 extern int __gethostbyname_r (__const char *__restrict __name,
 			      struct hostent *__restrict __result_buf,
 			      char *__restrict __buf, size_t __buflen,
 			      struct hostent **__restrict __result,
 			      int *__restrict __h_errnop);
+extern int __old_gethostbyname_r (__const char *__restrict __name,
+				  struct hostent *__restrict __result_buf,
+				  char *__restrict __buf, size_t __buflen,
+				  struct hostent **__restrict __result,
+				  int *__restrict __h_errnop);
 
 extern int __gethostbyname2_r (__const char *__restrict __name, int __af,
 			       struct hostent *__restrict __result_buf,
 			       char *__restrict __buf, size_t __buflen,
 			       struct hostent **__restrict __result,
 			       int *__restrict __h_errnop);
+extern int __old_gethostbyname2_r (__const char *__restrict __name, int __af,
+				   struct hostent *__restrict __result_buf,
+				   char *__restrict __buf, size_t __buflen,
+				   struct hostent **__restrict __result,
+				   int *__restrict __h_errnop);
 
 extern int __getnetent_r (struct netent *__restrict __result_buf,
 			  char *__restrict __buf, size_t __buflen,
 			  struct netent **__restrict __result,
 			  int *__restrict __h_errnop);
+extern int __old_getnetent_r (struct netent *__restrict __result_buf,
+			      char *__restrict __buf, size_t __buflen,
+			      struct netent **__restrict __result,
+			      int *__restrict __h_errnop);
 
 extern int __getnetbyaddr_r (uint32_t __net, int __type,
 			     struct netent *__restrict __result_buf,
 			     char *__restrict __buf, size_t __buflen,
 			     struct netent **__restrict __result,
 			     int *__restrict __h_errnop);
+extern int __old_getnetbyaddr_r (uint32_t __net, int __type,
+				 struct netent *__restrict __result_buf,
+				 char *__restrict __buf, size_t __buflen,
+				 struct netent **__restrict __result,
+				 int *__restrict __h_errnop);
 
 extern int __getnetbyname_r (__const char *__restrict __name,
 			     struct netent *__restrict __result_buf,
 			     char *__restrict __buf, size_t __buflen,
 			     struct netent **__restrict __result,
 			     int *__restrict __h_errnop);
+extern int __old_getnetbyname_r (__const char *__restrict __name,
+				 struct netent *__restrict __result_buf,
+				 char *__restrict __buf, size_t __buflen,
+				 struct netent **__restrict __result,
+				 int *__restrict __h_errnop);
 
 extern int __getservent_r (struct servent *__restrict __result_buf,
 			   char *__restrict __buf, size_t __buflen,
 			   struct servent **__restrict __result);
+extern int __old_getservent_r (struct servent *__restrict __result_buf,
+			       char *__restrict __buf, size_t __buflen,
+			       struct servent **__restrict __result);
 
 extern int __getservbyname_r (__const char *__restrict __name,
 			      __const char *__restrict __proto,
 			      struct servent *__restrict __result_buf,
 			      char *__restrict __buf, size_t __buflen,
 			      struct servent **__restrict __result);
+extern int __old_getservbyname_r (__const char *__restrict __name,
+				  __const char *__restrict __proto,
+				  struct servent *__restrict __result_buf,
+				  char *__restrict __buf, size_t __buflen,
+				  struct servent **__restrict __result);
 
 extern int __getservbyport_r (int __port,
 			      __const char *__restrict __proto,
 			      struct servent *__restrict __result_buf,
 			      char *__restrict __buf, size_t __buflen,
 			      struct servent **__restrict __result);
+extern int __old_getservbyport_r (int __port,
+				  __const char *__restrict __proto,
+				  struct servent *__restrict __result_buf,
+				  char *__restrict __buf, size_t __buflen,
+				  struct servent **__restrict __result);
 
 extern int __getprotoent_r (struct protoent *__restrict __result_buf,
 			    char *__restrict __buf, size_t __buflen,
 			    struct protoent **__restrict __result);
+extern int __old_getprotoent_r (struct protoent *__restrict __result_buf,
+				char *__restrict __buf, size_t __buflen,
+				struct protoent **__restrict __result);
 
 extern int __getprotobyname_r (__const char *__restrict __name,
 			       struct protoent *__restrict __result_buf,
 			       char *__restrict __buf, size_t __buflen,
 			       struct protoent **__restrict __result);
+extern int __old_getprotobyname_r (__const char *__restrict __name,
+				   struct protoent *__restrict __result_buf,
+				   char *__restrict __buf, size_t __buflen,
+				   struct protoent **__restrict __result);
 
 extern int __getprotobynumber_r (int __proto,
 				 struct protoent *__restrict __res_buf,
 				 char *__restrict __buf, size_t __buflen,
 				 struct protoent **__restrict __result);
+extern int __old_getprotobynumber_r (int __proto,
+				     struct protoent *__restrict __res_buf,
+				     char *__restrict __buf, size_t __buflen,
+				     struct protoent **__restrict __result);
 
 extern int __getnetgrent_r (char **__restrict __hostp,
 			    char **__restrict __userp,
diff --git a/include/rpc/netdb.h b/include/rpc/netdb.h
index a9d93e13ad..54a4b70052 100644
--- a/include/rpc/netdb.h
+++ b/include/rpc/netdb.h
@@ -1 +1,24 @@
+#ifndef _RPC_NETDB_H
 #include <sunrpc/rpc/netdb.h>
+
+extern int __getrpcbyname_r (__const char *__name, struct rpcent *__result_buf,
+			     char *__buffer, size_t __buflen,
+			     struct rpcent **__result);
+extern int __old_getrpcbyname_r (__const char *__name,
+				 struct rpcent *__result_buf,
+				 char *__buffer, size_t __buflen,
+				 struct rpcent **__result);
+
+extern int __getrpcbynumber_r (int __number, struct rpcent *__result_buf,
+			       char *__buffer, size_t __buflen,
+			       struct rpcent **__result);
+extern int __old_getrpcbynumber_r (int __number, struct rpcent *__result_buf,
+				   char *__buffer, size_t __buflen,
+				   struct rpcent **__result);
+
+extern int __getrpcent_r (struct rpcent *__result_buf, char *__buffer,
+			  size_t __buflen, struct rpcent **__result);
+extern int __old_getrpcent_r (struct rpcent *__result_buf, char *__buffer,
+			      size_t __buflen, struct rpcent **__result);
+
+#endif
diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c
index 25a8af7a6c..435ba76ee5 100644
--- a/inet/getnameinfo.c
+++ b/inet/getnameinfo.c
@@ -211,7 +211,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
 	      {
 		if (sa->sa_family == AF_INET6)
 		  {
-		    while (__gethostbyaddr_r ((void *) &(((struct sockaddr_in6 *) sa)->sin6_addr),
+		    while (__gethostbyaddr_r ((const void *) &(((const struct sockaddr_in6 *) sa)->sin6_addr),
 					      sizeof(struct in6_addr),
 					      AF_INET6, &th, tmpbuf, tmpbuflen,
 					      &h, &herrno))
@@ -238,7 +238,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
 		  }
 		else
 		  {
-		    while (__gethostbyaddr_r ((void *) &(((struct sockaddr_in *)sa)->sin_addr),
+		    while (__gethostbyaddr_r ((const void *) &(((const struct sockaddr_in *)sa)->sin_addr),
 					      sizeof(struct in_addr), AF_INET,
 					      &th, tmpbuf, tmpbuflen,
 					      &h, &herrno))
@@ -290,11 +290,13 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
 		const char *c;
 		if (sa->sa_family == AF_INET6)
 		  {
-		    struct sockaddr_in6 *sin6p = (struct sockaddr_in6 *) sa;
+		    const struct sockaddr_in6 *sin6p;
 		    uint32_t scopeid;
 
+		    sin6p = (const struct sockaddr_in6 *) sa;
+
 		    c = inet_ntop (AF_INET6,
-				   (void *) &sin6p->sin6_addr, host, hostlen);
+				   (const void *) &sin6p->sin6_addr, host, hostlen);
 		    scopeid = sin6p->sin6_scope_id;
 		    if (scopeid != 0)
 		      {
@@ -336,7 +338,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
 		  }
 		else
 		  c = inet_ntop (AF_INET,
-				 (void *) &(((struct sockaddr_in *) sa)->sin_addr),
+				 (const void *) &(((const struct sockaddr_in *) sa)->sin_addr),
 				 host, hostlen);
 		if (c == NULL)
 		  {
@@ -381,7 +383,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
 	if (!(flags & NI_NUMERICSERV))
 	  {
 	    struct servent *s, ts;
-	    while (__getservbyport_r (((struct sockaddr_in *) sa)->sin_port,
+	    while (__getservbyport_r (((const struct sockaddr_in *) sa)->sin_port,
 				      ((flags & NI_DGRAM) ? "udp" : "tcp"),
 				      &ts, tmpbuf, tmpbuflen, &s))
 	      {
@@ -410,11 +412,11 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
 	      }
 	  }
 	__snprintf (serv, servlen, "%d",
-		    ntohs (((struct sockaddr_in *) sa)->sin_port));
+		    ntohs (((const struct sockaddr_in *) sa)->sin_port));
 	break;
 
       case AF_LOCAL:
-	strncpy (serv, ((struct sockaddr_un *) sa)->sun_path, servlen);
+	strncpy (serv, ((const struct sockaddr_un *) sa)->sun_path, servlen);
 	break;
     }
 
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index 1857c199cb..4bceaef869 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -268,34 +268,43 @@ extern uint16_t htons (uint16_t __hostshort)
 #endif
 
 #define IN6_IS_ADDR_UNSPECIFIED(a) \
-	(((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
-	 ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0)
+	(((__const uint32_t *) (a))[0] == 0				      \
+	 && ((__const uint32_t *) (a))[1] == 0				      \
+	 && ((__const uint32_t *) (a))[2] == 0				      \
+	 && ((__const uint32_t *) (a))[3] == 0)
 
 #define IN6_IS_ADDR_LOOPBACK(a) \
-	(((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
-	 ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == htonl (1))
+	(((__const uint32_t *) (a))[0] == 0				      \
+	 && ((__const uint32_t *) (a))[1] == 0				      \
+	 && ((__const uint32_t *) (a))[2] == 0				      \
+	 && ((__const uint32_t *) (a))[3] == htonl (1))
 
-#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)
+#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
 
 #define IN6_IS_ADDR_LINKLOCAL(a) \
-	((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))
+	((((__const uint32_t *) (a))[0] & htonl (0xffc00000))		      \
+	 == htonl (0xfe800000))
 
 #define IN6_IS_ADDR_SITELOCAL(a) \
-	((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfec00000))
+	((((__const uint32_t *) (a))[0] & htonl (0xffc00000))		      \
+	 == htonl (0xfec00000))
 
 #define IN6_IS_ADDR_V4MAPPED(a) \
-	((((uint32_t *) (a))[0] == 0) && (((uint32_t *) (a))[1] == 0) && \
-	 (((uint32_t *) (a))[2] == htonl (0xffff)))
+	((((__const uint32_t *) (a))[0] == 0)				      \
+	 && (((__const uint32_t *) (a))[1] == 0)			      \
+	 && (((__const uint32_t *) (a))[2] == htonl (0xffff)))
 
 #define IN6_IS_ADDR_V4COMPAT(a) \
-	((((uint32_t *) (a))[0] == 0) && (((uint32_t *) (a))[1] == 0) && \
-	 (((uint32_t *) (a))[2] == 0) && (ntohl (((uint32_t *) (a))[3]) > 1))
+	((((__const uint32_t *) (a))[0] == 0)				      \
+	 && (((__const uint32_t *) (a))[1] == 0)			      \
+	 && (((__const uint32_t *) (a))[2] == 0)			      \
+	 && (ntohl (((__const uint32_t *) (a))[3]) > 1))
 
 #define IN6_ARE_ADDR_EQUAL(a,b) \
-	((((uint32_t *) (a))[0] == ((uint32_t *) (b))[0]) && \
-	 (((uint32_t *) (a))[1] == ((uint32_t *) (b))[1]) && \
-	 (((uint32_t *) (a))[2] == ((uint32_t *) (b))[2]) && \
-	 (((uint32_t *) (a))[3] == ((uint32_t *) (b))[3]))
+	((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0])     \
+	 && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1])  \
+	 && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2])  \
+	 && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
 
 /* Bind socket to a privileged IP port.  */
 extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW;
@@ -306,19 +315,24 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
 
 
 #define IN6_IS_ADDR_MC_NODELOCAL(a) \
-	(IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1))
+	(IN6_IS_ADDR_MULTICAST(a)					      \
+	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
 
 #define IN6_IS_ADDR_MC_LINKLOCAL(a) \
-	(IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2))
+	(IN6_IS_ADDR_MULTICAST(a)					      \
+	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2))
 
 #define IN6_IS_ADDR_MC_SITELOCAL(a) \
-	(IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5))
+	(IN6_IS_ADDR_MULTICAST(a)					      \
+	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5))
 
 #define IN6_IS_ADDR_MC_ORGLOCAL(a) \
-	(IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8))
+	(IN6_IS_ADDR_MULTICAST(a)					      \
+	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8))
 
 #define IN6_IS_ADDR_MC_GLOBAL(a) \
-	(IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
+	(IN6_IS_ADDR_MULTICAST(a)					      \
+	 && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
 
 /* IPv6 packet information.  */
 struct in6_pktinfo
diff --git a/inet/rcmd.c b/inet/rcmd.c
index 1ddf4729da..a85cce6be0 100644
--- a/inet/rcmd.c
+++ b/inet/rcmd.c
@@ -215,7 +215,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
 			goto bad;
 		listen(s2, 1);
 		(void)__snprintf(num, sizeof(num), "%d", lport);
-		if (__write(s, num, strlen(num)+1) != strlen(num)+1) {
+		if (__write(s, num, strlen(num)+1) != (ssize_t)strlen(num)+1) {
 			(void)fprintf(stderr,
 			    _("rcmd: write (setting up stderr): %m\n"));
 			(void)__close(s2);
diff --git a/inet/ruserpass.c b/inet/ruserpass.c
index 3b66c3040e..d610f4240d 100644
--- a/inet/ruserpass.c
+++ b/inet/ruserpass.c
@@ -317,7 +317,7 @@ token()
 	*cp = 0;
 	if (tokval[0] == 0)
 		return (0);
-	for (i = 0; i < sizeof (toktab) / sizeof (toktab[0]); ++i)
+	for (i = 0; i < (int) (sizeof (toktab) / sizeof (toktab[0])); ++i)
 		if (!strcmp(&tokstr[toktab[i].tokstr_off], tokval))
 			return toktab[i].tval;
 	return (ID);
diff --git a/string/strcoll.c b/string/strcoll.c
index 49725e1a69..64e00a251a 100644
--- a/string/strcoll.c
+++ b/string/strcoll.c
@@ -59,7 +59,7 @@ STRCOLL (s1, s2, l)
 {
 #ifdef USE_IN_EXTENDED_LOCALE_MODEL
   struct locale_data *current = l->__locales[LC_COLLATE];
-  uint_fast32_t nrules = *((uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string);
+  uint_fast32_t nrules = *((const uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string);
 #else
   uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
 #endif
diff --git a/string/strnlen.c b/string/strnlen.c
index 17b1193f0b..a50226f5fc 100644
--- a/string/strnlen.c
+++ b/string/strnlen.c
@@ -1,5 +1,5 @@
 /* Find the length of STRING, but scan at most MAXLEN characters.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 2000 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
@@ -26,6 +26,6 @@ size_t
 __strnlen (const char *string, size_t maxlen)
 {
   const char *end = memchr (string, '\0', maxlen);
-  return end ? end - string : maxlen;
+  return end ? (size_t) (end - string) : maxlen;
 }
 weak_alias (__strnlen, strnlen)
diff --git a/string/strxfrm.c b/string/strxfrm.c
index df44586a04..4a97c3e1cc 100644
--- a/string/strxfrm.c
+++ b/string/strxfrm.c
@@ -95,7 +95,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
 {
 #ifdef USE_IN_EXTENDED_LOCALE_MODEL
   struct locale_data *current = l->__locales[LC_COLLATE];
-  uint_fast32_t nrules = *((uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string);
+  uint_fast32_t nrules = *((const uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string);
 #else
   uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
 #endif
@@ -393,7 +393,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
 	      rule = rulesets[rulearr[idxcnt + 1] * nrules + pass];
 	    }
 
-	  if (backw_stop != ~0)
+	  if (backw_stop != ~0ul)
 	    {
 	      /* Handle the pushed elements now.  */
 	      size_t backw;
diff --git a/sysdeps/generic/_strerror.c b/sysdeps/generic/_strerror.c
index ae520f32fc..123331ac05 100644
--- a/sysdeps/generic/_strerror.c
+++ b/sysdeps/generic/_strerror.c
@@ -56,7 +56,7 @@ __strerror_r (int errnum, char *buf, size_t buflen)
 	 buffer size.  */
       q = __mempcpy (buf, unk, MIN (unklen, buflen));
       if (unklen < buflen)
-	memcpy (q, p, MIN (&numbuf[21] - p, buflen - unklen));
+	memcpy (q, p, MIN ((size_t) (&numbuf[21] - p), buflen - unklen));
 
       /* Terminate the string in any case.  */
       if (buflen > 0)
diff --git a/sysdeps/generic/memrchr.c b/sysdeps/generic/memrchr.c
index 6fa918d26e..d1c06e041a 100644
--- a/sysdeps/generic/memrchr.c
+++ b/sysdeps/generic/memrchr.c
@@ -86,7 +86,7 @@ __memrchr (s, c_in, n)
   /* All these elucidatory comments refer to 4-byte longwords,
      but the theory applies equally well to 8-byte longwords.  */
 
-  longword_ptr = (unsigned long int *) char_ptr;
+  longword_ptr = (const unsigned long int *) char_ptr;
 
   /* Bits 31, 24, 16, and 8 of this number are zero.  Call these bits
      the "holes."  Note that there is a hole just to the left of
diff --git a/sysdeps/generic/strcasestr.c b/sysdeps/generic/strcasestr.c
index 794b50beff..5fe1b10934 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, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1994,1996,1997,1998,1999,2000 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
@@ -62,7 +62,7 @@ __strcasestr (phaystack, pneedle)
 	  if (c == '\0')
 	    goto ret0;
 	}
-      while (_tolower (c) != b);
+      while (_tolower (c) != (int) b);
 
       c = _tolower (*++needle);
       if (c == '\0')
@@ -80,40 +80,42 @@ __strcasestr (phaystack, pneedle)
 	      a = *++haystack;
 	      if (a == '\0')
 		goto ret0;
-	      if (_tolower (a) == b)
+	      if (_tolower (a) == (int) b)
 		break;
 	      a = *++haystack;
 	      if (a == '\0')
 		goto ret0;
-shloop:	    }
-          while (_tolower (a) != b);
+shloop:
+	      ;
+	    }
+          while (_tolower (a) != (int) b);
 
 jin:	  a = *++haystack;
 	  if (a == '\0')
 	    goto ret0;
 
-	  if (_tolower (a) != c)
+	  if (_tolower (a) != (int) c)
 	    goto shloop;
 
 	  rhaystack = haystack-- + 1;
 	  rneedle = needle;
 	  a = _tolower (*rneedle);
 
-	  if (_tolower (*rhaystack) == a)
+	  if (_tolower (*rhaystack) == (int) a)
 	    do
 	      {
 		if (a == '\0')
 		  goto foundneedle;
 		++rhaystack;
 		a = _tolower (*++needle);
-		if (_tolower (*rhaystack) != a)
+		if (_tolower (*rhaystack) != (int) a)
 		  break;
 		if (a == '\0')
 		  goto foundneedle;
 		++rhaystack;
 		a = _tolower (*++needle);
 	      }
-	    while (_tolower (*rhaystack) == a);
+	    while (_tolower (*rhaystack) == (int) a);
 
 	  needle = rneedle;		/* took the register-poor approach */
 
diff --git a/sysdeps/generic/strstr.c b/sysdeps/generic/strstr.c
index 03d6c8e5fc..6bf92e7473 100644
--- a/sysdeps/generic/strstr.c
+++ b/sysdeps/generic/strstr.c
@@ -1,5 +1,5 @@
 /* Return the offset of one string within another.
-   Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1996, 1997, 2000 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
@@ -82,7 +82,9 @@ strstr (phaystack, pneedle)
 	      a = *++haystack;
 	      if (a == '\0')
 		goto ret0;
-shloop:	    }
+shloop:
+	      ;
+	    }
           while (a != b);
 
 jin:	  a = *++haystack;