23 #include "common_priv.h"
29 std::string
RealPath(
const std::string &path) {
31 char *str = realpath(path.c_str(), 0);
39 std::string
DirName(
const std::string &path) {
40 std::string ret =
".";
42 std::string::const_iterator cur = path.end();
44 while (cur != path.begin() && *cur ==
PATH_SEP) { --cur; }
45 if (cur == path.begin()) {
47 ret = std::string(cur, cur + 1);
50 while (cur != path.begin() && *cur !=
PATH_SEP) { --cur; }
51 if (cur == path.begin()) {
53 ret = std::string(cur, cur + 1);
56 while (cur != path.begin() && *cur ==
PATH_SEP) { --cur; }
57 ret = std::string(path.begin(), cur + 1);
64 std::string
BaseName(
const std::string &path) {
67 std::string::const_iterator end = path.end();
68 std::string::const_iterator start;
70 while (end != path.begin() && *end ==
PATH_SEP) { --end; }
71 if (end == path.begin()) {
73 ret = std::string(end, end + 1);
77 while (start != path.begin() && *start !=
PATH_SEP) { --start; }
79 ret = std::string(start, end + 1);
85 std::string
PathConcat(
const std::string &dir,
const std::string &file) {
std::string BaseName(const std::string &path)
std::string RealPath(const std::string &path)
static const char PATH_SEP
std::string DirName(const std::string &path)
std::string PathConcat(const std::string &dir, const std::string &file)
bool IsAbsPath(const std::string &path)