return alphasort(d1, d2);\r
}\r
\r
+static const char **filter_exts_internal;\r
+\r
static int scandir_filter(const struct dirent *ent)\r
{\r
+ const char **filter = filter_exts_internal;\r
const char *ext;\r
int i;\r
\r
return 0;\r
\r
ext++;\r
- for (i = 0; i < array_size(filter_exts); i++)\r
- if (strcasecmp(ext, filter_exts[i]) == 0)\r
+ for (i = 0; filter[i] != NULL; i++)\r
+ if (strcasecmp(ext, filter[i]) == 0)\r
return 1;\r
\r
return 0;\r
return i - 1;\r
}\r
\r
-static char *menu_loop_romsel(char *curr_path, int len,\r
+static const char *menu_loop_romsel(char *curr_path, int len,\r
+ const char **filter_exts,\r
int (*extra_filter)(struct dirent **namelist, int count,\r
const char *basedir))\r
{\r
struct dirent **namelist = NULL;\r
int n = 0, inp = 0, sel = 0, show_help = 0;\r
char *curr_path_restore = NULL;\r
- char *ret = NULL;\r
+ const char *ret = NULL;\r
char cinp;\r
\r
+ filter_exts_internal = filter_exts;\r
sel_fname[0] = 0;\r
\r
// is this a dir or a full path?\r
curr_path_restore = p;\r
snprintf(sel_fname, sizeof(sel_fname), "%s", p + 1);\r
\r
- show_help = 2;\r
+ if (rom_fname_reload[0] == 0)\r
+ show_help = 2;\r
}\r
\r
rescan:\r
strcat(newdir, "/");\r
strcat(newdir, namelist[sel+1]->d_name);\r
}\r
- ret = menu_loop_romsel(newdir, newlen, extra_filter);\r
+ ret = menu_loop_romsel(newdir, newlen, filter_exts, extra_filter);\r
free(newdir);\r
break;\r
}\r