Browse Source

Use common code to ensure the prefix of -S *:all remains in all implementations of it (/dev glob was removing prefixes)

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

+ 14 - 15
miner.c

@@ -561,6 +561,11 @@ static char *set_b58addr(const char *arg, struct _cbscript_t *p)
 
 static
 char* add_serial_all(char*arg, char*p) {
+	size_t pLen = p - arg;
+	char dev[pLen + PATH_MAX];
+	memcpy(dev, arg, pLen);
+	char *devp = &dev[pLen];
+
 #ifdef HAVE_LIBUDEV
 
 	struct udev *udev = udev_new();
@@ -580,11 +585,7 @@ char* add_serial_all(char*arg, char*p) {
 
 		const char *devpath = udev_device_get_devnode(device);
 		if (devpath) {
-			size_t pLen = p - arg;
-			size_t dLen = strlen(devpath) + 1;
-			char dev[dLen + pLen];
-			memcpy(dev, arg, pLen);
-			memcpy(&dev[pLen], devpath, dLen);
+			strcpy(devp, devpath);
 			applog(LOG_DEBUG, "scan-serial: libudev all-adding %s", dev);
 			string_elist_add(dev, &scan_devices);
 		}
@@ -593,7 +594,6 @@ char* add_serial_all(char*arg, char*p) {
 	}
 	udev_enumerate_unref(enumerate);
 	udev_unref(udev);
-	return NULL;
 
 #elif defined(WIN32)
 
@@ -608,11 +608,9 @@ tryagain: ;
 		}
 		return "scan-serial: Error occurred trying to enumerate COM ports with QueryDosDevice";
 	}
-	size_t tLen = p - arg;
-	char dev[12 + tLen];
-	memcpy(dev, arg, tLen);
-	memcpy(&dev[tLen], "\\\\.\\", 4);
-	char *devp = &dev[tLen + 4];
+	size_t tLen;
+	memcpy(devp, "\\\\.\\", 4);
+	devp = &devp[4];
 	for (char *t = buf; *t; t += tLen) {
 		tLen = strlen(t) + 1;
 		if (strncmp("COM", t, 3))
@@ -621,7 +619,6 @@ tryagain: ;
 		applog(LOG_DEBUG, "scan-serial: QueryDosDevice all-adding %s", dev);
 		string_elist_add(dev, &scan_devices);
 	}
-	return NULL;
 
 #else
 
@@ -629,7 +626,7 @@ tryagain: ;
 	struct dirent *de;
 	const char devdir[] = "/dev";
 	const size_t devdirlen = sizeof(devdir) - 1;
-	char devpath[sizeof(devdir) + NAME_MAX];
+	char *devpath = devp;
 	char *devfile = devpath + devdirlen + 1;
 	
 	D = opendir(devdir);
@@ -644,12 +641,14 @@ tryagain: ;
 			continue;
 		
 		strcpy(devfile, de->d_name);
-		applog(LOG_DEBUG, "scan-serial: /dev glob all-adding %s", devpath);
-		string_elist_add(devpath, &scan_devices);
+		applog(LOG_DEBUG, "scan-serial: /dev glob all-adding %s", dev);
+		string_elist_add(dev, &scan_devices);
 	}
 	closedir(D);
 
 #endif
+
+	return NULL;
 }
 
 #ifdef USE_FPGA_SERIAL