]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #2487 in SNORT/snort3 from ~SVLASIUK/snort3:dump_sorted_config_opt...
authorMichael Altizer (mialtize) <mialtize@cisco.com>
Sat, 19 Sep 2020 22:20:30 +0000 (22:20 +0000)
committerMichael Altizer (mialtize) <mialtize@cisco.com>
Sat, 19 Sep 2020 22:20:30 +0000 (22:20 +0000)
Squashed commit of the following:

commit c11944eba35d03642f82b0f50d4bdab2c65717ab
Author: Serhii Vlasiuk <svlasiuk@cisco.com>
Date:   Fri Sep 18 11:36:01 2020 +0300

    dump_config: sort config options before printing

src/dump_config/config_data.cc
src/dump_config/config_data.h

index d2ffb3d5419eeb5125b043bdbe980af121847929..a7e71e17971448a9d41d320fe1ab98da514d4fce 100644 (file)
@@ -45,6 +45,18 @@ void BaseConfigNode::clear_nodes(BaseConfigNode* node)
     delete node;
 }
 
+void BaseConfigNode::sort_nodes(BaseConfigNode* node)
+{
+    if ( !node->children.empty() )
+    {
+        node->children.sort([](const BaseConfigNode* l, const BaseConfigNode* r)
+            { return l->get_name() < r->get_name(); });
+
+        for ( auto& config_node : node->children )
+            sort_nodes(config_node);
+    }
+}
+
 TreeConfigNode::TreeConfigNode(BaseConfigNode* parent_node,
     const std::string& node_name, const Parameter::Type node_type) :
         BaseConfigNode(parent_node), name(node_name), type(node_type)
@@ -100,11 +112,14 @@ void ConfigData::sort()
 {
     config_trees.sort([](const BaseConfigNode* l, const BaseConfigNode* r)
         { return l->get_name() < r->get_name(); });
+
+    for ( auto config_tree : config_trees )
+        BaseConfigNode::sort_nodes(config_tree);
 }
 
 void ConfigData::clear()
 {
-    for ( auto config_tree: config_trees )
+    for ( auto config_tree : config_trees )
         BaseConfigNode::clear_nodes(config_tree);
 
     config_trees.clear();
index b6ad0603dc0cdae187233d94835dd5e1a518c478..3ade029f57a8d37a38331d2258ab773919975b9e 100644 (file)
@@ -49,6 +49,7 @@ public:
     void add_child_node(BaseConfigNode* node);
 
     static void clear_nodes(BaseConfigNode* root);
+    static void sort_nodes(BaseConfigNode* node);
 
 protected:
     ConfigTrees children;