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::concatPath(Firebird::PathName& result, const Firebird::PathName& first, const Firebird::PathName& second) { if (second.length() == 0) { result = first; return; } if (first.length() == 0) { result = second; return; } if (first[first.length() - 1] != dir_sep && second[0] != dir_sep) { result = first + dir_sep + second; return; } if (first[first.length() - 1] == dir_sep && second[0] == dir_sep) { result = first; result.append(second, 1, second.length() - 1); return; } result = first + second; }
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); }