Browse Source

Merge branch 'uniscan2' into bfgminer

Luke Dashjr 12 years ago
parent
commit
4c0666cfb2
1 changed files with 10 additions and 14 deletions
  1. 10 14
      lowl-vcom.c

+ 10 - 14
lowl-vcom.c

@@ -219,15 +219,16 @@ void _vcom_devinfo_scan_devserial(struct lowlevel_device_info ** const devinfo_l
 
 #ifndef WIN32
 static
-char *_sysfs_do_read(char *buf, size_t bufsz, const char *devpath, char *devfile, const char *append)
+char *_sysfs_do_read(const char *devpath, char *devfile, const char *append)
 {
+	char buf[0x40];
 	FILE *F;
 	
 	strcpy(devfile, append);
 	F = fopen(devpath, "r");
 	if (F)
 	{
-		if (fgets(buf, bufsz, F))
+		if (fgets(buf, sizeof(buf), F))
 		{
 			size_t L = strlen(buf);
 			while (isCspace(buf[--L]))
@@ -240,17 +241,16 @@ char *_sysfs_do_read(char *buf, size_t bufsz, const char *devpath, char *devfile
 	else
 		buf[0] = '\0';
 	
-	return buf[0] ? buf : NULL;
+	return buf[0] ? strdup(buf) : NULL;
 }
 
 static
-void _sysfs_find_tty(char *devpath, char *devfile, const char *prod, struct lowlevel_device_info ** const devinfo_list)
+void _sysfs_find_tty(char *devpath, char *devfile, struct lowlevel_device_info ** const devinfo_list)
 {
 	struct lowlevel_device_info *devinfo;
 	DIR *DT;
 	struct dirent *de;
 	char ttybuf[0x10] = "/dev/";
-	char manuf[0x40], serial[0x40];
 	char *mydevfile = strdup(devfile);
 	
 	DT = opendir(devpath);
@@ -265,7 +265,7 @@ void _sysfs_find_tty(char *devpath, char *devfile, const char *prod, struct lowl
 		{
 			// "tty" directory: recurse (needed for ttyACM)
 			sprintf(devfile, "%s/tty", mydevfile);
-			_sysfs_find_tty(devpath, devfile, prod, devinfo_list);
+			_sysfs_find_tty(devpath, devfile, devinfo_list);
 			continue;
 		}
 		if (strncmp(&de->d_name[3], "USB", 3) && strncmp(&de->d_name[3], "ACM", 3))
@@ -273,9 +273,9 @@ void _sysfs_find_tty(char *devpath, char *devfile, const char *prod, struct lowl
 		
 		strcpy(&ttybuf[5], de->d_name);
 		devinfo = _vcom_devinfo_findorcreate(devinfo_list, ttybuf);
-		BFGINIT(devinfo->manufacturer, maybe_strdup(_sysfs_do_read(manuf, sizeof(manuf), devpath, devfile, "/manufacturer")));
-		BFGINIT(devinfo->product, maybe_strdup(prod));
-		BFGINIT(devinfo->serial, maybe_strdup(_sysfs_do_read(serial, sizeof(serial), devpath, devfile, "/serial")));
+		BFGINIT(devinfo->manufacturer, _sysfs_do_read(devpath, devfile, "/manufacturer"));
+		BFGINIT(devinfo->product, _sysfs_do_read(devpath, devfile, "/product"));
+		BFGINIT(devinfo->serial, _sysfs_do_read(devpath, devfile, "/serial"));
 	}
 	closedir(DT);
 	
@@ -291,7 +291,6 @@ void _vcom_devinfo_scan_sysfs(struct lowlevel_device_info ** const devinfo_list)
 	const char devroot[] = "/sys/bus/usb/devices";
 	const size_t devrootlen = sizeof(devroot) - 1;
 	char devpath[sizeof(devroot) + (NAME_MAX * 3)];
-	char prod[0x40];
 	char *devfile, *upfile;
 	size_t len, len2;
 	
@@ -307,9 +306,6 @@ void _vcom_devinfo_scan_sysfs(struct lowlevel_device_info ** const devinfo_list)
 		memcpy(upfile, de->d_name, len);
 		devfile = upfile + len;
 		
-		if (!_sysfs_do_read(prod, sizeof(prod), devpath, devfile, "/product"))
-			prod[0] = '\0';
-		
 		devfile[0] = '\0';
 		DS = opendir(devpath);
 		if (!DS)
@@ -325,7 +321,7 @@ void _vcom_devinfo_scan_sysfs(struct lowlevel_device_info ** const devinfo_list)
 			len2 = strlen(de->d_name);
 			memcpy(devfile, de->d_name, len2 + 1);
 			
-			_sysfs_find_tty(devpath, devfile, prod[0] ? prod : NULL, devinfo_list);
+			_sysfs_find_tty(devpath, devfile, devinfo_list);
 		}
 		closedir(DS);
 	}