diff options
| author | André Goddard Rosa <andre.goddard@gmail.com> | 2010-03-05 16:43:11 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-06 14:26:35 -0500 |
| commit | a11d2b64e1f2556953120d516241243ea365f0ae (patch) | |
| tree | efb406b16a33fedf9c239fd6c09d8fe74b0042b7 /lib | |
| parent | 8a6e25357d51d6ecf4ee21e9048f0416a085a79c (diff) | |
lib/string.c: simplify stricmp()
Removes 32 bytes on core2 with gcc 4.4.1:
text data bss dec hex filename
3196 0 0 3196 c7c lib/string-BEFORE.o
3164 0 0 3164 c5c lib/string-AFTER.o
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/string.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/lib/string.c b/lib/string.c index a1cdcfcc42d0..0f8624532082 100644 --- a/lib/string.c +++ b/lib/string.c | |||
| @@ -36,25 +36,21 @@ int strnicmp(const char *s1, const char *s2, size_t len) | |||
| 36 | /* Yes, Virginia, it had better be unsigned */ | 36 | /* Yes, Virginia, it had better be unsigned */ |
| 37 | unsigned char c1, c2; | 37 | unsigned char c1, c2; |
| 38 | 38 | ||
| 39 | c1 = c2 = 0; | 39 | if (!len) |
| 40 | if (len) { | 40 | return 0; |
| 41 | do { | 41 | |
| 42 | c1 = *s1; | 42 | do { |
| 43 | c2 = *s2; | 43 | c1 = *s1++; |
| 44 | s1++; | 44 | c2 = *s2++; |
| 45 | s2++; | 45 | if (!c1 || !c2) |
| 46 | if (!c1) | 46 | break; |
| 47 | break; | 47 | if (c1 == c2) |
| 48 | if (!c2) | 48 | continue; |
| 49 | break; | 49 | c1 = tolower(c1); |
| 50 | if (c1 == c2) | 50 | c2 = tolower(c2); |
| 51 | continue; | 51 | if (c1 != c2) |
| 52 | c1 = tolower(c1); | 52 | break; |
| 53 | c2 = tolower(c2); | 53 | } while (--len); |
| 54 | if (c1 != c2) | ||
| 55 | break; | ||
| 56 | } while (--len); | ||
| 57 | } | ||
| 58 | return (int)c1 - (int)c2; | 54 | return (int)c1 - (int)c2; |
| 59 | } | 55 | } |
| 60 | EXPORT_SYMBOL(strnicmp); | 56 | EXPORT_SYMBOL(strnicmp); |
