diff options
author | Hans de Goede <hdegoede@redhat.com> | 2011-09-06 10:37:00 +0000 |
---|---|---|
committer | Vitali Lovich <vlovich@aliph.com> | 2011-09-06 10:43:10 +0100 |
commit | 328d9fd76aba03b62d0dfb70e95d12108718edf8 (patch) | |
tree | 30233d46630f53cee7667480db4fba3e979a8f83 | |
parent | f471c635db625536bb6d60ebc935791cfe2cd38d (diff) | |
download | libusb-328d9fd76aba03b62d0dfb70e95d12108718edf8.tar.gz |
Linux: Use __read_sysfs_attr() to get busnum and devaddr
Remove code duplication.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r-- | libusb/os/linux_usbfs.c | 45 |
1 files changed, 6 insertions, 39 deletions
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c index 6f65080..3f47cf2 100644 --- a/libusb/os/linux_usbfs.c +++ b/libusb/os/linux_usbfs.c @@ -1035,51 +1035,18 @@ out: static int sysfs_scan_device(struct libusb_context *ctx, struct discovered_devs **_discdevs, const char *devname) { - int r; - FILE *fd; - char filename[PATH_MAX]; int busnum; int devaddr; usbi_dbg("scan %s", devname); - snprintf(filename, PATH_MAX, "%s/%s/busnum", SYSFS_DEVICE_PATH, devname); - fd = fopen(filename, "r"); - if (!fd) { - if (errno == ENOENT) { - /* busnum doesn't exist. Assume the device has been - disconnected (unplugged). */ - return LIBUSB_ERROR_NO_DEVICE; - } - usbi_err(ctx, "open busnum failed, errno=%d", errno); - return LIBUSB_ERROR_IO; - } - - r = fscanf(fd, "%d", &busnum); - fclose(fd); - if (r != 1) { - usbi_err(ctx, "fscanf busnum returned %d, errno=%d", r, errno); - return LIBUSB_ERROR_NO_DEVICE; - } - - snprintf(filename, PATH_MAX, "%s/%s/devnum", SYSFS_DEVICE_PATH, devname); - fd = fopen(filename, "r"); - if (!fd) { - if (errno == ENOENT) { - /* devnum doesn't exist. Assume the device has been - disconnected (unplugged). */ - return LIBUSB_ERROR_NO_DEVICE; - } - usbi_err(ctx, "open devnum failed, errno=%d", errno); - return LIBUSB_ERROR_IO; - } + busnum = __read_sysfs_attr(ctx, devname, "busnum"); + if (busnum < 0) + return busnum; - r = fscanf(fd, "%d", &devaddr); - fclose(fd); - if (r != 1) { - usbi_err(ctx, "fscanf devnum returned %d, errno=%d", r, errno); - return LIBUSB_ERROR_NO_DEVICE; - } + devaddr = __read_sysfs_attr(ctx, devname, "devnum"); + if (devaddr < 0) + return devaddr; usbi_dbg("bus=%d dev=%d", busnum, devaddr); if (busnum > 255 || devaddr > 255) |