| 
					
				 | 
			
			
				@@ -154,17 +154,56 @@ void print_sd_info() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Iterate over the root path in the SD card looking for candidate image files. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 bool findHDDImages() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  azlog("Finding HDD images:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char imgdir[MAX_FILE_PATH]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ini_gets("SCSI", "Dir", "/", imgdir, sizeof(imgdir), CONFIGFILE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  int dirindex = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  azlog("Finding HDD images in directory ", imgdir, ":"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SdFile root; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  root.open("/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  root.open(imgdir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!root.isOpen()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    azlog("Could not open directory: ", imgdir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SdFile file; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool imageReady; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool foundImage = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   uint8_t usedIds = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int usedDefaultId = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  while (1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!file.openNext(&root, O_READ)) break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  while (1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!file.openNext(&root, O_READ)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // Check for additional directories with ini keys Dir1..Dir9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      while (dirindex < 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dirindex++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        char key[5] = "Dir0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        key[3] += dirindex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ini_gets("SCSI", key, "", imgdir, sizeof(imgdir), CONFIGFILE) != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (imgdir[0] != '\0') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        azlog("Finding HDD images in additional directory Dir", (int)dirindex, " = \"", imgdir, "\":"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        root.open(imgdir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!root.isOpen()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          azlog("-- Could not open directory: ", imgdir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     char name[MAX_FILE_PATH+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(!file.isDir()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       file.getName(name, MAX_FILE_PATH+1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -223,21 +262,31 @@ bool findHDDImages() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           blk  = 2048; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        char fullname[MAX_FILE_PATH * 2 + 2] = {0}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        strncpy(fullname, imgdir, MAX_FILE_PATH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (fullname[strlen(fullname) - 1] != '/') strcat(fullname, "/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        strcat(fullname, name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (usedIds & (1 << id)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          azlog("-- Ignoring ", name, ", SCSI ID ", id, " is already in use!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          azlog("-- Ignoring ", fullname, ", SCSI ID ", id, " is already in use!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(id < NUM_SCSIID && lun < NUM_SCSILUN) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          azlog("-- Opening ", name, " for id:", id, " lun:", lun); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          imageReady = scsiDiskOpenHDDImage(id, name, id, lun, blk); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if(imageReady) { // Marked as a responsive ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          azlog("-- Opening ", fullname, " for id:", id, " lun:", lun); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          imageReady = scsiDiskOpenHDDImage(id, fullname, id, lun, blk, is_cd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if(imageReady) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             foundImage = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             usedIds |= (1 << id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            azlog("---- Failed to load image"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          azlog("-- Invalid lun or id for image ", name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          azlog("-- Invalid lun or id for image ", fullname); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |