From 464fbd61511c1705367728cd1c33d016dab4ecd2 Mon Sep 17 00:00:00 2001 From: JeffRuLz Date: Thu, 20 Jun 2019 21:41:46 -0500 Subject: [PATCH] Backups work reliably now --- arm9/src/backupmenu.c | 2 +- arm9/src/install.c | 5 ++++- arm9/src/main.c | 2 +- arm9/src/storage.c | 20 +++++++++++++------- arm9/src/titlemenu.c | 4 ++-- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/arm9/src/backupmenu.c b/arm9/src/backupmenu.c index 408062c..7e11f84 100644 --- a/arm9/src/backupmenu.c +++ b/arm9/src/backupmenu.c @@ -214,7 +214,7 @@ static bool delete(Menu* m) bool choice = NO; { char str[] = "Are you sure you want to delete\n"; - char* msg = (char*)malloc(strlen(str) + strlen(fpath) + 1); + char* msg = (char*)malloc(strlen(str) + strlen(fpath) + 4); sprintf(msg, "%s\n%s", str, fpath); choice = choiceBox(msg); diff --git a/arm9/src/install.c b/arm9/src/install.c index 8c20e84..c4085dc 100644 --- a/arm9/src/install.c +++ b/arm9/src/install.c @@ -5,6 +5,7 @@ #include "maketmd.h" #include "rom.h" #include "storage.h" +#include #include static bool _titleIsUsed(tDSiHeader* h) @@ -437,6 +438,8 @@ bool install(char* fpath, bool systemTitle) iprintf("Failed\n"); iprintf("\x1B[33m"); //yellow + iprintf("%s\n", strerror(errno)); +/* switch (result) { case 1: @@ -455,7 +458,7 @@ bool install(char* fpath, bool systemTitle) iprintf("Error opening output file.\n"); break; } - +*/ iprintf("\x1B[47m"); //white goto error; diff --git a/arm9/src/main.c b/arm9/src/main.c index 8c9ece5..6eb2952 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -3,7 +3,7 @@ #include "message.h" #include -#define VERSION "0.6.8" +#define VERSION "0.6.8.1" enum { MAIN_MENU_INSTALL, diff --git a/arm9/src/storage.c b/arm9/src/storage.c index 4497ed5..ad8a2b9 100644 --- a/arm9/src/storage.c +++ b/arm9/src/storage.c @@ -1,6 +1,7 @@ #include "storage.h" #include "main.h" #include "message.h" +#include #include #define TITLE_LIMIT 39 @@ -100,6 +101,9 @@ int copyFilePart(char const* src, u32 offset, u32 size, char const* dst) } else { + if (fileExists(dst)) + remove(dst); + FILE* fout = fopen(dst, "wb"); if (!fout) @@ -115,7 +119,7 @@ int copyFilePart(char const* src, u32 offset, u32 size, char const* dst) consoleSelect(&topScreen); int bytesRead; - unsigned int totalBytesRead = 0; + unsigned long long totalBytesRead = 0; #define BUFF_SIZE 128 //Arbitrary. A value too large freezes the ds. char* buffer = (char*)malloc(BUFF_SIZE); @@ -228,10 +232,10 @@ bool copyDir(char const* src, char const* dst) if (ent->d_type == DT_DIR) { - char* dsrc = (char*)malloc(strlen(src) + strlen(ent->d_name) + 1); + char* dsrc = (char*)malloc(strlen(src) + strlen(ent->d_name) + 4); sprintf(dsrc, "%s/%s", src, ent->d_name); - char* ddst = (char*)malloc(strlen(dst) + strlen(ent->d_name) + 1); + char* ddst = (char*)malloc(strlen(dst) + strlen(ent->d_name) + 4); sprintf(ddst, "%s/%s", dst, ent->d_name); mkdir(ddst, 0777); @@ -243,14 +247,14 @@ bool copyDir(char const* src, char const* dst) } else { - char* fsrc = (char*)malloc(strlen(src) + strlen(ent->d_name) + 1); + char* fsrc = (char*)malloc(strlen(src) + strlen(ent->d_name) + 4); sprintf(fsrc, "%s/%s", src, ent->d_name); - char* fdst = (char*)malloc(strlen(dst) + strlen(ent->d_name) + 1); + char* fdst = (char*)malloc(strlen(dst) + strlen(ent->d_name) + 4); sprintf(fdst, "%s/%s", dst, ent->d_name); // iprintf("%s\n%s\n\n", fsrc, fdst); - iprintf("%s...", fdst); + iprintf("%s -> \n%s...", fsrc, fdst); int ret = copyFile(fsrc, fdst); @@ -260,6 +264,8 @@ bool copyDir(char const* src, char const* dst) iprintf("Fail\n"); iprintf("\x1B[33m"); //yellow + iprintf("%s\n", strerror(errno)); +/* switch (ret) { case 1: @@ -278,7 +284,7 @@ bool copyDir(char const* src, char const* dst) iprintf("Error opening output file.\n"); break; } - +*/ iprintf("\x1B[47m"); //white result = false; } diff --git a/arm9/src/titlemenu.c b/arm9/src/titlemenu.c index 70414be..5ad73ec 100644 --- a/arm9/src/titlemenu.c +++ b/arm9/src/titlemenu.c @@ -302,9 +302,9 @@ static void backup(Menu* m) clearScreen(&bottomScreen); if (!copyDir(srcpath, dstpath)) - messagePrint("\nBackup error."); + messagePrint("\x1B[31m\nBackup error.\x1B[47m"); else - messagePrint("\nBackup finished."); + messagePrint("\x1B[42m\nBackup finished.\x1B[47m"); free(dstpath); }