[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
 }