summaryrefslogtreecommitdiff
path: root/tools/text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/text.cpp')
-rw-r--r--tools/text.cpp158
1 files changed, 0 insertions, 158 deletions
diff --git a/tools/text.cpp b/tools/text.cpp
deleted file mode 100644
index 9084f7e808e0..000000000000
--- a/tools/text.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// Automated Testing Framework (atf)
-//
-// Copyright (c) 2007 The NetBSD Foundation, Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
-// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-
-extern "C" {
-#include <regex.h>
-}
-
-#include <cctype>
-#include <cerrno>
-#include <cstring>
-
-#include "exceptions.hpp"
-#include "text.hpp"
-
-namespace impl = tools::text;
-#define IMPL_NAME "tools::text"
-
-char*
-impl::duplicate(const char* str)
-{
- char* copy = new char[std::strlen(str) + 1];
- std::strcpy(copy, str);
- return copy;
-}
-
-bool
-impl::match(const std::string& str, const std::string& regex)
-{
- bool found;
-
- // Special case: regcomp does not like empty regular expressions.
- if (regex.empty()) {
- found = str.empty();
- } else {
- ::regex_t preg;
-
- if (::regcomp(&preg, regex.c_str(), REG_EXTENDED) != 0)
- throw std::runtime_error("Invalid regular expression '" + regex +
- "'");
-
- const int res = ::regexec(&preg, str.c_str(), 0, NULL, 0);
- regfree(&preg);
- if (res != 0 && res != REG_NOMATCH)
- throw std::runtime_error("Invalid regular expression " + regex);
-
- found = res == 0;
- }
-
- return found;
-}
-
-std::string
-impl::to_lower(const std::string& str)
-{
- std::string lc;
- for (std::string::const_iterator iter = str.begin(); iter != str.end();
- iter++)
- lc += std::tolower(*iter);
- return lc;
-}
-
-std::vector< std::string >
-impl::split(const std::string& str, const std::string& delim)
-{
- std::vector< std::string > words;
-
- std::string::size_type pos = 0, newpos = 0;
- while (pos < str.length() && newpos != std::string::npos) {
- newpos = str.find(delim, pos);
- if (newpos != pos)
- words.push_back(str.substr(pos, newpos - pos));
- pos = newpos + delim.length();
- }
-
- return words;
-}
-
-std::string
-impl::trim(const std::string& str)
-{
- std::string::size_type pos1 = str.find_first_not_of(" \t");
- std::string::size_type pos2 = str.find_last_not_of(" \t");
-
- if (pos1 == std::string::npos && pos2 == std::string::npos)
- return "";
- else if (pos1 == std::string::npos)
- return str.substr(0, str.length() - pos2);
- else if (pos2 == std::string::npos)
- return str.substr(pos1);
- else
- return str.substr(pos1, pos2 - pos1 + 1);
-}
-
-bool
-impl::to_bool(const std::string& str)
-{
- const std::string lower = to_lower(str);
- if (lower == "yes" || lower == "true")
- return true;
- else if (lower == "no" || lower == "false")
- return false;
- else {
- // XXX Not really a libc error.
- throw system_error(IMPL_NAME "::to_bool", "Cannot convert string "
- "'" + str + "' to boolean", EINVAL);
- }
-}
-
-int64_t
-impl::to_bytes(std::string str)
-{
- if (str.empty())
- throw std::runtime_error("Empty value");
-
- const char unit = str[str.length() - 1];
- int64_t multiplier;
- switch (unit) {
- case 'k': case 'K': multiplier = 1 << 10; break;
- case 'm': case 'M': multiplier = 1 << 20; break;
- case 'g': case 'G': multiplier = 1 << 30; break;
- case 't': case 'T': multiplier = int64_t(1) << 40; break;
- default:
- if (!std::isdigit(unit))
- throw std::runtime_error(std::string("Unknown size unit '") + unit
- + "'");
- multiplier = 1;
- }
- if (multiplier != 1)
- str.erase(str.length() - 1);
-
- return to_type< int64_t >(str) * multiplier;
-}