mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
minor problems with windows filenames
This commit is contained in:
parent
8553a3ce3d
commit
1ba961f71d
@ -123,17 +123,18 @@ convert_pathname(const string &unix_style_pathname) {
|
||||
} else if (unix_style_pathname.length() > 3 &&
|
||||
isalpha(unix_style_pathname[1]) &&
|
||||
unix_style_pathname[2] == '/') {
|
||||
// This is a pathname that begins with a single letter. That must
|
||||
// be the drive letter.
|
||||
// This pathname begins with a slash and a single letter. That
|
||||
// must be the drive letter.
|
||||
windows_pathname =
|
||||
string(1, toupper(unix_style_pathname[1])) + ":" +
|
||||
front_to_back_slash(unix_style_pathname.substr(2));
|
||||
|
||||
} else {
|
||||
// It does not begin with a single letter, so prefix "PANDA_ROOT".
|
||||
// It starts with a slash, but the first part is not a single
|
||||
// letter, so prefix $PANDA_ROOT.
|
||||
|
||||
windows_pathname =
|
||||
get_panda_root() + front_to_back_slash(unix_style_pathname);
|
||||
get_panda_root() + front_to_back_slash(unix_style_pathname.substr(1));
|
||||
}
|
||||
|
||||
return windows_pathname;
|
||||
@ -609,7 +610,7 @@ make_canonical() {
|
||||
if (is_directory()) {
|
||||
// If the filename itself represents a directory and not a
|
||||
// filename, cd to the named directory, not the one above it.
|
||||
string dirname = get_fullpath();
|
||||
string dirname = to_os_specific();
|
||||
|
||||
if (chdir(dirname.c_str()) < 0) {
|
||||
return false;
|
||||
@ -619,14 +620,15 @@ make_canonical() {
|
||||
} else {
|
||||
// Otherwise, if the filename represents a regular file (or
|
||||
// doesn't even exist), cd to the directory above.
|
||||
string dirname = get_dirname();
|
||||
Filename dir(get_dirname());
|
||||
|
||||
if (dirname.empty()) {
|
||||
if (dir.empty()) {
|
||||
// No dirname means the file is in this directory.
|
||||
set_dirname(cwd);
|
||||
return true;
|
||||
}
|
||||
|
||||
string dirname = dir.to_os_specific();
|
||||
if (chdir(dirname.c_str()) < 0) {
|
||||
return false;
|
||||
}
|
||||
@ -1301,20 +1303,23 @@ make_dir() const {
|
||||
// because the directory was already there.
|
||||
size_t slash = dirname.find('/');
|
||||
while (slash != string::npos) {
|
||||
string component = dirname.substr(0, slash);
|
||||
Filename component(dirname.substr(0, slash));
|
||||
string os_specific = component.to_os_specific();
|
||||
#ifndef WIN32_VC
|
||||
mkdir(component.c_str(), 0777);
|
||||
mkdir(os_specific.c_str(), 0777);
|
||||
#else
|
||||
mkdir(component.c_str());
|
||||
mkdir(os_specific.c_str());
|
||||
#endif
|
||||
slash = dirname.find('/', slash + 1);
|
||||
}
|
||||
|
||||
// Now make the last one, and check the return value.
|
||||
Filename component(dirname);
|
||||
string os_specific = component.to_os_specific();
|
||||
#ifndef WIN32_VC
|
||||
int result = mkdir(dirname.c_str(), 0777);
|
||||
int result = mkdir(os_specific.c_str(), 0777);
|
||||
#else
|
||||
int result = mkdir(dirname.c_str());
|
||||
int result = mkdir(os_specific.c_str());
|
||||
#endif
|
||||
|
||||
return (result == 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user