|
|
|
@ -43,8 +43,6 @@
|
|
|
|
|
|
|
|
|
|
#include <ctype.h>
|
|
|
|
|
|
|
|
|
|
#define LONGEST_FILENAME (longFilename[0] ? longFilename : filename)
|
|
|
|
|
|
|
|
|
|
CardReader::CardReader() {
|
|
|
|
|
#if ENABLED(SDCARD_SORT_ALPHA)
|
|
|
|
|
sort_count = 0;
|
|
|
|
@ -771,7 +769,7 @@ void CardReader::setroot() {
|
|
|
|
|
getfilename(i);
|
|
|
|
|
#if ENABLED(SDSORT_DYNAMIC_RAM)
|
|
|
|
|
// Use dynamic method to copy long filename
|
|
|
|
|
sortnames[i] = strdup(LONGEST_FILENAME);
|
|
|
|
|
sortnames[i] = strdup(longest_filename());
|
|
|
|
|
#if ENABLED(SDSORT_CACHE_NAMES)
|
|
|
|
|
// When caching also store the short name, since
|
|
|
|
|
// we're replacing the getfilename() behavior.
|
|
|
|
@ -780,10 +778,10 @@ void CardReader::setroot() {
|
|
|
|
|
#else
|
|
|
|
|
// Copy filenames into the static array
|
|
|
|
|
#if SORTED_LONGNAME_MAXLEN != LONG_FILENAME_LENGTH
|
|
|
|
|
strncpy(sortnames[i], LONGEST_FILENAME, SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
strncpy(sortnames[i], longest_filename(), SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
sortnames[i][SORTED_LONGNAME_MAXLEN - 1] = '\0';
|
|
|
|
|
#else
|
|
|
|
|
strncpy(sortnames[i], LONGEST_FILENAME, SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
strncpy(sortnames[i], longest_filename(), SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(SDSORT_CACHE_NAMES)
|
|
|
|
|
strcpy(sortshort[i], filename);
|
|
|
|
@ -831,12 +829,12 @@ void CardReader::setroot() {
|
|
|
|
|
// throughout the loop. Slow if there are many.
|
|
|
|
|
#if DISABLED(SDSORT_USES_RAM)
|
|
|
|
|
getfilename(o1);
|
|
|
|
|
strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it)
|
|
|
|
|
strcpy(name1, longest_filename()); // save (or getfilename below will trounce it)
|
|
|
|
|
#if HAS_FOLDER_SORTING
|
|
|
|
|
bool dir1 = filenameIsDir;
|
|
|
|
|
#endif
|
|
|
|
|
getfilename(o2);
|
|
|
|
|
char *name2 = LONGEST_FILENAME; // use the string in-place
|
|
|
|
|
char *name2 = longest_filename(); // use the string in-place
|
|
|
|
|
#endif // !SDSORT_USES_RAM
|
|
|
|
|
|
|
|
|
|
// Sort the current pair according to settings.
|
|
|
|
@ -874,7 +872,7 @@ void CardReader::setroot() {
|
|
|
|
|
getfilename(0);
|
|
|
|
|
#if ENABLED(SDSORT_DYNAMIC_RAM)
|
|
|
|
|
sortnames = new char*[1];
|
|
|
|
|
sortnames[0] = strdup(LONGEST_FILENAME); // malloc
|
|
|
|
|
sortnames[0] = strdup(longest_filename()); // malloc
|
|
|
|
|
#if ENABLED(SDSORT_CACHE_NAMES)
|
|
|
|
|
sortshort = new char*[1];
|
|
|
|
|
sortshort[0] = strdup(filename); // malloc
|
|
|
|
@ -882,10 +880,10 @@ void CardReader::setroot() {
|
|
|
|
|
isDir = new uint8_t[1];
|
|
|
|
|
#else
|
|
|
|
|
#if SORTED_LONGNAME_MAXLEN != LONG_FILENAME_LENGTH
|
|
|
|
|
strncpy(sortnames[0], LONGEST_FILENAME, SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
strncpy(sortnames[0], longest_filename(), SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
sortnames[0][SORTED_LONGNAME_MAXLEN - 1] = '\0';
|
|
|
|
|
#else
|
|
|
|
|
strncpy(sortnames[0], LONGEST_FILENAME, SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
strncpy(sortnames[0], longest_filename(), SORTED_LONGNAME_MAXLEN);
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(SDSORT_CACHE_NAMES)
|
|
|
|
|
strcpy(sortshort[0], filename);
|
|
|
|
|