Show ".." on drive root

This commit is contained in:
RocketRobz 2018-10-15 23:56:37 -06:00
parent 5693e1e7b0
commit 325538c29b
2 changed files with 29 additions and 18 deletions

View File

@ -72,6 +72,7 @@ bool dirEntryPredicate (const DirEntry& lhs, const DirEntry& rhs) {
} }
void getDirectoryContents (vector<DirEntry>& dirContents) { void getDirectoryContents (vector<DirEntry>& dirContents) {
bool twoDotsMade = false;
struct stat st; struct stat st;
dirContents.clear(); dirContents.clear();
@ -87,24 +88,34 @@ void getDirectoryContents (vector<DirEntry>& dirContents) {
struct dirent* pent = readdir(pdir); struct dirent* pent = readdir(pdir);
if(pent == NULL) break; if(pent == NULL) break;
stat(pent->d_name, &st); stat(pent->d_name, &st);
dirEntry.name = pent->d_name; if (!twoDotsMade) {
dirEntry.isDirectory = (st.st_mode & S_IFDIR) ? true : false; if (strcmp(pent->d_name, "..") != 0) {
if((dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "nds") dirEntry.name = "..";
|| (dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "NDS") dirEntry.isDirectory = true;
|| (dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "argv") dirEntry.isApp = false;
|| (dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "ARGV") dirContents.push_back (dirEntry); // List ".."
|| (isDSiMode() && is3DS && sdMounted && dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "firm") }
|| (isDSiMode() && is3DS && sdMounted && dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "FIRM")) twoDotsMade = true;
{ } else if (strcmp(pent->d_name, "..") != 0) {
dirEntry.isApp = true; dirEntry.name = pent->d_name;
} else { dirEntry.isDirectory = (st.st_mode & S_IFDIR) ? true : false;
dirEntry.isApp = false; if((dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "nds")
} || (dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "NDS")
|| (dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "argv")
if (dirEntry.name.compare(".") != 0 && (dirEntry.isDirectory || nameEndsWith(dirEntry.name))) { || (dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "ARGV")
dirContents.push_back (dirEntry); || (isDSiMode() && is3DS && sdMounted && dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "firm")
|| (isDSiMode() && is3DS && sdMounted && dirEntry.name.substr(dirEntry.name.find_last_of(".") + 1) == "FIRM"))
{
dirEntry.isApp = true;
} else {
dirEntry.isApp = false;
}
if (dirEntry.name.compare(".") != 0 && (dirEntry.isDirectory || nameEndsWith(dirEntry.name))) {
dirContents.push_back (dirEntry);
}
} }
} }

View File

@ -75,7 +75,7 @@ int main(int argc, char **argv) {
bool yHeld = false; bool yHeld = false;
snprintf(titleName, sizeof(titleName), "GodMode9i v%i.%i.%i", 1, 2, 1); snprintf(titleName, sizeof(titleName), "GodMode9i v%i.%i.%i", 1, 3, 0);
// initialize video mode // initialize video mode
videoSetMode(MODE_4_2D); videoSetMode(MODE_4_2D);