virReportOOMError();
goto cleanup;
}
- if (virXPathULongLong(xpath_full, ctxt, &bytes) < 0) {
- if (required)
+ ret = virXPathULongLong(xpath_full, ctxt, &bytes);
+ if (ret < 0) {
+ if (ret == -2)
virDomainReportError(VIR_ERR_XML_ERROR,
- "%s", _("missing memory element"));
+ _("could not parse memory element %s"),
+ xpath);
+ else if (required)
+ virDomainReportError(VIR_ERR_XML_ERROR,
+ _("missing memory element %s"),
+ xpath);
else
ret = 0;
goto cleanup;
if (STREQ(tmp, "reset")) {
def->clock.data.utc_reset = true;
} else {
- char *conv = NULL;
- unsigned long long val;
- val = strtoll(tmp, &conv, 10);
- if (conv == tmp || *conv != '\0') {
- virDomainReportError(VIR_ERR_INTERNAL_ERROR,
- _("unknown clock adjustment '%s'"), tmp);
+ if (virStrToLong_ll(tmp, NULL, 10,
+ &def->clock.data.variable.adjustment) < 0) {
+ virDomainReportError(VIR_ERR_XML_ERROR,
+ _("unknown clock adjustment '%s'"),
+ tmp);
goto error;
}
switch (def->clock.offset) {
break;
}
def->clock.offset = VIR_DOMAIN_CLOCK_OFFSET_VARIABLE;
- def->clock.data.variable.adjustment = val;
}
VIR_FREE(tmp);
} else {
if (!mode) {
perms->mode = defaultmode;
} else {
- char *end = NULL;
- perms->mode = strtol(mode, &end, 8);
- if (*end || (perms->mode & ~0777)) {
+ int tmp;
+
+ if (virStrToLong_i(mode, NULL, 8, &tmp) < 0 || (tmp & ~0777)) {
VIR_FREE(mode);
virStorageReportError(VIR_ERR_XML_ERROR,
"%s", _("malformed octal mode"));
goto error;
}
+ perms->mode = tmp;
VIR_FREE(mode);
}
ctxt->node = relnode;
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
- char *conv = NULL;
- long val;
-
- val = strtol((const char *) obj->stringval, &conv, base);
- if (conv == (const char *) obj->stringval) {
+ if (virStrToLong_l((char *) obj->stringval, NULL, base, value) < 0)
ret = -2;
- } else {
- *value = val;
- }
} else if ((obj != NULL) && (obj->type == XPATH_NUMBER) &&
(!(isnan(obj->floatval)))) {
*value = (long) obj->floatval;
ctxt->node = relnode;
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
- char *conv = NULL;
- long val;
-
- val = strtoul((const char *) obj->stringval, &conv, base);
- if (conv == (const char *) obj->stringval) {
+ if (virStrToLong_ul((char *) obj->stringval, NULL, base, value) < 0)
ret = -2;
- } else {
- *value = val;
- }
} else if ((obj != NULL) && (obj->type == XPATH_NUMBER) &&
(!(isnan(obj->floatval)))) {
*value = (unsigned long) obj->floatval;
ctxt->node = relnode;
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
- char *conv = NULL;
- unsigned long long val;
-
- val = strtoull((const char *) obj->stringval, &conv, 10);
- if (conv == (const char *) obj->stringval) {
+ if (virStrToLong_ull((char *) obj->stringval, NULL, 10, value) < 0)
ret = -2;
- } else {
- *value = val;
- }
} else if ((obj != NULL) && (obj->type == XPATH_NUMBER) &&
(!(isnan(obj->floatval)))) {
*value = (unsigned long long) obj->floatval;
ctxt->node = relnode;
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
- char *conv = NULL;
- unsigned long long val;
-
- val = strtoll((const char *) obj->stringval, &conv, 10);
- if (conv == (const char *) obj->stringval) {
+ if (virStrToLong_ll((char *) obj->stringval, NULL, 10, value) < 0)
ret = -2;
- } else {
- *value = val;
- }
} else if ((obj != NULL) && (obj->type == XPATH_NUMBER) &&
(!(isnan(obj->floatval)))) {
*value = (long long) obj->floatval;