ClickHouse/src/Coordination/pathUtils.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

39 lines
728 B
C++
Raw Normal View History

#include <Coordination/pathUtils.h>
#include <iostream>
namespace DB
{
static size_t findLastSlash(StringRef path)
{
if (path.size == 0)
return std::string::npos;
for (size_t i = path.size - 1; i > 0; --i)
{
if (path.data[i] == '/')
return i;
}
if (path.data[0] == '/')
return 0;
return std::string::npos;
}
2022-01-19 11:46:29 +00:00
StringRef parentPath(StringRef path)
{
auto rslash_pos = findLastSlash(path);
if (rslash_pos > 0)
2022-01-19 11:46:29 +00:00
return StringRef{path.data, rslash_pos};
return "/";
}
2022-01-19 11:46:29 +00:00
StringRef getBaseName(StringRef path)
{
size_t basename_start = findLastSlash(path);
2022-01-19 11:46:29 +00:00
return StringRef{path.data + basename_start + 1, path.size - basename_start - 1};
}
}