34compare_right(
char const **
a,
char const *aend,
char const **b,
char const *bend)
42 for(;; (*a)++, (*b)++) {
43 if ((*
a == aend || !isdigit((
int)(
unsigned char)**
a)) &&
44 (*b == bend || !isdigit((
int)(
unsigned char)**b)))
46 else if (*
a == aend || !isdigit((
int)(
unsigned char)**
a))
48 else if (*b == bend || !isdigit((
int)(
unsigned char)**b))
53 }
else if (**
a > **b) {
65compare_left(
char const **
a,
char const *aend,
char const **b,
char const *bend)
69 for(;; (*a)++, (*b)++) {
70 if ((*
a == aend || !isdigit((
int)(
unsigned char)**
a)) &&
71 (*b == bend || !isdigit((
int)(
unsigned char)**b)))
73 else if (*
a == aend || !isdigit((
int)(
unsigned char)**
a))
75 else if (*b == bend || !isdigit((
int)(
unsigned char)**b))
88PHPAPI int strnatcmp_ex(
char const *
a,
size_t a_len,
char const *b,
size_t b_len,
bool is_case_insensitive)
92 char const *aend =
a + a_len,
96 if (a_len == 0 || b_len == 0) {
97 return (a_len == b_len ? 0 : (a_len > b_len ? 1 : -1));
106 while (ca ==
'0' && (ap+1 < aend) && isdigit((
int)(
unsigned char)*(ap+1))) {
110 while (
cb ==
'0' && (
bp+1 < bend) && isdigit((
int)(
unsigned char)*(
bp+1))) {
117 while (isspace((
int)(
unsigned char)ca)) {
121 while (isspace((
int)(
unsigned char)
cb)) {
126 if (isdigit((
int)(
unsigned char)ca) && isdigit((
int)(
unsigned char)
cb)) {
127 fractional = (ca ==
'0' ||
cb ==
'0');
130 result = compare_left(&ap, aend, &
bp, bend);
132 result = compare_right(&ap, aend, &
bp, bend);
136 else if (ap == aend &&
bp == bend)
149 if (is_case_insensitive) {
150 ca = toupper((
int)(
unsigned char)ca);
151 cb = toupper((
int)(
unsigned char)
cb);
160 if (ap >= aend &&
bp >= bend)
HashTable bp[PHPDBG_BREAK_TABLES]
PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, bool is_case_insensitive)