plFileName plFileName::Join(const plFileName &base, const plFileName &path) { if (!base.IsValid()) return path; if (!path.IsValid()) return base; char last = base.fName.CharAt(base.GetSize() - 1); char first = path.fName.CharAt(0); if (last != '/' && last != '\\') { if (first != '/' && first != '\\') { return plString::Format("%s" PATH_SEPARATOR_STR "%s", base.fName.c_str(), path.fName.c_str()); } return base.fName + path.fName; } else if (first != '/' && first != '\\') { return base.fName + path.fName; } // Both have a slash, but we only need one return base.fName + path.fName.Substr(1); }