Changes to str*cmp functions. Fixes a couple more corner cases.

Signed-off-by: Liu Tao <liutao1980@gmail.com>
Acked-by: Patrick Georgi <patrick.georgi@coresystems.de>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5785 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Liu Tao 2010-09-08 10:27:13 +00:00 committed by Patrick Georgi
parent fe09fd1dac
commit e914b501d2
1 changed files with 24 additions and 18 deletions

View File

@ -89,14 +89,15 @@ size_t strlen(const char *str)
*/ */
int strcasecmp(const char *s1, const char *s2) int strcasecmp(const char *s1, const char *s2)
{ {
int i; int i, res;
for (i = 0; s1[i] != '\0'; i++) { for (i = 0; 1; i++) {
if (tolower(s1[i]) != tolower(s2[i])) res = tolower(s1[i]) - tolower(s2[i]);
return s1[i] - s2[i]; if (res || (s1[i] == '\0'))
break;
} }
return 0; return res;
} }
/** /**
@ -109,14 +110,16 @@ int strcasecmp(const char *s1, const char *s2)
*/ */
int strncasecmp(const char *s1, const char *s2, size_t maxlen) int strncasecmp(const char *s1, const char *s2, size_t maxlen)
{ {
int i; int i, res;
res = 0;
for (i = 0; i < maxlen; i++) { for (i = 0; i < maxlen; i++) {
if (tolower(s1[i]) != tolower(s2[i])) res = tolower(s1[i]) - tolower(s2[i]);
return s1[i] - s2[i]; if (res || (s1[i] == '\0'))
break;
} }
return s1[i] - s2[i]; return res;
} }
/** /**
@ -130,14 +133,15 @@ int strncasecmp(const char *s1, const char *s2, size_t maxlen)
*/ */
int strcmp(const char *s1, const char *s2) int strcmp(const char *s1, const char *s2)
{ {
int i; int i, res;
for (i = 0; s1[i] != '\0'; i++) { for (i = 0; 1; i++) {
if (s1[i] != s2[i]) res = s1[i] - s2[i];
return s1[i] - s2[i]; if (res || (s1[i] == '\0'))
break;
} }
return s1[i] - s2[i]; return res;
} }
/** /**
@ -150,14 +154,16 @@ int strcmp(const char *s1, const char *s2)
*/ */
int strncmp(const char *s1, const char *s2, size_t maxlen) int strncmp(const char *s1, const char *s2, size_t maxlen)
{ {
int i; int i, res;
res = 0;
for (i = 0; i < maxlen; i++) { for (i = 0; i < maxlen; i++) {
if (s1[i] != s2[i]) res = s1[i] - s2[i];
return s1[i] - s2[i]; if (res || (s1[i] == '\0'))
break;
} }
return 0; return res;
} }
/** /**