[fprint] discover_device function in examples

Daniel Drake dan at reactivated.net
Sat Dec 1 12:53:12 GMT 2007


Andrei Tchijov wrote:
> Not a major thing .... but. All examples for libfprint use function  
> "discover_device" which looks strange:
> 
> struct fp_dscv_dev *discover_device(struct fp_dscv_dev  
> **discovered_devs)
> {
> 	struct fp_dscv_dev *ddev = NULL;
> 	int i;
> 
> 	for (i = 0; ddev = discovered_devs[i]; i++) {
> 		struct fp_driver *drv = fp_dscv_dev_get_driver(ddev);
> 		printf("Found device claimed by %s driver\n",
> 			fp_driver_get_full_name(drv));
> 		return ddev;
> 	}
> 
> 	return ddev;
> }
> 
> Unless I am greatly mistaken, "for" loop will run once (if  
> discovered_devs is not empty) regardless of anything.

I wonder what I was thinking there. It's just supposed to select the 
first device on the bus. No loop needed, obviously.

> struct fp_dscv_dev *discover_device(struct fp_dscv_dev  
> **discovered_devs)
> {
> 	struct fp_dscv_dev *ddev = NULL;
> 	int i;
> 
> 	for (i = 0; ddev = discovered_devs[i]; i++) {
> 		struct fp_driver *drv = fp_dscv_dev_get_driver(ddev);
> 		if( drv ) {

Fair guess, but for a valid device, driver will never be NULL.

I'll fix this for the next release.

Thanks,
Daniel



More information about the fprint mailing list