From ac810359fa7e35d1408db73e35e0e9e5c2591e44 Mon Sep 17 00:00:00 2001 From: d0k3 Date: Fri, 1 Sep 2017 02:30:12 +0200 Subject: [PATCH] Scripting: Make 'find' always return the alphanumerical last match ... fixes #189 --- source/filesys/vff.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/filesys/vff.c b/source/filesys/vff.c index 69aa89b..48c3382 100644 --- a/source/filesys/vff.c +++ b/source/filesys/vff.c @@ -322,14 +322,17 @@ FRESULT fvx_findpath (TCHAR* path, const TCHAR* pattern) { FILINFO fno; FRESULT res; if ((res = fvx_opendir(&pdir, path)) != FR_OK) return res; - if (fvx_preaddir(&pdir, &fno, npattern) != FR_OK) *(fno.fname) = '\0'; - fvx_closedir( &pdir ); *(fname++) = '/'; - strncpy(fname, fno.fname, _MAX_FN_LEN - (fname - path)); - if (!*(fno.fname)) return FR_NO_PATH; + *fname = '\0'; - return res; + while ((fvx_preaddir(&pdir, &fno, npattern) == FR_OK) && *(fno.fname)) { + if (strncmp(fno.fname, fname, _MAX_FN_LEN) > 0) + strncpy(fname, fno.fname, _MAX_FN_LEN - (fname - path)); + } + fvx_closedir( &pdir ); + + return (*fname) ? FR_OK : FR_NO_PATH; } FRESULT fvx_findnopath (TCHAR* path, const TCHAR* pattern) {