panda3d/ppremake/filename.cxx
2000-10-20 03:28:25 +00:00

79 lines
2.2 KiB
C++

// Filename: filename.cxx
// Created by: drose (19Oct00)
//
////////////////////////////////////////////////////////////////////
#include "filename.h"
#include <ctype.h>
////////////////////////////////////////////////////////////////////
// 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;
}