return ret;
}
+int emergency_stop = 0;
void dostop (int sig)
{
if (askwindow (" Restart (Y/N) ", winscreen, "Yy", "Nn") == 1) {
- exit (1);
+ emergency_stop = 1;
}
}
/* main function */
int main (int argc, char *argv[])
{
+ int rc = 1;
int i;
/* get basename */
if (list[i] == NULL) {
endwin ();
VERBOSE (ERROR, fprintf (stderr, "can't read directory '%s'\n", (dirname[i]) ? dirname[i] : "."));
- int _i;
- for (_i = 0; _i < MAXPANELS; _i++) {
- free (dirname[_i]);
- freelist (list[_i]);
- freewindow (windir[_i]);
- freewindow (winelem[_i]);
- }
- freewindow (winmenu);
- freewindow (winscreen);
- return 1;
+ rc = 1;
+ goto end;
}
}
}
int ch = getch ();
+ if (emergency_stop) {
+ stop = 1;
+ continue;
+ }
switch (ch) {
case '\n':
case '\r':
endwin ();
+end:
for (i = 0; i < MAXPANELS; i++) {
free (dirname[i]);
freelist (list[i]);
freewindow (winmenu);
freewindow (winscreen);
- return 0;
+ return rc;
}
/* test: fm.exe -d 2>&1 | grep 'no directory name' */