[Pcsclite-cvs-commit] r6802 - trunk/PCSC/src

ludovic.rousseau at free.fr ludovic.rousseau at free.fr
Mon Dec 2 10:37:22 UTC 2013


Author: rousseau
Date: 2013-12-02 10:37:22 +0000 (Mon, 02 Dec 2013)
New Revision: 6802

Modified:
   trunk/PCSC/src/dyn_generic.h
   trunk/PCSC/src/dyn_hpux.c
   trunk/PCSC/src/dyn_macosx.c
   trunk/PCSC/src/dyn_unix.c
   trunk/PCSC/src/readerfactory.c
Log:
Do not log a critical error if symbol IFDHCreateChannelByName is not
found in a driver.

Drivers using API v2 of IFDHandler (like openct-ifd.bundle) do not
provide a IFDHCreateChannelByName symbol. A critical error should not be
logged since it is a normal behavior.

DYN_GetAddress() has a new parameter: mayfail, to indicate if dlsym(3)
may fail or not.


Modified: trunk/PCSC/src/dyn_generic.h
===================================================================
--- trunk/PCSC/src/dyn_generic.h	2013-11-26 14:14:49 UTC (rev 6801)
+++ trunk/PCSC/src/dyn_generic.h	2013-12-02 10:37:22 UTC (rev 6802)
@@ -19,6 +19,6 @@
 
 	int DYN_LoadLibrary(void **, char *);
 	int DYN_CloseLibrary(void **);
-	int DYN_GetAddress(void *, /*@out@*/ void **, const char *);
+	int DYN_GetAddress(void *, /*@out@*/ void **, const char *, int);
 
 #endif

Modified: trunk/PCSC/src/dyn_hpux.c
===================================================================
--- trunk/PCSC/src/dyn_hpux.c	2013-11-26 14:14:49 UTC (rev 6801)
+++ trunk/PCSC/src/dyn_hpux.c	2013-12-02 10:37:22 UTC (rev 6802)
@@ -61,7 +61,8 @@
 	return SCARD_S_SUCCESS;
 }
 
-int DYN_GetAddress(void *pvLHandle, void **pvFHandle, const char *pcFunction)
+int DYN_GetAddress(void *pvLHandle, void **pvFHandle, const char *pcFunction,
+	int mayfail)
 {
 
 	int rv;
@@ -72,7 +73,8 @@
 
 	if (rv == -1)
 	{
-		Log3(PCSC_LOG_ERROR, "%s: %s", pcFunction, strerror(errno));
+		Log3(mayfail ? PCSC_LOG_INFO : PCSC_LOG_ERROR, "%s: %s",
+			pcFunction, strerror(errno));
 		rv = SCARD_F_UNKNOWN_ERROR;
 	}
 	else

Modified: trunk/PCSC/src/dyn_macosx.c
===================================================================
--- trunk/PCSC/src/dyn_macosx.c	2013-11-26 14:14:49 UTC (rev 6801)
+++ trunk/PCSC/src/dyn_macosx.c	2013-12-02 10:37:22 UTC (rev 6802)
@@ -90,7 +90,8 @@
 	return SCARD_S_SUCCESS;
 }
 
-int DYN_GetAddress(void *pvLHandle, void **pvFHandle, const char *pcFunction)
+int DYN_GetAddress(void *pvLHandle, void **pvFHandle, const char *pcFunction,
+	int mayfail)
 {
 
 	CFBundleRef bundle = (CFBundleRef) pvLHandle;

Modified: trunk/PCSC/src/dyn_unix.c
===================================================================
--- trunk/PCSC/src/dyn_unix.c	2013-11-26 14:14:49 UTC (rev 6801)
+++ trunk/PCSC/src/dyn_unix.c	2013-12-02 10:37:22 UTC (rev 6802)
@@ -60,7 +60,8 @@
 	return SCARD_S_SUCCESS;
 }
 
-INTERNAL int DYN_GetAddress(void *pvLHandle, void **pvFHandle, const char *pcFunction)
+INTERNAL int DYN_GetAddress(void *pvLHandle, void **pvFHandle,
+	const char *pcFunction, int mayfail)
 {
 	char pcFunctionName[256];
 	int rv = SCARD_S_SUCCESS;
@@ -78,7 +79,8 @@
 
 	if (*pvFHandle == NULL)
 	{
-		Log3(PCSC_LOG_CRITICAL, "%s: %s", pcFunction, dlerror());
+		Log3(mayfail ? PCSC_LOG_INFO : PCSC_LOG_CRITICAL, "%s: %s",
+			pcFunction, dlerror());
 		rv = SCARD_F_UNKNOWN_ERROR;
 	}
 #endif

Modified: trunk/PCSC/src/readerfactory.c
===================================================================
--- trunk/PCSC/src/readerfactory.c	2013-11-26 14:14:49 UTC (rev 6801)
+++ trunk/PCSC/src/readerfactory.c	2013-12-02 10:37:22 UTC (rev 6802)
@@ -798,7 +798,7 @@
 	int rv;
 	void *f;
 
-	rv = DYN_GetAddress(rContext->vHandle, &f, "IFDHCreateChannelByName");
+	rv = DYN_GetAddress(rContext->vHandle, &f, "IFDHCreateChannelByName", TRUE);
 	if (SCARD_S_SUCCESS == rv)
 	{
 		/* Ifd Handler 3.0 found */
@@ -806,7 +806,7 @@
 	}
 	else
 	{
-		rv = DYN_GetAddress(rContext->vHandle, &f, "IFDHCreateChannel");
+		rv = DYN_GetAddress(rContext->vHandle, &f, "IFDHCreateChannel", FALSE);
 		if (SCARD_S_SUCCESS == rv)
 		{
 			/* Ifd Handler 2.0 found */
@@ -826,7 +826,7 @@
 #define GET_ADDRESS_OPTIONALv2(s, code) \
 { \
 	void *f1 = NULL; \
-	int rvl = DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s); \
+	int rvl = DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s, FALSE); \
 	if (SCARD_S_SUCCESS != rvl) \
 	{ \
 		code \
@@ -858,7 +858,7 @@
 #define GET_ADDRESS_OPTIONALv3(s, code) \
 { \
 	void *f1 = NULL; \
-	int rvl = DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s); \
+	int rvl = DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s, FALSE); \
 	if (SCARD_S_SUCCESS != rvl) \
 	{ \
 		code \




More information about the Pcsclite-cvs-commit mailing list