refactor(3p/nix/libutil): Replace string2Int & trim functions
Replaces these functions with corresponding functions from Abseil, namely absl::StripAsciiWhitespace and absl::SimpleAtoi. In the course of doing this some minor things I encountered along the way were also refactored. This also changes the signatures of the various custom readFile functions to use absl::string_view types.
This commit is contained in:
parent
b371821db5
commit
98299da0fd
19 changed files with 84 additions and 72 deletions
4
third_party/nix/src/libutil/args.hh
vendored
4
third_party/nix/src/libutil/args.hh
vendored
|
|
@ -4,6 +4,8 @@
|
|||
#include <map>
|
||||
#include <memory>
|
||||
|
||||
#include <absl/strings/numbers.h>
|
||||
|
||||
#include "util.hh"
|
||||
|
||||
namespace nix {
|
||||
|
|
@ -179,7 +181,7 @@ class Args {
|
|||
.arity(1)
|
||||
.handler([=](std::vector<std::string> ss) {
|
||||
I n;
|
||||
if (!string2Int(ss[0], n))
|
||||
if (!absl::SimpleAtoi(ss[0], &n))
|
||||
throw UsageError("flag '--%s' requires a integer argument",
|
||||
longName);
|
||||
fun(n);
|
||||
|
|
|
|||
3
third_party/nix/src/libutil/config.cc
vendored
3
third_party/nix/src/libutil/config.cc
vendored
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <utility>
|
||||
|
||||
#include <absl/strings/numbers.h>
|
||||
#include <glog/logging.h>
|
||||
|
||||
#include "args.hh"
|
||||
|
|
@ -214,7 +215,7 @@ std::string BaseSetting<std::string>::to_string() {
|
|||
template <typename T>
|
||||
void BaseSetting<T>::set(const std::string& str) {
|
||||
static_assert(std::is_integral<T>::value, "Integer required.");
|
||||
if (!string2Int(str, value)) {
|
||||
if (!absl::SimpleAtoi(str, &value)) {
|
||||
throw UsageError("setting '%s' has invalid value '%s'", name, str);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
third_party/nix/src/libutil/meson.build
vendored
2
third_party/nix/src/libutil/meson.build
vendored
|
|
@ -47,7 +47,7 @@ libutil_dep_list = [
|
|||
openssl_dep,
|
||||
pthread_dep,
|
||||
libsodium_dep,
|
||||
]
|
||||
] + absl_deps
|
||||
|
||||
libutil_link_list = []
|
||||
libutil_link_args = []
|
||||
|
|
|
|||
19
third_party/nix/src/libutil/util.cc
vendored
19
third_party/nix/src/libutil/util.cc
vendored
|
|
@ -12,6 +12,7 @@
|
|||
#include <thread>
|
||||
#include <utility>
|
||||
|
||||
#include <absl/strings/string_view.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
|
|
@ -306,16 +307,17 @@ std::string readFile(int fd) {
|
|||
return std::string((char*)buf.data(), st.st_size);
|
||||
}
|
||||
|
||||
std::string readFile(const Path& path, bool drain) {
|
||||
AutoCloseFD fd = open(path.c_str(), O_RDONLY | O_CLOEXEC);
|
||||
std::string readFile(absl::string_view path, bool drain) {
|
||||
AutoCloseFD fd = open(std::string(path).c_str(), O_RDONLY | O_CLOEXEC);
|
||||
if (!fd) {
|
||||
throw SysError(format("opening file '%1%'") % path);
|
||||
}
|
||||
return drain ? drainFD(fd.get()) : readFile(fd.get());
|
||||
}
|
||||
|
||||
void readFile(const Path& path, Sink& sink) {
|
||||
AutoCloseFD fd = open(path.c_str(), O_RDONLY | O_CLOEXEC);
|
||||
void readFile(absl::string_view path, Sink& sink) {
|
||||
// TODO(tazjin): use stdlib functions for this stuff
|
||||
AutoCloseFD fd = open(std::string(path).c_str(), O_RDONLY | O_CLOEXEC);
|
||||
if (!fd) {
|
||||
throw SysError("opening file '%s'", path);
|
||||
}
|
||||
|
|
@ -1213,15 +1215,6 @@ std::string concatStringsSep(const std::string& sep, const StringSet& ss) {
|
|||
return s;
|
||||
}
|
||||
|
||||
std::string trim(const std::string& s, const std::string& whitespace) {
|
||||
auto i = s.find_first_not_of(whitespace);
|
||||
if (i == std::string::npos) {
|
||||
return "";
|
||||
}
|
||||
auto j = s.find_last_not_of(whitespace);
|
||||
return std::string(s, i, j == std::string::npos ? j : j - i + 1);
|
||||
}
|
||||
|
||||
std::string replaceStrings(const std::string& s, const std::string& from,
|
||||
const std::string& to) {
|
||||
if (from.empty()) {
|
||||
|
|
|
|||
19
third_party/nix/src/libutil/util.hh
vendored
19
third_party/nix/src/libutil/util.hh
vendored
|
|
@ -8,6 +8,7 @@
|
|||
#include <optional>
|
||||
#include <sstream>
|
||||
|
||||
#include <absl/strings/string_view.h>
|
||||
#include <dirent.h>
|
||||
#include <signal.h>
|
||||
#include <sys/stat.h>
|
||||
|
|
@ -97,8 +98,8 @@ unsigned char getFileType(const Path& path);
|
|||
|
||||
/* Read the contents of a file into a string. */
|
||||
std::string readFile(int fd);
|
||||
std::string readFile(const Path& path, bool drain = false);
|
||||
void readFile(const Path& path, Sink& sink);
|
||||
std::string readFile(absl::string_view path, bool drain = false);
|
||||
void readFile(absl::string_view path, Sink& sink);
|
||||
|
||||
/* Write a string to a file. */
|
||||
void writeFile(const Path& path, const std::string& s, mode_t mode = 0666);
|
||||
|
|
@ -325,10 +326,6 @@ C tokenizeString(const std::string& s,
|
|||
std::string concatStringsSep(const std::string& sep, const Strings& ss);
|
||||
std::string concatStringsSep(const std::string& sep, const StringSet& ss);
|
||||
|
||||
/* Remove whitespace from the start and end of a string. */
|
||||
std::string trim(const std::string& s,
|
||||
const std::string& whitespace = " \n\r\t");
|
||||
|
||||
/* Replace all occurrences of a string inside another string. */
|
||||
std::string replaceStrings(const std::string& s, const std::string& from,
|
||||
const std::string& to);
|
||||
|
|
@ -339,16 +336,6 @@ std::string statusToString(int status);
|
|||
|
||||
bool statusOk(int status);
|
||||
|
||||
/* Parse a string into an integer. */
|
||||
template <class N>
|
||||
bool string2Int(const std::string& s, N& n) {
|
||||
if (std::string(s, 0, 1) == "-" && !std::numeric_limits<N>::is_signed)
|
||||
return false;
|
||||
std::istringstream str(s);
|
||||
str >> n;
|
||||
return str && str.get() == EOF;
|
||||
}
|
||||
|
||||
/* Parse a string into a float. */
|
||||
template <class N>
|
||||
bool string2Float(const std::string& s, N& n) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue