Additional fixes to the Android get_current_dir() implementation.

This commit is contained in:
Fredia Huya-Kouadio 2022-08-30 08:47:50 -07:00 committed by Relintai
parent 6a317fbe15
commit a6a5b60235
3 changed files with 17 additions and 4 deletions

View File

@ -53,7 +53,7 @@ private:
protected:
String _get_root_path() const;
String _get_root_string() const;
virtual String _get_root_string() const;
AccessType get_access_type() const;
String fix_path(String p_path) const;

View File

@ -138,6 +138,13 @@ String DirAccessJAndroid::get_drive(int p_drive) {
}
}
String DirAccessJAndroid::_get_root_string() const {
if (get_access_type() == ACCESS_FILESYSTEM) {
return "/";
}
return DirAccessUnix::_get_root_string();
}
String DirAccessJAndroid::get_current_dir() {
String base = _get_root_path();
String bd = current_dir;
@ -145,10 +152,13 @@ String DirAccessJAndroid::get_current_dir() {
bd = current_dir.replace_first(base, "");
}
if (bd.begins_with("/")) {
return _get_root_string() + bd.substr(1, bd.length());
String root_string = _get_root_string();
if (bd.begins_with(root_string)) {
return bd;
} else if (bd.begins_with("/")) {
return root_string + bd.substr(1, bd.length());
} else {
return _get_root_string() + bd;
return root_string + bd;
}
}

View File

@ -92,6 +92,9 @@ public:
DirAccessJAndroid();
~DirAccessJAndroid();
protected:
String _get_root_string() const override;
private:
int id;