mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -04:00
79 lines
2.2 KiB
C++
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;
|
|
}
|