Resolving entry names

Some more string manipulation fluff
This commit is contained in:
x1nixmzeng 2015-02-13 00:26:02 +00:00
parent dc731f6a31
commit 0d0b406acf
3 changed files with 28 additions and 2 deletions

View File

@ -126,4 +126,28 @@ std::string fix_path_separators(const std::string& source, char new_sep) {
return dest;
}
std::string find_name_from_path(const std::string& path)
{
std::string name(path);
if (!path.empty()) {
std::string::size_type from(std::string::npos);
if (path.back() == '\\') {
from = path.size() - 2;
}
auto pos(path.find_last_of('\\', from));
if (pos != std::string::npos) {
if (from == std::string::npos) {
name = path.substr(pos + 1);
} else {
auto len(from - pos);
name = path.substr(pos + 1, len);
}
}
}
return name;
}
} // namespace poly

View File

@ -48,6 +48,9 @@ std::wstring fix_path_separators(const std::wstring& source,
std::string fix_path_separators(const std::string& source,
char new_sep = poly::path_separator);
// Find the top directory name or filename from a path
std::string find_name_from_path(const std::string& path);
} // namespace poly
#endif // POLY_STRING_H_

View File

@ -23,8 +23,7 @@ Entry::Entry(Device* device, const std::string& path)
: device_(device), path_(path) {
assert_not_null(device);
absolute_path_ = device->path() + path;
// TODO(benvanik): last index of \, unless \ at end, then before that
name_ = "";
name_ = poly::find_name_from_path(path);
}
Entry::~Entry() = default;