mirror of
https://github.com/godotengine/godot.git
synced 2025-02-03 12:57:35 +00:00
Merge pull request #11149 from supagu/symlink5
DirAccess constructor sets current_dir to an absolute path
This commit is contained in:
commit
b19ab0dd79
@ -221,37 +221,24 @@ Error DirAccessUnix::change_dir(String p_dir) {
|
||||
if (prev_dir.parse_utf8(real_current_dir_name))
|
||||
prev_dir = real_current_dir_name; //no utf8, maybe latin?
|
||||
|
||||
//print_line("directory we are changing out of (prev_dir): " + prev_dir);
|
||||
|
||||
// try_dir is the directory we are trying to change into
|
||||
String try_dir = "";
|
||||
if (p_dir.is_rel_path()) {
|
||||
String next_dir = current_dir + "/" + p_dir;
|
||||
//print_line("p_dir is relative: " + p_dir + " about to simplfy: " + next_dir);
|
||||
next_dir = next_dir.simplify_path();
|
||||
try_dir = next_dir;
|
||||
} else {
|
||||
try_dir = p_dir;
|
||||
//print_line("p_dir is absolute: " + p_dir);
|
||||
}
|
||||
|
||||
// if try_dir is nothing, it is not changing directory so change it to a "." otherwise chdir will fail
|
||||
if (try_dir == "") {
|
||||
try_dir = ".";
|
||||
}
|
||||
|
||||
//print_line("directory we are changing in to (try_dir): " + try_dir);
|
||||
|
||||
bool worked = (chdir(try_dir.utf8().get_data()) == 0); // we can only give this utf8
|
||||
if (!worked) {
|
||||
//print_line("directory does not exist");
|
||||
return ERR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// the directory exists, so set current_dir to try_dir
|
||||
current_dir = try_dir;
|
||||
chdir(prev_dir.utf8().get_data());
|
||||
//print_line("directory exists, setting current_dir to: " + current_dir);
|
||||
return OK;
|
||||
}
|
||||
|
||||
@ -319,11 +306,16 @@ size_t DirAccessUnix::get_space_left() {
|
||||
DirAccessUnix::DirAccessUnix() {
|
||||
|
||||
dir_stream = 0;
|
||||
current_dir = ".";
|
||||
_cisdir = false;
|
||||
|
||||
/* determine drive count */
|
||||
|
||||
// set current directory to an absolute path of the current directory
|
||||
char real_current_dir_name[2048];
|
||||
getcwd(real_current_dir_name, 2048);
|
||||
if (current_dir.parse_utf8(real_current_dir_name))
|
||||
current_dir = real_current_dir_name;
|
||||
|
||||
change_dir(current_dir);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user