[Pcsclite-cvs-commit] r5212 - in /trunk/PCSC/src: eventhandler.c eventhandler.h pcsc-wirecheck-gen.c readerfactory.c winscard_clnt.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Thu Sep 2 09:05:45 UTC 2010


Author: rousseau
Date: Thu Sep  2 09:05:44 2010
New Revision: 5212

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5212
Log:
Get rid of the readerID field in struct pubReaderStatesList

Modified:
    trunk/PCSC/src/eventhandler.c
    trunk/PCSC/src/eventhandler.h
    trunk/PCSC/src/pcsc-wirecheck-gen.c
    trunk/PCSC/src/readerfactory.c
    trunk/PCSC/src/winscard_clnt.c

Modified: trunk/PCSC/src/eventhandler.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/eventhandler.c?rev=5212&op=diff
==============================================================================
--- trunk/PCSC/src/eventhandler.c (original)
+++ trunk/PCSC/src/eventhandler.c Thu Sep  2 09:05:44 2010
@@ -39,7 +39,6 @@
 #include "winscard_svc.h"
 #include "simclist.h"
 
-READER_STATE readerStates[PCSCLITE_MAX_READERS_CONTEXTS];
 static list_t ClientsWaitingForEvent;	/**< list of client file descriptors */
 pthread_mutex_t ClientsWaitingForEvent_lock;	/**< lock for the above list */
 
@@ -117,20 +116,6 @@
 
 LONG EHInitializeEventStructures(void)
 {
-	int i;
-
-	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
-	{
-		/* Zero out each value in the struct */
-		memset(readerStates[i].readerName, 0, MAX_READERNAME);
-		memset(readerStates[i].cardAtr, 0, MAX_ATR_SIZE);
-		readerStates[i].readerID = 0;
-		readerStates[i].readerState = 0;
-		readerStates[i].readerSharing = 0;
-		readerStates[i].cardAtrLength = 0;
-		readerStates[i].cardProtocol = SCARD_PROTOCOL_UNDEFINED;
-	}
-
 	(void)list_init(&ClientsWaitingForEvent);
 
 	/* request to store copies, and provide the metric function */
@@ -212,7 +197,6 @@
 		sizeof(rContext->readerState->readerName));
 	memset(rContext->readerState->cardAtr, 0,
 		sizeof(rContext->readerState->cardAtr));
-	rContext->readerState->readerID = 0;
 	rContext->readerState->readerState = 0;
 	rContext->readerState->readerSharing = 0;
 	rContext->readerState->cardAtrLength = 0;
@@ -231,7 +215,6 @@
 {
 	LONG rv;
 	DWORD dwStatus = 0;
-	int i;
 	UCHAR ucAtr[MAX_ATR_SIZE];
 	DWORD dwAtrLen = 0;
 
@@ -242,30 +225,8 @@
 		return SCARD_F_UNKNOWN_ERROR;
 	}
 
-	/*
-	 * Find an empty reader slot and insert the new reader
-	 */
-	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
-	{
-		if (readerStates[i].readerID == 0)
-			break;
-	}
-
-	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
-		return SCARD_F_INTERNAL_ERROR;
-
-	/*
-	 * Set all the attributes to this reader
-	 */
-	rContext->readerState = &readerStates[i];
 	(void)strlcpy(rContext->readerState->readerName, rContext->lpcReader,
 		sizeof(rContext->readerState->readerName));
-	memcpy(rContext->readerState->cardAtr, ucAtr, dwAtrLen);
-	rContext->readerState->readerID = i + 100;
-	rContext->readerState->readerState = dwStatus;
-	rContext->readerState->readerSharing = rContext->contexts;
-	rContext->readerState->cardAtrLength = dwAtrLen;
-	rContext->readerState->cardProtocol = SCARD_PROTOCOL_UNDEFINED;
 
 	rContext->pthCardEvent = card_event;
 	rv = ThreadCreate(&rContext->pthThread, 0,

Modified: trunk/PCSC/src/eventhandler.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/eventhandler.h?rev=5212&op=diff
==============================================================================
--- trunk/PCSC/src/eventhandler.h (original)
+++ trunk/PCSC/src/eventhandler.h Thu Sep  2 09:05:44 2010
@@ -31,7 +31,6 @@
 	 */
 	typedef struct pubReaderStatesList
 	{
-		int32_t readerID;
 		char readerName[MAX_READERNAME];
 		uint32_t readerState;
 		int32_t readerSharing;

Modified: trunk/PCSC/src/pcsc-wirecheck-gen.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/pcsc-wirecheck-gen.c?rev=5212&op=diff
==============================================================================
--- trunk/PCSC/src/pcsc-wirecheck-gen.c (original)
+++ trunk/PCSC/src/pcsc-wirecheck-gen.c Thu Sep  2 09:05:44 2010
@@ -223,7 +223,6 @@
 
     BLANK_LINE ();
     CHECK_STRUCT (pubReaderStatesList);
-    CHECK_MEMBER (pubReaderStatesList, readerID);
     CHECK_MEMBER (pubReaderStatesList, readerName);
     CHECK_MEMBER (pubReaderStatesList, readerState);
     CHECK_MEMBER (pubReaderStatesList, readerSharing);

Modified: trunk/PCSC/src/readerfactory.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/readerfactory.c?rev=5212&op=diff
==============================================================================
--- trunk/PCSC/src/readerfactory.c (original)
+++ trunk/PCSC/src/readerfactory.c Thu Sep  2 09:05:44 2010
@@ -49,6 +49,7 @@
 #endif
 
 static READER_CONTEXT * sReadersContexts[PCSCLITE_MAX_READERS_CONTEXTS];
+READER_STATE readerStates[PCSCLITE_MAX_READERS_CONTEXTS];
 static int maxReaderHandles = PCSC_MAX_READER_HANDLES;
 static DWORD dwNumReadersContexts = 0;
 #ifdef USE_SERIAL
@@ -87,7 +88,16 @@
 	{
 		sReadersContexts[i] = malloc(sizeof(READER_CONTEXT));
 		(sReadersContexts[i])->vHandle = NULL;
-		(sReadersContexts[i])->readerState = NULL;
+
+		/* Zero out each value in the struct */
+		memset(readerStates[i].readerName, 0, MAX_READERNAME);
+		memset(readerStates[i].cardAtr, 0, MAX_ATR_SIZE);
+		readerStates[i].readerState = 0;
+		readerStates[i].readerSharing = 0;
+		readerStates[i].cardAtrLength = 0;
+		readerStates[i].cardProtocol = SCARD_PROTOCOL_UNDEFINED;
+
+		sReadersContexts[i]->readerState = &readerStates[i];
 	}
 
 	/* Create public event structures */
@@ -175,7 +185,6 @@
 	(sReadersContexts[dwContext])->pMutex = NULL;
 	(sReadersContexts[dwContext])->dwIdentity =
 		(dwContext + 1) << IDENTITY_SHIFT;
-	(sReadersContexts[dwContext])->readerState = NULL;
 
 	lrv = list_init(&((sReadersContexts[dwContext])->handlesList));
 	if (lrv < 0)
@@ -363,7 +372,6 @@
 		(sReadersContexts[dwContextB])->contexts = 0;
 		(sReadersContexts[dwContextB])->hLockId = 0;
 		(sReadersContexts[dwContextB])->LockCount = 0;
-		(sReadersContexts[dwContextB])->readerState = NULL;
 		(sReadersContexts[dwContextB])->dwIdentity =
 			(dwContextB + 1) << IDENTITY_SHIFT;
 
@@ -496,7 +504,6 @@
 		sContext->LockCount = 0;
 		sContext->vHandle = NULL;
 		sContext->dwIdentity = 0;
-		sContext->readerState = NULL;
 
 		(void)pthread_mutex_lock(&sContext->handlesList_lock);
 		while (list_size(&(sContext->handlesList)) != 0)
@@ -1249,8 +1256,7 @@
 
 LONG RFCheckReaderStatus(READER_CONTEXT * rContext)
 {
-	if ((rContext->readerState == NULL)
-		|| (rContext->readerState->readerState & SCARD_UNKNOWN))
+	if (rContext->readerState->readerState & SCARD_UNKNOWN)
 		return SCARD_E_READER_UNAVAILABLE;
 	else
 		return SCARD_S_SUCCESS;

Modified: trunk/PCSC/src/winscard_clnt.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_clnt.c?rev=5212&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_clnt.c (original)
+++ trunk/PCSC/src/winscard_clnt.c Thu Sep  2 09:05:44 2010
@@ -1931,7 +1931,7 @@
 
 	/* Get the initial reader count on the system */
 	for (j=0; j < PCSCLITE_MAX_READERS_CONTEXTS; j++)
-		if (readerStates[j].readerID != 0)
+		if (readerStates[j].readerName[0] != '\0')
 			currentReaderCount++;
 
 	if (INFINITE == dwTimeout)
@@ -1969,7 +1969,7 @@
 					int k, newReaderCount = 0;
 
 					for (k=0; k < PCSCLITE_MAX_READERS_CONTEXTS; k++)
-						if (readerStates[k].readerID != 0)
+						if (readerStates[k].readerName != '\0')
 							newReaderCount++;
 
 					if (newReaderCount != currentReaderCount)
@@ -3063,7 +3063,7 @@
 
 	dwReadersLen = 0;
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
-		if (readerStates[i].readerID != 0)
+		if (readerStates[i].readerName[0] != '\0')
 			dwReadersLen += strlen(readerStates[i].readerName) + 1;
 
 	/* for the last NULL byte */
@@ -3107,7 +3107,7 @@
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
-		if (readerStates[i].readerID != 0)
+		if (readerStates[i].readerName != '\0')
 		{
 			/*
 			 * Build the multi-string




More information about the Pcsclite-cvs-commit mailing list