Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9b77cc9

Browse files
committed
Updated main.cpp. There are still things to fix.
1 parent c9ed26a commit 9b77cc9

File tree

1 file changed

+30
-28
lines changed

1 file changed

+30
-28
lines changed

source/main.cpp

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,24 @@ catch(std::exception const& e){\
9393
goto end_error;\
9494
}
9595

96+
#define HANDLE_INIT_ERRORS(ctor_exception)\
97+
catch(Error const& e){\
98+
if(!(ctor_exception)) delete card;\
99+
card = NULL;\
100+
e.describe();\
101+
error_occured = true;\
102+
}\
103+
catch(std::exception const& e){\
104+
if(!(ctor_exception)) delete card;\
105+
card = NULL;\
106+
printf("\x1B[31mAn error occured: %s\x1B[0m\n", e.what());\
107+
error_occured = true;\
108+
}
96109

97110
int main(void) {
98111
mkdir("sdmc:/TWLSaveTool", 0777);
99112
chdir("sdmc:/TWLSaveTool");
100113
restart:
101-
102114
u8 fileNumber = 0;
103115

104116
bool once = false, error_occured = false;
@@ -108,9 +120,12 @@ int main(void) {
108120

109121
printf("\x1b[1m\x1b[0;12HTWLSaveTool 1.1 by TuxSH\x1B[0m\n\n\n");
110122

123+
try { card = new TWLCard; }
124+
HANDLE_INIT_ERRORS(true)
125+
126+
if(error_occured) goto main_loop;
127+
111128
try {
112-
card = new TWLCard;
113-
114129
if(card->isTWL()) {
115130
h = card->cardHeader();
116131

@@ -131,57 +146,44 @@ int main(void) {
131146
printf("Current save file name: %s", card->generateFileName(fileNumber).c_str());
132147
}
133148

134-
else{
149+
else {
135150
delete card;
136151
card = NULL;
137152
printf("\x1B[31mPlease insert a valid NDS game card!\x1B[0m\n");
138153
error_occured = true;
139154
}
140155
}
141-
catch(Error const& e){
142-
delete card;
143-
card = NULL;
144-
e.describe();
145-
error_occured = true;
146-
}
147-
catch(std::exception const& e){
148-
delete card;
149-
card = NULL;
150-
printf("\x1B[31mAn error occured: %s\x1B[0m\n", e.what());
151-
error_occured = true;
152-
}
156+
HANDLE_INIT_ERRORS(false)
153157

154-
158+
main_loop:
155159
while(aptMainLoop()) {
156160
hidScanInput();
157161
auto keys = hidKeysDown();
158162

159163
if(keys & KEY_START) break;
160-
else if(keys & KEY_Y){
161-
// delete card; card = NULL;
164+
else if(keys & KEY_Y) {
162165
gfxFlushBuffers();
163166
gfxSwapBuffers();
164167
gspWaitForVBlank();
168+
delete card;
169+
card = NULL;
165170
goto restart;
166171
}
167-
else if(keys & (KEY_LEFT | KEY_RIGHT)){
172+
else if(keys & (KEY_LEFT | KEY_RIGHT)) {
168173
if(keys & KEY_LEFT) --fileNumber;
169174
else if(keys & KEY_RIGHT) ++fileNumber;
170175
printf("\rCurrent save file name: %s ", card->generateFileName(fileNumber).c_str());
171176
goto flush_buffers;
172177
}
173178

174179
if(!once) {
175-
if(error_occured) {
176-
once = true;
177-
goto end_error;
178-
}
180+
if(error_occured) goto end_error;
179181
if (keys & (KEY_B | KEY_A | KEY_X)) {
180182
std::string fileName = card->generateFileName(fileNumber);
181183
FILE* f = NULL;
182184
printf("\n\n\n");
183185

184-
if(keys & KEY_B){
186+
if(keys & KEY_B) {
185187
try{
186188
f = fopen(fileName.c_str(), "rb");
187189
if(f != NULL){
@@ -198,7 +200,7 @@ int main(void) {
198200
card->backupSaveFile(fileName, &updateProgressBar);
199201
printf("\n");
200202
}
201-
HANDLE_ERRORS();
203+
HANDLE_ERRORS()
202204
}
203205

204206

@@ -223,7 +225,7 @@ int main(void) {
223225
card->restoreSaveFile(fileName, &updateProgressBar);
224226
printf("\n");
225227
}
226-
HANDLE_ERRORS();
228+
HANDLE_ERRORS()
227229
}
228230

229231
else if(keys & KEY_X) {
@@ -238,7 +240,7 @@ int main(void) {
238240
card->eraseSaveData(&updateProgressBar);
239241
printf("\n");
240242
}
241-
HANDLE_ERRORS();
243+
HANDLE_ERRORS()
242244
}
243245

244246
end:

0 commit comments

Comments
 (0)