]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- move ConfigInfo to own file and use unique_ptr
authorArvin Schnell <aschnell@suse.de>
Thu, 24 Jul 2025 16:34:07 +0000 (18:34 +0200)
committerArvin Schnell <aschnell@suse.de>
Thu, 24 Jul 2025 16:34:07 +0000 (18:34 +0200)
snapper/ConfigInfo.cc [new file with mode: 0644]
snapper/ConfigInfo.h [new file with mode: 0644]
snapper/Makefile.am
snapper/Snapper.cc
snapper/Snapper.h

diff --git a/snapper/ConfigInfo.cc b/snapper/ConfigInfo.cc
new file mode 100644 (file)
index 0000000..67788c2
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) [2011-2015] Novell, Inc.
+ * Copyright (c) [2016-2025] SUSE LLC
+ *
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, contact Novell, Inc.
+ *
+ * To contact Novell about this file by physical or electronic mail, you may
+ * find current contact information at www.novell.com.
+ */
+
+
+#include "config.h"
+
+#include "snapper/ConfigInfo.h"
+#include "snapper/Exception.h"
+#include "snapper/SnapperDefines.h"
+#include "snapper/AppUtil.h"
+#include "snapper/Snapper.h"
+
+
+namespace snapper
+{
+    using namespace std;
+
+
+    ConfigInfo::ConfigInfo(const string& config_name, const string& root_prefix)
+       : SysconfigFile(prepend_root_prefix(root_prefix, CONFIGS_DIR "/" + config_name)),
+         config_name(config_name), root_prefix(root_prefix), subvolume("/")
+    {
+       if (!get_value(KEY_SUBVOLUME, subvolume))
+           SN_THROW(InvalidConfigException());
+    }
+
+
+    void
+    ConfigInfo::check_key(const string& key) const
+    {
+       if (key == KEY_SUBVOLUME || key == KEY_FSTYPE)
+           SN_THROW(InvalidConfigdataException());
+
+       try
+       {
+           SysconfigFile::check_key(key);
+       }
+       catch (const InvalidKeyException& e)
+       {
+           SN_CAUGHT(e);
+
+           SN_THROW(InvalidConfigdataException());
+       }
+    }
+
+}
diff --git a/snapper/ConfigInfo.h b/snapper/ConfigInfo.h
new file mode 100644 (file)
index 0000000..c038c29
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) [2011-2015] Novell, Inc.
+ * Copyright (c) [2016-2025] SUSE LLC
+ *
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, contact Novell, Inc.
+ *
+ * To contact Novell about this file by physical or electronic mail, you may
+ * find current contact information at www.novell.com.
+ */
+
+
+#ifndef SNAPPER_CONFIG_INFO_H
+#define SNAPPER_CONFIG_INFO_H
+
+
+#include "snapper/AsciiFile.h"
+
+
+namespace snapper
+{
+
+    class ConfigInfo : public SysconfigFile
+    {
+    public:
+
+       ConfigInfo(const std::string& config_name, const std::string& root_prefix);
+
+       const std::string& get_config_name() const { return config_name; }
+       const std::string& get_subvolume() const { return subvolume; }
+
+       virtual void check_key(const std::string& key) const override;
+
+    private:
+
+       const std::string config_name;
+       const std::string root_prefix;
+
+       std::string subvolume;
+
+    };
+
+}
+
+
+#endif
index 6941061f31b559c621a8374244267fa1f1ab2fa0..94a5cb77796bf6588b48c77d7beeafd7c29e1959 100644 (file)
@@ -7,6 +7,7 @@ AM_CXXFLAGS = -D_FILE_OFFSET_BITS=64
 lib_LTLIBRARIES = libsnapper.la
 
 libsnapper_la_SOURCES =                                        \
+       ConfigInfo.cc           ConfigInfo.h            \
        Snapper.cc              Snapper.h               \
        Snapshot.cc             Snapshot.h              \
        Comparison.cc           Comparison.h            \
@@ -86,6 +87,7 @@ pkgincludedir = $(includedir)/snapper
 
 pkginclude_HEADERS =                                   \
        Version.h                                       \
+       ConfigInfo.h                                    \
        Snapper.h                                       \
        Snapshot.h                                      \
        Plugins.h                                       \
index 2a9e35e2ab8840206792ea5464c99d4eeeff78d0..6d86cb6af2f538931fe26da6300ea226db6965ca 100644 (file)
@@ -63,34 +63,6 @@ namespace snapper
     using namespace std;
 
 
-    ConfigInfo::ConfigInfo(const string& config_name, const string& root_prefix)
-       : SysconfigFile(prepend_root_prefix(root_prefix, CONFIGS_DIR "/" + config_name)),
-         config_name(config_name), subvolume("/")
-    {
-       if (!get_value(KEY_SUBVOLUME, subvolume))
-           SN_THROW(InvalidConfigException());
-    }
-
-
-    void
-    ConfigInfo::check_key(const string& key) const
-    {
-       if (key == KEY_SUBVOLUME || key == KEY_FSTYPE)
-           SN_THROW(InvalidConfigdataException());
-
-       try
-       {
-           SysconfigFile::check_key(key);
-       }
-       catch (const InvalidKeyException& e)
-       {
-           SN_CAUGHT(e);
-
-           SN_THROW(InvalidConfigdataException());
-       }
-    }
-
-
     Snapper::Snapper(const string& config_name, const string& root_prefix, bool disable_filters)
        : config_name(config_name), root_prefix(root_prefix), snapshots(this)
     {
@@ -101,7 +73,7 @@ namespace snapper
 
        try
        {
-           config_info = new ConfigInfo(config_name, root_prefix);
+           config_info = make_unique<ConfigInfo>(config_name, root_prefix);
        }
        catch (const Exception& e)
        {
@@ -154,9 +126,6 @@ namespace snapper
 
        delete filesystem;
        filesystem = nullptr;
-
-       delete config_info;
-       config_info = nullptr;
     }
 
 
index a43f8aaaa7a53b969d4287ab61481262bab6f810..df4e841fae761278c161ed862f82eba1f79773df 100644 (file)
 #define SNAPPER_SNAPPER_H
 
 
+#include <memory>
 #include <vector>
 #include <boost/noncopyable.hpp>
 
 #include "snapper/Snapshot.h"
-#include "snapper/AsciiFile.h"
 #include "snapper/Plugins.h"
+#include "snapper/ConfigInfo.h"
 
 
 namespace snapper
 {
-    using std::vector;
-
 
     class Filesystem;
     class SDir;
     class SelinuxLabelHandle;
 
 
-    class ConfigInfo : public SysconfigFile
-    {
-    public:
-
-       explicit ConfigInfo(const string& config_name, const string& root_prefix);
-
-       const string& get_config_name() const { return config_name; }
-       const string& get_subvolume() const { return subvolume; }
-
-       virtual void check_key(const string& key) const override;
-
-    private:
-
-       const string config_name;
-
-       string subvolume;
-
-    };
-
-
     struct ConfigNotFoundException : public Exception
     {
        explicit ConfigNotFoundException() : Exception("config not found") {}
@@ -217,7 +196,7 @@ namespace snapper
        const std::string config_name;
        const std::string root_prefix;
 
-       ConfigInfo* config_info = nullptr;
+       std::unique_ptr<ConfigInfo> config_info;
 
        Filesystem* filesystem = nullptr;