Add use of wildcard "*" for loading kips from a folder

This commit is contained in:
Kostas Missos
2018-09-24 23:47:35 +03:00
parent 381d5c9236
commit 1392e6eaf4
7 changed files with 82 additions and 24 deletions

View File

@@ -21,7 +21,7 @@
#include "../mem/heap.h"
#include "../utils/types.h"
char *dirlist(char *directory)
char *dirlist(const char *directory, const char *pattern)
{
u8 max_entries = 61;
@@ -33,7 +33,7 @@ char *dirlist(char *directory)
char *dir_entries = (char *)calloc(max_entries, 256);
char *temp = (char *)calloc(1, 256);
if (!f_opendir(&dir, directory))
if (!pattern && !f_opendir(&dir, directory))
{
for (;;)
{
@@ -47,22 +47,30 @@ char *dirlist(char *directory)
if (k > (max_entries - 1))
break;
}
else
continue;
}
f_closedir(&dir);
if (!k)
{
free(temp);
free(dir_entries);
return NULL;
}
}
else
else if (pattern && !f_findfirst(&dir, &fno, directory, pattern) && fno.fname[0])
{
do
{
if (!(fno.fattrib & AM_DIR))
{
memcpy(dir_entries + (k * 256), fno.fname, strlen(fno.fname) + 1);
k++;
if (k > (max_entries - 1))
break;
}
res = f_findnext(&dir, &fno);
} while (fno.fname[0] && !res);
f_closedir(&dir);
}
if (!k)
{
free(temp);
free(dir_entries);
return NULL;
}

View File

@@ -16,4 +16,4 @@
#include "../utils/types.h"
char *dirlist(char *directory);
char *dirlist(const char *directory, const char *pattern);