summaryrefslogtreecommitdiffstats
path: root/lib/string.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2009-12-04 14:59:47 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-12-04 14:59:47 +0000
commit5cb2faa6ede7ada9cb2bffc832c4ce60f53d6834 (patch)
tree7b72b66081d042a41dc822575503133364857ce2 /lib/string.c
parente0ee98513d1a2e24d2ddbdecf4216bcca29d1158 (diff)
parent6060e8df517847bf445ebc61de7d4d9c7faae990 (diff)
downloadkernel-crypto-5cb2faa6ede7ada9cb2bffc832c4ce60f53d6834.tar.gz
kernel-crypto-5cb2faa6ede7ada9cb2bffc832c4ce60f53d6834.tar.xz
kernel-crypto-5cb2faa6ede7ada9cb2bffc832c4ce60f53d6834.zip
Merge branch 'pending-misc' (early part) into devel
Diffstat (limited to 'lib/string.c')
-rw-r--r--lib/string.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/string.c b/lib/string.c
index b19b87af65a..e96421ab9a9 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -246,13 +246,17 @@ EXPORT_SYMBOL(strlcat);
#undef strcmp
int strcmp(const char *cs, const char *ct)
{
- signed char __res;
+ unsigned char c1, c2;
while (1) {
- if ((__res = *cs - *ct++) != 0 || !*cs++)
+ c1 = *cs++;
+ c2 = *ct++;
+ if (c1 != c2)
+ return c1 < c2 ? -1 : 1;
+ if (!c1)
break;
}
- return __res;
+ return 0;
}
EXPORT_SYMBOL(strcmp);
#endif
@@ -266,14 +270,18 @@ EXPORT_SYMBOL(strcmp);
*/
int strncmp(const char *cs, const char *ct, size_t count)
{
- signed char __res = 0;
+ unsigned char c1, c2;
while (count) {
- if ((__res = *cs - *ct++) != 0 || !*cs++)
+ c1 = *cs++;
+ c2 = *ct++;
+ if (c1 != c2)
+ return c1 < c2 ? -1 : 1;
+ if (!c1)
break;
count--;
}
- return __res;
+ return 0;
}
EXPORT_SYMBOL(strncmp);
#endif