// Filename: filename.cxx // Created by: drose (19Oct00) // //////////////////////////////////////////////////////////////////// #include "filename.h" #include //////////////////////////////////////////////////////////////////// // Function: PPScope::is_fullpath // Description: Returns true if the given pathname appears to be a // fully-specified pathname. This means it begins with // a slash for unix_platform, and it begins with a slash // or backslash, with an optional drive leterr, for // windows_platform. //////////////////////////////////////////////////////////////////// bool is_fullpath(const string &pathname) { if (pathname.empty()) { return false; } if (pathname[0] == '/') { return true; } if (windows_platform) { if (pathname.length() > 2 && isalpha(pathname[0]) && pathname[1] == ':') { // A drive-letter prefix. return (pathname[2] == '/' || pathname[2] == '\\'); } // No drive-letter prefix. return (pathname[0] == '\\'); } return false; } //////////////////////////////////////////////////////////////////// // Function: PPScope::to_os_filename // Description: Changes forward slashes to backslashes, but only if // windows_platform is set. Otherwise returns the // string unchanged. //////////////////////////////////////////////////////////////////// string to_os_filename(string pathname) { if (windows_platform) { string::iterator si; for (si = pathname.begin(); si != pathname.end(); ++si) { if ((*si) == '/') { (*si) = '\\'; } } } return pathname; } //////////////////////////////////////////////////////////////////// // Function: PPScope::to_unix_filename // Description: Changes backslashes to forward slashes, but only if // windows_platform is set. Otherwise returns the // string unchanged. //////////////////////////////////////////////////////////////////// string to_unix_filename(string pathname) { if (windows_platform) { string::iterator si; for (si = pathname.begin(); si != pathname.end(); ++si) { if ((*si) == '\\') { (*si) = '/'; } } } return pathname; }