[Pcsclite-cvs-commit] CVS PCSC/src
CVS User rousseau
ludovic.rousseau@free.fr
Thu, 26 May 2005 12:54:49 +0000
Update of /cvsroot/pcsclite/PCSC/src
In directory haydn:/tmp/cvs-serv2151
Modified Files:
configfile.l configfile.h
Log Message:
rename DBUpdateReaders() in DBGetReaderList()
The function now just returns a list of readers described in the
configuration file (/etc/reader.conf by default)
--- /cvsroot/pcsclite/PCSC/src/configfile.l 2005/02/22 14:40:25 1.19
+++ /cvsroot/pcsclite/PCSC/src/configfile.l 2005/05/26 12:54:49 1.20
@@ -8,20 +8,25 @@
* Damien Sauveron <damien.sauveron@labri.fr>
* Ludovic Rousseau <ludovic.rousseau@free.fr>
*
- * $Id: configfile.l,v 1.19 2005/02/22 14:40:25 rousseau Exp $
+ * $Id: configfile.l,v 1.20 2005/05/26 12:54:49 rousseau Exp $
*/
%{
+#include "wintypes.h"
+#include "readerfactory.h"
+
int evaluatetoken(char *pcToken);
-static int iLinenumber = 1;
-static char *pcPrevious = NULL;
-static char *pcCurrent = NULL;
-static char *pcFriendlyname = NULL;
-static char *pcDevicename = NULL;
-static char *pcLibpath = NULL;
-static char *pcChannelid = NULL;
-static int badError = 0;
+static int iLinenumber;
+static char *pcPrevious;
+static char *pcCurrent;
+static char *pcFriendlyname;
+static char *pcDevicename;
+static char *pcLibpath;
+static char *pcChannelid;
+static int badError;
+static SerialReader *reader_list;
+static int reader_list_size;
void tok_error(char *pcToken_error);
@@ -155,14 +160,28 @@
if (pcFriendlyname != NULL && pcDevicename != NULL &&
pcLibpath != NULL && pcChannelid != NULL && badError != 1)
{
+ if (0 == reader_list_size)
+ {
+ /* one real reader and one end marker */
+ reader_list_size = 2;
+ reader_list = malloc(reader_list_size * sizeof(SerialReader));
+ }
+ else
+ {
+ reader_list_size++;
+ reader_list = realloc(reader_list, reader_list_size *
+ sizeof(SerialReader));
+ }
+
+ /* end marker */
+ reader_list[reader_list_size-1].pcFriendlyname = NULL;
dwChannelId = strtoul(pcChannelid, 0, 16);
- RFAddReader(pcFriendlyname, dwChannelId, pcLibpath, pcDevicename);
+ reader_list[reader_list_size-2].pcFriendlyname = strdup(pcFriendlyname);
+ reader_list[reader_list_size-2].pcDevicename = strdup(pcDevicename);
+ reader_list[reader_list_size-2].pcLibpath = strdup(pcLibpath),
+ reader_list[reader_list_size-2].dwChannelId = dwChannelId;
- free(pcFriendlyname);
- free(pcDevicename);
- free(pcLibpath);
- free(pcChannelid);
pcFriendlyname = NULL;
pcDevicename = NULL;
pcLibpath = NULL;
@@ -179,9 +198,8 @@
badError = 1;
}
-int DBUpdateReaders(char *readerconf)
+int DBGetReaderList(char *readerconf, SerialReader **caller_reader_list)
{
-
FILE *configFile = NULL;
configFile = fopen(readerconf, "r");
@@ -191,6 +209,18 @@
yyin = configFile;
+ /* (re)start with a clean state */
+ iLinenumber = 1;
+ reader_list = NULL;
+ reader_list_size = 0;
+ pcFriendlyname = NULL;
+ pcDevicename = NULL;
+ pcLibpath = NULL;
+ pcChannelid = NULL;
+ pcPrevious = NULL;
+ pcCurrent = NULL;
+ badError = 0;
+
do
{
yylex();
@@ -199,6 +229,8 @@
fclose(configFile);
+ *caller_reader_list = reader_list;
+
if (badError == 1)
return -1;
else
--- /cvsroot/pcsclite/PCSC/src/configfile.h 2003/10/18 17:19:36 1.3
+++ /cvsroot/pcsclite/PCSC/src/configfile.h 2005/05/26 12:54:49 1.4
@@ -6,7 +6,7 @@
* Copyright (C) 1999
* David Corcoran <corcoran@linuxnet.com>
*
- * $Id: configfile.h,v 1.3 2003/10/18 17:19:36 aet-guest Exp $
+ * $Id: configfile.h,v 1.4 2005/05/26 12:54:49 rousseau Exp $
*/
#ifndef __configfile_h__
@@ -17,7 +17,7 @@
{
#endif
- int DBUpdateReaders(char *readerconf);
+ int DBGetReaderList(char *readerconf);
#ifdef __cplusplus
}