autoupdate
[gnulib.git] / lib / memrchr.c
index 2796dea..5a023e0 100644 (file)
@@ -1,7 +1,7 @@
 /* memrchr -- find the last occurrence of a byte in a memory block
 
-   Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2005,
-   2006, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2013 Free Software
+   Foundation, Inc.
 
    Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
    with help from Dan Sahlin (dan@sics.se) and
@@ -32,8 +32,6 @@
 #include <string.h>
 #include <limits.h>
 
-#include "intprops.h"
-
 #undef __memrchr
 #ifdef _LIBC
 # undef memrchr
@@ -52,7 +50,7 @@ __memrchr (void const *s, int c_in, size_t n)
      performance.  On 64-bit hardware, unsigned long is generally 64
      bits already.  Change this typedef to experiment with
      performance.  */
-  typedef unsigned long longword;
+  typedef unsigned long int longword;
 
   const unsigned char *char_ptr;
   const longword *longword_ptr;
@@ -81,20 +79,20 @@ __memrchr (void const *s, int c_in, size_t n)
   repeated_one = 0x01010101;
   repeated_c = c | (c << 8);
   repeated_c |= repeated_c << 16;
-  if (0xffffffffU < TYPE_MAXIMUM (longword))
+  if (0xffffffffU < (longword) -1)
     {
       repeated_one |= repeated_one << 31 << 1;
       repeated_c |= repeated_c << 31 << 1;
       if (8 < sizeof (longword))
-       {
-         size_t i;
-
-         for (i = 64; i < sizeof (longword) * 8; i *= 2)
-           {
-             repeated_one |= repeated_one << i;
-             repeated_c |= repeated_c << i;
-           }
-       }
+        {
+          size_t i;
+
+          for (i = 64; i < sizeof (longword) * 8; i *= 2)
+            {
+              repeated_one |= repeated_one << i;
+              repeated_c |= repeated_c << i;
+            }
+        }
     }
 
   /* Instead of the traditional loop which tests each byte, we will test a
@@ -133,11 +131,11 @@ __memrchr (void const *s, int c_in, size_t n)
       longword longword1 = *--longword_ptr ^ repeated_c;
 
       if ((((longword1 - repeated_one) & ~longword1)
-          & (repeated_one << 7)) != 0)
-       {
-         longword_ptr++;
-         break;
-       }
+           & (repeated_one << 7)) != 0)
+        {
+          longword_ptr++;
+          break;
+        }
       n -= sizeof (longword);
     }
 
@@ -153,7 +151,7 @@ __memrchr (void const *s, int c_in, size_t n)
   while (n-- > 0)
     {
       if (*--char_ptr == c)
-       return (void *) char_ptr;
+        return (void *) char_ptr;
     }
 
   return NULL;