]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- cleanup after failed create-config (bnc#863578)
authorArvin Schnell <aschnell@suse.de>
Thu, 14 Aug 2014 12:17:16 +0000 (14:17 +0200)
committerArvin Schnell <aschnell@suse.de>
Thu, 14 Aug 2014 12:17:16 +0000 (14:17 +0200)
package/snapper.changes
snapper/Snapper.cc

index ef46228de8b82d37b3116a22c1f589d6a6eeca4f..2c71fb7c2c72238410973559aaf220dacfc98182 100644 (file)
@@ -1,3 +1,8 @@
+-------------------------------------------------------------------
+Thu Aug 14 14:15:21 CEST 2014 - aschnell@suse.de
+
+- cleanup after failed create-config (bnc#863578)
+
 -------------------------------------------------------------------
 Thu Jul 31 15:38:16 CEST 2014 - aschnell@suse.de
 
index 88292450a4ade70144ac8b3bae039d181ab9fbfc..995ecdbcf912184971379eb7ffddf0af866a6080 100644 (file)
@@ -403,7 +403,23 @@ namespace snapper
            throw CreateConfigFailedException("modifying config failed");
        }
 
-       filesystem->createConfig(add_fstab);
+       try
+       {
+           filesystem->createConfig(add_fstab);
+       }
+       catch (...)
+       {
+           SysconfigFile sysconfig(SYSCONFIGFILE);
+           vector<string> config_names;
+           sysconfig.getValue("SNAPPER_CONFIGS", config_names);
+           config_names.erase(remove(config_names.begin(), config_names.end(), config_name),
+                              config_names.end());
+           sysconfig.setValue("SNAPPER_CONFIGS", config_names);
+
+           unlink((CONFIGSDIR "/" + config_name).c_str());
+
+           throw;
+       }
 
 #ifdef ENABLE_ROLLBACK
        if (subvolume == "/" && filesystem->fstype() == "btrfs" &&