virStringTrimOptionalNewline;
virStrToDouble;
virStrToLong_i;
-virStrToLong_l;
virStrToLong_ll;
virStrToLong_ui;
virStrToLong_uip;
return 0;
}
-/* Just like virStrToLong_i, above, but produce a "long" value. */
-int
-virStrToLong_l(char const *s, char **end_ptr, int base, long *result)
-{
- long int val;
- char *p;
- int err;
-
- errno = 0;
- val = strtol(s, &p, base); /* exempt from syntax-check */
- err = (errno || (!end_ptr && *p) || p == s);
- if (end_ptr)
- *end_ptr = p;
- if (err)
- return -1;
- *result = val;
- return 0;
-}
+/* virStrToLong_l is intentionally skipped, consider virStrToLong_ll instead */
/* Just like virStrToLong_i, above, but produce an "unsigned long"
* value. This version allows twos-complement wraparound of negative
int base,
unsigned int *result)
G_GNUC_WARN_UNUSED_RESULT;
-int virStrToLong_l(char const *s,
- char **end_ptr,
- int base,
- long *result)
- G_GNUC_WARN_UNUSED_RESULT;
int virStrToLong_ul(char const *s,
char **end_ptr,
int base,
const struct stringToLongData *data = opaque;
int ret = 0;
char *end;
- long l;
unsigned long ul;
bool negative;
/* We hate adding new API with 'long', and prefer 'int' or 'long
* long' instead, since platform-specific results are evil */
- l = (sizeof(int) == sizeof(long)) ? data->si : data->ll;
- TEST_ONE(data->str, data->suffix, long, l, "%ld",
- l, (sizeof(int) == sizeof(long)) ? data->si_ret : data->ll_ret);
ul = (sizeof(int) == sizeof(long)) ? data->ui : data->ull;
TEST_ONE(data->str, data->suffix, unsigned long, ul, "%lu",
ul, (sizeof(int) == sizeof(long)) ? data->ui_ret : data->ull_ret);