summaryrefslogtreecommitdiffhomepage
path: root/file.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'file.cpp')
-rw-r--r--file.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/file.cpp b/file.cpp
index b5cbe36..d4c3f54 100644
--- a/file.cpp
+++ b/file.cpp
@@ -100,10 +100,15 @@ std::filesystem::path soname_short(const std::filesystem::path& p)
// file1.so.1 -> file1
std::string dynamic_lib_name(const std::filesystem::path& p)
{
- std::string result {p.stem().string()};
+ std::string result {p.filename().string()};
if (result.substr(0, 3) == "lib") {
result = result.substr(3);
}
+ size_t dotpos{result.find('.')};
+ if (dotpos == std::string::npos) {
+ throw std::runtime_error("Unexpected path: Expected dot (.) in: "s + p.string());
+ }
+ result = result.substr(0, dotpos);
return result;
}
@@ -120,6 +125,15 @@ std::filesystem::path simplified_path(const std::filesystem::path& p)
return p;
}
+std::filesystem::path lib_path(const std::filesystem::path& p)
+{
+ fs::path result{p.parent_path()};
+ if (result.empty()) {
+ result = ".";
+ }
+ return result;
+}
+
bool is_executable_command(const std::string& file) {
std::vector<std::string> paths {Reichwein::Stringhelper::split(env_value("PATH"), ":")};