X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmemchr2.c;h=b8816a5959d94d760585ed482ec1f90fd1a9421a;hb=66f5e6513c46dffcb40b216e3709b84ab5fbc392;hp=ad78195ee393ac4471f44196933a605394d09980;hpb=8b8527c54ce6fc1331805d44bd2c556b58976844;p=gnulib.git diff --git a/lib/memchr2.c b/lib/memchr2.c index ad78195ee..b8816a595 100644 --- a/lib/memchr2.c +++ b/lib/memchr2.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2006, - 2008 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2012 + Free Software Foundation, Inc. Based on strlen implementation by Torbjorn Granlund (tege@sics.se), with help from Dan Sahlin (dan@sics.se) and @@ -84,16 +84,16 @@ memchr2 (void const *s, int c1_in, int c2_in, size_t n) repeated_c1 |= repeated_c1 << 31 << 1; repeated_c2 |= repeated_c2 << 31 << 1; if (8 < sizeof (longword)) - { - size_t i; - - for (i = 64; i < sizeof (longword) * 8; i *= 2) - { - repeated_one |= repeated_one << i; - repeated_c1 |= repeated_c1 << i; - repeated_c2 |= repeated_c2 << i; - } - } + { + size_t i; + + for (i = 64; i < sizeof (longword) * 8; i *= 2) + { + repeated_one |= repeated_one << i; + repeated_c1 |= repeated_c1 << i; + repeated_c2 |= repeated_c2 << i; + } + } } /* Instead of the traditional loop which tests each byte, we will test a @@ -125,7 +125,7 @@ memchr2 (void const *s, int c1_in, int c2_in, size_t n) significant bytes (positions j+1..3), but it does not matter since we already have a non-zero bit at position 8*j+7. - Similary, we compute tmp2 = + Similarly, we compute tmp2 = ((longword2 - repeated_one) & ~longword2) & (repeated_one << 7). The test whether any byte in longword1 or longword2 is zero is equivalent @@ -138,9 +138,9 @@ memchr2 (void const *s, int c1_in, int c2_in, size_t n) longword longword2 = *longword_ptr ^ repeated_c2; if (((((longword1 - repeated_one) & ~longword1) - | ((longword2 - repeated_one) & ~longword2)) - & (repeated_one << 7)) != 0) - break; + | ((longword2 - repeated_one) & ~longword2)) + & (repeated_one << 7)) != 0) + break; longword_ptr++; n -= sizeof (longword); } @@ -157,7 +157,7 @@ memchr2 (void const *s, int c1_in, int c2_in, size_t n) for (; n > 0; --n, ++char_ptr) { if (*char_ptr == c1 || *char_ptr == c2) - return (void *) char_ptr; + return (void *) char_ptr; } return NULL;