summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-03-02 02:30:39 +0000
committerThomas Martitz <kugel@rockbox.org>2009-03-02 02:30:39 +0000
commit7125b9ebcb80cec6d411c22976df9fdb401caf5f (patch)
treeed6ec13fe22dc0f3695052c23382ec0aa0d34315 /firmware
parent4fd02fdd42cb389e2b63c7f1fd86377c4780b1d7 (diff)
downloadrockbox-7125b9ebcb80cec6d411c22976df9fdb401caf5f.tar.gz
rockbox-7125b9ebcb80cec6d411c22976df9fdb401caf5f.zip
Actually apply the patch...thanks again to Bryan Vandyke (and Tom Ross for notifying me about my commit-fail).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20167 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/common/strnatcmp.c36
1 files changed, 3 insertions, 33 deletions
diff --git a/firmware/common/strnatcmp.c b/firmware/common/strnatcmp.c
index c67bda6b81..2ec920b0a1 100644
--- a/firmware/common/strnatcmp.c
+++ b/firmware/common/strnatcmp.c
@@ -95,34 +95,11 @@ compare_right(char const *a, char const *b)
95 return 0; 95 return 0;
96} 96}
97 97
98
99static int
100compare_left(char const *a, char const *b)
101{
102 /* Compare two left-aligned numbers: the first to have a
103 different value wins. */
104 for (;; a++, b++) {
105 if (!nat_isdigit(*a) && !nat_isdigit(*b))
106 return 0;
107 else if (!nat_isdigit(*a))
108 return -1;
109 else if (!nat_isdigit(*b))
110 return +1;
111 else if (*a < *b)
112 return -1;
113 else if (*a > *b)
114 return +1;
115 }
116
117 return 0;
118}
119
120
121static int strnatcmp0(char const *a, char const *b, int fold_case) 98static int strnatcmp0(char const *a, char const *b, int fold_case)
122{ 99{
123 int ai, bi; 100 int ai, bi;
124 char ca, cb; 101 char ca, cb;
125 int fractional, result; 102 int result;
126 103
127 assert(a && b); 104 assert(a && b);
128 ai = bi = 0; 105 ai = bi = 0;
@@ -138,15 +115,8 @@ static int strnatcmp0(char const *a, char const *b, int fold_case)
138 115
139 /* process run of digits */ 116 /* process run of digits */
140 if (nat_isdigit(ca) && nat_isdigit(cb)) { 117 if (nat_isdigit(ca) && nat_isdigit(cb)) {
141 fractional = (ca == '0' || cb == '0'); 118 if ((result = compare_right(a+ai, b+bi)) != 0)
142 119 return result;
143 if (fractional) {
144 if ((result = compare_left(a+ai, b+bi)) != 0)
145 return result;
146 } else {
147 if ((result = compare_right(a+ai, b+bi)) != 0)
148 return result;
149 }
150 } 120 }
151 121
152 if (!ca && !cb) { 122 if (!ca && !cb) {