void PathUtils::splitPrefix(Firebird::PathName& path, Firebird::PathName& prefix) { prefix.erase(); while (path.hasData() && path[0] == dir_sep) { prefix = dir_sep; path.erase(0, 1); } }
void PathUtils::splitPrefix(Firebird::PathName& path, Firebird::PathName& prefix) { prefix.erase(); if (hasDriveLetter(path)) { prefix = path.substr(0, 2); path.erase(0, 2); } if (path.hasData() && (path[0] == PathUtils::dir_sep || path[0] == '/')) { prefix += path[0]; path.erase(0, 1); } }
void PathUtils::splitLastComponent(Firebird::PathName& path, Firebird::PathName& file, const Firebird::PathName& orgPath) { Firebird::PathName::size_type pos = orgPath.rfind(dir_sep); if (pos == Firebird::PathName::npos) { path = ""; file = orgPath; return; } path.erase(); path.append(orgPath, 0, pos); // skip the directory separator file.erase(); file.append(orgPath, pos + 1, orgPath.length() - pos - 1); }
void PathUtils::splitLastComponent(Firebird::PathName& path, Firebird::PathName& file, const Firebird::PathName& orgPath) { Firebird::PathName::size_type pos = orgPath.rfind(PathUtils::dir_sep); if (pos == Firebird::PathName::npos) { pos = orgPath.rfind('/'); // temp hack to make it work with paths, // not expanded by ISC_expand_filename if (pos == Firebird::PathName::npos) { path = ""; file = orgPath; return; } } path.erase(); path.append(orgPath, 0, pos); // skip the directory separator file.erase(); file.append(orgPath, pos + 1, orgPath.length() - pos - 1); }