}
+virStorageSourcePtr
+virDomainStorageSourceParseBase(const char *type,
+ const char *format,
+ const char *index)
+{
+ VIR_AUTOUNREF(virStorageSourcePtr) src = NULL;
+ virStorageSourcePtr ret = NULL;
+
+ if (!(src = virStorageSourceNew()))
+ return NULL;
+
+ src->type = VIR_STORAGE_TYPE_FILE;
+
+ if (type &&
+ (src->type = virStorageTypeFromString(type)) <= 0) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("unknown storage source type '%s'"), type);
+ return NULL;
+ }
+
+ if (format &&
+ (src->format = virStorageFileFormatTypeFromString(format)) <= 0) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("unknown storage source format '%s'"), format);
+ return NULL;
+ }
+
+ if (index &&
+ virStrToLong_uip(index, NULL, 10, &src->id) < 0) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("invalid storage source index '%s'"), index);
+ return NULL;
+ }
+
+ VIR_STEAL_PTR(ret, src);
+ return ret;
+}
+
+
int
virDomainStorageSourceParse(xmlNodePtr node,
xmlXPathContextPtr ctxt,
const virDomainDiskDef *b)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+virStorageSourcePtr
+virDomainStorageSourceParseBase(const char *type,
+ const char *format,
+ const char *index)
+ ATTRIBUTE_RETURN_CHECK;
int virDomainStorageSourceParse(xmlNodePtr node,
xmlXPathContextPtr ctxt,
virDomainStateTypeToString;
virDomainStorageNetworkParseHost;
virDomainStorageSourceParse;
+virDomainStorageSourceParseBase;
virDomainTaintTypeFromString;
virDomainTaintTypeToString;
virDomainTimerModeTypeFromString;