Don't delete files/folders with read-only attribute

This commit is contained in:
RocketRobz 2020-02-03 19:45:24 -07:00
parent 925917cca0
commit a168b92948

View File

@ -29,6 +29,7 @@
#include <dirent.h> #include <dirent.h>
#include <nds.h> #include <nds.h>
#include <fat.h>
#include "main.h" #include "main.h"
#include "date.h" #include "date.h"
@ -388,8 +389,10 @@ void recRemove(DirEntry* entry, std::vector<DirEntry> dirContents) {
for (int i = 1; i < ((int)dirContents.size()); i++) { for (int i = 1; i < ((int)dirContents.size()); i++) {
entry = &dirContents.at(i); entry = &dirContents.at(i);
if (entry->isDirectory) recRemove(entry, dirContents); if (entry->isDirectory) recRemove(entry, dirContents);
if (!(FAT_getAttr(entry->name.c_str()) & ATTR_READONLY)) {
remove(entry->name.c_str()); remove(entry->name.c_str());
} }
}
chdir (".."); chdir ("..");
remove(startEntry->name.c_str()); remove(startEntry->name.c_str());
} }
@ -634,6 +637,19 @@ string browseForFile (void) {
swiWaitForVBlank(); swiWaitForVBlank();
if (pressed & KEY_A) { if (pressed & KEY_A) {
consoleClear(); consoleClear();
if (FAT_getAttr(entry->name.c_str()) & ATTR_READONLY) {
printf ("Failed deleting:\n");
printf (entry->name.c_str());
printf ("\n");
printf ("\n");
printf ("(<A> to continue)");
pressed = 0;
while (!(pressed & KEY_A)) {
scanKeys();
pressed = keysDown();
swiWaitForVBlank();
}
} else {
if (entry->isDirectory) { if (entry->isDirectory) {
printf ("Deleting folder, please wait..."); printf ("Deleting folder, please wait...");
recRemove(entry, dirContents); recRemove(entry, dirContents);
@ -649,6 +665,7 @@ string browseForFile (void) {
} }
getDirectoryContents (dirContents); getDirectoryContents (dirContents);
fileOffset--; fileOffset--;
}
pressed = 0; pressed = 0;
break; break;
} }