AK: Add dirname() to FileSystemPath

This commit is contained in:
Conrad Pankoff 2020-01-07 22:35:45 +11:00 committed by Andreas Kling
parent 3f3169c225
commit c7fd39f3b1
Notes: sideshowbarker 2024-07-19 10:17:32 +09:00
2 changed files with 12 additions and 1 deletions

View file

@ -45,10 +45,19 @@ void FileSystemPath::canonicalize()
}
}
if (canonical_parts.is_empty()) {
m_string = m_basename = "/";
m_string = m_basename = m_dirname = "/";
return;
}
StringBuilder dirname_builder(approximate_canonical_length);
for (int i = 0; i < canonical_parts.size() - 1; ++i) {
auto& canonical_part = canonical_parts[i];
if (is_absolute_path || i != 0)
dirname_builder.append('/');
dirname_builder.append(canonical_part);
}
m_dirname = dirname_builder.to_string();
m_basename = canonical_parts.last();
auto name_parts = m_basename.split('.');
m_title = name_parts[0];

View file

@ -12,6 +12,7 @@ public:
bool is_valid() const { return m_is_valid; }
const String& string() const { return m_string; }
const String& dirname() const { return m_dirname; }
const String& basename() const { return m_basename; }
const String& title() const { return m_title; }
const String& extension() const { return m_extension; }
@ -25,6 +26,7 @@ private:
Vector<String> m_parts;
String m_string;
String m_dirname;
String m_basename;
String m_title;
String m_extension;