}
+int
+virSecretObjDeleteConfig(virSecretObjPtr secret)
+{
+ if (!secret->def->ephemeral &&
+ unlink(secret->configFile) < 0 && errno != ENOENT) {
+ virReportSystemError(errno, _("cannot unlink '%s'"),
+ secret->configFile);
+ return -1;
+ }
+
+ return 0;
+}
+
+
+void
+virSecretObjDeleteData(virSecretObjPtr secret)
+{
+ /* The configFile will already be removed, so secret won't be
+ * loaded again if this fails */
+ (void)unlink(secret->base64File);
+}
+
+
static int
virSecretLoadValidateUUID(virSecretDefPtr def,
const char *file)
virSecretObjListACLFilter filter,
virConnectPtr conn);
+int virSecretObjDeleteConfig(virSecretObjPtr secret);
+
+void virSecretObjDeleteData(virSecretObjPtr secret);
+
int virSecretLoadAllConfigs(virSecretObjListPtr secrets,
const char *configDir);
#endif /* __VIRSECRETOBJ_H__ */
return ret;
}
-static int
-secretDeleteSaved(const virSecretObj *secret)
-{
- if (unlink(secret->configFile) < 0 && errno != ENOENT)
- return -1;
-
- /* When the XML is missing, the rest may waste disk space, but the secret
- won't be loaded again, so we have succeeded already. */
- (void)unlink(secret->base64File);
-
- return 0;
-}
-
/* Driver functions */
static int
goto restore_backup;
}
} else if (backup && !backup->ephemeral) {
- if (secretDeleteSaved(secret) < 0)
+ if (virSecretObjDeleteConfig(secret) < 0)
goto restore_backup;
+
+ virSecretObjDeleteData(secret);
}
/* Saved successfully - drop old values */
new_attrs = NULL;
if (virSecretUndefineEnsureACL(obj->conn, secret->def) < 0)
goto cleanup;
- if (!secret->def->ephemeral &&
- secretDeleteSaved(secret) < 0)
+ if (virSecretObjDeleteConfig(secret) < 0)
goto cleanup;
+ virSecretObjDeleteData(secret);
+
virSecretObjListRemove(driver->secrets, secret);
ret = 0;