dirmngr: Fix https incorrectly reported in help
[gnupg.git] / g10 / keylist.c
index f3fd9d9..d71bf4f 100644 (file)
@@ -163,20 +163,31 @@ secret_key_list (ctrl_t ctrl, strlist_t list)
     list_one (ctrl, list, 1, 0);
 }
 
-void
-print_seckey_info (PKT_public_key *pk)
+char *
+format_seckey_info (PKT_public_key *pk)
 {
   u32 keyid[2];
   char *p;
   char pkstrbuf[PUBKEY_STRING_SIZE];
+  char *info;
 
   keyid_from_pk (pk, keyid);
   p = get_user_id_native (keyid);
 
-  tty_printf ("\nsec  %s/%s %s %s\n",
-              pubkey_string (pk, pkstrbuf, sizeof pkstrbuf),
-             keystr (keyid), datestr_from_pk (pk), p);
+  info = xtryasprintf ("sec  %s/%s %s %s",
+                       pubkey_string (pk, pkstrbuf, sizeof pkstrbuf),
+                       keystr (keyid), datestr_from_pk (pk), p);
+
+  xfree (p);
 
+  return info;
+}
+
+void
+print_seckey_info (PKT_public_key *pk)
+{
+  char *p = format_seckey_info (pk);
+  tty_printf ("\n%s\n", p);
   xfree (p);
 }
 
@@ -453,25 +464,23 @@ print_signature_stats (struct keylist_context *s)
   if (!s->check_sigs)
     return;  /* Signature checking was not requested.  */
 
-  if (s->good_sigs == 1)
-    log_info (_("1 good signature\n"));
-  else if (s->good_sigs)
-    log_info (_("%d good signatures\n"), s->good_sigs);
-
-  if (s->inv_sigs == 1)
-    log_info (_("1 bad signature\n"));
-  else if (s->inv_sigs)
-    log_info (_("%d bad signatures\n"), s->inv_sigs);
-
-  if (s->no_key == 1)
-    log_info (_("1 signature not checked due to a missing key\n"));
-  else if (s->no_key)
-    log_info (_("%d signatures not checked due to missing keys\n"), s->no_key);
-
-  if (s->oth_err == 1)
-    log_info (_("1 signature not checked due to an error\n"));
-  else if (s->oth_err)
-    log_info (_("%d signatures not checked due to errors\n"), s->oth_err);
+  if (s->good_sigs)
+    log_info (ngettext("%d good signature\n",
+                       "%d good signatures\n", s->good_sigs), s->good_sigs);
+
+  if (s->inv_sigs)
+    log_info (ngettext("%d bad signature\n",
+                       "%d bad signatures\n", s->inv_sigs), s->inv_sigs);
+
+  if (s->no_key)
+    log_info (ngettext("%d signature not checked due to a missing key\n",
+                       "%d signatures not checked due to missing keys\n",
+                       s->no_key), s->no_key);
+
+  if (s->oth_err)
+    log_info (ngettext("%d signature not checked due to an error\n",
+                       "%d signatures not checked due to errors\n",
+                       s->oth_err), s->oth_err);
 }
 
 
@@ -494,7 +503,7 @@ list_all (ctrl_t ctrl, int secret, int mark_secret)
 
   hd = keydb_new ();
   if (!hd)
-    rc = gpg_error (GPG_ERR_GENERAL);
+    rc = gpg_error_from_syserror ();
   else
     rc = keydb_search_first (hd);
   if (rc)
@@ -551,7 +560,9 @@ list_all (ctrl_t ctrl, int secret, int mark_secret)
   if (rc && gpg_err_code (rc) != GPG_ERR_NOT_FOUND)
     log_error ("keydb_search_next failed: %s\n", gpg_strerror (rc));
   if (keydb_get_skipped_counter (hd))
-    log_info (_("Warning: %lu key(s) skipped due to their large size\n"),
+    log_info (ngettext("Warning: %lu key skipped due to its large size\n",
+                       "Warning: %lu keys skipped due to their large sizes\n",
+                       keydb_get_skipped_counter (hd)),
               keydb_get_skipped_counter (hd));
 
   if (opt.check_sigs && !opt.with_colons)
@@ -859,7 +870,7 @@ list_keyblock_pka (ctrl_t ctrl, kbnode_t keyblock)
   char pkstrbuf[PUBKEY_STRING_SIZE];
   char *hexfpr;
   char *hexkeyblock = NULL;
-  unsigned int hexkeyblocklen;
+  unsigned int hexkeyblocklen = 0;  /* Init to avoid -Wmaybe-uninitialized. */
   const char *s;
 
   /* Get the keyid from the keyblock.  */
@@ -895,7 +906,7 @@ list_keyblock_pka (ctrl_t ctrl, kbnode_t keyblock)
     }
 
 
-  hexfpr = hexfingerprint (pk);
+  hexfpr = hexfingerprint (pk, NULL, 0);
   if (opt.print_dane_records)
     {
       kbnode_t dummy_keyblock;
@@ -903,7 +914,7 @@ list_keyblock_pka (ctrl_t ctrl, kbnode_t keyblock)
       size_t datalen;
       gpg_error_t err;
 
-      /* We do not have an export fucntion which allows to pass a
+      /* We do not have an export function which allows to pass a
          keyblock, thus we need to search the key again.  */
       err = export_pubkey_buffer (ctrl, hexfpr,
                                   EXPORT_DANE_FORMAT, NULL,
@@ -1833,8 +1844,9 @@ print_icao_hexdigit (estream_t fp, int c)
 void
 print_fingerprint (estream_t override_fp, PKT_public_key *pk, int mode)
 {
-  byte array[MAX_FINGERPRINT_LEN], *p;
-  size_t i, n;
+  char hexfpr[2*MAX_FINGERPRINT_LEN+1];
+  char *p;
+  size_t i;
   estream_t fp;
   const char *text;
   int primary = 0;
@@ -1903,47 +1915,33 @@ print_fingerprint (estream_t override_fp, PKT_public_key *pk, int mode)
       text = _("      Key fingerprint =");
     }
 
-  fingerprint_from_pk (pk, array, &n);
-  p = array;
+  hexfingerprint (pk, hexfpr, sizeof hexfpr);
   if (with_colons && !mode)
     {
-      es_fprintf (fp, "fpr:::::::::");
-      for (i = 0; i < n; i++, p++)
-       es_fprintf (fp, "%02X", *p);
-      es_putc (':', fp);
+      es_fprintf (fp, "fpr:::::::::%s:", hexfpr);
     }
   else
     {
-      tty_fprintf (fp, "%s", text);
-      if (n == 20)
-       {
-         for (i = 0; i < n; i++, i++, p += 2)
-            tty_fprintf (fp, "%s %02X%02X", i==10? " ":"", *p, p[1]);
-       }
-      else
-       {
-         for (i = 0; i < n; i++, p++)
-            tty_fprintf (fp, "%s %02X", (i && !(i % 8))? " ":"", *p);
-       }
+      char fmtfpr[MAX_FORMATTED_FINGERPRINT_LEN + 1];
+      format_hexfingerprint (hexfpr, fmtfpr, sizeof fmtfpr);
+      tty_fprintf (fp, "%s %s", text, fmtfpr);
     }
   tty_fprintf (fp, "\n");
   if (!with_colons && with_icao)
     {
-      p = array;
+      ;
       tty_fprintf (fp, "%*s\"", (int)strlen(text)+1, "");
-      for (i = 0; i < n; i++, p++)
+      for (i = 0, p = hexfpr; *p; i++, p++)
         {
           if (!i)
             ;
-          else if (!(i%4))
+          else if (!(i%8))
             tty_fprintf (fp, "\n%*s ", (int)strlen(text)+1, "");
-          else if (!(i%2))
+          else if (!(i%4))
             tty_fprintf (fp, "  ");
           else
             tty_fprintf (fp, " ");
-          print_icao_hexdigit (fp, *p >> 4);
-          tty_fprintf (fp, " ");
-          print_icao_hexdigit (fp, *p & 15);
+          print_icao_hexdigit (fp, xtoi_1 (p));
         }
       tty_fprintf (fp, "\"\n");
     }