[Pcsclite-cvs-commit] PCSC/doc/example pcsc_demo.c,1.8,1.9
rousseau@haydn.debian.org
rousseau@haydn.debian.org
Update of /cvsroot/pcsclite/PCSC/doc/example
In directory haydn:/tmp/cvs-serv10528
Modified Files:
pcsc_demo.c
Log Message:
recode the readers enumeration to avoid the use of PCSCLITE_MAX_READERS_CONTEXTS
Index: pcsc_demo.c
===================================================================
RCS file: /cvsroot/pcsclite/PCSC/doc/example/pcsc_demo.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- pcsc_demo.c 18 Mar 2004 07:40:47 -0000 1.8
+++ pcsc_demo.c 31 Mar 2004 09:54:31 -0000 1.9
@@ -36,10 +36,6 @@
#define FALSE 0
#endif
-#ifndef PCSCLITE_MAX_READERS_CONTEXTS
-#define PCSCLITE_MAX_READERS_CONTEXTS 16
-#endif
-
/* PCSC error message pretty print */
#define PCSC_ERROR(rv, text) \
if (rv != SCARD_S_SUCCESS) \
@@ -58,7 +54,7 @@
SCARDCONTEXT hContext;
DWORD dwReaders;
LPSTR mszReaders;
- char *ptr, *readers[PCSCLITE_MAX_READERS_CONTEXTS];
+ char *ptr, **readers;
int nbReaders;
SCARDHANDLE hCard;
DWORD dwActiveProtocol, dwReaderLen, dwState, dwProt, dwAtrLen;
@@ -100,15 +96,12 @@
if (rv != SCARD_S_SUCCESS)
printf("SCardListReader: %lX\n", rv);
- /* Extract readers from the null separated string and get thetotal
- * number of readers
- */
+ /* Extract readers from the null separated string and get the total
+ * number of readers */
nbReaders = 0;
ptr = mszReaders;
while ((*ptr != '\0') && (nbReaders < PCSCLITE_MAX_READERS_CONTEXTS))
{
- printf("%d: %s\n", nbReaders, ptr);
- readers[nbReaders] = ptr;
ptr += strlen(ptr)+1;
nbReaders++;
}
@@ -117,6 +110,25 @@
{
printf("No reader found\n");
goto end;
+ }
+
+ /* allocate the readers table */
+ readers = calloc(nbReaders, sizeof(char *));
+ if (NULL == readers)
+ {
+ printf("Not enough memory for readers[]\n");
+ goto end;
+ }
+
+ /* fill the readers table */
+ nbReaders = 0;
+ ptr = mszReaders;
+ while (*ptr != '\0')
+ {
+ printf("%d: %s\n", nbReaders, ptr);
+ readers[nbReaders] = ptr;
+ ptr += strlen(ptr)+1;
+ nbReaders++;
}
if (argc > 1)