prompt change.
[gnupg.git] / scd / sc-copykeys.c
index 9caf39a..6a6c0e0 100644 (file)
@@ -5,7 +5,7 @@
  *
  * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * GnuPG is distributed in the hope that it will be useful,
@@ -14,8 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -44,6 +43,7 @@
 enum cmd_and_opt_values 
 { oVerbose       = 'v',
   oReaderPort     = 500,
+  octapiDriver,
   oDebug,
   oDebugAll,
 
@@ -55,7 +55,8 @@ static ARGPARSE_OPTS opts[] = {
   { 301, NULL, 0, "@Options:\n " },
 
   { oVerbose, "verbose",   0, "verbose" },
-  { oReaderPort, "reader-port", 1, "|N|connect to reader at port N"},
+  { oReaderPort, "reader-port", 2, "|N|connect to reader at port N"},
+  { octapiDriver, "ctapi-driver", 2, "NAME|use NAME as ctAPI driver"},
   { oDebug,    "debug"     ,4|16, "set debugging flags"},
   { oDebugAll, "debug-all" ,0, "enable full debugging"},
   {0}
@@ -90,32 +91,13 @@ my_strusage (int level)
   return p;
 }
 
-/* Used by gcry for logging */
-static void
-my_gcry_logger (void *dummy, int level, const char *fmt, va_list arg_ptr)
-{
-  /* translate the log levels */
-  switch (level)
-    {
-    case GCRY_LOG_CONT: level = JNLIB_LOG_CONT; break;
-    case GCRY_LOG_INFO: level = JNLIB_LOG_INFO; break;
-    case GCRY_LOG_WARN: level = JNLIB_LOG_WARN; break;
-    case GCRY_LOG_ERROR:level = JNLIB_LOG_ERROR; break;
-    case GCRY_LOG_FATAL:level = JNLIB_LOG_FATAL; break;
-    case GCRY_LOG_BUG:  level = JNLIB_LOG_BUG; break;
-    case GCRY_LOG_DEBUG:level = JNLIB_LOG_DEBUG; break;
-    default:            level = JNLIB_LOG_ERROR; break;  
-    }
-  log_logv (level, fmt, arg_ptr);
-}
-
 
 int
 main (int argc, char **argv )
 {
   ARGPARSE_ARGS pargs;
   int slot, rc;
-  int reader_port = 32768; /* First USB reader. */
+  const char *reader_port = NULL;
   struct app_ctx_s appbuf;
 
   memset (&appbuf, 0, sizeof appbuf);
@@ -128,11 +110,11 @@ main (int argc, char **argv )
      the option parsing may need services of the library */
   if (!gcry_check_version (NEED_LIBGCRYPT_VERSION) )
     {
-      log_fatal( _("libgcrypt is too old (need %s, have %s)\n"),
+      log_fatal (_("%s is too old (need %s, have %s)\n"), "libgcrypt",
                  NEED_LIBGCRYPT_VERSION, gcry_check_version (NULL) );
     }
 
-  gcry_set_log_handler (my_gcry_logger, NULL);
+  setup_libgcrypt_logging ();
   gcry_control (GCRYCTL_DISABLE_SECMEM, 0); /* FIXME - we want to use it */
   /* FIXME? gcry_control (GCRYCTL_USE_SECURE_RNDPOOL);*/
 
@@ -146,6 +128,8 @@ main (int argc, char **argv )
         case oVerbose: opt.verbose++; break;
         case oDebug: opt.debug |= pargs.r.ret_ulong; break;
         case oDebugAll: opt.debug = ~0; break;
+        case oReaderPort: reader_port = pargs.r.ret_str; break;
+        case octapiDriver: opt.ctapi_driver = pargs.r.ret_str; break;
         default : pargs.err = 2; break;
        }
     }
@@ -161,7 +145,7 @@ main (int argc, char **argv )
 
   /* FIXME: Use select_application. */
   appbuf.slot = slot;
-  rc = app_select_openpgp (&appbuf, &appbuf.serialno, &appbuf.serialnolen);
+  rc = app_select_openpgp (&appbuf);
   if (rc)
     {
       log_error ("selecting openpgp failed: %s\n", gpg_strerror (rc));
@@ -479,14 +463,14 @@ query_card (APP app)
 
 
 /* Callback function to ask for a PIN. */
-static int 
+static gpg_error_t
 pincb (void *arg, const char *prompt, char **pinvalue)
 {
   char *pin = xstrdup ("12345678");
 
 /*    pin = simple_pwquery (NULL, NULL, prompt, */
 /*                          "We need the admin's PIN to store the key on the card", */
-/*                          NULL); */
+/*                          0, NULL); */
 /*    if (!pin) */
 /*      return gpg_error (GPG_ERR_CANCELED); */