Browse Source

firmware: limit number of files per directory

Maximilian Rehkopf 12 years ago
parent
commit
723bf9eb95
2 changed files with 6 additions and 1 deletions
  1. 3 0
      src/config.h
  2. 3 1
      src/filetypes.c

+ 3 - 0
src/config.h

@@ -68,6 +68,9 @@
 
 #define QSORT_MAXELEM             2048
 #define CLTBL_SIZE		  100
+
+#define DIR_FILE_MAX              16380
+
 #define SSP_REGS LPC_SSP0
 #define SSP_PCLKREG PCLKSEL1
 // 1: PCLKSEL0

+ 3 - 1
src/filetypes.c

@@ -76,6 +76,7 @@ uint32_t scan_dir(char* path, FILINFO* fno_param, char mkdb, uint32_t this_dir_t
   char *size_units[3] = {" ", "k", "M"};
   uint32_t entry_fsize;
   uint8_t entry_unit_idx;
+  uint16_t entrycnt;
 
   dir_tgt = this_dir_tgt;
   if(depth==0) {
@@ -130,7 +131,8 @@ uint32_t scan_dir(char* path, FILINFO* fno_param, char mkdb, uint32_t this_dir_t
         dir_tgt += 4;
       }
       len = strlen((char*)path);
-      for (;;) {
+      /* scan at most DIR_FILE_MAX entries per directory */
+      for(entrycnt=0; entrycnt < DIR_FILE_MAX; entrycnt++) {
 //        toggle_read_led();
         res = f_readdir(&dir, &fno);
         if (res != FR_OK || fno.fname[0] == 0) {