mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
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;
|
||||
}
|
||||
|
||||
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 ca, cb;
|
||||
|
@ -150,13 +151,10 @@ static int strnatcmp0(char const *a, char const *b, int fold_case)
|
|||
if (!ca && !cb) {
|
||||
/* The strings compare the same. Call str[case]cmp() to ensure
|
||||
consistent results. */
|
||||
if(fold_case)
|
||||
return strcasecmp(a,b);
|
||||
else
|
||||
return strcmp(a,b);
|
||||
return cmp_fn(a,b);
|
||||
}
|
||||
|
||||
if (fold_case) {
|
||||
if (cmp_fn == &strcasecmp) {
|
||||
ca = nat_unify_case(ca);
|
||||
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) {
|
||||
return strnatcmp0(a, b, 0);
|
||||
return strnatcmp0(a, b, strcmp);
|
||||
}
|
||||
|
||||
|
||||
/* Compare, recognizing numeric string and ignoring case. */
|
||||
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