From: Michael Altizer (mialtize) Date: Sat, 19 Sep 2020 22:20:30 +0000 (+0000) Subject: Merge pull request #2487 in SNORT/snort3 from ~SVLASIUK/snort3:dump_sorted_config_opt... X-Git-Tag: 3.0.3-1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b559e26ee5a66fad7d53e5abea0803d7d4f3383;p=thirdparty%2Fsnort3.git Merge pull request #2487 in SNORT/snort3 from ~SVLASIUK/snort3:dump_sorted_config_options to master Squashed commit of the following: commit c11944eba35d03642f82b0f50d4bdab2c65717ab Author: Serhii Vlasiuk Date: Fri Sep 18 11:36:01 2020 +0300 dump_config: sort config options before printing --- diff --git a/src/dump_config/config_data.cc b/src/dump_config/config_data.cc index d2ffb3d54..a7e71e179 100644 --- a/src/dump_config/config_data.cc +++ b/src/dump_config/config_data.cc @@ -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(); diff --git a/src/dump_config/config_data.h b/src/dump_config/config_data.h index b6ad0603d..3ade029f5 100644 --- a/src/dump_config/config_data.h +++ b/src/dump_config/config_data.h @@ -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;