[Pcsclite-cvs-commit] r4296 - /trunk/PCSC/src/hotplug_libhal.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Fri Jul 3 12:52:29 UTC 2009


Author: rousseau
Date: Fri Jul  3 12:52:27 2009
New Revision: 4296

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4296
Log:
HPAddDevice(): add the reader interface name if provided by the device

Modified:
    trunk/PCSC/src/hotplug_libhal.c

Modified: trunk/PCSC/src/hotplug_libhal.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/hotplug_libhal.c?rev=4296&op=diff
==============================================================================
--- trunk/PCSC/src/hotplug_libhal.c (original)
+++ trunk/PCSC/src/hotplug_libhal.c Fri Jul  3 12:52:27 2009
@@ -31,9 +31,11 @@
 #include "hotplug.h"
 #include "thread_generic.h"
 #include "utils.h"
+#include "strlcpycat.h"
 
 #undef DEBUG_HOTPLUG
 #define ADD_SERIAL_NUMBER
+#define ADD_INTERFACE_NAME
 
 #define FALSE			0
 #define TRUE			1
@@ -347,6 +349,8 @@
 	int i;
 	char deviceName[MAX_DEVICENAME];
 	struct _driverTracker *driver;
+	char *sSerialNumber = NULL, *sInterfaceName = NULL;
+	char fullname[MAX_READERNAME];
 	LONG ret;
 
 	driver = get_driver(ctx, udi);
@@ -387,22 +391,38 @@
 
 	readerTracker[i].udi = strdup(udi);
 
+#ifdef ADD_INTERFACE_NAME
+	if (libhal_device_property_exists(ctx, udi, "usb.interface.description", NULL))
+		sInterfaceName = libhal_device_get_property_string(ctx, udi,
+			"usb.interface.description", NULL);
+#endif
+
 #ifdef ADD_SERIAL_NUMBER
 	if (libhal_device_property_exists(ctx, udi, "usb.serial", NULL))
-	{
-		char fullname[MAX_READERNAME];
-		char *sSerialNumber;
-
 		sSerialNumber = libhal_device_get_property_string(ctx, udi,
 			"usb.serial", NULL);
-
-		(void)snprintf(fullname, sizeof(fullname), "%s (%s)",
-			driver->readerName, sSerialNumber);
-		readerTracker[i].fullName = strdup(fullname);
-	}
-	else
-#endif
-		readerTracker[i].fullName = strdup(driver->readerName);
+#endif
+	
+	/* name from the Info.plist file */
+	strlcpy(fullname, driver->readerName, sizeof(fullname));
+
+	/* interface name from the device (if any) */
+	if (sInterfaceName)
+	{
+		strlcat(fullname, " [", sizeof(fullname));
+		strlcat(fullname, sInterfaceName, sizeof(fullname));
+		strlcat(fullname, "]", sizeof(fullname));
+	}
+
+	/* serial number from the device (if any) */
+	if (sSerialNumber)
+	{
+		strlcat(fullname, " (", sizeof(fullname));
+		strlcat(fullname, sSerialNumber, sizeof(fullname));
+		strlcat(fullname, ")", sizeof(fullname));
+	}
+
+	readerTracker[i].fullName = strdup(fullname);
 
 	ret = RFAddReader(readerTracker[i].fullName, PCSCLITE_HP_BASE_PORT + i,
 		driver->libraryPath, deviceName);




More information about the Pcsclite-cvs-commit mailing list