1 diff --git a/usbtunerhelper.c b/usbtunerhelper.c
2 index 94519dc..93ae110 100644
5 @@ -66,7 +66,6 @@ struct vtuner_message
9 -#define SYS_USB_DEVICES_DIR "/sys/class/usb_device"
10 #define VTUNER_PATH "/dev/misc"
11 #define MAX_ADAPTERS 8
12 #define BUFFER_SIZE ((188 / 4) * 4096) /* multiple of ts packet and page size */
13 @@ -130,64 +129,42 @@ void sort_adapters()
17 - DIR *dirusb, *dirdev, *dirvtun;
18 - struct dirent *edirusb, *edirdev, *edirvtun;
22 + struct dirent *edirvtun;
24 - /* adapters detect */
25 - dirusb = opendir(SYS_USB_DEVICES_DIR);
26 - if (!dirusb) return -1;
28 - while ((edirusb = readdir(dirusb)) != NULL && adaptercount < MAX_ADAPTERS)
30 + while(adaptercount < MAX_ADAPTERS)
33 - if (edirusb->d_name[0] == '.') continue;
35 - sprintf(devdir, "%s/%s/device/dvb", SYS_USB_DEVICES_DIR, edirusb->d_name);
36 - dirdev = opendir(devdir);
39 + snprintf(filename, sizeof(filename), "/sys/class/dvb/dvb%d.frontend0/device/product", nr);
40 + fd = fopen(filename, "r");
43 - sprintf(devdir, "%s/%s/device", SYS_USB_DEVICES_DIR, edirusb->d_name);
44 - dirdev = opendir(devdir);
45 - if (!dirdev) continue;
46 + snprintf(filename, sizeof(filename), "/sys/class/dvb/dvb%d.frontend0/device/manufacturer", nr);
47 + fd = fopen(filename, "r");
50 - while ((edirdev = readdir(dirdev)) != NULL && adaptercount < MAX_ADAPTERS)
55 - int namelen = strlen(edirdev->d_name);
57 - if (namelen < 14) continue;
58 - if (strcmp(edirdev->d_name + (namelen - 9), "frontend0")) continue;
60 - sprintf(filename, "%s/%s/device/product", SYS_USB_DEVICES_DIR, edirusb->d_name);
61 - fd = fopen(filename, "r");
64 - sprintf(filename, "%s/%s/device/manufacturer", SYS_USB_DEVICES_DIR, edirusb->d_name);
65 - fd = fopen(filename, "r");
70 - char *tmp = adapters[adaptercount].name;
71 - fread(tmp, 63, 1, fd);
73 - while (strlen(tmp) > 0 && (tmp[strlen(tmp) - 1] == '\n' || tmp[strlen(tmp) - 1] == ' ')) tmp[strlen(tmp) - 1] = 0;
78 - strcpy(adapters[adaptercount].name, "unknown frontend");
81 - adapters[adaptercount].index = edirdev->d_name[namelen - 11] - '0';
83 + char *tmp = adapters[adaptercount].name;
84 + fread(tmp, 63, 1, fd);
86 + while (strlen(tmp) > 0 && (tmp[strlen(tmp) - 1] == '\n' || tmp[strlen(tmp) - 1] == ' ')) tmp[strlen(tmp) - 1] = 0;
91 + strcpy(adapters[adaptercount].name, "unknown frontend");
96 + adapters[adaptercount].index = nr;
103 dirvtun = opendir(VTUNER_PATH);
105 @@ -200,7 +177,6 @@ int scan_adapters()
111 for (i = 0; i < adaptercount; i++)
113 @@ -216,6 +192,7 @@ int scan_adapters()