diff options
author | William Wilgus <wilgus.william@gmail.com> | 2022-11-17 04:15:38 -0500 |
---|---|---|
committer | William Wilgus <wilgus.william@gmail.com> | 2022-11-17 04:15:38 -0500 |
commit | 00f915d92ea6cce33110484814dc17ae47509969 (patch) | |
tree | e61a99063d10230329220d1d2aa6a0e722c3a453 /firmware/common | |
parent | 972810f6cfd9715de1b182978c4d26e67dcf72cf (diff) | |
download | rockbox-00f915d92ea6cce33110484814dc17ae47509969.tar.gz rockbox-00f915d92ea6cce33110484814dc17ae47509969.zip |
strnatcmp.c use a fn pointer to call strcmp/strcasecmp
Change-Id: I2bfaeec4cf2af4bed8f0781bcfa24b0b104fb22a
Diffstat (limited to 'firmware/common')
-rw-r--r-- | firmware/common/strnatcmp.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/firmware/common/strnatcmp.c b/firmware/common/strnatcmp.c index 0084ff3582..d77f7e995e 100644 --- a/firmware/common/strnatcmp.c +++ b/firmware/common/strnatcmp.c | |||
@@ -122,7 +122,8 @@ compare_left(char const *a, char const *b) | |||
122 | return 0; | 122 | return 0; |
123 | } | 123 | } |
124 | 124 | ||
125 | static int strnatcmp0(char const *a, char const *b, int fold_case) | 125 | static int strnatcmp0(char const *a, char const *b, |
126 | int (*cmp_fn)(const char*, const char*)) | ||
126 | { | 127 | { |
127 | int ai, bi; | 128 | int ai, bi; |
128 | int ca, cb; | 129 | int ca, cb; |
@@ -150,13 +151,10 @@ static int strnatcmp0(char const *a, char const *b, int fold_case) | |||
150 | if (!ca && !cb) { | 151 | if (!ca && !cb) { |
151 | /* The strings compare the same. Call str[case]cmp() to ensure | 152 | /* The strings compare the same. Call str[case]cmp() to ensure |
152 | consistent results. */ | 153 | consistent results. */ |
153 | if(fold_case) | 154 | return cmp_fn(a,b); |
154 | return strcasecmp(a,b); | ||
155 | else | ||
156 | return strcmp(a,b); | ||
157 | } | 155 | } |
158 | 156 | ||
159 | if (fold_case) { | 157 | if (cmp_fn == &strcasecmp) { |
160 | ca = nat_unify_case(ca); | 158 | ca = nat_unify_case(ca); |
161 | cb = nat_unify_case(cb); | 159 | cb = nat_unify_case(cb); |
162 | } | 160 | } |
@@ -170,14 +168,12 @@ static int strnatcmp0(char const *a, char const *b, int fold_case) | |||
170 | } | 168 | } |
171 | } | 169 | } |
172 | 170 | ||
173 | |||
174 | |||
175 | int strnatcmp(const char *a, const char *b) { | 171 | int strnatcmp(const char *a, const char *b) { |
176 | return strnatcmp0(a, b, 0); | 172 | return strnatcmp0(a, b, strcmp); |
177 | } | 173 | } |
178 | 174 | ||
179 | 175 | ||
180 | /* Compare, recognizing numeric string and ignoring case. */ | 176 | /* Compare, recognizing numeric string and ignoring case. */ |
181 | int strnatcasecmp(const char *a, const char *b) { | 177 | int strnatcasecmp(const char *a, const char *b) { |
182 | return strnatcmp0(a, b, 1); | 178 | return strnatcmp0(a, b, &strcasecmp); |
183 | } | 179 | } |