Sun Jan 14 01:01:10 1996 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
authorRoland McGrath <roland@gnu.org>
Wed, 17 Jan 1996 00:46:59 +0000 (00:46 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 17 Jan 1996 00:46:59 +0000 (00:46 +0000)
* stdlib/strtol.c: Return correct pointer for strings
like "0xyz" and base 0 or 16.

* string/strxfrm.c: Handle case for LENGTH == 0 correct.

* sunrpc/etc.rpc: Add some more known protocols.
Sun Jan 14 01:01:10 1996  Ulrich Drepper  <drepper@ipd.info.uni-karlsruhe.de>

* stdlib/strtol.c: Return correct pointer for strings
like "0xyz" and base 0 or 16.

* string/strxfrm.c: Handle case for LENGTH == 0 correct.

* sunrpc/etc.rpc: Add some more known protocols.

ChangeLog
stdlib/strtol.c
string/strxfrm.c
sunrpc/etc.rpc

index c5a460a..9febaf1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Sun Jan 14 01:01:10 1996  Ulrich Drepper  <drepper@ipd.info.uni-karlsruhe.de>
+
+       * stdlib/strtol.c: Return correct pointer for strings
+       like "0xyz" and base 0 or 16.
+
+       * string/strxfrm.c: Handle case for LENGTH == 0 correct.
+
+       * sunrpc/etc.rpc: Add some more known protocols.
+
 Fri Jan 12 13:40:01 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
        * posix/gnu/types.h: Moved to sysdeps/generic/gnu/types.h.
index d52f338..b06063c 100644 (file)
@@ -150,7 +150,7 @@ INTERNAL (strtol) (nptr, endptr, base, group)
   if (base < 0 || base == 1 || base > 36)
     base = 10;
 
-  s = nptr;
+  save = s = nptr;
 
   /* Skip white space.  */
   while (isspace (*s))
@@ -269,9 +269,17 @@ INTERNAL (strtol) (nptr, endptr, base, group)
   return (negative ? -i : i);
 
 noconv:
-  /* There was no number to convert.  */
+  /* We must handle a special case here: the base is 0 or 16 and the
+     first two characters and '0' and 'x', but the rest are no
+     hexadecimal digits.  This is no error case.  We return 0 and
+     ENDPTR points to the `x`.  */
   if (endptr != NULL)
-    *endptr = (char *) nptr;
+    if (save - nptr >= 2 && tolower (save[-1]) == 'x' && save[-2] == '0')
+      *endptr = (char *) &save[-1];
+    else
+      /*  There was no number to convert.  */
+      *endptr = (char *) nptr;
+
   return 0L;
 }
 \f
index 513a4b6..e40ae1c 100644 (file)
@@ -32,5 +32,8 @@ strxfrm (dest, src, n)
      const char *src;
      size_t n;
 {
+  if (n == 0)
+    return strlen (src);
+
   return __stpncpy (dest, src, n) - dest;
 }
index bebfb51..6367ff4 100644 (file)
@@ -31,3 +31,6 @@ keyserv               100029  keyserver
 tfsd           100037 
 nsed           100038
 nsemntd                100039
+pcnfsd         150001
+amd            300019  amq
+bwnfsd         545580417