Browse Source

Bugfix: Allow "drv:auto" to override general "noauto"

Luke Dashjr 12 years ago
parent
commit
e55593471e
1 changed files with 15 additions and 8 deletions
  1. 15 8
      miner.c

+ 15 - 8
miner.c

@@ -10430,24 +10430,31 @@ void *probe_device_thread(void *p)
 		const struct device_drv * const drv = dreg->drv;
 		
 		// Check for "noauto" flag
+		// NOTE: driver-specific configuration overrides general
+		bool doauto = true;
 		DL_FOREACH_SAFE(scan_devices, sd_iter, sd_tmp)
 		{
 			const char * const dname = sd_iter->string;
 			const char *colon = strchr(dname, ':');
 			if (!colon)
 				colon = &dname[-1];
-			if (strcasecmp("noauto", &colon[1]))
+			if (strcasecmp("noauto", &colon[1]) && strcasecmp("auto", &colon[1]))
 				continue;
 			const ssize_t dnamelen = (colon - dname);
-			if (dnamelen == -1 || _probe_device_find_drv(dname, dnamelen) == drv)
-				goto noauto;
+			if (dnamelen >= 0 && _probe_device_find_drv(dname, dnamelen) != drv)
+				continue;
+			doauto = (tolower(colon[1]) == 'a');
+			if (dnamelen != -1)
+				break;
 		}
 		
-		if (!(drv->lowl_match && drv->lowl_match(info)))
-			continue;
-		if (drv->lowl_probe(info))
-			return NULL;
-noauto: ;
+		if (doauto)
+		{
+			if (!(drv->lowl_match && drv->lowl_match(info)))
+				continue;
+			if (drv->lowl_probe(info))
+				return NULL;
+		}
 	}
 	
 	// probe driver(s) with 'all' enabled