[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