aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2018-04-06 22:52:35 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2018-04-06 22:53:29 -0700
commitbab554a8b3df8bf451e846022b310204b8843640 (patch)
treea795171c53bb92072a615b80febf557ea7aa3c95
parent740622dd73b96c49c66564f5c060bd179bc13b5d (diff)
downloadvcpkg-bab554a8b3df8bf451e846022b310204b8843640.tar.gz
vcpkg-bab554a8b3df8bf451e846022b310204b8843640.zip
[vcpkg hash] Process in C++ instead of calling awk
-rw-r--r--toolsrc/src/vcpkg/commands.hash.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/toolsrc/src/vcpkg/commands.hash.cpp b/toolsrc/src/vcpkg/commands.hash.cpp
index 3f90eeaca..801b8d323 100644
--- a/toolsrc/src/vcpkg/commands.hash.cpp
+++ b/toolsrc/src/vcpkg/commands.hash.cpp
@@ -187,7 +187,16 @@ namespace vcpkg::Commands::Hash
"Failed to run:\n"
" %s",
cmd_line);
- return Strings::trim(std::string{ec_data.output});
+
+ std::vector<std::string> split = Strings::split(ec_data.output, " ");
+ Checks::check_exit(VCPKG_LINE_INFO,
+ split.size() == 3,
+ "Expected output of the form [hash filename\n] (3 tokens), but got\n"
+ "[%s] (%s tokens)",
+ ec_data.output,
+ std::to_string(split.size()));
+
+ return split[0];
}
std::string get_file_hash(const VcpkgPaths& paths, const fs::path& path, const std::string& hash_type)
@@ -196,7 +205,7 @@ namespace vcpkg::Commands::Hash
Checks::check_exit(
VCPKG_LINE_INFO, paths.get_filesystem().exists(path), "File %s does not exist", path.u8string());
const std::string cmd_line = Strings::format(
- R"(shasum -a %s "%s" | awk '{ print $1 }')", digest_size, path.u8string());
+ R"(shasum -a %s "%s")", digest_size, path.u8string());
return run_shasum_and_post_process(cmd_line);
}
@@ -206,7 +215,7 @@ namespace vcpkg::Commands::Hash
verify_has_only_allowed_chars(s);
const std::string cmd_line = Strings::format(
- R"(echo -n "%s" | shasum -a %s | awk '{ print $1 }')", s, digest_size);
+ R"(echo -n "%s" | shasum -a %s)", s, digest_size);
return run_shasum_and_post_process(cmd_line);
}
}