return vzSnapObjFromName(snapshots, snapshot->name);
}
-static int
-vzCurrentSnapshotIterator(void *payload,
- const void *name ATTRIBUTE_UNUSED,
- void *data)
-{
- virDomainMomentObjPtr snapshot = payload;
- virDomainMomentObjPtr *current = data;
-
- if (snapshot->def->current)
- *current = snapshot;
-
- return 0;
-}
-
-static virDomainMomentObjPtr
-vzFindCurrentSnapshot(virDomainSnapshotObjListPtr snapshots)
-{
- virDomainMomentObjPtr current = NULL;
-
- virDomainSnapshotForEach(snapshots, vzCurrentSnapshotIterator, ¤t);
- return current;
-}
-
static int
vzDomainSnapshotNum(virDomainPtr domain, unsigned int flags)
{
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
- ret = vzFindCurrentSnapshot(snapshots) != NULL;
+ ret = virDomainSnapshotGetCurrent(snapshots) != NULL;
cleanup:
virDomainSnapshotObjListFree(snapshots);
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
- if (!(current = vzFindCurrentSnapshot(snapshots))) {
+ if (!(current = virDomainSnapshotGetCurrent(snapshots))) {
virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT, "%s",
_("the domain does not have a current snapshot"));
goto cleanup;
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
- current = vzFindCurrentSnapshot(snapshots);
+ current = virDomainSnapshotGetCurrent(snapshots);
ret = current && STREQ(snapshot->name, current->def->name);
cleanup:
if (!(snapshots = prlsdkLoadSnapshots(dom)))
goto cleanup;
- if (!(current = vzFindCurrentSnapshot(snapshots))) {
+ if (!(current = virDomainSnapshotGetCurrent(snapshots))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("can't find created snapshot"));
goto cleanup;
xmlNodePtr *nodes = NULL;
virDomainSnapshotDefPtr def = NULL;
virDomainMomentObjPtr snapshot;
- virDomainMomentObjPtr current = NULL;
virDomainSnapshotObjListPtr snapshots = NULL;
char *xmlstr = NULL;
int n;
}
VIR_FREE(xmlstr);
- xmlstr = virXPathString("string(./@current)", ctxt);
- def->current = xmlstr && STREQ("yes", xmlstr);
- VIR_FREE(xmlstr);
-
if (!(snapshot = virDomainSnapshotAssignDef(snapshots, def)))
goto cleanup;
def = NULL;
- if (snapshot->def->current) {
- if (current) {
+ xmlstr = virXPathString("string(./@current)", ctxt);
+ if (xmlstr && STREQ("yes", xmlstr)) {
+ if (virDomainSnapshotGetCurrent(snapshots)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("too many current snapshots"));
+ VIR_FREE(xmlstr);
goto cleanup;
}
- current = snapshot;
+ virDomainSnapshotSetCurrent(snapshots, snapshot);
}
+ VIR_FREE(xmlstr);
}
if (virDomainSnapshotUpdateRelations(snapshots) < 0) {