* scdaemon.c, scdaemon.h: New option --pcsc-driver.
authorWerner Koch <wk@gnupg.org>
Tue, 19 Aug 2003 09:36:48 +0000 (09:36 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 19 Aug 2003 09:36:48 +0000 (09:36 +0000)
* apdu.c (apdu_open_reader): Use that option here instead of a
hardcoded one.

scd/ChangeLog
scd/apdu.c
scd/scdaemon.c
scd/scdaemon.h

index a1cb11e..821b074 100644 (file)
@@ -1,3 +1,9 @@
+2003-08-19  Werner Koch  <wk@gnupg.org>
+
+       * scdaemon.c, scdaemon.h: New option --pcsc-driver.
+       * apdu.c (apdu_open_reader): Use that option here instead of a
+       hardcoded one.
+
 2003-08-18  Werner Koch  <wk@gnupg.org>
 
        * Makefile.am: Add OPENSC_LIBS to all programs. 
index 978d9ae..0d6ad9a 100644 (file)
@@ -798,6 +798,12 @@ apdu_open_reader (const char *portstr)
     {
       void *handle;
 
+      if (!opt.pcsc_driver || !*opt.pcsc_driver)
+        {
+          log_error ("no PC/SC driver has been specified\n");
+          return -1;
+        }
+
       handle = dlopen ("libpcsclite.so", RTLD_LAZY);
       if (!handle)
         {
index af813b5..49036e0 100644 (file)
@@ -70,6 +70,7 @@ enum cmd_and_opt_values
   oBatch,
   oReaderPort,
   octapiDriver,
+  opcscDriver,
   oDisableOpenSC,
 
 aTest };
@@ -94,7 +95,8 @@ static ARGPARSE_OPTS opts[] = {
   { oNoDetach, "no-detach" ,0, N_("do not detach from the console")},
   { oLogFile,  "log-file"   ,2, N_("use a log file for the server")},
   { oReaderPort, "reader-port", 2, N_("|N|connect to reader at port N")},
-  { octapiDriver, "ctapi-driver", 2, N_("NAME|use NAME as ctAPI driver")},
+  { octapiDriver, "ctapi-driver", 2, N_("NAME|use NAME as ct-API driver")},
+  { opcscDriver, "pcsc-driver", 2, N_("NAME|use NAME as PC/SC driver")},
   { oDisableOpenSC, "disable-opensc", 0,
 #ifdef HAVE_OPENSC
                                          N_("Do not use the OpenSC layer")
@@ -266,6 +268,11 @@ main (int argc, char **argv )
 
   may_coredump = disable_core_dumps ();
 
+  /* Set default options. */
+  opt.pcsc_driver = NULL; /* We can't use libpcsclite due to license
+                             conflicts. */
+
+
   shell = getenv ("SHELL");
   if (shell && strlen (shell) >= 3 && !strcmp (shell+strlen (shell)-3, "csh") )
     csh_style = 1;
@@ -379,6 +386,7 @@ main (int argc, char **argv )
 
         case oReaderPort: app_set_default_reader_port (pargs.r.ret_str); break;
         case octapiDriver: opt.ctapi_driver = pargs.r.ret_str; break;
+        case opcscDriver: opt.pcsc_driver = pargs.r.ret_str; break;
         case oDisableOpenSC: opt.disable_opensc = 1; break;
 
         default : pargs.err = configfp? 1:2; break;
index 20e2fa7..3671c73 100644 (file)
@@ -54,6 +54,7 @@ struct {
   int batch;        /* batch mode */
   const char *homedir; /* configuration directory name */
   const char *ctapi_driver; /* Library to access the ctAPI. */
+  const char *pcsc_driver;  /* Library to access the PC/SC system. */
   int disable_opensc;  /* Disable the sue of the OpenSC framework. */
 } opt;