Merge pull request #65093 from m4gr3d/update_get_current_dir_3x

[3.x] Additional fixes to the Android `get_current_dir()` implementation.
This commit is contained in:
Rémi Verschelde 2022-08-31 09:01:11 +02:00 committed by GitHub
commit 4b066320f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 4 deletions

View File

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

View File

@ -134,6 +134,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 DirAccessJAndroid::get_current_dir() {
String base = _get_root_path(); String base = _get_root_path();
String bd = current_dir; String bd = current_dir;
@ -141,10 +148,13 @@ String DirAccessJAndroid::get_current_dir() {
bd = current_dir.replace_first(base, ""); bd = current_dir.replace_first(base, "");
} }
if (bd.begins_with("/")) { String root_string = _get_root_string();
return _get_root_string() + bd.substr(1, bd.length()); if (bd.begins_with(root_string)) {
return bd;
} else if (bd.begins_with("/")) {
return root_string + bd.substr(1, bd.length());
} else { } else {
return _get_root_string() + bd; return root_string + bd;
} }
} }

View File

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