|
@ -49,7 +49,7 @@ char *createFilename(char *buffer, const dir_t &p) //buffer>12characters |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CardReader::lsDive(const char *prepend,SdFile parent) |
|
|
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) |
|
|
{ |
|
|
{ |
|
|
dir_t p; |
|
|
dir_t p; |
|
|
uint8_t cnt=0; |
|
|
uint8_t cnt=0; |
|
@ -89,16 +89,12 @@ void CardReader::lsDive(const char *prepend,SdFile parent) |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
if (p.name[0] == DIR_NAME_FREE) break; |
|
|
char pn0 = p.name[0]; |
|
|
if (p.name[0] == DIR_NAME_DELETED || p.name[0] == '.'|| p.name[0] == '_') continue; |
|
|
if (pn0 == DIR_NAME_FREE) break; |
|
|
|
|
|
if (pn0 == DIR_NAME_DELETED || pn0 == '.'|| pn0 == '_') continue; |
|
|
if (longFilename[0] != '\0' && |
|
|
if (longFilename[0] != '\0' && |
|
|
(longFilename[0] == '.' || longFilename[0] == '_')) continue; |
|
|
(longFilename[0] == '.' || longFilename[0] == '_')) continue; |
|
|
if ( p.name[0] == '.') |
|
|
|
|
|
{ |
|
|
|
|
|
if ( p.name[1] != '.') |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!DIR_IS_FILE_OR_SUBDIR(&p)) continue; |
|
|
if (!DIR_IS_FILE_OR_SUBDIR(&p)) continue; |
|
|
filenameIsDir=DIR_IS_SUBDIR(&p); |
|
|
filenameIsDir=DIR_IS_SUBDIR(&p); |
|
|
|
|
|
|
|
@ -120,7 +116,10 @@ void CardReader::lsDive(const char *prepend,SdFile parent) |
|
|
} |
|
|
} |
|
|
else if(lsAction==LS_GetFilename) |
|
|
else if(lsAction==LS_GetFilename) |
|
|
{ |
|
|
{ |
|
|
if (cnt == nrFiles) return; |
|
|
if (match != NULL) { |
|
|
|
|
|
if (strcasecmp(match, filename) == 0) return; |
|
|
|
|
|
} |
|
|
|
|
|
else if (cnt == nrFiles) return; |
|
|
cnt++; |
|
|
cnt++; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -355,7 +354,8 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/) |
|
|
sdpos = 0; |
|
|
sdpos = 0; |
|
|
|
|
|
|
|
|
SERIAL_PROTOCOLLNPGM(MSG_SD_FILE_SELECTED); |
|
|
SERIAL_PROTOCOLLNPGM(MSG_SD_FILE_SELECTED); |
|
|
lcd_setstatus(fname); |
|
|
getfilename(0, fname); |
|
|
|
|
|
lcd_setstatus(longFilename[0] ? longFilename : fname); |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
@ -560,7 +560,7 @@ void CardReader::closefile(bool store_location) |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void CardReader::getfilename(const uint16_t nr) |
|
|
void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) |
|
|
{ |
|
|
{ |
|
|
#if defined(SDCARD_SORT_ALPHA) && SORT_USES_RAM && SORT_USES_MORE_RAM |
|
|
#if defined(SDCARD_SORT_ALPHA) && SORT_USES_RAM && SORT_USES_MORE_RAM |
|
|
if (nr < sort_count) { |
|
|
if (nr < sort_count) { |
|
@ -574,7 +574,8 @@ void CardReader::getfilename(const uint16_t nr) |
|
|
lsAction=LS_GetFilename; |
|
|
lsAction=LS_GetFilename; |
|
|
nrFiles=nr; |
|
|
nrFiles=nr; |
|
|
curDir->rewind(); |
|
|
curDir->rewind(); |
|
|
lsDive("",*curDir); |
|
|
lsDive("",*curDir,match); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
uint16_t CardReader::getnrfilenames() |
|
|
uint16_t CardReader::getnrfilenames() |
|
|