Browse Source

vcom: Fabricate vcom devinfo for any existing paths specified to --scan, in case enumeration fails

Luke Dashjr 12 years ago
parent
commit
b1e33334b0
1 changed files with 18 additions and 0 deletions
  1. 18 0
      lowl-vcom.c

+ 18 - 0
lowl-vcom.c

@@ -643,6 +643,23 @@ extern void _vcom_devinfo_scan_querydosdevice(struct lowlevel_device_info **);
 extern void _vcom_devinfo_scan_lsdev(struct lowlevel_device_info **);
 #endif
 
+void _vcom_devinfo_scan_user(struct lowlevel_device_info ** const devinfo_list)
+{
+	struct string_elist *sd_iter, *sd_tmp;
+	DL_FOREACH_SAFE(scan_devices, sd_iter, sd_tmp)
+	{
+		const char * const dname = sd_iter->string;
+		const char * const colon = strpbrk(dname, ":@");
+		const char *dev;
+		if (!(colon && colon != dname))
+			dev = dname;
+		else
+			dev = &colon[1];
+		if (!access(dev, F_OK))
+			_vcom_devinfo_findorcreate(devinfo_list, dev);
+	}
+}
+
 extern bool lowl_usb_attach_kernel_driver(const struct lowlevel_device_info *);
 
 bool vcom_lowl_probe_wrapper(const struct lowlevel_device_info * const info, detectone_func_t detectone)
@@ -744,6 +761,7 @@ struct lowlevel_device_info *vcom_devinfo_scan()
 #else
 	_vcom_devinfo_scan_lsdev(&devinfo_hash);
 #endif
+	_vcom_devinfo_scan_user(&devinfo_hash);
 	
 	// Convert hash to simple list
 	HASH_ITER(hh, devinfo_hash, devinfo, tmp)