[PATCH 3/6] main: Rearrange iterate_dfu_devices() slightly

Tormod Volden lists.tormod at gmail.com
Wed Aug 31 23:26:22 CEST 2011


From: Tormod Volden <debian.tormod at gmail.com>

Limit the scope of some variables, get rid of others.
Continue as soon as possible on non-match.
---
 src/main.c |   20 +++++++-------------
 1 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/src/main.c b/src/main.c
index 9fbaed9..e547a05 100644
--- a/src/main.c
+++ b/src/main.c
@@ -293,32 +293,26 @@ static int count_dfu_interfaces(libusb_device *dev)
 static int iterate_dfu_devices(libusb_context *ctx, struct dfu_if *dif,
     int (*action)(struct libusb_device *dev, void *user), void *user)
 {
-	struct libusb_device_descriptor desc;
-	struct libusb_device *dev;
 	libusb_device **list;
 	ssize_t num_devs, i;
 
-	dev = NULL;
 	num_devs = libusb_get_device_list(ctx, &list);
-
-	/* Walk the tree and find our device. */
 	for (i = 0; i < num_devs; ++i) {
-		uint8_t bnum = libusb_get_bus_number(list[i]);
-		uint8_t dnum = libusb_get_device_address(list[i]);
-
 		int retval;
-		dev = list[i];
-		libusb_get_device_descriptor(list[i], &desc);
+		struct libusb_device_descriptor desc;
+		struct libusb_device *dev = list[i];
 
+		if (dif && (dif->flags & DFU_IFF_DEVNUM) &&
+		    (libusb_get_bus_number(dev) != dif->bus ||
+		     libusb_get_device_address(dev) != dif->devnum))
+			continue;
+		libusb_get_device_descriptor(dev, &desc);
 		if (dif && (dif->flags & DFU_IFF_VENDOR) &&
 		    desc.idVendor != dif->vendor)
 			continue;
 		if (dif && (dif->flags & DFU_IFF_PRODUCT) &&
 		    desc.idProduct != dif->product)
 			continue;
-		if (dif && (dif->flags & DFU_IFF_DEVNUM) &&
-		    (bnum != dif->bus || dnum != dif->devnum))
-			continue;
 		if (!count_dfu_interfaces(dev))
 			continue;
 
-- 
1.7.5.4




More information about the devel mailing list