implement is_relative/is_absolute

master
Daniel Kolesa 2018-04-15 15:30:30 +02:00
parent 9cea53491d
commit 85a9715ac3
1 changed files with 15 additions and 4 deletions

View File

@ -155,10 +155,7 @@ struct path {
if (is_win()) { if (is_win()) {
return ( return (
(p_path.data()[0] == '\\') || (p_path.data()[0] == '\\') ||
( (has_letter(p_path) && (p_path.data()[2] == '\\'))
(p_path.length() >= 3) &&
(p_path[2] == '\\') && has_letter(p_path)
)
); );
} }
return (p_path.data()[0] == '/'); return (p_path.data()[0] == '/');
@ -248,6 +245,20 @@ struct path {
return !stem().empty(); return !stem().empty();
} }
bool is_absolute() const {
if (is_win()) {
if (p_path.substr(0, 2) == "\\\\") {
return true;
}
return (has_letter(p_path) && (p_path.data()[2] == '\\'));
}
return (p_path.data()[0] == '/');
}
bool is_relative() const {
return !is_absolute();
}
path relative_to(path other) const { path relative_to(path other) const {
if (other.p_path == ".") { if (other.p_path == ".") {
return *this; return *this;