diff options
Diffstat (limited to 'firmware/common/strnatcmp.c')
-rw-r--r-- | firmware/common/strnatcmp.c | 36 |
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 | |||
99 | static int | ||
100 | compare_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 | |||
121 | static int strnatcmp0(char const *a, char const *b, int fold_case) | 98 | static 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) { |