diff options
Diffstat (limited to 'src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp')
-rw-r--r-- | src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp b/src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp deleted file mode 100644 index cdc84c6229..0000000000 --- a/src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* -* (C) 2018 Ribose Inc -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#include <botan/parsing.h> -#include <botan/exceptn.h> - -namespace Botan { - -std::map<std::string, std::string> read_kv(const std::string& kv) - { - std::map<std::string, std::string> m; - if(kv == "") - return m; - - std::vector<std::string> parts; - - try - { - parts = split_on(kv, ','); - } - catch(std::exception&) - { - throw Invalid_Argument("Bad KV spec"); - } - - bool escaped = false; - bool reading_key = true; - std::string cur_key; - std::string cur_val; - - for(char c : kv) - { - if(c == '\\' && !escaped) - { - escaped = true; - } - else if(c == ',' && !escaped) - { - if(cur_key.empty()) - throw Invalid_Argument("Bad KV spec empty key"); - - if(m.find(cur_key) != m.end()) - throw Invalid_Argument("Bad KV spec duplicated key"); - m[cur_key] = cur_val; - cur_key = ""; - cur_val = ""; - reading_key = true; - } - else if(c == '=' && !escaped) - { - if(reading_key == false) - throw Invalid_Argument("Bad KV spec unexpected equals sign"); - reading_key = false; - } - else - { - if(reading_key) - cur_key += c; - else - cur_val += c; - - if(escaped) - escaped = false; - } - } - - if(!cur_key.empty()) - { - if(reading_key == false) - { - if(m.find(cur_key) != m.end()) - throw Invalid_Argument("Bad KV spec duplicated key"); - m[cur_key] = cur_val; - } - else - throw Invalid_Argument("Bad KV spec incomplete string"); - } - - return m; - } - -} |