if (!address.string[i]) continue;
- if ((uint16_t) (address.string[i] - 'a') < 6 || (uint16_t) (address.string[i] - 'A') < 6 || (uint16_t) (address.string[i] - '0') < 10) {
- if ((uint16_t) (address.string[i] - '0') > 9) {
+ if ((uint16_t) (address.string[i] - f_string_ascii_a_s.string[0]) < 6 || (uint16_t) (address.string[i] - f_string_ascii_A_s.string[0]) < 6 || (uint16_t) (address.string[i] - f_string_ascii_0_s.string[0]) < 10) {
+ if ((uint16_t) (address.string[i] - f_string_ascii_0_s.string[0]) > 9) {
flag = 0x1;
}
continue;
}
- if (address.string[i] == '.') {
+ if (address.string[i] == f_string_ascii_period_s.string[0]) {
// An IPv4 looking address with a hexidecimal letter.
if (flag & 0x1) {
break;
}
- if (address.string[i] == ':') {
+ if (address.string[i] == f_string_ascii_colon_s.string[0]) {
flag = 0x1;
digits = 0;
break;
}
- if (address.string[i] == '[') {
+ if (address.string[i] == f_string_ascii_bracket_open_s.string[0]) {
if (flag) {
state->status = F_false;
if (!address.string[i]) continue;
- if ((uint16_t) (address.string[i] - 'a') < 6 || (uint16_t) (address.string[i] - 'A') < 6 || (uint16_t) (address.string[i] - '0') < 10) {
+ if ((uint16_t) (address.string[i] - f_string_ascii_a_s.string[0]) < 6 || (uint16_t) (address.string[i] - f_string_ascii_A_s.string[0]) < 6 || (uint16_t) (address.string[i] - f_string_ascii_0_s.string[0]) < 10) {
// There must be at max 4 digits in a single set.
if (++digits > 4) return;
// After the forward slash may only have at most 3 base-10 digits.
if (flag & 0x4) {
- if ((uint16_t) (address.string[i] - '0') > 9 || digits > 3) return;
+ if ((uint16_t) (address.string[i] - f_string_ascii_0_s.string[0]) > 9 || digits > 3) return;
}
}
- else if (address.string[i] == ':') {
+ else if (address.string[i] == f_string_ascii_colon_s.string[0]) {
// Cannot have a colon to the right of a forward slash.
if (flag & 0x4) return;
if (at.start_2 == address.used) return;
- if (address.string[at.start_2] == ':') {
+ if (address.string[at.start_2] == f_string_ascii_colon_s.string[0]) {
// Cannot have three or more colons back to back.
if (flag & 0x8) return;
}
// Colons must be followed by a hexidecimal digit or a forward slash.
- if ((uint16_t) (address.string[at.start_2] - 'a') > 5 && (uint16_t) (address.string[at.start_2] - 'A') > 5 && (uint16_t) (address.string[at.start_2] - '0') > 9 && address.string[at.start_2] != '/') return;
+ if ((uint16_t) (address.string[at.start_2] - f_string_ascii_a_s.string[0]) > 5 && (uint16_t) (address.string[at.start_2] - f_string_ascii_A_s.string[0]) > 5 && (uint16_t) (address.string[at.start_2] - f_string_ascii_0_s.string[0]) > 9 && address.string[at.start_2] != f_string_ascii_slash_forward_s.string[0]) return;
at.stop_1 = at.start_2;
digits = 0;
at.start_2 = 1;
}
- else if (address.string[i] == '/') {
+ else if (address.string[i] == f_string_ascii_slash_forward_s.string[0]) {
// Must only have a single forward slash.
if (flag & 0x4) return;
flag |= 0x4;
digits = 0;
}
- else if (address.string[i] == ']') {
+ else if (address.string[i] == f_string_ascii_bracket_close_s.string[0]) {
// Must not have a closing bracket without an open bracket.
if (!(flag & 0x2)) return;
} // for
if (at.start_2 < address.used) {
- if (address.string[at.start_2] == ':') {
+ if (address.string[at.start_2] == f_string_ascii_colon_s.string[0]) {
// Skip past NULL characters.
while (++at.start_2 < address.used && !address.string[at.start_2]) {
}
if (!address.string[at.stop_2]) continue;
- if ((uint16_t) (address.string[at.stop_2] - '0') > 9) return;
+ if ((uint16_t) (address.string[at.stop_2] - f_string_ascii_0_s.string[0]) > 9) return;
} // for
// The double colon either must exist when set is smaller than 7 or the double colon must not exist at all.
if (!address.string[i]) continue;
- if ((uint16_t) (address.string[i] - '0') < 10) {
+ if ((uint16_t) (address.string[i] - f_string_ascii_0_s.string[0]) < 10) {
if (flag & 0x4) {
if (!(flag & 0x8) && ++digits > 3) return;
digits_set[digits - 1] = address.string[i];
}
}
- else if (address.string[i] == '.') {
+ else if (address.string[i] == f_string_ascii_period_s.string[0]) {
if ((flag & 0x6) || !digits || ++set > 3) return;
digits = 0;
memset(digits_set, 0, 3);
}
- else if (address.string[i] == ':') {
+ else if (address.string[i] == f_string_ascii_colon_s.string[0]) {
if (set != 3 || (flag & 0x2)) return;
digit = atoi(digits_set);
// Save the position that might represent the start of the port number.
at.start_2 = i + 1;
}
- else if (address.string[i] == '/') {
+ else if (address.string[i] == f_string_ascii_slash_forward_s.string[0]) {
if ((flag & 0x4) || set != 3) return;
flag |= 0x4;