lkml.org 
[lkml]   [2008]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH]: improved strnicmp in lib/string.c
On Wed, May 07, 2008 at 11:51:09PM +0530, Soumyadip Das Mahapatra wrote:
> This is somewhat improved version of strnicmp() function in lib/string.c.

Familiarize youself with coding style before sending patches, see
kernel/sched.c , fs/dcache.c for good examples.

>I have implemented binary
> comparison rather than linear one(which was in the older version).

Obviously buggy.

> --- 2.6.25-vanilla/lib/string.c
> +++ 2.6.25-hacked/lib/string.c
> @@ -31,32 +10,43 @@
> * @s2: The other string
> * @len: the maximum number of characters to compare
> */
> +/* This is somewhat faster
> + * method compared to the
> + * olderone (in case of a large string)
> + */
> int strnicmp(const char *s1, const char *s2, size_t len)
> {
> - /* Yes, Virginia, it had better be unsigned */
> - unsigned char c1, c2;
> -
> - c1 = c2 = 0;
> - if (len) {
> - do {
> - c1 = *s1;
> - c2 = *s2;
> - s1++;
> - s2++;
> - if (!c1)
> - break;
> - if (!c2)
> - break;
> - if (c1 == c2)
> - continue;
> - c1 = tolower(c1);
> - c2 = tolower(c2);
> - if (c1 != c2)
> + /* Yes, i am keeping 'em unsigned too */
> + unsigned char c1, c2, c3, c4;
> + unsigned count = 0;
> + int flag = -1;
> +
> + c1 = c2 = c3 = c4 = 0;
> +
> + if(len > 0)
> + {
> + for(; count <= len/2; count++)
> + {
> + c1 = tolower(s1[count]); // well, we
> + c2 = tolower(s2[count]); // are ignoring
> + c3 = tolower(s1[len-count-1]); // cases
> + c4 = tolower(s2[len-count-1]); // thats why

Buggy.

> +
> + if(c1 == c2)
> + {
> + if(c3 != c4)
> + {
> + flag = 1;
> + break;
> + }
> + }
> + else
> break;
> - } while (--len);
> + flag = 0;
> + }
> }
> - return (int)c1 - (int)c2;
> -}
> + return flag; // return 0 for matching and
> +} // nonzero for mismatch
> EXPORT_SYMBOL(strnicmp);
> #endif

And this function is called at most ~100 character strings, so nobody
cares about its performance.



\
 
 \ /
  Last update: 2008-05-07 21:01    [W:0.344 / U:0.076 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site