Completed SORT_USES_MORE_RAM implementation

For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
This commit is contained in:
Scott Lahteine 2014-11-30 21:28:16 -08:00
parent de725bd408
commit b4e287fe8e

View File

@ -54,7 +54,7 @@ void CardReader::lsDive(const char *prepend,SdFile parent)
dir_t p; dir_t p;
uint8_t cnt=0; uint8_t cnt=0;
while (parent.readDir(p, longFilename) > 0) while (parent.readDir(p, diveFilename) > 0)
{ {
if( DIR_IS_SUBDIR(&p) && lsAction!=LS_Count && lsAction!=LS_GetFilename) // hence LS_SerialPrint if( DIR_IS_SUBDIR(&p) && lsAction!=LS_Count && lsAction!=LS_GetFilename) // hence LS_SerialPrint
{ {
@ -91,8 +91,8 @@ void CardReader::lsDive(const char *prepend,SdFile parent)
{ {
if (p.name[0] == DIR_NAME_FREE) break; if (p.name[0] == DIR_NAME_FREE) break;
if (p.name[0] == DIR_NAME_DELETED || p.name[0] == '.'|| p.name[0] == '_') continue; if (p.name[0] == DIR_NAME_DELETED || p.name[0] == '.'|| p.name[0] == '_') continue;
if (longFilename[0] != '\0' && if (diveFilename[0] != '\0' &&
(longFilename[0] == '.' || longFilename[0] == '_')) continue; (diveFilename[0] == '.' || diveFilename[0] == '_')) continue;
if ( p.name[0] == '.') if ( p.name[0] == '.')
{ {
if ( p.name[1] != '.') if ( p.name[1] != '.')