mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Rewrite GetFriendlyPath to not crash and work in more situations
This commit is contained in:
parent
a431d53da3
commit
b85890c37b
2 changed files with 20 additions and 6 deletions
|
@ -209,19 +209,28 @@ bool PathBrowser::IsListingReady() {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PathBrowser::GetFriendlyPath() const {
|
std::string PathBrowser::GetFriendlyPath() const {
|
||||||
std::string str = GetPath().ToVisualString();
|
|
||||||
// Show relative to memstick root if there.
|
// Show relative to memstick root if there.
|
||||||
if (path_.StartsWith(aliasMatch_)) {
|
if (path_.StartsWith(aliasMatch_)) {
|
||||||
|
std::string p;
|
||||||
|
if (aliasMatch_.ComputePathTo(path_, p)) {
|
||||||
|
return aliasDisplay_ + p;
|
||||||
|
}
|
||||||
|
std::string str = path_.ToString();
|
||||||
|
if (aliasMatch_.size() < str.length()) {
|
||||||
return aliasDisplay_ + str.substr(aliasMatch_.size());
|
return aliasDisplay_ + str.substr(aliasMatch_.size());
|
||||||
|
} else {
|
||||||
|
return aliasDisplay_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if PPSSPP_PLATFORM(LINUX) || PPSSPP_PLATFORM(MAC)
|
std::string str = path_.ToString();
|
||||||
|
#if !PPSSPP_PLATFORM(ANDROID) && (PPSSPP_PLATFORM(LINUX) || PPSSPP_PLATFORM(MAC))
|
||||||
char *home = getenv("HOME");
|
char *home = getenv("HOME");
|
||||||
if (home != nullptr && !strncmp(str.c_str(), home, strlen(home))) {
|
if (home != nullptr && !strncmp(str.c_str(), home, strlen(home))) {
|
||||||
str = std::string("~") + str.substr(strlen(home));
|
return std::string("~") + str.substr(strlen(home));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return str;
|
return path_.ToVisualString();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PathBrowser::GetListing(std::vector<File::FileInfo> &fileInfo, const char *filter, bool *cancel) {
|
bool PathBrowser::GetListing(std::vector<File::FileInfo> &fileInfo, const char *filter, bool *cancel) {
|
||||||
|
|
|
@ -513,7 +513,12 @@ GameBrowser::GameBrowser(int token, const Path &path, BrowseFlags browseFlags, b
|
||||||
: LinearLayout(UI::ORIENT_VERTICAL, layoutParams), gridStyle_(gridStyle), browseFlags_(browseFlags), lastText_(lastText), lastLink_(lastLink), screenManager_(screenManager), token_(token) {
|
: LinearLayout(UI::ORIENT_VERTICAL, layoutParams), gridStyle_(gridStyle), browseFlags_(browseFlags), lastText_(lastText), lastLink_(lastLink), screenManager_(screenManager), token_(token) {
|
||||||
using namespace UI;
|
using namespace UI;
|
||||||
path_.SetUserAgent(StringFromFormat("PPSSPP/%s", PPSSPP_GIT_VERSION));
|
path_.SetUserAgent(StringFromFormat("PPSSPP/%s", PPSSPP_GIT_VERSION));
|
||||||
path_.SetRootAlias("ms:", GetSysDirectory(DIRECTORY_MEMSTICK_ROOT));
|
Path memstickRoot = GetSysDirectory(DIRECTORY_MEMSTICK_ROOT);
|
||||||
|
if (memstickRoot == GetSysDirectory(DIRECTORY_PSP)) {
|
||||||
|
path_.SetRootAlias("ms:/PSP/", memstickRoot);
|
||||||
|
} else {
|
||||||
|
path_.SetRootAlias("ms:/", memstickRoot);
|
||||||
|
}
|
||||||
if (System_GetPropertyBool(SYSPROP_LIMITED_FILE_BROWSING)) {
|
if (System_GetPropertyBool(SYSPROP_LIMITED_FILE_BROWSING)) {
|
||||||
path_.RestrictToRoot(GetSysDirectory(DIRECTORY_MEMSTICK_ROOT));
|
path_.RestrictToRoot(GetSysDirectory(DIRECTORY_MEMSTICK_ROOT));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue