|
|
@@ -640,6 +640,11 @@ char *set_request_diff(const char *arg, float *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();
|
|
|
@@ -659,11 +664,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);
|
|
|
}
|
|
|
@@ -672,11 +673,10 @@ char* add_serial_all(char*arg, char*p) {
|
|
|
}
|
|
|
udev_enumerate_unref(enumerate);
|
|
|
udev_unref(udev);
|
|
|
- return NULL;
|
|
|
|
|
|
#elif defined(WIN32)
|
|
|
|
|
|
- size_t bufLen = 0x10; // temp!
|
|
|
+ size_t bufLen = 0x100;
|
|
|
tryagain: ;
|
|
|
char buf[bufLen];
|
|
|
if (!QueryDosDevice(NULL, buf, bufLen)) {
|
|
|
@@ -687,11 +687,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))
|
|
|
@@ -700,7 +698,6 @@ tryagain: ;
|
|
|
applog(LOG_DEBUG, "scan-serial: QueryDosDevice all-adding %s", dev);
|
|
|
string_elist_add(dev, &scan_devices);
|
|
|
}
|
|
|
- return NULL;
|
|
|
|
|
|
#else
|
|
|
|
|
|
@@ -708,7 +705,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);
|
|
|
@@ -726,14 +723,16 @@ tryagain: ;
|
|
|
|
|
|
trydev:
|
|
|
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);
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
#endif
|
|
|
+
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
static char *add_serial(char *arg)
|