[git] GnuPG - branch, master, updated. gnupg-2.1.10-131-g4c6c973

by Werner Koch cvs at cvs.gnupg.org
Tue Jan 19 18:05:40 CET 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, master has been updated
       via  4c6c973950df1471544f5d485e4cc2f4603bbd77 (commit)
       via  cfa41890bb5ff306c07dad295136601fe47566a7 (commit)
       via  8b7f64f9dfc80b2a0ad235996b47369c2ba9b48f (commit)
       via  d96e76d15f61812b950b64a60bc47117785a9dac (commit)
      from  79778a8dd5f61a6b7abeeb44b75d82932db788b7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 4c6c973950df1471544f5d485e4cc2f4603bbd77
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Jan 19 16:30:39 2016 +0100

    po: Update German translation
    
    --
    
    These are mainly new strings for the TOFU module,

diff --git a/po/de.po b/po/de.po
index 7d3e301..0312d16 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnupg-2.1.0\n"
 "Report-Msgid-Bugs-To: translations at gnupg.org\n"
-"PO-Revision-Date: 2015-12-03 17:23+0100\n"
+"PO-Revision-Date: 2016-01-19 16:22+0100\n"
 "Last-Translator: Werner Koch <wk at gnupg.org>\n"
 "Language-Team: German <de at li.org>\n"
 "Language: de\n"
@@ -1197,6 +1197,18 @@ msgid "Enter passphrase: "
 msgstr "Geben Sie die Passphrase ein: "
 
 #, c-format
+msgid "error getting version from '%s': %s\n"
+msgstr "Fehler beim Holen der Version von '%s': %s\n"
+
+#, c-format
+msgid "server '%s' is older than us (%s < %s)"
+msgstr "Der Server '%s' is älter als wir selbst (Version %s < %s)"
+
+#, c-format
+msgid "WARNING: %s\n"
+msgstr "WARNUNG: %s\n"
+
+#, c-format
 msgid "OpenPGP card not available: %s\n"
 msgstr "OpenPGP Karte ist nicht vorhanden: %s\n"
 
@@ -1675,6 +1687,9 @@ msgstr "Unbrauchbare Teile des Schlüssel während des Exports entfernen"
 msgid "remove as much as possible from key during export"
 msgstr "Während des Exports soviel wie möglich vom Schlüssel entfernen"
 
+msgid " - skipped"
+msgstr " - übersprungen"
+
 msgid "exporting secret keys not allowed\n"
 msgstr "Exportieren geheimer Schlüssel ist nicht erlaubt\n"
 
@@ -1686,16 +1701,34 @@ msgstr "Schlüssel %s: PGP 2.x-artiger Schlüssel - übersprungen\n"
 msgid "key %s: key material on-card - skipped\n"
 msgstr "Schlüssel %s: Schlüsselmaterial ist auf einer Karte - übersprungen\n"
 
-msgid " - skipped"
-msgstr " - übersprungen"
-
 msgid "WARNING: nothing exported\n"
 msgstr "WARNUNG: Nichts exportiert\n"
 
+#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "Fehler beim Erstellen von `%s': %s\n"
+
 msgid "[User ID not found]"
 msgstr "[User-ID nicht gefunden]"
 
 #, c-format
+msgid "(check argument of option '%s')\n"
+msgstr "(Prüfe das Argument der Option '%s')\n"
+
+#, c-format
+msgid "Warning: '%s' should be a long key ID or a fingerprint\n"
+msgstr ""
+"WARNUNG: '%s' sollte eine lange Schlüssel-ID oder ein Fingerabdruck sein\n"
+
+#, c-format
+msgid "error looking up: %s\n"
+msgstr "Fehler beim Nachschlagen von: %s\n"
+
+#, c-format
+msgid "Warning: %s appears in the keyring %d times\n"
+msgstr "WARNUNG: %s ist %d mal im Schlüsselbund vorhanden\n"
+
+#, c-format
 msgid "automatically retrieved '%s' via %s\n"
 msgstr "`%s' automatisch via %s geholt\n"
 
@@ -1711,12 +1744,18 @@ msgid "secret key \"%s\" not found: %s\n"
 msgstr "Geheimer Schlüssel \"%s\" nicht gefunden: %s\n"
 
 #, c-format
-msgid "(check argument of option '%s')\n"
-msgstr "(Prüfe das Argument der Option '%s')\n"
+msgid "Warning: not using '%s' as default key: %s\n"
+msgstr ""
+"WARNUNG: \"%s\" wird nicht als voreingestellter geheimer Schlüssel benutzt: "
+"%s\n"
+
+#, c-format
+msgid "using \"%s\" as default secret key for signing\n"
+msgstr "\"%s\" wird als voreingestellter geheimer Signaturschlüssel benutzt\n"
 
 #, c-format
-msgid "using \"%s\" as default secret key\n"
-msgstr "\"%s\" wird als voreingestellter geheimer Schlüssel benutzt\n"
+msgid "all values passed to '%s' ignored\n"
+msgstr "Alle für '%s' angegebenen Werte wurden ignoriert\n"
 
 #, c-format
 msgid "Invalid key %s made valid by --allow-non-selfsigned-uid\n"
@@ -2059,29 +2098,6 @@ msgid "Note: old default options file '%s' ignored\n"
 msgstr "Hinweis: Alte voreingestellte Optionendatei '%s' wurde ignoriert\n"
 
 #, c-format
-msgid ""
-"Warning: value '%s' for option '%s' should be a long key ID or a "
-"fingerprint\n"
-msgstr ""
-"WARNUNG: Der Wert '%s' der Option '%s' sollte eine lange Schlüssel-ID\n"
-"oder ein Fingerabdruck sein\n"
-
-#, c-format
-msgid "key specification '%s' is ambiguous\n"
-msgstr "Schlüsselangabe '%s' ist mehrdeutig\n"
-
-#. TRANSLATORS: The %s prints a key specification which
-#. for example has been given at the command line.  Two
-#. lines with fingerprints are printed after this message.
-#, c-format
-msgid "'%s' matches at least:\n"
-msgstr "'%s' paßt mindest auf:\n"
-
-#, c-format
-msgid "error searching the keyring: %s\n"
-msgstr "Fehler beim Suchen im Schlüsselbund: %s\n"
-
-#, c-format
 msgid "libgcrypt is too old (need %s, have %s)\n"
 msgstr ""
 "Die Bibliothek \"libgcrypt\" ist zu alt (benötigt wird %s, vorhanden ist "
@@ -2281,14 +2297,6 @@ msgid "WARNING: recipients (-r) given without using public key encryption\n"
 msgstr ""
 "WARNUNG: Empfänger (-r) angegeben ohne Verwendung von Public-Key-Verfahren\n"
 
-#, c-format
-msgid "option '%s' given, but no valid default keys given\n"
-msgstr "Option '%s' ohne gültige Standardschlüssel angegeben\n"
-
-#, c-format
-msgid "option '%s' given, but option '%s' not given\n"
-msgstr "Option '%s' ohne Verwendung der Option '%s' angegeben\n"
-
 msgid "--store [filename]"
 msgstr "--store [Dateiname]"
 
@@ -2366,6 +2374,10 @@ msgid "key export failed: %s\n"
 msgstr "Schlüsselexport fehlgeschlagen: %s\n"
 
 #, c-format
+msgid "export as ssh key failed: %s\n"
+msgstr "Schlüsselexport im SSH Format fehlgeschlagen: %s\n"
+
+#, c-format
 msgid "keyserver search failed: %s\n"
 msgstr "Suche auf dem Schlüsselserver fehlgeschlagen: %s\n"
 
@@ -2855,33 +2867,29 @@ msgstr "[Widerruf]"
 msgid "[self-signature]"
 msgstr "[Eigenbeglaubigung]"
 
-msgid "1 bad signature\n"
-msgstr "1 falsche Beglaubigung\n"
-
 #, c-format
-msgid "%d bad signatures\n"
-msgstr "%d falsche Beglaubigungen\n"
-
-msgid "1 signature not checked due to a missing key\n"
-msgstr "1 Beglaubigung wegen fehlendem Schlüssel nicht geprüft\n"
+msgid "%d bad signature\n"
+msgid_plural "%d bad signatures\n"
+msgstr[0] "%d falsche Beglaubigung\n"
+msgstr[1] "%d falsche Beglaubigungen\n"
 
 #, c-format
-msgid "%d signatures not checked due to missing keys\n"
-msgstr "%d Beglaubigungen wegen fehlenden Schlüsseln nicht geprüft\n"
-
-msgid "1 signature not checked due to an error\n"
-msgstr "1 Beglaubigung aufgrund von Fehler nicht geprüft\n"
+msgid "%d signature not checked due to a missing key\n"
+msgid_plural "%d signatures not checked due to missing keys\n"
+msgstr[0] "%d Beglaubigung wegen fehlendem Schlüssel nicht geprüft\n"
+msgstr[1] "%d Beglaubigungen wegen fehlender Schlüssel nicht geprüft\n"
 
 #, c-format
-msgid "%d signatures not checked due to errors\n"
-msgstr "%d Beglaubigungen aufgrund von Fehlern nicht geprüft\n"
-
-msgid "1 user ID without valid self-signature detected\n"
-msgstr "Eine User-ID ohne gültige Eigenbeglaubigung entdeckt\n"
+msgid "%d signature not checked due to an error\n"
+msgid_plural "%d signatures not checked due to errors\n"
+msgstr[0] "%d Beglaubigung aufgrund eines Fehlers nicht geprüft\n"
+msgstr[1] "%d Beglaubigungen aufgrund von Fehlern nicht geprüft\n"
 
 #, c-format
-msgid "%d user IDs without valid self-signatures detected\n"
-msgstr "%d User-IDs ohne gültige Eigenbeglaubigung entdeckt\n"
+msgid "%d user ID without valid self-signature detected\n"
+msgid_plural "%d user IDs without valid self-signatures detected\n"
+msgstr[0] "%d User-ID ohne gültige Eigenbeglaubigung entdeckt\n"
+msgstr[1] "%d User-IDs ohne gültige Eigenbeglaubigungen entdeckt\n"
 
 msgid ""
 "Please decide how far you trust this user to correctly verify other users' "
@@ -3472,11 +3480,9 @@ msgstr "Eigenbeglaubigung wirklich entfernen? (j/N)"
 
 #, c-format
 msgid "Deleted %d signature.\n"
-msgstr "%d Beglaubigungen entfernt.\n"
-
-#, c-format
-msgid "Deleted %d signatures.\n"
-msgstr "%d Beglaubigungen entfernt.\n"
+msgid_plural "Deleted %d signatures.\n"
+msgstr[0] "%d Beglaubigung entfernt.\n"
+msgstr[1] "%d Beglaubigungen entfernt.\n"
 
 msgid "Nothing deleted.\n"
 msgstr "Nichts entfernt.\n"
@@ -3490,11 +3496,9 @@ msgstr "User-ID \"%s\" bereits verkleinert: %s\n"
 
 #, c-format
 msgid "User ID \"%s\": %d signature removed\n"
-msgstr "User-ID \"%s\": %d Signatur entfernt\n"
-
-#, c-format
-msgid "User ID \"%s\": %d signatures removed\n"
-msgstr "User-ID \"%s\": %d Signaturen entfernt\n"
+msgid_plural "User ID \"%s\": %d signatures removed\n"
+msgstr[0] "User-ID \"%s\": %d Signatur entfernt\n"
+msgstr[1] "User-ID \"%s\": %d Signaturen entfernt\n"
 
 #, c-format
 msgid "User ID \"%s\": already minimized\n"
@@ -4013,39 +4017,6 @@ msgid "Please correct the error first\n"
 msgstr "Bitte beseitigen Sie zuerst den Fehler\n"
 
 msgid ""
-"You need a Passphrase to protect your secret key.\n"
-"\n"
-msgstr ""
-"Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen.\n"
-"\n"
-
-msgid ""
-"Please enter a passphrase to protect the off-card backup of the new "
-"encryption key."
-msgstr ""
-"Bitte geben Sie die Passphrase ein, um die Sicherheitskopie des neuen "
-"Verschlüsselungsschlüssel der Karte zu schützen."
-
-msgid "passphrase not correctly repeated; try again"
-msgstr "Passphrase wurde nicht richtig wiederholt; noch einmal versuchen"
-
-#, c-format
-msgid "%s.\n"
-msgstr "%s.\n"
-
-msgid ""
-"You don't want a passphrase - this is probably a *bad* idea!\n"
-"I will do it anyway.  You can change your passphrase at any time,\n"
-"using this program with the option \"--edit-key\".\n"
-"\n"
-msgstr ""
-"Sie möchten keine Passphrase - Dies ist *nicht* zu empfehlen!\n"
-"Es ist trotzdem möglich.  Sie können Ihre Passphrase jederzeit\n"
-"ändern, indem sie dieses Programm mit dem Befehl \"--edit-key\"\n"
-"aufrufen.\n"
-"\n"
-
-msgid ""
 "We need to generate a lot of random bytes. It is a good idea to perform\n"
 "some other action (type on the keyboard, move the mouse, utilize the\n"
 "disks) during the prime generation; this gives the random number\n"
@@ -4090,6 +4061,14 @@ msgid "Key generation canceled.\n"
 msgstr "Schlüsselerzeugung abgebrochen.\n"
 
 #, c-format
+msgid "can't create backup file '%s': %s\n"
+msgstr "Sicherungsdatei '%s' kann nicht erzeugt werden: %s\n"
+
+#, c-format
+msgid "Note: backup of card key saved to '%s'\n"
+msgstr "Hinweis: Sicherung des Kartenschlüssels wurde auf `%s' gespeichert\n"
+
+#, c-format
 msgid "writing public key to '%s'\n"
 msgstr "schreiben des öffentlichen Schlüssels nach '%s'\n"
 
@@ -4138,18 +4117,6 @@ msgstr "Geheime Teile des Hauptschlüssels sind auf der Karte gespeichert.\n"
 msgid "Really create? (y/N) "
 msgstr "Wirklich erzeugen? (j/N) "
 
-#, c-format
-msgid "storing key onto card failed: %s\n"
-msgstr "Speicher des Schlüssels auf der Karte schlug fehl: %s\n"
-
-#, c-format
-msgid "can't create backup file '%s': %s\n"
-msgstr "Sicherungsdatei '%s' kann nicht erzeugt werden: %s\n"
-
-#, c-format
-msgid "Note: backup of card key saved to '%s'\n"
-msgstr "Hinweis: Sicherung des Kartenschlüssels wurde auf `%s' gespeichert\n"
-
 msgid "never     "
 msgstr "niemals   "
 
@@ -4168,16 +4135,17 @@ msgstr "Entscheidender Beglaubigungs-\"Notation\": "
 msgid "Signature notation: "
 msgstr "Beglaubigungs-\"Notation\": "
 
-msgid "1 good signature\n"
-msgstr "1 korrekte Signatur\n"
-
 #, c-format
-msgid "%d good signatures\n"
-msgstr "%d korrekte Signaturen\n"
+msgid "%d good signature\n"
+msgid_plural "%d good signatures\n"
+msgstr[0] "%d korrekte Signatur\n"
+msgstr[1] "%d korrekte Signaturen\n"
 
 #, c-format
-msgid "Warning: %lu key(s) skipped due to their large size\n"
-msgstr "WARNUNG: %lu Schlüssel übersprungen, da sie zu groß sind\n"
+msgid "Warning: %lu key skipped due to its large size\n"
+msgid_plural "Warning: %lu keys skipped due to their large sizes\n"
+msgstr[0] "WARNUNG: %lu Schlüssel übersprungen, da er zu groß ist\n"
+msgstr[1] "WARNUNG: %lu Schlüssel übersprungen, da sie zu groß sind\n"
 
 msgid "Keyring"
 msgstr "Schlüsselbund"
@@ -4207,20 +4175,26 @@ msgid "      Card serial no. ="
 msgstr "      Kartenseriennr. ="
 
 #, c-format
-msgid "renaming '%s' to '%s' failed: %s\n"
-msgstr "umbenennen von `%s' nach `%s' schlug fehl: %s\n"
-
-#, c-format
 msgid "caching keyring '%s'\n"
 msgstr "Puffern des Schlüsselbundes `%s'\n"
 
 #, c-format
-msgid "%lu keys cached so far (%lu signatures)\n"
-msgstr "%lu Schlüssel bislang gepuffert (%lu Beglaubigungen)\n"
+msgid "%lu keys cached so far (%lu signature)\n"
+msgid_plural "%lu keys cached so far (%lu signatures)\n"
+msgstr[0] "%lu Schlüssel bislang gepuffert (%lu Beglaubigung)\n"
+msgstr[1] "%lu Schlüssel bislang gepuffert (%lu Beglaubigungen)\n"
+
+#, c-format
+msgid "%lu key cached"
+msgid_plural "%lu keys cached"
+msgstr[0] "%lu Schlüssel gepuffert"
+msgstr[1] "%lu Schlüssel gepuffert"
 
 #, c-format
-msgid "%lu keys cached (%lu signatures)\n"
-msgstr "%lu Schlüssel gepuffert (%lu Beglaubigungen)\n"
+msgid " (%lu signature)\n"
+msgid_plural " (%lu signatures)\n"
+msgstr[0] " (%lu Beglaubigung)\n"
+msgstr[1] " (%lu Beglaubigungen)\n"
 
 #, c-format
 msgid "%s: keyring created\n"
@@ -4263,18 +4237,16 @@ msgid "\"%s\" not a key ID: skipping\n"
 msgstr "\"%s\" ist keine Schlüssel-ID: überspringe\n"
 
 #, c-format
-msgid "refreshing 1 key from %s\n"
-msgstr "ein Schlüssel wird per %s aktualisiert\n"
+msgid "refreshing %d key from %s\n"
+msgid_plural "refreshing %d keys from %s\n"
+msgstr[0] "%d Schlüssel wird per %s aktualisiert\n"
+msgstr[1] "%d Schlüssel werden per %s aktualisiert\n"
 
 #, c-format
 msgid "WARNING: unable to refresh key %s via %s: %s\n"
 msgstr "WARNUNG: Schlüssel %s kann per %s nicht aktualisiert werden: %s\n"
 
 #, c-format
-msgid "refreshing %d keys from %s\n"
-msgstr "%d Schlüssel werden per %s aktualisiert\n"
-
-#, c-format
 msgid "key \"%s\" not found on keyserver\n"
 msgstr "Schlüssel \"%s\" wurde auf dem Schlüsselserver nicht gefunden\n"
 
@@ -4515,6 +4487,17 @@ msgid "Note: signatures using the %s algorithm are rejected\n"
 msgstr "Hinweis: %s basierte Signaturen werden zurückgewiesen.\n"
 
 #, c-format
+msgid "(reported error: %s)\n"
+msgstr "(gemeldeter Fehler: %s)\n"
+
+#, c-format
+msgid "(reported error: %s <%s>)\n"
+msgstr "(gemeldeter Fehler: %s <%s>)\n"
+
+msgid "(further info: "
+msgstr "(weitere Infos: "
+
+#, c-format
 msgid "%s:%d: deprecated option \"%s\"\n"
 msgstr "%s:%d: mißbilligte Option \"%s\".\n"
 
@@ -4934,6 +4917,18 @@ msgstr "%s: übersprungen: öffentlicher Schlüssel ist abgeschaltet\n"
 msgid "%s: skipped: public key already present\n"
 msgstr "%s: übersprungen: öffentlicher Schlüssel bereits vorhanden\n"
 
+#, c-format
+msgid "can't encrypt to '%s'\n"
+msgstr "Verschlüsseln an '%s' ist nicht möglich\n"
+
+#, c-format
+msgid "option '%s' given, but no valid default keys given\n"
+msgstr "Option '%s' ohne gültige Standardschlüssel angegeben\n"
+
+#, c-format
+msgid "option '%s' given, but option '%s' not given\n"
+msgstr "Option '%s' ohne Verwendung der Option '%s' angegeben\n"
+
 msgid "You did not specify a user ID. (you may use \"-r\")\n"
 msgstr ""
 "Sie haben keine User-ID angegeben (Sie können die Option \"-r\" verwenden).\n"
@@ -4980,10 +4975,6 @@ msgid "data not saved; use option \"--output\" to save it\n"
 msgstr ""
 "Daten wurden nicht gespeichert; verwenden Sie dafür die Option \"--output\"\n"
 
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "Fehler beim Erstellen von `%s': %s\n"
-
 msgid "Detached signature.\n"
 msgstr "Abgetrennte Beglaubigungen.\n"
 
@@ -5102,6 +5093,10 @@ msgstr "Geheimer Schlüssel \"%s\" nicht gefunden\n"
 msgid "'%s' matches multiple secret keys:\n"
 msgstr "'%s' trifft auf mehrere geheime Schlüssel zu:\n"
 
+#, c-format
+msgid "error searching the keyring: %s\n"
+msgstr "Fehler beim Suchen im Schlüsselbund: %s\n"
+
 msgid "Create a revocation certificate for this key? (y/N) "
 msgstr "Ein Widerrufszertifikat für diesen Schlüssel erzeugen? (j/N) "
 
@@ -5184,24 +5179,38 @@ msgstr "WARNUNG: Signaturunterschlüssel %s hat eine ungültige Rücksignatur\n"
 
 #, c-format
 msgid "public key %s is %lu second newer than the signature\n"
-msgstr "Öffentlicher Schlüssel %s ist %lu Sekunden jünger als die Signatur\n"
+msgid_plural "public key %s is %lu seconds newer than the signature\n"
+msgstr[0] "Öffentlicher Schlüssel %s ist %lu Sekunde jünger als die Signatur\n"
+msgstr[1] ""
+"Öffentlicher Schlüssel %s ist %lu Sekunden jünger als die Signatur\n"
 
 #, c-format
-msgid "public key %s is %lu seconds newer than the signature\n"
-msgstr "Öffentlicher Schlüssel %s ist %lu Sekunden jünger als die Signatur\n"
+msgid "public key %s is %lu day newer than the signature\n"
+msgid_plural "public key %s is %lu days newer than the signature\n"
+msgstr[0] "Öffentlicher Schlüssel %s ist %lu Tag jünger als die Signatur\n"
+msgstr[1] "Öffentlicher Schlüssel %s ist %lu Tage jünger als die Signatur\n"
 
 #, c-format
 msgid ""
 "key %s was created %lu second in the future (time warp or clock problem)\n"
-msgstr ""
+msgid_plural ""
+"key %s was created %lu seconds in the future (time warp or clock problem)\n"
+msgstr[0] ""
+"Schlüssel %s wurde %lu Sekunde in der Zukunft erzeugt (Zeitreise oder "
+"Uhrenproblem)\n"
+msgstr[1] ""
 "Schlüssel %s wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
 "Uhrenproblem)\n"
 
 #, c-format
-msgid ""
-"key %s was created %lu seconds in the future (time warp or clock problem)\n"
-msgstr ""
-"Schlüssel %s wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
+msgid "key %s was created %lu day in the future (time warp or clock problem)\n"
+msgid_plural ""
+"key %s was created %lu days in the future (time warp or clock problem)\n"
+msgstr[0] ""
+"Schlüssel %s wurde %lu Tag in der Zukunft erzeugt (Zeitreise oder "
+"Uhrenproblem)\n"
+msgstr[1] ""
+"Schlüssel %s wurde %lu Tage in der Zukunft erzeugt (Zeitreise oder "
 "Uhrenproblem)\n"
 
 #, c-format
@@ -5436,6 +5445,267 @@ msgid "input line longer than %d characters\n"
 msgstr "Eingabezeile ist länger als %d Zeichen\n"
 
 #, c-format
+msgid "error beginning transaction on TOFU database: %s\n"
+msgstr "Fehler beim Starten einer Transaktion auf der TOFU Datenbank: %s\n"
+
+#, c-format
+msgid "error committing transaction on TOFU database: %s\n"
+msgstr "Fehler beim Committen einer Transaktion auf der TOFU Datenbank: %s\n"
+
+#, c-format
+msgid "error rolling back transaction on TOFU database: %s\n"
+msgstr ""
+"Fehler beim Zurückrollen einer Transaktion auf der TOFU Datenbank: %s\n"
+
+#, c-format
+msgid "unsupported TOFU database version: %s\n"
+msgstr "Nicht unterstützte TOFU Datenbank Version: %s\n"
+
+#, c-format
+msgid "error reading TOFU database: %s\n"
+msgstr "Fehler beim Lesen der TOFU Datenbank: %s\n"
+
+#, c-format
+msgid "error determining TOFU database's version: %s\n"
+msgstr "Fehler beim Feststellen der TOFU Datenbank Version: %s\n"
+
+#, c-format
+msgid "error initializing TOFU database: %s\n"
+msgstr "Fehler beim Initialisieren der TOFU Datenbank: %s\n"
+
+#, c-format
+msgid "error opening TOFU database '%s': %s\n"
+msgstr "Fehler beim Öffner der TOFU Datenbank '%s': %s\n"
+
+msgid "Warning: Home directory contains both tofu.db and tofu.d.\n"
+msgstr ""
+"WARNUNG: Das Home-Verzeichnis hat sowohl 'tofu.db' als auch 'tofu.d'.\n"
+
+msgid "Using split format for TOFU database\n"
+msgstr "Das \"Split\" Format wird für die TOFU Datenbank benutzt\n"
+
+#, c-format
+msgid "error updating TOFU database: %s\n"
+msgstr "Fehler beim Schreiben der TOFU Datenbank: %s\n"
+
+#, c-format
+msgid "public key %s not found: %s\n"
+msgstr "Öffentlicher Schlüssel %s nicht gefunden: %s\n"
+
+#, c-format
+msgid "error setting TOFU binding's trust level to %s\n"
+msgstr "Fehler beim Setzen der TOFU Binding Vertrauensstufe auf %s\n"
+
+#, c-format
+msgid "The binding %s is NOT known."
+msgstr "Die Bindung %s ist NICHT bekannt."
+
+#, c-format
+msgid ""
+"The key %s raised a conflict with this binding (%s).  Since this binding's "
+"policy was 'auto', it was changed to 'ask'."
+msgstr ""
+"Der Schlüssel %s steht im Konflikt mit der Bindung (%s).  Die Richtlinie "
+"dieser Bindung wurde deswegen von 'auto' auf 'ask' geändert."
+
+#, c-format
+msgid ""
+"Please indicate whether you believe the binding %s%sis legitimate (the key "
+"belongs to the stated owner) or a forgery (bad)."
+msgstr ""
+"Bitte geben Sie Ihre Einschätzung, ob die Bindung %s%s legitim (der "
+"Schlüssel gehört dem angegebenen Besitzer) oder eine Fälschung (ungültig) "
+"ist."
+
+#, c-format
+msgid "error gathering other user IDs: %s\n"
+msgstr "Fehler beim Einsammeln der übrigen User-IDs: %s\n"
+
+msgid "Known user IDs associated with this key:\n"
+msgstr "Bekannte, mit diesem Schlüssel assozierte, User-IDs:\n"
+
+#, c-format
+msgid "policy: %s"
+msgstr "Richtlinie: %s"
+
+#, c-format
+msgid "error gathering signature stats: %s\n"
+msgstr "Fehler beim Einsammeln der Signaturstatistik: %s\n"
+
+#, c-format
+msgid "The email address \"%s\" is associated with %d key:\n"
+msgid_plural "The email address \"%s\" is associated with %d keys:\n"
+msgstr[0] "Die Email-Adresse \"%s\" ist mit einem Schlüssel assoziert:\n"
+msgstr[1] "Die Email-Adresse \"%s\" ist mit %d Schlüsseln assoziert:\n"
+
+#, c-format
+msgid "Statistics for keys with the email address \"%s\":\n"
+msgstr "Statistik für Schlüssel mit der Email-Adresse \"%s\":\n"
+
+msgid "this key"
+msgstr "dieser Schlüssel"
+
+#, c-format
+msgid "%ld message signed in the future."
+msgid_plural "%ld messages signed in the future."
+msgstr[0] "%ld Nachricht in der Zukunft signiert."
+msgstr[1] "%ld Nachrichten in der Zukunf signiert."
+
+#, c-format
+msgid "%ld message signed"
+msgid_plural "%ld messages signed"
+msgstr[0] "%ld Nachricht signiert"
+msgstr[1] "%ld Nachrichten signiert"
+
+#, c-format
+msgid " over the past %ld day."
+msgid_plural " over the past %ld days."
+msgstr[0] " innerhalb des letzten Tages."
+msgstr[1] " innerhalb der letzten %ld Tage."
+
+#, c-format
+msgid " over the past %ld week."
+msgid_plural " over the past %ld weeks."
+msgstr[0] " innerhalb der letzten Woche."
+msgstr[1] " innerhalb der letzten %ld Wochen."
+
+#, c-format
+msgid " over the past %ld month."
+msgid_plural " over the past %ld months."
+msgstr[0] " innerhalb des letzten Monats."
+msgstr[1] " innerhalb der letzten %ld Monate."
+
+#. TRANSLATORS: Please translate the text found in the source
+#. file below.  We don't directly internationalize that text
+#. so that we can tweak it without breaking translations.
+msgid "TOFU detected a binding conflict"
+msgstr ""
+"Normalerweise ist lediglich ein Schlüssel mit einer Email-Adresse "
+"assoziiert.  Es kann allerdings vorkommen, daß Leute einen neuen Schlüssel "
+"erzeugen, wenn ihr alter Schlüssel zu alt ist oder wenn sie glauben, er "
+"könnte kompromittiert sein.  Es kann allerdings auch sein, daß ein neuer "
+"Schlüssel einen Man-in-the-Middle Angriff aufzeigt!  Bevor Sie diesen neuen "
+"Schlüssel akzeptieren, sollten sie die Person, auf einem anderen Weg, fragen "
+"ob der neue Schlüssel legitim ist."
+
+#. TRANSLATORS: Two letters (normally the lower and upper case
+#. version of the hotkey) for each of the five choices.  If
+#. there is only one choice in your language, repeat it.
+msgid "gGaAuUrRbB"
+msgstr "gGaAuUlLfF"
+
+msgid "(G)ood, (A)ccept once, (U)nknown, (R)eject once, (B)ad? "
+msgstr "(G)ut, einmal (A)kzeptieren, (U)nbekannt, einmal ab(L)ehnen, (F)alsch?"
+
+#, c-format
+msgid "error changing TOFU policy: %s\n"
+msgstr "Fehler beim Ändern der TOFU Richtlinie: %s\n"
+
+#, c-format
+msgid "%d year"
+msgid_plural "%d years"
+msgstr[0] "%d Jahr"
+msgstr[1] "%d Jahre"
+
+#, c-format
+msgid "%d month"
+msgid_plural "%d months"
+msgstr[0] "%d Monat"
+msgstr[1] "%d Monate"
+
+#, c-format
+msgid "%d day"
+msgid_plural "%d days"
+msgstr[0] "%d Tag"
+msgstr[1] "%d Tage"
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d Stunde"
+msgstr[1] "%d Stunden"
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d Minute"
+msgstr[1] "%d Minuten"
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d Sekunde"
+msgstr[1] "%d Sekunden"
+
+#, c-format
+msgid "Have never verified a message signed by key %s!\n"
+msgstr "Es wurde noch keine Nachricht mit dem Schlüssel %s überprüft!\n"
+
+#, c-format
+msgid "Failed to collect signature statistics for \"%s\" (key %s)\n"
+msgstr ""
+"Signaturstatistiken für \"%s\" (Schlüssel %s) konnten nicht gesammelt "
+"werden\n"
+
+#, c-format
+msgid "Verified 0 messages signed by \"%s\" (key: %s, policy: %s)."
+msgstr ""
+"Keine von \"%s\" signierten Nachrichten überprüft (Schl.: %s, Richtl.: %s)."
+
+#. TRANSLATORS: The final %s is replaced by a string like
+#. "7 months, 1 day, 5 minutes, 0 seconds".
+#, c-format
+msgid ""
+"Verified %ld message signed by \"%s\" (key: %s, policy: %s) in the past %s."
+msgid_plural ""
+"Verified %ld messages signed by \"%s\" (key: %s, policy: %s) in the past %s."
+msgstr[0] ""
+"%ld von \"%s\" (Schl.: %s, Richtl.: %s) signierte Nachricht in den letzten "
+"%s überprüft."
+msgstr[1] ""
+"%ld von \"%s\" (Schl.: %s, Richtl.: %s) signierte Nachrichten in den letzten "
+"%s überprüft."
+
+#, c-format
+msgid "The most recent message was verified %s ago."
+msgstr "Die neueste Nachricht wurde vor %s überprüft."
+
+msgid "Warning: we've have yet to see a message signed by this key!\n"
+msgstr ""
+"WARNUNG: Wir müssen noch eine mit diesem Schlüssel signierte Nachricht "
+"sehen.\n"
+
+msgid "Warning: we've only seen a single message signed by this key!\n"
+msgstr ""
+"WARNUNG: Wir haben nur eine einzige mit diesem Schlüssel signierte Nachricht "
+"gesehen.\n"
+
+#. TRANSLATORS: translate the below text.  We don't
+#. directly internationalize that text so that we can
+#. tweak it without breaking translations.
+#, c-format
+msgid "TOFU: few signatures %d message %s"
+msgid_plural "TOFU: few signatures %d messages %s"
+msgstr[0] ""
+"WARNUNG: Falls sie glauben, mehr als %d mit diesem Schlüssel signierte\n"
+"Nachricht erhalten zu haben, so kann es sich bei diesem Schlüssel um\n"
+"eine Fälschung handeln!  Prüfen Sie die Email-Adresse genau auf kleine\n"
+"Variationen (z.B. zusätzliche Leerzeichen).  Falls Ihnen der Schlüssel\n"
+"suspekt erscheint, so benutzen Sie '%s' um den Schlüssel als Fälschung\n"
+"zu markieren."
+msgstr[1] ""
+"WARNUNG: Falls sie glauben, mehr als %d mit diesem Schlüssel signierte\n"
+"Nachrichten erhalten zu haben, so kann es sich bei diesem Schlüssel um\n"
+"eine Fälschung handeln!  Prüfen Sie die Email-Adresse genau auf kleine\n"
+"Variationen (z.B. zusätzliche Leerzeichen).  Falls Ihnen der Schlüssel\n"
+"suspekt erscheint, so benutzen Sie '%s' um den Schlüssel als Fälschung\n"
+"zu markieren."
+
+#, c-format
+msgid "error opening TOFU database: %s\n"
+msgstr "Fehler beim Öffnen der TOFU Datenbank: %s\n"
+
+#, c-format
 msgid "'%s' is not a valid long keyID\n"
 msgstr "'%s' ist keine gültige lange Schlüssel-ID\n"
 
@@ -5498,20 +5768,24 @@ msgstr "\"Trust-DB\"-Überprüfung ist beim `%s'-Vertrauensmodell nicht nötig\n
 msgid "no need for a trustdb update with '%s' trust model\n"
 msgstr "\"Trust-DB\"-Änderung ist beim `%s'-Vertrauensmodell nicht nötig\n"
 
-#, c-format
-msgid "public key %s not found: %s\n"
-msgstr "Öffentlicher Schlüssel %s nicht gefunden: %s\n"
-
 msgid "please do a --check-trustdb\n"
 msgstr "Bitte ein --check-trustdb durchführen\n"
 
 msgid "checking the trustdb\n"
 msgstr "\"Trust-DB\" wird überprüft\n"
 
+#, c-format
+msgid "%d key processed"
+msgid_plural "%d keys processed"
+msgstr[0] "%d Schlüssel bislang bearbeitet"
+msgstr[1] "%d Schlüssel bislang bearbeitet"
+
 # translated by wk
 #, c-format
-msgid "%d keys processed (%d validity counts cleared)\n"
-msgstr "%d Schlüssel verarbeitet (%d Validity Zähler gelöscht)\n"
+msgid " (%d validity count cleared)\n"
+msgid_plural " (%d validity counts cleared)\n"
+msgstr[0] " (%d Validity Zähler gelöscht)\n"
+msgstr[1] " (%d Validity Zähler gelöscht)\n"
 
 msgid "no ultimately trusted keys found\n"
 msgstr "keine ultimativ vertrauenswürdigen Schlüssel gefunden\n"
@@ -5521,10 +5795,6 @@ msgid "public key of ultimately trusted key %s not found\n"
 msgstr "öff. Schlüssel des ultimativ vertrauten Schlüssel %s nicht gefunden\n"
 
 #, c-format
-msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n"
-msgstr "%d marginal-needed, %d complete-needed, %s Vertrauensmodell\n"
-
-#, c-format
 msgid ""
 "depth: %d  valid: %3d  signed: %3d  trust: %d-, %dq, %dn, %dm, %df, %du\n"
 msgstr ""
@@ -5731,8 +6001,11 @@ msgid "card is permanently locked!\n"
 msgstr "Karte ist dauerhaft gesperrt!\n"
 
 #, c-format
-msgid "%d Admin PIN attempts remaining before card is permanently locked\n"
-msgstr "Noch %d Admin-PIN-Versuche, bis die Karte dauerhaft gesperrt ist\n"
+msgid "%d Admin PIN attempt remaining before card is permanently locked\n"
+msgid_plural ""
+"%d Admin PIN attempts remaining before card is permanently locked\n"
+msgstr[0] "Noch %d Admin-PIN-Versuch, bis die Karte dauerhaft gesperrt ist\n"
+msgstr[1] "Noch %d Admin-PIN-Versuche, bis die Karte dauerhaft gesperrt ist\n"
 
 #. TRANSLATORS: Do not translate the "|A|" prefix but keep it at
 #. the start of the string.  Use %%0A to force a linefeed.
@@ -5810,8 +6083,10 @@ msgid "generating key failed\n"
 msgstr "Schlüsselerzeugung fehlgeschlagen\n"
 
 #, c-format
-msgid "key generation completed (%d seconds)\n"
-msgstr "Schlüsselerzeugung abgeschlossen (%d Sekunden)\n"
+msgid "key generation completed (%d second)\n"
+msgid_plural "key generation completed (%d seconds)\n"
+msgstr[0] "Schlüsselerzeugung abgeschlossen (%d Sekunde)\n"
+msgstr[1] "Schlüsselerzeugung abgeschlossen (%d Sekunden)\n"
 
 msgid "invalid structure of OpenPGP card (DO 0x93)\n"
 msgstr "Ungültige Struktur der OpenPGP-Karte (DO 0x93)\n"
@@ -8252,27 +8527,164 @@ msgstr ""
 "Syntax: gpg-check-pattern [optionen] Musterdatei\n"
 "Die von stdin gelesene Passphrase gegen die Musterdatei prüfen\n"
 
-#~ msgid "cleared passphrase cached with ID: %s\n"
-#~ msgstr "Passphrase aus dem Cache gelöscht.  Cache ID: %s\n"
+#~ msgid "error commiting transaction on TOFU database: %s\n"
+#~ msgstr ""
+#~ "Fehler beim Committen einer Transaktion auf der TOFU Datenbank: %s\n"
 
 #, fuzzy
-#~ msgid "Failed to open the keyring DB.\n"
-#~ msgstr "Fehler beim Öffnen der Schlüsseldatenbank.\n"
+#~| msgid "error binding socket to '%s': %s\n"
+#~ msgid "error beginning %s transaction on TOFU database '%s': %s\n"
+#~ msgstr "Der Socket kann nicht an `%s' gebunden werden: %s\n"
 
 #, fuzzy
+#~| msgid "error retrieving '%s' via %s: %s\n"
+#~ msgid "error querying TOFU DB's available tables: %s\n"
+#~ msgstr "Fehler beim automatischen holen von `%s' über `%s': %s\n"
+
+#, fuzzy
+#~| msgid "error reading nonce on fd %d: %s\n"
+#~ msgid "error aborting transaction on TOFU DB: %s\n"
+#~ msgstr "Fehler beim Lesen der \"Nonce\" von FD %d: %s\n"
+
+#, fuzzy
+#~| msgid "error getting version from '%s': %s\n"
+#~ msgid "error committing transaction on TOFU DB: %s\n"
+#~ msgstr "Fehler beim Holen der Version von '%s': %s\n"
+
+#, fuzzy
+#~| msgid "can't open '%s': %s\n"
+#~ msgid "can't open TOFU DB ('%s'): %s\n"
+#~ msgstr "'%s' kann nicht geöffnet werden: %s\n"
+
+#, fuzzy
+#~| msgid "can't create directory '%s': %s\n"
+#~ msgid "unable to create directory %s/%s/%s/%s"
+#~ msgstr "Verzeichnis `%s' kann nicht erzeugt werden: %s\n"
+
+#, fuzzy
+#~| msgid "error reading from responder: %s\n"
+#~ msgid "error reading from TOFU database: bad value for policy: %s\n"
+#~ msgstr "Fehler beim Lesen vom Responder: %s\n"
+
+#, fuzzy
+#~| msgid "error reading from responder: %s\n"
+#~ msgid "error reading from TOFU database (listing fingerprints): %s\n"
+#~ msgstr "Fehler beim Lesen vom Responder: %s\n"
+
+#, fuzzy
+#~| msgid "error opening key DB: %s\n"
+#~ msgid "error opening TOFU DB.\n"
+#~ msgstr "Fehler beim Öffnen der Schlüsseldatenbank: %s\n"
+
+#, fuzzy
+#~| msgid "key %s: %s\n"
+#~ msgid "  %s\n"
+#~ msgstr "Schlüssel %s: %s\n"
+
+#, fuzzy
+#~| msgid "  s = skip this key\n"
+#~ msgid "  %s (this key):"
+#~ msgstr " s = diesen Schlüssel überspringen\n"
+
+#~ msgid "key specification '%s' is ambiguous\n"
+#~ msgstr "Schlüsselangabe '%s' ist mehrdeutig\n"
+
+#~ msgid "'%s' matches at least:\n"
+#~ msgstr "'%s' paßt mindest auf:\n"
+
+#~ msgid "%d signatures not checked due to missing keys\n"
+#~ msgstr "%d Beglaubigungen wegen fehlenden Schlüsseln nicht geprüft\n"
+
+#~ msgid "%d signatures not checked due to errors\n"
+#~ msgstr "%d Beglaubigungen aufgrund von Fehlern nicht geprüft\n"
+
+#~ msgid "1 user ID without valid self-signature detected\n"
+#~ msgstr "Eine User-ID ohne gültige Eigenbeglaubigung entdeckt\n"
+
+#~ msgid "Deleted %d signatures.\n"
+#~ msgstr "%d Beglaubigungen entfernt.\n"
+
+#~ msgid "User ID \"%s\": %d signatures removed\n"
+#~ msgstr "User-ID \"%s\": %d Signaturen entfernt\n"
+
+#~ msgid ""
+#~ "You need a Passphrase to protect your secret key.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Please enter a passphrase to protect the off-card backup of the new "
+#~ "encryption key."
+#~ msgstr ""
+#~ "Bitte geben Sie die Passphrase ein, um die Sicherheitskopie des neuen "
+#~ "Verschlüsselungsschlüssel der Karte zu schützen."
+
+#~ msgid "passphrase not correctly repeated; try again"
+#~ msgstr "Passphrase wurde nicht richtig wiederholt; noch einmal versuchen"
+
+#~ msgid "%s.\n"
+#~ msgstr "%s.\n"
+
+#~ msgid ""
+#~ "You don't want a passphrase - this is probably a *bad* idea!\n"
+#~ "I will do it anyway.  You can change your passphrase at any time,\n"
+#~ "using this program with the option \"--edit-key\".\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Sie möchten keine Passphrase - Dies ist *nicht* zu empfehlen!\n"
+#~ "Es ist trotzdem möglich.  Sie können Ihre Passphrase jederzeit\n"
+#~ "ändern, indem sie dieses Programm mit dem Befehl \"--edit-key\"\n"
+#~ "aufrufen.\n"
+#~ "\n"
+
+#~ msgid "storing key onto card failed: %s\n"
+#~ msgstr "Speicher des Schlüssels auf der Karte schlug fehl: %s\n"
+
+#~ msgid "1 good signature\n"
+#~ msgstr "1 korrekte Signatur\n"
+
+#~ msgid "renaming '%s' to '%s' failed: %s\n"
+#~ msgstr "umbenennen von `%s' nach `%s' schlug fehl: %s\n"
+
+#~ msgid "%lu keys cached (%lu signatures)\n"
+#~ msgstr "%lu Schlüssel gepuffert (%lu Beglaubigungen)\n"
+
+#~ msgid "refreshing 1 key from %s\n"
+#~ msgstr "ein Schlüssel wird per %s aktualisiert\n"
+
+#~ msgid "public key %s is %lu seconds newer than the signature\n"
+#~ msgstr ""
+#~ "Öffentlicher Schlüssel %s ist %lu Sekunden jünger als die Signatur\n"
+
+#~ msgid ""
+#~ "key %s was created %lu seconds in the future (time warp or clock "
+#~ "problem)\n"
+#~ msgstr ""
+#~ "Schlüssel %s wurde %lu Sekunden in der Zukunft erzeugt (Zeitreise oder "
+#~ "Uhrenproblem)\n"
+
+#~ msgid "%d marginal(s) needed, %d complete(s) needed, %s trust model\n"
+#~ msgstr "%d marginal-needed, %d complete-needed, %s Vertrauensmodell\n"
+
+#~ msgid "cleared passphrase cached with ID: %s\n"
+#~ msgstr "Passphrase aus dem Cache gelöscht.  Cache ID: %s\n"
+
+#~ msgid "Failed to open the keyring DB\n"
+#~ msgstr "Fehler beim Öffnen der Schlüsseldatenbank\n"
+
 #~| msgid "failed to open '%s': %s\n"
 #~ msgid "Failed to parse '%s'.\n"
-#~ msgstr "Datei `%s' kann nicht geöffnet werden: %s\n"
+#~ msgstr "Datei `%s' kann nicht gescannt werden\n"
 
-#, fuzzy
 #~| msgid "invalid value\n"
 #~ msgid "invalid value '%s'\n"
-#~ msgstr "Ungültiger Wert.\n"
+#~ msgstr "Ungültiger Wert '%s'\n"
 
-#, fuzzy
 #~| msgid "error reading secret keyblock \"%s\": %s\n"
 #~ msgid "error looking up secret key \"%s\": %s\n"
-#~ msgstr "Fehler beim Lesen des geheimen Schlüsselblocks \"%s\": %s\n"
+#~ msgstr "Fehler beim Nachschlagen der geheimen Schlüssels \"%s\": %s\n"
 
 #~ msgid "Please select at most one subkey.\n"
 #~ msgstr "Bitte wählen Sie höchstens einen Unterschlüssel aus.\n"

commit cfa41890bb5ff306c07dad295136601fe47566a7
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Jan 19 16:29:27 2016 +0100

    gpg: Streamline use of error messages in tofu.c
    
    * g10/tofu.c: Make use of print_further_info to reduce the number of
    different error messages to be translated.  Also streamline some
    messages.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/g10/tofu.c b/g10/tofu.c
index e593083..6a88172 100644
--- a/g10/tofu.c
+++ b/g10/tofu.c
@@ -261,9 +261,10 @@ begin_transaction (struct db *db, int only_batch)
                           "savepoint batch;", SQLITE_ARG_END);
       if (rc)
         {
-          log_error
-            (_("error beginning %s transaction on TOFU database '%s': %s\n"),
-             "batch", *db->name ? db->name : "combined", err);
+          log_error (_("error beginning transaction on TOFU database: %s\n"),
+                     err);
+          print_further_info ("batch, database '%s'",
+                              *db->name ? db->name : "[combined]");
           sqlite3_free (err);
           return gpg_error (GPG_ERR_GENERAL);
         }
@@ -279,9 +280,10 @@ begin_transaction (struct db *db, int only_batch)
                       "savepoint inner;", SQLITE_ARG_END);
   if (rc)
     {
-      log_error
-        (_("error beginning %s transaction on TOFU database '%s': %s\n"),
-         "inner", *db->name ? db->name : "combined", err);
+      log_error (_("error beginning transaction on TOFU database: %s\n"),
+                 err);
+      print_further_info ("inner, database '%s'",
+                          *db->name ? db->name : "[combined]");
       sqlite3_free (err);
       return gpg_error (GPG_ERR_GENERAL);
     }
@@ -313,9 +315,10 @@ end_transaction (struct db *db, int only_batch)
                           "release batch;", SQLITE_ARG_END);
       if (rc)
         {
-          log_error
-            (_("error committing %s transaction on TOFU database '%s': %s\n"),
-             "batch", *db->name ? db->name : "combined", err);
+          log_error (_("error committing transaction on TOFU database: %s\n"),
+                     err);
+          print_further_info ("batch, database '%s'",
+                              *db->name ? db->name : "[combined]");
           sqlite3_free (err);
           return gpg_error (GPG_ERR_GENERAL);
         }
@@ -333,9 +336,10 @@ end_transaction (struct db *db, int only_batch)
                       "release inner;", SQLITE_ARG_END);
   if (rc)
     {
-      log_error
-        (_("error committing %s transaction on TOFU database '%s': %s\n"),
-         "inner", *db->name ? db->name : "combined", err);
+      log_error (_("error committing transaction on TOFU database: %s\n"),
+                 err);
+      print_further_info ("inner, database '%s'",
+                          *db->name ? db->name : "[combined]");
       sqlite3_free (err);
       return gpg_error (GPG_ERR_GENERAL);
     }
@@ -362,9 +366,10 @@ rollback_transaction (struct db *db)
 
   if (rc)
     {
-      log_error
-        (_("error rolling back inner transaction on TOFU database '%s': %s\n"),
-         *db->name ? db->name : "combined", err);
+      log_error (_("error rolling back transaction on TOFU database: %s\n"),
+                 err);
+      print_further_info ("inner, database '%s'",
+                          *db->name ? db->name : "[combined]");
       sqlite3_free (err);
       return gpg_error (GPG_ERR_GENERAL);
     }
@@ -443,7 +448,7 @@ version_check_cb (void *cookie, int argc, char **argv, char **azColName)
     *version = 1;
   else
     {
-      log_error (_("unsupported TOFU DB version: %s\n"), argv[0]);
+      log_error (_("unsupported TOFU database version: %s\n"), argv[0]);
       *version = -1;
     }
 
@@ -480,8 +485,8 @@ initdb (sqlite3 *db, enum db_type type)
 		     get_single_unsigned_long_cb, &count, &err);
   if (rc)
     {
-      log_error (_("error querying TOFU DB's available tables: %s\n"),
-		 err);
+      log_error (_("error reading TOFU database: %s\n"), err);
+      print_further_info ("query available tables");
       sqlite3_free (err);
       goto out;
     }
@@ -508,16 +513,16 @@ initdb (sqlite3 *db, enum db_type type)
       else if (rc)
 	/* Some error.  */
 	{
-	  log_error (_("error determining TOFU DB's version: %s\n"), err);
+	  log_error (_("error determining TOFU database's version: %s\n"), err);
 	  sqlite3_free (err);
           goto out;
 	}
       else
-	/* Unexpected success.  This can only happen if there are no
-	   rows.  */
-	{
-	  log_error (_("error determining TOFU DB's version: %s\n"),
-		     "select returned 0, but expected ABORT");
+        {
+          /* Unexpected success.  This can only happen if there are no
+             rows.  (select returned 0, but expected ABORT.)  */
+	  log_error (_("error determining TOFU database's version: %s\n"),
+                     gpg_strerror (GPG_ERR_NO_DATA));
           rc = 1;
           goto out;
 	}
@@ -529,8 +534,8 @@ initdb (sqlite3 *db, enum db_type type)
 		     NULL, NULL, &err);
   if (rc)
     {
-      log_error (_("error initializing TOFU database (%s): %s\n"),
-		 "version", err);
+      log_error (_("error initializing TOFU database: %s\n"), err);
+      print_further_info ("create version");
       sqlite3_free (err);
       goto out;
     }
@@ -542,37 +547,37 @@ initdb (sqlite3 *db, enum db_type type)
 		     NULL, NULL, &err);
   if (rc)
     {
-      log_error (_("error initializing TOFU database (%s): %s\n"),
-		 "version, init", err);
+      log_error (_("error initializing TOFU database: %s\n"), err);
+      print_further_info ("insert version");
       sqlite3_free (err);
       goto out;
     }
 
   /* The list of <fingerprint, email> bindings and auxiliary data.
-
-       OID is a unique ID identifying this binding (and used by the
-         signatures table, see below).  Note: OIDs will never be
-         reused.
-
-       FINGERPRINT: The key's fingerprint.
-
-       EMAIL: The normalized email address.
-
-       USER_ID: The unmodified user id from which EMAIL was extracted.
-
-       TIME: The time this binding was first observed.
-
-       POLICY: The trust policy (TOFU_POLICY_BAD, etc. as an integer).
-
-       CONFLICT is either NULL or a fingerprint.  Assume that we have
-         a binding <0xdeadbeef, foo at example.com> and then we observe
-         <0xbaddecaf, foo at example.com>.  There two bindings conflict
-         (they have the same email address).  When we observe the
-         latter binding, we warn the user about the conflict and ask
-         for a policy decision about the new binding.  We also change
-         the old binding's policy to ask if it was auto.  So that we
-         know why this occurred, we also set conflict to 0xbaddecaf.
-  */
+   *
+   *  OID is a unique ID identifying this binding (and used by the
+   *    signatures table, see below).  Note: OIDs will never be
+   *    reused.
+   *
+   *  FINGERPRINT: The key's fingerprint.
+   *
+   *  EMAIL: The normalized email address.
+   *
+   *  USER_ID: The unmodified user id from which EMAIL was extracted.
+   *
+   *  TIME: The time this binding was first observed.
+   *
+   *  POLICY: The trust policy (TOFU_POLICY_BAD, etc. as an integer).
+   *
+   *  CONFLICT is either NULL or a fingerprint.  Assume that we have
+   *    a binding <0xdeadbeef, foo at example.com> and then we observe
+   *    <0xbaddecaf, foo at example.com>.  There two bindings conflict
+   *    (they have the same email address).  When we observe the
+   *    latter binding, we warn the user about the conflict and ask
+   *    for a policy decision about the new binding.  We also change
+   *    the old binding's policy to ask if it was auto.  So that we
+   *     know why this occurred, we also set conflict to 0xbaddecaf.
+   */
   if (type == DB_EMAIL || type == DB_COMBINED)
     rc = sqlite3_exec_printf
       (db, NULL, NULL, &err,
@@ -603,8 +608,8 @@ initdb (sqlite3 *db, enum db_type type)
        " on bindings (fingerprint);\n");
   if (rc)
     {
-      log_error (_("error initializing TOFU database (%s): %s\n"),
-		 "bindings", err);
+      log_error (_("error initializing TOFU database: %s\n"), err);
+      print_further_info ("create bindings");
       sqlite3_free (err);
       goto out;
     }
@@ -633,8 +638,8 @@ initdb (sqlite3 *db, enum db_type type)
 			 NULL, NULL, &err);
       if (rc)
 	{
-	  log_error (_("error initializing TOFU database (%s): %s\n"),
-		     "signatures", err);
+          log_error (_("error initializing TOFU database: %s\n"), err);
+          print_further_info ("create signatures");
 	  sqlite3_free (err);
 	  goto out;
 	}
@@ -646,7 +651,7 @@ initdb (sqlite3 *db, enum db_type type)
       rc = sqlite3_exec (db, "rollback;", NULL, NULL, &err);
       if (rc)
 	{
-	  log_error (_("error aborting transaction on TOFU DB: %s\n"),
+	  log_error (_("error rolling back transaction on TOFU database: %s\n"),
 		     err);
 	  sqlite3_free (err);
 	}
@@ -657,7 +662,7 @@ initdb (sqlite3 *db, enum db_type type)
       rc = sqlite3_exec (db, "end transaction;", NULL, NULL, &err);
       if (rc)
 	{
-	  log_error (_("error committing transaction on TOFU DB: %s\n"),
+	  log_error (_("error committing transaction on TOFU database: %s\n"),
 		     err);
 	  sqlite3_free (err);
 	  return 1;
@@ -692,8 +697,8 @@ opendb (char *filename, enum db_type type)
   rc = sqlite3_open (filename, &db);
   if (rc)
     {
-      log_error (_("can't open TOFU DB ('%s'): %s\n"),
-		 filename, sqlite3_errmsg (db));
+      log_error (_("error opening TOFU database '%s': %s\n"),
+                 filename, sqlite3_errmsg (db));
       /* Even if an error occurs, DB is guaranteed to be valid.  */
       sqlite3_close (db);
       db = NULL;
@@ -755,6 +760,7 @@ getdb (struct dbs *dbs, const char *name, enum db_type type)
   char *filename = NULL;
   int need_link = 1;
   sqlite3 *sqlitedb = NULL;
+  gpg_error_t rc;
 
   assert (dbs);
   assert (name);
@@ -826,10 +832,14 @@ getdb (struct dbs *dbs, const char *name, enum db_type type)
         char *name_db;
 
         /* Make the directory.  */
-        if (gnupg_mkdir_p (opt.homedir, "tofu.d", type_str, prefix, NULL) != 0)
+        rc = gnupg_mkdir_p (opt.homedir, "tofu.d", type_str, prefix, NULL);
+        if (rc)
           {
-            log_error (_("unable to create directory %s/%s/%s/%s"),
-                       opt.homedir, "tofu.d", type_str, prefix);
+            name_db = xstrconcat (opt.homedir, "tofu.d",
+                                  type_str, prefix, NULL);
+            log_error (_("can't create directory '%s': %s\n"),
+                       name_db, gpg_strerror (rc));
+            xfree (name_db);
             goto out;
           }
 
@@ -906,6 +916,8 @@ closedb (struct db *db)
 
 
 /* Create a new DB meta-handle.  Returns NULL on error.  */
+/* FIXME: Change to return an error code for better reporting by the
+   caller.  */
 static struct dbs *
 opendbs (void)
 {
@@ -947,26 +959,27 @@ opendbs (void)
       if (have_tofu_db && have_tofu_d)
 	{
 	  log_info (_("Warning: Home directory contains both tofu.db"
-                      " and tofu.d.  Using split format for TOFU DB.\n"));
+                      " and tofu.d.\n"));
+          log_info (_("Using split format for TOFU database\n"));
 	  opt.tofu_db_format = TOFU_DB_SPLIT;
 	}
       else if (have_tofu_db)
 	{
 	  opt.tofu_db_format = TOFU_DB_FLAT;
 	  if (DBG_TRUST)
-	    log_debug ("Using flat format for TOFU DB.\n");
+	    log_debug ("Using flat format for TOFU database.\n");
 	}
       else if (have_tofu_d)
 	{
 	  opt.tofu_db_format = TOFU_DB_SPLIT;
 	  if (DBG_TRUST)
-	    log_debug ("Using split format for TOFU DB.\n");
+	    log_debug ("Using split format for TOFU database.\n");
 	}
       else
 	{
 	  opt.tofu_db_format = TOFU_DB_FLAT;
 	  if (DBG_TRUST)
-	    log_debug ("Using flat format for TOFU DB.\n");
+	    log_debug ("Using flat format for TOFU database.\n");
 	}
     }
 
@@ -1075,7 +1088,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
 {
   char *fingerprint_pp = format_hexfingerprint (fingerprint, NULL, 0);
   struct db *db_email = NULL, *db_key = NULL;
-  int rc;
+  gpg_error_t rc;
   char *err = NULL;
   /* policy_old needs to be a long and not an enum tofu_policy,
      because we pass it by reference to get_single_long_cb2, which
@@ -1091,7 +1104,10 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
 
   db_email = getdb (dbs, email, DB_EMAIL);
   if (! db_email)
-    return gpg_error (GPG_ERR_GENERAL);
+    {
+      rc = gpg_error (GPG_ERR_GENERAL);
+      goto leave;
+    }
 
   if (opt.tofu_db_format == TOFU_DB_SPLIT)
     /* In the split format, we need to update two DBs.  To keep them
@@ -1102,11 +1118,14 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
     {
       db_key = getdb (dbs, fingerprint, DB_KEY);
       if (! db_key)
-	return gpg_error (GPG_ERR_GENERAL);
+        {
+          rc = gpg_error (GPG_ERR_GENERAL);
+          goto leave;
+        }
 
       rc = begin_transaction (db_email, 0);
       if (rc)
-        return gpg_error (GPG_ERR_GENERAL);
+        goto leave;
 
       rc = begin_transaction (db_key, 0);
       if (rc)
@@ -1116,7 +1135,7 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
     {
       rc = begin_transaction (db_email, 1);
       if (rc)
-        return gpg_error (GPG_ERR_GENERAL);
+        goto leave;
     }
 
 
@@ -1174,10 +1193,9 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
      SQLITE_ARG_END);
   if (rc)
     {
-      log_error (_("error updating TOFU binding database"
-		   " (inserting <%s, %s> = %s): %s\n"),
-		 fingerprint_pp, email, tofu_policy_str (policy),
-		 err);
+      log_error (_("error updating TOFU database: %s\n"), err);
+      print_further_info (" insert bindings <%s, %s> = %s",
+                          fingerprint_pp, email, tofu_policy_str (policy));
       sqlite3_free (err);
       goto out;
     }
@@ -1202,9 +1220,9 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
          SQLITE_ARG_STRING, user_id, SQLITE_ARG_END);
       if (rc)
 	{
-	  log_error (_("error updating TOFU binding database"
-		       " (inserting <%s, %s>): %s\n"),
-		     fingerprint_pp, email, err);
+	  log_error (_("error updating TOFU database: %s\n"), err);
+          print_further_info ("insert bindings <%s, %s>",
+                              fingerprint_pp, email);
 	  sqlite3_free (err);
 	  goto out;
 	}
@@ -1216,18 +1234,14 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
   if (opt.tofu_db_format == TOFU_DB_SPLIT)
     /* We only need a transaction for the split format.  */
     {
-      int rc2;
+      gpg_error_t rc2;
 
       if (rc)
         rc2 = rollback_transaction (db_key);
       else
         rc2 = end_transaction (db_key, 0);
       if (rc2)
-	{
-	  log_error (_("error ending transaction on TOFU database: %s\n"),
-		     err);
-	  sqlite3_free (err);
-	}
+        sqlite3_free (err);
 
     out_revert_one:
       if (rc)
@@ -1235,18 +1249,13 @@ record_binding (struct dbs *dbs, const char *fingerprint, const char *email,
       else
         rc2 = end_transaction (db_email, 0);
       if (rc2)
-	{
-	  log_error (_("error ending transaction on TOFU database: %s\n"),
-		     err);
-	  sqlite3_free (err);
-	}
+        sqlite3_free (err);
     }
 
+ leave:
   xfree (fingerprint_pp);
 
-  if (rc)
-    return gpg_error (GPG_ERR_GENERAL);
-  return 0;
+  return rc;
 }
 
 
@@ -1461,9 +1470,8 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
                       SQLITE_ARG_END);
   if (rc)
     {
-      log_error (_("error reading from TOFU database"
-		   " (checking for existing bad bindings): %s\n"),
-		 err);
+      log_error (_("error reading TOFU database: %s\n"), err);
+      print_further_info ("checking for existing bad bindings");
       sqlite3_free (err);
       goto out;
     }
@@ -1477,10 +1485,11 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
   else if (strlist_length (strlist) != 2)
     /* The result has the wrong form.  */
     {
-      log_error (_("error reading from TOFU database"
-		   " (checking for existing bad bindings):"
-		   " expected 2 results, got %d\n"),
-		 strlist_length (strlist));
+      log_error (_("error reading TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_BAD_DATA));
+      print_further_info ("checking for existing bad bindings:"
+                          " expected 2 results, got %d\n",
+                          strlist_length (strlist));
       goto out;
     }
 
@@ -1490,8 +1499,9 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
   policy = strtol (strlist->d, &tail, 0);
   if (errno || *tail != '\0')
     {
-      log_error (_("error reading from TOFU database: bad value for policy: %s\n"),
-		 strlist->d);
+      log_error (_("error reading TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_BAD_DATA));
+      print_further_info ("bad value for policy: %s", strlist->d);
       goto out;
     }
 
@@ -1501,8 +1511,9 @@ get_policy (struct dbs *dbs, const char *fingerprint, const char *email,
 	 || policy == TOFU_POLICY_BAD
 	 || policy == TOFU_POLICY_ASK))
     {
-      log_error (_("TOFU DB is corrupted.  Invalid value for policy (%d).\n"),
-		 policy);
+      log_error (_("error reading TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_DB_CORRUPTED));
+      print_further_info ("invalid value for policy (%d)", policy);
       policy = _tofu_GET_POLICY_ERROR;
       goto out;
     }
@@ -1711,9 +1722,8 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email,
      SQLITE_ARG_STRING, email, SQLITE_ARG_END);
   if (rc)
     {
-      log_error (_("error reading from TOFU database"
-		   " (listing fingerprints): %s\n"),
-		 err);
+      log_error (_("error reading TOFU database: %s\n"), err);
+      print_further_info ("listing fingerprints");
       sqlite3_free (err);
       goto out;
     }
@@ -1863,7 +1873,7 @@ get_trust (struct dbs *dbs, const char *fingerprint, const char *email,
 	     SQLITE_ARG_STRING, fingerprint, SQLITE_ARG_END);
 	  if (rc)
 	    {
-	      log_error (_("error gathering other user ids: %s.\n"), err);
+	      log_error (_("error gathering other user IDs: %s\n"), err);
 	      sqlite3_free (err);
 	      err = NULL;
 	    }
@@ -2327,9 +2337,8 @@ show_statistics (struct dbs *dbs, const char *fingerprint,
      sig_exclude ? "'" : "");
   if (rc)
     {
-      log_error (_("error reading from TOFU database"
-		   " (getting statistics): %s\n"),
-		 err);
+      log_error (_("error reading TOFU database: %s\n"), err);
+      print_further_info ("getting statistics");
       sqlite3_free (err);
       goto out;
     }
@@ -2556,7 +2565,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
   dbs = opendbs ();
   if (! dbs)
     {
-      log_error (_("error opening TOFU DB.\n"));
+      log_error (_("error opening TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_GENERAL));
       goto die;
     }
 
@@ -2589,7 +2599,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
   db = getdb (dbs, email, DB_EMAIL);
   if (! db)
     {
-      log_error (_("error opening TOFU DB.\n"));
+      log_error (_("error opening TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_GENERAL));
       goto die;
     }
 
@@ -2615,9 +2626,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
      SQLITE_ARG_END);
   if (rc)
     {
-      log_error (_("error reading from signatures database"
-		   " (checking existence): %s\n"),
-		 err);
+      log_error (_("error reading TOFU database: %s\n"), err);
+      print_further_info ("checking existence");
       sqlite3_free (err);
     }
   else if (c > 1)
@@ -2662,9 +2672,8 @@ tofu_register (PKT_public_key *pk, const char *user_id,
          SQLITE_ARG_END);
       if (rc)
 	{
-	  log_error (_("error updating TOFU DB"
-		       " (inserting into signatures table): %s\n"),
-		     err);
+	  log_error (_("error updating TOFU database: %s\n"), err);
+          print_further_info ("insert signatures");
 	  sqlite3_free (err);
 	}
     }
@@ -2677,7 +2686,6 @@ tofu_register (PKT_public_key *pk, const char *user_id,
     rc = end_transaction (db, 0);
   if (rc)
     {
-      log_error (_("error ending transaction on TOFU database: %s\n"), err);
       sqlite3_free (err);
       goto die;
     }
@@ -2771,7 +2779,8 @@ tofu_get_validity (PKT_public_key *pk, const char *user_id,
   dbs = opendbs ();
   if (! dbs)
     {
-      log_error (_("error opening TOFU DB.\n"));
+      log_error (_("error opening TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_GENERAL));
       goto die;
     }
 
@@ -2823,7 +2832,8 @@ tofu_set_policy (kbnode_t kb, enum tofu_policy policy)
   dbs = opendbs ();
   if (! dbs)
     {
-      log_error (_("error opening TOFU DB.\n"));
+      log_error (_("error opening TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_GENERAL));
       return gpg_error (GPG_ERR_GENERAL);
     }
 
@@ -2902,7 +2912,8 @@ tofu_get_policy (PKT_public_key *pk, PKT_user_id *user_id,
   dbs = opendbs ();
   if (! dbs)
     {
-      log_error (_("error opening TOFU DB.\n"));
+      log_error (_("error opening TOFU database: %s\n"),
+                 gpg_strerror (GPG_ERR_GENERAL));
       return gpg_error (GPG_ERR_GENERAL);
     }
 

commit 8b7f64f9dfc80b2a0ad235996b47369c2ba9b48f
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Jan 19 16:26:28 2016 +0100

    common: Add substitute code for libgpg-error < 1.22.
    
    * common/util.h (GPG_ERR_DB_CORRUPTED): New.

diff --git a/common/util.h b/common/util.h
index 5d94e93..6410b11 100644
--- a/common/util.h
+++ b/common/util.h
@@ -37,8 +37,10 @@
 
 /* These error codes are used but not defined in the required
    libgpg-error version.  Define them here. */
-/* None right now.  (Use #if GPG_ERROR_VERSION_NUMBER < 0x011500  / * 1.21) */
-
+/* Example: (#if GPG_ERROR_VERSION_NUMBER < 0x011500 // 1.21) */
+#if GPG_ERROR_VERSION_NUMBER < 0x011600  /* 1.22 */
+# define GPG_ERR_DB_CORRUPTED  218
+#endif /* gpg_error < 1.22 */
 
 /* Hash function used with libksba. */
 #define HASH_FNC ((void (*)(void *, const void*,size_t))gcry_md_write)

commit d96e76d15f61812b950b64a60bc47117785a9dac
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Jan 19 16:25:31 2016 +0100

    gpg: Add function print_further_info.
    
    * g10/misc.c (print_further_info): New.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/g10/main.h b/g10/main.h
index 503f262..ec24426 100644
--- a/g10/main.h
+++ b/g10/main.h
@@ -90,6 +90,7 @@ void print_cipher_algo_note (cipher_algo_t algo);
 void print_digest_algo_note (digest_algo_t algo);
 void print_digest_rejected_note (enum gcry_md_algos algo);
 void print_reported_error (gpg_error_t err, gpg_err_code_t skip_if_ec);
+void print_further_info (const char *format, ...) GPGRT_ATTR_PRINTF(1,2);
 void additional_weak_digest (const char* digestname);
 
 /*-- armor.c --*/
diff --git a/g10/misc.c b/g10/misc.c
index 5e764fa..bdc4505 100644
--- a/g10/misc.c
+++ b/g10/misc.c
@@ -383,6 +383,27 @@ print_reported_error (gpg_error_t err, gpg_err_code_t ignore_ec)
 }
 
 
+/* Print a message
+ *   "(further info: %s)\n
+ * in verbose mode to further explain an error.  That message is
+ * intended to help debug a problem and should not be translated.
+ */
+void
+print_further_info (const char *format, ...)
+{
+  va_list arg_ptr;
+
+  if (!opt.verbose)
+    return;
+
+  log_info (_("(further info: "));
+  va_start (arg_ptr, format);
+  log_logv (GPGRT_LOG_CONT, format, arg_ptr);
+  va_end (arg_ptr);
+  log_printf (")\n");
+}
+
+
 /* Map OpenPGP algo numbers to those used by Libgcrypt.  We need to do
    this for algorithms we implemented in Libgcrypt after they become
    part of OpenPGP.  */

-----------------------------------------------------------------------

Summary of changes:
 common/util.h |   6 +-
 g10/main.h    |   1 +
 g10/misc.c    |  21 ++
 g10/tofu.c    | 257 ++++++++++----------
 po/de.po      | 752 +++++++++++++++++++++++++++++++++++++++++++++-------------
 5 files changed, 742 insertions(+), 295 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list