aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/read_cfg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/read_cfg.cpp')
-rw-r--r--src/utils/read_cfg.cpp115
1 files changed, 0 insertions, 115 deletions
diff --git a/src/utils/read_cfg.cpp b/src/utils/read_cfg.cpp
deleted file mode 100644
index ad57a8b3e..000000000
--- a/src/utils/read_cfg.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-* Simple config/test file reader
-* (C) 2013 Jack Lloyd
-*
-* Distributed under the terms of the Botan license
-*/
-
-#include <botan/parsing.h>
-#include <boost/algorithm/string.hpp>
-
-namespace Botan {
-
-void lex_cfg(std::istream& is,
- std::function<void (std::string)> cb)
- {
- while(is.good())
- {
- std::string s;
-
- std::getline(is, s);
-
- while(is.good() && s.back() == '\\')
- {
- boost::trim_if(s, boost::is_any_of("\\\n"));
- std::string x;
- std::getline(is, x);
- boost::trim_left(x);
- s += x;
- }
-
- auto comment = s.find('#');
- if(comment)
- s = s.substr(0, comment);
-
- if(s.empty())
- continue;
-
- std::vector<std::string> parts;
- boost::split(parts, s, boost::is_any_of(" \t\n"), boost::token_compress_on);
-
- for(auto p : parts)
- {
- if(p.empty())
- continue;
-
- auto eq = p.find("=");
-
- if(eq == std::string::npos || p.size() < 2)
- {
- cb(p);
- }
- else if(eq == 0)
- {
- cb("=");
- cb(p.substr(1, std::string::npos));
- }
- else if(eq == p.size() - 1)
- {
- cb(p.substr(0, p.size() - 1));
- cb("=");
- }
- else if(eq != std::string::npos)
- {
- cb(p.substr(0, eq));
- cb("=");
- cb(p.substr(eq + 1, std::string::npos));
- }
- }
- }
- }
-
-void lex_cfg_w_headers(std::istream& is,
- std::function<void (std::string)> cb,
- std::function<void (std::string)> hdr_cb)
- {
- auto intercept = [cb,hdr_cb](const std::string& s)
- {
- if(s[0] == '[' && s[s.length()-1] == ']')
- hdr_cb(s.substr(1, s.length()-2));
- else
- cb(s);
- };
-
- lex_cfg(is, intercept);
- }
-
-std::map<std::string, std::map<std::string, std::string>>
- parse_cfg(std::istream& is)
- {
- std::string header = "default";
- std::map<std::string, std::map<std::string, std::string>> vals;
- std::string key;
-
- auto header_cb = [&header](const std::string i) { header = i; };
- auto cb = [&header,&key,&vals](const std::string s)
- {
- if(s == "=")
- {
- BOTAN_ASSERT(!key.empty(), "Valid assignment in config");
- }
- else if(key.empty())
- key = s;
- else
- {
- vals[header][key] = s;
- key = "";
- }
- };
-
- lex_cfg_w_headers(is, cb, header_cb);
-
- return vals;
- }
-
-}