-/* find smallest number of instances of <syspath>/<name><number> */
-static int base_number(const char *syspath, const char *name)
-{
- char *base;
- char *pos;
- DIR *dir;
- struct dirent *dent;
- size_t len;
- int number = -1;
-
- base = strdup(syspath);
- if (base == NULL)
- goto out;
-
- pos = strrchr(base, '/');
- if (pos == NULL)
- goto out;
- pos[0] = '\0';
-
- len = strlen(name);
- dir = opendir(base);
- if (dir == NULL)
- goto out;
- for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
- char *rest;
- int i;
-
- if (dent->d_name[0] == '.')
- continue;
- if (dent->d_type != DT_DIR && dent->d_type != DT_LNK)
- continue;
- if (strncmp(dent->d_name, name, len) != 0)
- continue;
- i = strtoul(&dent->d_name[len], &rest, 10);
- if (rest[0] != '\0')
- continue;
- if (number == -1 || i < number)
- number = i;
- }
- closedir(dir);
-out:
- free(base);
- return number;
-}
-
-static struct udev_device *handle_fc(struct udev_device *parent, char **path)