version 1.10, 2015/08/11 22:06:19 |
version 1.11, 2015/08/11 22:12:48 |
|
|
*cp++ = *(*line)++; |
*cp++ = *(*line)++; |
*cp = '\0'; |
*cp = '\0'; |
|
|
if (*ml->type_string == 'u') |
switch (ml->type) { |
endptr = magic_strtoull(copy, &ml->test_unsigned); |
case MAGIC_TYPE_FLOAT: |
else { |
case MAGIC_TYPE_DOUBLE: |
endptr = magic_strtoll(copy, &ml->test_signed); |
case MAGIC_TYPE_BEFLOAT: |
if (endptr == NULL || *endptr != '\0') { |
case MAGIC_TYPE_BEDOUBLE: |
/* |
case MAGIC_TYPE_LEFLOAT: |
* If we can't parse this as a signed number, try as |
case MAGIC_TYPE_LEDOUBLE: |
* unsigned instead. |
errno = 0; |
*/ |
ml->test_double = strtod(copy, &endptr); |
endptr = magic_strtoull(copy, &u); |
if (errno == ERANGE) |
if (endptr != NULL && *endptr == '\0') |
endptr = NULL; |
ml->test_signed = (int64_t)u; |
break; |
|
default: |
|
if (*ml->type_string == 'u') |
|
endptr = magic_strtoull(copy, &ml->test_unsigned); |
|
else { |
|
endptr = magic_strtoll(copy, &ml->test_signed); |
|
if (endptr == NULL || *endptr != '\0') { |
|
/* |
|
* If we can't parse this as a signed number, |
|
* try as unsigned instead. |
|
*/ |
|
endptr = magic_strtoull(copy, &u); |
|
if (endptr != NULL && *endptr == '\0') |
|
ml->test_signed = (int64_t)u; |
|
} |
} |
} |
|
break; |
} |
} |
if (endptr == NULL || *endptr != '\0') { |
if (endptr == NULL || *endptr != '\0') { |
magic_warn(ml, "can't parse number: %s", copy); |
magic_warn(ml, "can't parse number: %s", copy); |