9 # define MIN(a,b) (((a) < (b)) ? (a) : (b)) 13 # define NONZERO(x) ((x) != 0) 20 static char sortorder[] =
"/\\~=-+!@#$%^&*()_{}[]|:;\"ยจ'?,.`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz ";
27 int xstrcoll(
const char *
a,
size_t alen,
const char *b,
size_t blen)
34 if(alen == blen && memcmp(
a, b, alen) == 0)
37 char *s = (
char *)sortorder;
41 i = j = aval = bval = 0;
43 while(i <
MIN(alen, blen))
45 if(memcmp(
a + i, b + i, 1) != 0)
48 while(j < slen && (aval == 0 || bval == 0))
62 if(i ==
MIN(alen, blen) && alen < blen)
64 else if(i ==
MIN(alen, blen) && alen > blen)
int str_compare(void *a, void *b)
#define str_len(s)
Shorthand for counting '\0' terminating strings. See _len for more info.
int xstrcoll(const char *a, size_t alen, const char *b, size_t blen)