Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: fusl/src/string/strverscmp.c

Issue 1714623002: [fusl] clang-format fusl (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: headers too Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #define _GNU_SOURCE 1 #define _GNU_SOURCE
2 #include <ctype.h> 2 #include <ctype.h>
3 #include <string.h> 3 #include <string.h>
4 4
5 int strverscmp(const char *l0, const char *r0) 5 int strverscmp(const char* l0, const char* r0) {
6 { 6 const unsigned char* l = (const void*)l0;
7 » const unsigned char *l = (const void *)l0; 7 const unsigned char* r = (const void*)r0;
8 » const unsigned char *r = (const void *)r0; 8 size_t i, dp, j;
9 » size_t i, dp, j; 9 int z = 1;
10 » int z = 1;
11 10
12 » /* Find maximal matching prefix and track its maximal digit 11 /* Find maximal matching prefix and track its maximal digit
13 » * suffix and whether those digits are all zeros. */ 12 * suffix and whether those digits are all zeros. */
14 » for (dp=i=0; l[i]==r[i]; i++) { 13 for (dp = i = 0; l[i] == r[i]; i++) {
15 » » int c = l[i]; 14 int c = l[i];
16 » » if (!c) return 0; 15 if (!c)
17 » » if (!isdigit(c)) dp=i+1, z=1; 16 return 0;
18 » » else if (c!='0') z=0; 17 if (!isdigit(c))
19 » } 18 dp = i + 1, z = 1;
19 else if (c != '0')
20 z = 0;
21 }
20 22
21 » if (l[dp]!='0' && r[dp]!='0') { 23 if (l[dp] != '0' && r[dp] != '0') {
22 » » /* If we're not looking at a digit sequence that began 24 /* If we're not looking at a digit sequence that began
23 » » * with a zero, longest digit string is greater. */ 25 * with a zero, longest digit string is greater. */
24 » » for (j=i; isdigit(l[j]); j++) 26 for (j = i; isdigit(l[j]); j++)
25 » » » if (!isdigit(r[j])) return 1; 27 if (!isdigit(r[j]))
26 » » if (isdigit(r[j])) return -1; 28 return 1;
27 » } else if (z && dp<i && (isdigit(l[i]) || isdigit(r[i]))) { 29 if (isdigit(r[j]))
28 » » /* Otherwise, if common prefix of digit sequence is 30 return -1;
29 » » * all zeros, digits order less than non-digits. */ 31 } else if (z && dp < i && (isdigit(l[i]) || isdigit(r[i]))) {
30 » » return (unsigned char)(l[i]-'0') - (unsigned char)(r[i]-'0'); 32 /* Otherwise, if common prefix of digit sequence is
31 » } 33 * all zeros, digits order less than non-digits. */
34 return (unsigned char)(l[i] - '0') - (unsigned char)(r[i] - '0');
35 }
32 36
33 » return l[i] - r[i]; 37 return l[i] - r[i];
34 } 38 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698