forked from len0rd/rockbox
strnatcmp.c use a fn pointer to call strcmp/strcasecmp
Change-Id: I2bfaeec4cf2af4bed8f0781bcfa24b0b104fb22a
This commit is contained in:
parent
972810f6cf
commit
00f915d92e
1 changed files with 6 additions and 10 deletions
|
@ -122,7 +122,8 @@ compare_left(char const *a, char const *b)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int strnatcmp0(char const *a, char const *b, int fold_case)
|
static int strnatcmp0(char const *a, char const *b,
|
||||||
|
int (*cmp_fn)(const char*, const char*))
|
||||||
{
|
{
|
||||||
int ai, bi;
|
int ai, bi;
|
||||||
int ca, cb;
|
int ca, cb;
|
||||||
|
@ -150,13 +151,10 @@ static int strnatcmp0(char const *a, char const *b, int fold_case)
|
||||||
if (!ca && !cb) {
|
if (!ca && !cb) {
|
||||||
/* The strings compare the same. Call str[case]cmp() to ensure
|
/* The strings compare the same. Call str[case]cmp() to ensure
|
||||||
consistent results. */
|
consistent results. */
|
||||||
if(fold_case)
|
return cmp_fn(a,b);
|
||||||
return strcasecmp(a,b);
|
|
||||||
else
|
|
||||||
return strcmp(a,b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fold_case) {
|
if (cmp_fn == &strcasecmp) {
|
||||||
ca = nat_unify_case(ca);
|
ca = nat_unify_case(ca);
|
||||||
cb = nat_unify_case(cb);
|
cb = nat_unify_case(cb);
|
||||||
}
|
}
|
||||||
|
@ -170,14 +168,12 @@ static int strnatcmp0(char const *a, char const *b, int fold_case)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int strnatcmp(const char *a, const char *b) {
|
int strnatcmp(const char *a, const char *b) {
|
||||||
return strnatcmp0(a, b, 0);
|
return strnatcmp0(a, b, strcmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Compare, recognizing numeric string and ignoring case. */
|
/* Compare, recognizing numeric string and ignoring case. */
|
||||||
int strnatcasecmp(const char *a, const char *b) {
|
int strnatcasecmp(const char *a, const char *b) {
|
||||||
return strnatcmp0(a, b, 1);
|
return strnatcmp0(a, b, &strcasecmp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue