* Always use 'dynload.h' instead of 'dlfcn.h'.
authorTimo Schulz <twoaday@freakmail.de>
Thu, 14 Aug 2003 12:20:08 +0000 (12:20 +0000)
committerTimo Schulz <twoaday@freakmail.de>
Thu, 14 Aug 2003 12:20:08 +0000 (12:20 +0000)
scd/ChangeLog
scd/apdu.c
scd/app.c
scd/atr.c
scd/iso7816.c

index ae2e6ce..d78c4aa 100644 (file)
@@ -1,3 +1,9 @@
+2003-08-14  Timo Schulz  <twoaday@freakmail.de>
+
+       * apdu.c (ct_activate_card): Change the code a little to avoid
+       problems with other readers.
+       * Always use 'dynload.h' instead of 'dlfcn.h'.
+       
 2003-08-05  Werner Koch  <wk@gnupg.org>
 
        * app-openpgp.c (dump_all_do): Don't analyze constructed DOs after
index 60de5b9..6afcd67 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <dlfcn.h>
 #include <assert.h>
 
 #include "scdaemon.h"
 #include "apdu.h"
+#include "dynload.h"
 
 #define MAX_READER 4 /* Number of readers we support concurrently. */
 #define CARD_CONNECT_TIMEOUT 1 /* Number of seconds to wait for
@@ -232,40 +232,37 @@ ct_activate_card (int reader)
           return -1;
         }
 
-      if (buf[0] == 0x05)
-        { /* Connected, now activate the card. */           
-          dad[0] = 1;    /* Destination address: CT. */    
-          sad[0] = 2;    /* Source address: Host. */
+      /* Connected, now activate the card. */           
+      dad[0] = 1;    /* Destination address: CT. */    
+      sad[0] = 2;    /* Source address: Host. */
 
-          cmd[0] = 0x20;  /* Class byte. */
-          cmd[1] = 0x12;  /* Request ICC. */
-          cmd[2] = 0x01;  /* From first interface. */
-          cmd[3] = 0x01;  /* Return card's ATR. */
-          cmd[4] = 0x00;
-
-          buflen = DIM(buf);
+      cmd[0] = 0x20;  /* Class byte. */
+      cmd[1] = 0x12;  /* Request ICC. */
+      cmd[2] = 0x01;  /* From first interface. */
+      cmd[3] = 0x01;  /* Return card's ATR. */
+      cmd[4] = 0x00;
 
-          rc = CT_data (reader, dad, sad, 5, cmd, &buflen, buf);
-          if (rc || buflen < 2 || buf[buflen-2] != 0x90)
-            {
-              log_error ("ct_activate_card(%d): activation failed: %s\n",
-                         reader, ct_error_string (rc));
-              return -1;
-            }
+      buflen = DIM(buf);
 
-          /* Store the type and the ATR. */
-          if (buflen - 2 > DIM (reader_table[0].atr))
-            {
-              log_error ("ct_activate_card(%d): ATR too long\n", reader);
-              return -1;
-            }
+      rc = CT_data (reader, dad, sad, 5, cmd, &buflen, buf);
+      if (rc || buflen < 2 || buf[buflen-2] != 0x90)
+        {
+          log_error ("ct_activate_card(%d): activation failed: %s\n",
+                     reader, ct_error_string (rc));
+          return -1;
+        }
 
-          reader_table[reader].status = buf[buflen - 1];
-          memcpy (reader_table[reader].atr, buf, buflen - 2);
-          reader_table[reader].atrlen = buflen - 2;
-          return 0;
+      /* Store the type and the ATR. */
+      if (buflen - 2 > DIM (reader_table[0].atr))
+        {
+          log_error ("ct_activate_card(%d): ATR too long\n", reader);
+          return -1;
         }
 
+      reader_table[reader].status = buf[buflen - 1];
+      memcpy (reader_table[reader].atr, buf, buflen - 2);
+      reader_table[reader].atrlen = buflen - 2;
+      return 0;
     }
  
   log_info ("ct_activate_card(%d): timeout waiting for card\n", reader);
index 04b421b..fa5df8a 100644 (file)
--- a/scd/app.c
+++ b/scd/app.c
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <dlfcn.h>
+
 
 #include "scdaemon.h"
 #include "app-common.h"
 #include "apdu.h"
 #include "iso7816.h"
+#include "dynload.h"
 
 static char *default_reader_port;
 
index 4e15aad..6475e83 100644 (file)
--- a/scd/atr.c
+++ b/scd/atr.c
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <dlfcn.h>
 #include <assert.h>
 
 #include "scdaemon.h"
 #include "apdu.h"
 #include "atr.h"
+#include "dynload.h"
 
 static int const fi_table[16] = { 0, 372, 558, 744, 1116,1488, 1860, -1,
                                   -1, 512, 768, 1024, 1536, 2048, -1, -1 };
index 8903d8a..2b06103 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <dlfcn.h>
 
 #include "scdaemon.h"
 #include "iso7816.h"
 #include "apdu.h"
+#include "dynload.h"
 
 #define CMD_SELECT_FILE 0xA4
 #define CMD_VERIFY      0x20