fix();
}
+// create a path based on "path" and a "subpath"
+SGPath::SGPath( const SGPath& p, const std::string& r )
+ : path(p.path),
+ _cached(false)
+{
+ append(r);
+ fix();
+}
+
SGPath::SGPath(const SGPath& p) :
path(p.path),
_cached(p._cached),
#ifdef _WIN32
struct _stat buf ;
- if (_stat (path.c_str(), &buf ) < 0) {
+ bool remove_trailing = false;
+ if ( path.length() > 1 && path[path.length()-1] == '/' )
+ remove_trailing=true;
+ if (_stat (path.substr(0,remove_trailing?path.length()-1:path.length()).c_str(), &buf ) < 0) {
_exists = false;
} else {
_exists = true;
return (path[0] == sgDirPathSep);
}
+
+bool SGPath::isNull() const
+{
+ return path.empty() || (path == "");
+}