commits
tags
#include "torlinkc/config/folder.hpp"
#include <filesystem>
namespace torlinkc {
namespace {
std::string trim(const std::string& s) {
auto first = s.find_first_not_of(" \t\r\n");
if (first == std::string::npos) return "";
auto last = s.find_last_not_of(" \t\r\n");
return s.substr(first, last - first + 1);
}
} // namespace
std::string expandHome(const std::string& input, const std::string& home) {
const std::string trimmed = trim(input);
if (trimmed == "~") return home;
if (trimmed.rfind("~/", 0) == 0 || trimmed.rfind("~\\", 0) == 0) {
return (std::filesystem::path(home) / trimmed.substr(2)).string();
}
return trimmed;
}
std::string normalizeDownloadDir(const std::string& input, const std::string& home) {
const std::string expanded = expandHome(input, home);
if (expanded.empty()) return "";
return std::filesystem::path(expanded).lexically_normal().string();
}
} // namespace torlinkc