Browse Source

Add support for "--scan-serial all" via simply globbing /dev

Luke Dashjr 13 years ago
parent
commit
8e1cd14179
1 changed files with 26 additions and 1 deletions
  1. 26 1
      miner.c

+ 26 - 1
miner.c

@@ -30,6 +30,7 @@
 
 
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/types.h>
+#include <dirent.h>
 
 
 #ifndef WIN32
 #ifndef WIN32
 #include <sys/resource.h>
 #include <sys/resource.h>
@@ -623,7 +624,31 @@ tryagain: ;
 	return NULL;
 	return NULL;
 
 
 #else
 #else
-	return "scan-serial 'all' is not supported on this platform";
+
+	DIR *D;
+	struct dirent *de;
+	const char devdir[] = "/dev";
+	const size_t devdirlen = sizeof(devdir) - 1;
+	char devpath[sizeof(devdir) + NAME_MAX];
+	char *devfile = devpath + devdirlen + 1;
+	
+	D = opendir(devdir);
+	if (!D)
+		return "scan-serial 'all' is not supported on this platform";
+	memcpy(devpath, devdir, devdirlen);
+	devpath[devdirlen] = '/';
+	while ( (de = readdir(D)) ) {
+		if (strncmp(de->d_name, "tty", 3))
+			continue;
+		if (strncmp(&de->d_name[3], "USB", 3) && strncmp(&de->d_name[3], "ACM", 3))
+			continue;
+		
+		strcpy(devfile, de->d_name);
+		applog(LOG_DEBUG, "scan-serial: /dev glob all-adding %s", devpath);
+		string_elist_add(devpath, &scan_devices);
+	}
+	closedir(D);
+
 #endif
 #endif
 }
 }