version 1.8, 2019/05/15 09:07:46 |
version 1.9, 2019/05/15 09:33:34 |
|
|
if (len1 <= offset) |
if (len1 <= offset) |
return (len2 <= offset) ? 0 : -1; |
return (len2 <= offset) ? 0 : -1; |
|
|
if (len2 <= offset) |
if (len2 <= offset) |
return 1; |
return 1; |
|
|
len1 -= offset; |
len1 -= offset; |
len2 -= offset; |
len2 -= offset; |
|
|
if (sort_mb_cur_max == 1) { |
if (sort_mb_cur_max == 1) { |
const unsigned char *s1, *s2; |
const unsigned char *s1, *s2; |
int res; |
int res; |
|
|
s1 = bws1->data.cstr + offset; |
s1 = bws1->data.cstr + offset; |
s2 = bws2->data.cstr + offset; |
s2 = bws2->data.cstr + offset; |
|
|
if (len1 > len2) { |
if (len1 > len2) { |
res = memcmp(s1, s2, len2); |
res = memcmp(s1, s2, len2); |
if (!res) |
if (!res) |
res = +1; |
res = +1; |
} else if (len1 < len2) { |
} else if (len1 < len2) { |
res = memcmp(s1, s2, len1); |
res = memcmp(s1, s2, len1); |
if (!res) |
if (!res) |
res = -1; |
res = -1; |
} else |
} else |
res = memcmp(s1, s2, len1); |
res = memcmp(s1, s2, len1); |
|
|
return res; |
return res; |
} else { |
} else { |
const wchar_t *s1, *s2; |
const wchar_t *s1, *s2; |
size_t i, maxlen; |
size_t i, maxlen; |
int res = 0; |
int res = 0; |
|
|
s1 = bws1->data.wstr + offset; |
s1 = bws1->data.wstr + offset; |
s2 = bws2->data.wstr + offset; |
s2 = bws2->data.wstr + offset; |
|
|
i = 0; |
i = 0; |
maxlen = len1; |
maxlen = len1; |
|
|
if (maxlen > len2) |
if (maxlen > len2) |
maxlen = len2; |
maxlen = len2; |
|
|
while (i < maxlen) { |
while (i < maxlen) { |
|
|
/* goto next non-zero part: */ |
/* goto next non-zero part: */ |
while ((i < maxlen) && |
while (i < maxlen && |
!s1[i] && !s2[i]) |
s1[i] == L'\0' && s2[i] == L'\0') |
++i; |
++i; |
|
|
if (i >= maxlen) |
if (i >= maxlen) |
break; |
break; |
|
|
if (s1[i] == 0) { |
if (s1[i] == L'\0') { |
if (s2[i] == 0) |
if (s2[i] == L'\0') |
/* NOTREACHED */ |
/* NOTREACHED */ |
err(2, "bwscoll error 1"); |
err(2, "bwscoll error 1"); |
else |
else |
return -1; |
return -1; |
} else if (s2[i] == 0) |
} else if (s2[i] == L'\0') |
return 1; |
return 1; |
|
|
res = wide_str_coll(s1 + i, s2 + i); |
res = wide_str_coll(s1 + i, s2 + i); |
if (res) |
if (res) |
return res; |
return res; |
|
|
while ((i < maxlen) && s1[i] && s2[i]) |
while (i < maxlen && s1[i] != L'\0' && s2[i] != L'\0') |
++i; |
++i; |
|
|
if (i >= maxlen) |
if (i >= maxlen) |
break; |
break; |
|
|
if (s1[i] == 0) { |
if (s1[i] == L'\0') { |
if (s2[i] == 0) { |
if (s2[i] == L'\0') { |
++i; |
++i; |
continue; |
continue; |
} else |
} else |
return -1; |
return -1; |
} else if (s2[i] == 0) |
} else if (s2[i] == L'\0') |
return 1; |
return 1; |
else |
else |
/* NOTREACHED */ |
/* NOTREACHED */ |
err(2, "bwscoll error 2"); |
err(2, "bwscoll error 2"); |
} |
} |
|
|
if (len1 == len2) |
if (len1 == len2) |
return 0; |
return 0; |
return len1 < len2 ? -1 : 1; |
return len1 < len2 ? -1 : 1; |
} |
} |
} |
} |
|
|
/* |
/* |