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

Ludovic Rousseau rousseau at costa.debian.org
Tue Sep 26 15:43:58 CEST 2006


Author: rousseau
Date: 2006-09-26 13:43:48 +0000 (Tue, 26 Sep 2006)
New Revision: 2177

Modified:
   trunk/PCSC/src/testpcsc.c
Log:
factor the return value test code and add some color


Modified: trunk/PCSC/src/testpcsc.c
===================================================================
--- trunk/PCSC/src/testpcsc.c	2006-09-26 13:32:05 UTC (rev 2176)
+++ trunk/PCSC/src/testpcsc.c	2006-09-26 13:43:48 UTC (rev 2177)
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 1999
  *  David Corcoran <corcoran at linuxnet.com>
- * Copyright (C) 2004
+ * Copyright (C) 2004-2006
  *  Ludovic Rousseau <ludovic.rousseau at free.fr>
  *
  * $Id$
@@ -23,6 +23,26 @@
 #include "winscard.h"
 #include "reader.h"
 
+#define PANIC 0
+#define DONT_PANIC 1
+
+void test_rv(int rv, SCARDCONTEXT hContext, int dont_panic)
+{
+	if (rv != SCARD_S_SUCCESS)
+	{
+		if (dont_panic)
+			printf("\33[34m%s (don't panic)\33[0m\n", pcsc_stringify_error(rv));
+		else
+		{
+			printf("\33[01;31m%s\33[0m\n", pcsc_stringify_error(rv));
+			SCardReleaseContext(hContext);
+			exit(-1);
+		}
+	}
+	else
+		puts(pcsc_stringify_error(rv));
+}
+
 int main(int argc, char **argv)
 {
 	SCARDHANDLE hCard;
@@ -46,53 +66,27 @@
 
 	printf("\nMUSCLE PC/SC Lite unitary test Program\n\n");
 
-	printf("THIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL FOR END USERS!\n");
-	printf("Do NOT use it unless you really know what you do.\n\n");
+	printf("\33[35mTHIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL FOR END USERS!\n");
+	printf("Do NOT use it unless you really know what you do.\33[0m\n\n");
 
 	printf("Testing SCardEstablishContext    : ");
 	rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		return -1;
-	}
-
 	printf("Testing SCardGetStatusChange \n");
 	printf("Please insert a working reader   : ");
 	fflush(stdout);
 	rv = SCardGetStatusChange(hContext, INFINITE, 0, 0);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	printf("Testing SCardListReaderGroups    : ");
-
 	rv = SCardListReaderGroups(hContext, 0, &dwGroups);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	mszGroups = malloc(sizeof(char) * dwGroups);
 	rv = SCardListReaderGroups(hContext, mszGroups, &dwGroups);
+	test_rv(rv, hContext, PANIC);
 
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	/*
 	 * Have to understand the multi-string here
 	 */
@@ -109,24 +103,12 @@
 
 	mszGroups = 0;
 	rv = SCardListReaders(hContext, mszGroups, 0, &dwReaders);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	mszReaders = malloc(sizeof(char) * dwReaders);
 	rv = SCardListReaders(hContext, mszGroups, mszReaders, &dwReaders);
+	test_rv(rv, hContext, PANIC);
 
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	/*
 	 * Have to understand the multi-string here
 	 */
@@ -159,28 +141,14 @@
 	printf("Waiting for card insertion       : ");
 	fflush(stdout);
 	rv = SCardGetStatusChange(hContext, INFINITE, rgReaderStates, 1);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	printf("Testing SCardConnect             : ");
 	rv = SCardConnect(hContext, &mszReaders[iList[iReader]],
 		SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
 		&hCard, &dwPref);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	switch(dwPref)
 	{
 		case SCARD_PROTOCOL_T0:
@@ -235,18 +203,18 @@
 		}
 	}
 #endif
-	printf("%s %s\n", pcsc_stringify_error(rv), rv != SCARD_S_SUCCESS ? "(don't panic)" : "");
+	test_rv(rv, hContext, DONT_PANIC);
 
 	printf("Testing SCardGetAttrib           : ");
 	rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, NULL, &dwAtrLen);
-	printf("%s %s\n", pcsc_stringify_error(rv), rv != SCARD_S_SUCCESS ? "(don't panic)" : "");
+	test_rv(rv, hContext, DONT_PANIC);
 	if (rv == SCARD_S_SUCCESS)
 		printf("ATR length: %ld\n", dwAtrLen);
 
 	printf("Testing SCardGetAttrib           : ");
 	dwAtrLen = sizeof(pbAtr);
 	rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, pbAtr, &dwAtrLen);
-	printf("%s %s\n", pcsc_stringify_error(rv), rv != SCARD_S_SUCCESS ? "(don't panic)" : "");
+	test_rv(rv, hContext, DONT_PANIC);
 	if (rv == SCARD_S_SUCCESS)
 	{
 		for (i = 0; i < dwAtrLen; i++)
@@ -257,20 +225,20 @@
 	printf("Testing SCardGetAttrib           : ");
 	dwAtrLen = sizeof(pbAtr);
 	rv = SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_IFD_VERSION, pbAtr, &dwAtrLen);
-	printf("%s %s\n", pcsc_stringify_error(rv), rv != SCARD_S_SUCCESS ? "(don't panic)" : "");
+	test_rv(rv, hContext, DONT_PANIC);
 	if (rv == SCARD_S_SUCCESS)
 		printf("Vendor IFD version: 0x%08lX\n", ((DWORD *)pbAtr)[0]);
 
 	printf("Testing SCardGetAttrib           : ");
 	dwAtrLen = sizeof(pbAtr);
 	rv = SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_NAME, pbAtr, &dwAtrLen);
-	printf("%s %s\n", pcsc_stringify_error(rv), rv != SCARD_S_SUCCESS ? "(don't panic)" : "");
+	test_rv(rv, hContext, DONT_PANIC);
 	if (rv == SCARD_S_SUCCESS)
 		printf("Vendor name: %s\n", pbAtr);
 
 	printf("Testing SCardSetAttrib           : ");
 	rv = SCardSetAttrib(hCard, SCARD_ATTR_ATR_STRING, (LPCBYTE)"", 1);
-	printf("%s %s\n", pcsc_stringify_error(rv), rv != SCARD_S_SUCCESS ? "(don't panic)" : "");
+	test_rv(rv, hContext, DONT_PANIC);
 
 	printf("Testing SCardStatus              : ");
 
@@ -280,9 +248,8 @@
 
 	rv = SCardStatus(hCard, pcReaders, &dwReaderLen, &dwState, &dwProt,
 		pbAtr, &dwAtrLen);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
 	printf("Current Reader Name              : %s\n", pcReaders);
 	printf("Current Reader State             : 0x%.4lx\n", dwState);
 	printf("Current Reader Protocol          : T=%ld\n", dwProt - 1);
@@ -306,36 +273,16 @@
 	printf("Testing SCardReconnect           : ");
 	rv = SCardReconnect(hCard, SCARD_SHARE_SHARED,
 		SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, SCARD_UNPOWER_CARD, &dwPref);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	printf("Testing SCardDisconnect          : ");
 	rv = SCardDisconnect(hCard, SCARD_UNPOWER_CARD);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		SCardReleaseContext(hContext);
-		return -1;
-	}
-
 	printf("Testing SCardReleaseContext      : ");
 	rv = SCardReleaseContext(hContext);
+	test_rv(rv, hContext, PANIC);
 
-	printf("%s\n", pcsc_stringify_error(rv));
-
-	if (rv != SCARD_S_SUCCESS)
-	{
-		return -1;
-	}
-
 	printf("\n");
 	printf("PC/SC Test Completed Successfully !\n");
 




More information about the Pcsclite-cvs-commit mailing list