mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Use virXMLSaveFile when writing XML config
This commit is contained in:
parent
fef8127c5f
commit
c0d9dfe2a1
@ -11105,8 +11105,7 @@ int virDomainSaveXML(const char *configDir,
|
|||||||
const char *xml)
|
const char *xml)
|
||||||
{
|
{
|
||||||
char *configFile = NULL;
|
char *configFile = NULL;
|
||||||
int fd = -1, ret = -1;
|
int ret = -1;
|
||||||
size_t towrite;
|
|
||||||
|
|
||||||
if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL)
|
if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -11118,36 +11117,9 @@ int virDomainSaveXML(const char *configDir,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open(configFile,
|
ret = virXMLSaveFile(configFile, def->name, "edit", xml);
|
||||||
O_WRONLY | O_CREAT | O_TRUNC,
|
|
||||||
S_IRUSR | S_IWUSR )) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot create config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
virEmitXMLWarning(fd, def->name, "edit");
|
|
||||||
|
|
||||||
towrite = strlen(xml);
|
|
||||||
if (safewrite(fd, xml, towrite) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot write config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_CLOSE(fd) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot save config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
|
|
||||||
VIR_FREE(configFile);
|
VIR_FREE(configFile);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1395,8 +1395,7 @@ int virNetworkSaveXML(const char *configDir,
|
|||||||
const char *xml)
|
const char *xml)
|
||||||
{
|
{
|
||||||
char *configFile = NULL;
|
char *configFile = NULL;
|
||||||
int fd = -1, ret = -1;
|
int ret = -1;
|
||||||
size_t towrite;
|
|
||||||
|
|
||||||
if ((configFile = virNetworkConfigFile(configDir, def->name)) == NULL)
|
if ((configFile = virNetworkConfigFile(configDir, def->name)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -1408,39 +1407,10 @@ int virNetworkSaveXML(const char *configDir,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open(configFile,
|
ret = virXMLSaveFile(configFile, def->name, "net-edit", xml);
|
||||||
O_WRONLY | O_CREAT | O_TRUNC,
|
|
||||||
S_IRUSR | S_IWUSR )) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot create config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
virEmitXMLWarning(fd, def->name, "net-edit");
|
|
||||||
|
|
||||||
towrite = strlen(xml);
|
|
||||||
if (safewrite(fd, xml, towrite) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot write config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_CLOSE(fd) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot save config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
|
|
||||||
VIR_FREE(configFile);
|
VIR_FREE(configFile);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2186,8 +2186,7 @@ int virNWFilterSaveXML(const char *configDir,
|
|||||||
const char *xml)
|
const char *xml)
|
||||||
{
|
{
|
||||||
char *configFile = NULL;
|
char *configFile = NULL;
|
||||||
int fd = -1, ret = -1;
|
int ret = -1;
|
||||||
size_t towrite;
|
|
||||||
|
|
||||||
if ((configFile = virNWFilterConfigFile(configDir, def->name)) == NULL)
|
if ((configFile = virNWFilterConfigFile(configDir, def->name)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -2199,38 +2198,10 @@ int virNWFilterSaveXML(const char *configDir,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open(configFile,
|
ret = virXMLSaveFile(configFile, def->name, "nwfilter-edit", xml);
|
||||||
O_WRONLY | O_CREAT | O_TRUNC,
|
|
||||||
S_IRUSR | S_IWUSR )) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot create config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
virEmitXMLWarning(fd, def->name, "nwfilter-edit");
|
|
||||||
|
|
||||||
towrite = strlen(xml);
|
|
||||||
if (safewrite(fd, xml, towrite) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot write config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_CLOSE(fd) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot save config file '%s'"),
|
|
||||||
configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
VIR_FREE(configFile);
|
VIR_FREE(configFile);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2573,8 +2544,7 @@ virNWFilterObjSaveDef(virNWFilterDriverStatePtr driver,
|
|||||||
virNWFilterDefPtr def)
|
virNWFilterDefPtr def)
|
||||||
{
|
{
|
||||||
char *xml;
|
char *xml;
|
||||||
int fd = -1, ret = -1;
|
int ret;
|
||||||
ssize_t towrite;
|
|
||||||
|
|
||||||
if (!nwfilter->configFile) {
|
if (!nwfilter->configFile) {
|
||||||
if (virFileMakePath(driver->configDir) < 0) {
|
if (virFileMakePath(driver->configDir) < 0) {
|
||||||
@ -2596,37 +2566,7 @@ virNWFilterObjSaveDef(virNWFilterDriverStatePtr driver,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open(nwfilter->configFile,
|
ret = virXMLSaveFile(nwfilter->configFile, def->name, "nwfilter-edit", xml);
|
||||||
O_WRONLY | O_CREAT | O_TRUNC,
|
|
||||||
S_IRUSR | S_IWUSR )) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot create config file %s"),
|
|
||||||
nwfilter->configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
virEmitXMLWarning(fd, def->name, "nwfilter-edit");
|
|
||||||
|
|
||||||
towrite = strlen(xml);
|
|
||||||
if (safewrite(fd, xml, towrite) != towrite) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot write config file %s"),
|
|
||||||
nwfilter->configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_CLOSE(fd) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot save config file %s"),
|
|
||||||
nwfilter->configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
|
|
||||||
VIR_FREE(xml);
|
VIR_FREE(xml);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1525,10 +1525,10 @@ virStoragePoolLoadAllConfigs(virStoragePoolObjListPtr pools,
|
|||||||
int
|
int
|
||||||
virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
|
virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
|
||||||
virStoragePoolObjPtr pool,
|
virStoragePoolObjPtr pool,
|
||||||
virStoragePoolDefPtr def) {
|
virStoragePoolDefPtr def)
|
||||||
|
{
|
||||||
char *xml;
|
char *xml;
|
||||||
int fd = -1, ret = -1;
|
int ret = -1;
|
||||||
ssize_t towrite;
|
|
||||||
|
|
||||||
if (!pool->configFile) {
|
if (!pool->configFile) {
|
||||||
if (virFileMakePath(driver->configDir) < 0) {
|
if (virFileMakePath(driver->configDir) < 0) {
|
||||||
@ -1556,36 +1556,7 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open(pool->configFile,
|
ret = virXMLSaveFile(pool->configFile, def->name, "pool-edit", xml);
|
||||||
O_WRONLY | O_CREAT | O_TRUNC,
|
|
||||||
S_IRUSR | S_IWUSR )) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot create config file %s"),
|
|
||||||
pool->configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
virEmitXMLWarning(fd, def->name, "pool-edit");
|
|
||||||
|
|
||||||
towrite = strlen(xml);
|
|
||||||
if (safewrite(fd, xml, towrite) != towrite) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot write config file %s"),
|
|
||||||
pool->configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_CLOSE(fd) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("cannot save config file %s"),
|
|
||||||
pool->configFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
VIR_FREE(xml);
|
VIR_FREE(xml);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1337,7 +1337,6 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
|
|||||||
virDomainSnapshotObjPtr snapshot,
|
virDomainSnapshotObjPtr snapshot,
|
||||||
char *snapshotDir)
|
char *snapshotDir)
|
||||||
{
|
{
|
||||||
int fd = -1;
|
|
||||||
char *newxml = NULL;
|
char *newxml = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
char *snapDir = NULL;
|
char *snapDir = NULL;
|
||||||
@ -1367,33 +1366,19 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
|
|||||||
virReportOOMError();
|
virReportOOMError();
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
fd = open(snapFile, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR);
|
|
||||||
if (fd < 0) {
|
|
||||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
|
||||||
_("failed to create snapshot file '%s'"), snapFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virAsprintf(&tmp, "snapshot-edit %s", vm->def->name) < 0) {
|
if (virAsprintf(&tmp, "snapshot-edit %s", vm->def->name) < 0) {
|
||||||
virReportOOMError();
|
virReportOOMError();
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
virEmitXMLWarning(fd, snapshot->def->name, tmp);
|
|
||||||
|
ret = virXMLSaveFile(snapFile, snapshot->def->name, tmp, newxml);
|
||||||
VIR_FREE(tmp);
|
VIR_FREE(tmp);
|
||||||
|
|
||||||
if (safewrite(fd, newxml, strlen(newxml)) != strlen(newxml)) {
|
|
||||||
virReportSystemError(errno, _("Failed to write snapshot data to %s"),
|
|
||||||
snapFile);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(snapFile);
|
VIR_FREE(snapFile);
|
||||||
VIR_FREE(snapDir);
|
VIR_FREE(snapDir);
|
||||||
VIR_FREE(newxml);
|
VIR_FREE(newxml);
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user