Einstellung von Archivierungs-Programmen für die Benutzung mit „Dateien signieren/verschlüsseln ...“

## Einstellung von Archivierungs-Programmen für die Benutzung mit „Dateien signieren/verschlüsseln ...“

Kleopatra ermöglicht dem Systemverwalter (und erfahrenen Benutzer) die Liste der Archivierungs-Programme, die im „Dateien signieren/verschlüsseln ...“-Dialog wählbar sind, einzustellen.

Jedes Archivierungs-Programm wird in `libkleopatrarc` als eigenständige `Archive Definition #`n``-Gruppe mit den folgenden verbindlichen Schlüsseln definiert:

`extensions`

  Eine durch Komma getrennte Liste von Dateierweiterung, die normalerweise eine Archivdatei kennzeichnen.

`id`

  Eine eindeutige Kennung, um dieses Archivierungs-Programm intern zu identifizieren. Falls Sie Zweifel haben, nutzen Sie den Namen des Befehls.

`Name` (übersetzt)

  Der Name des Archivierungs-Programms, so wie er dem Benutzer im entsprechenden Aufklappmenu des „Dateien signieren/verschlüsseln ...“-Dialogs angezeigt wird.

`pack-command`

  Der eigentliche Befehl zum Archivieren von Dateien. Sie können hier jeden Befehl verwenden, so lange es nicht erforderlich ist eine Shell auszuführen. Sofern Sie keinen absoluten Pfad angeben, wird die Programmdatei wird mit Hilfe der `PATH`-Umgebungsvariable nachgeschlagen. Anführungszeichen werden so unterstützt, als wenn eine Shell verwendet wird:

      pack-command="/opt/ZIP v2.32/bin/zip" -r -

### Anmerkung

Da umgedrehte Schrägstriche (`\`) ein Steuerzeichen in KDE-Einrichtungsdateien sind, müssen Sie diese doppelt verwenden, wenn sie in Pfadnamen auftauchen:

    pack-command=C:\\Programme\\GNU\\tar\\gtar.exe ...

Für den Befehl selbst (im Gegensatz zu seinen Argumenten) sollten Sie nur normale Schrägstriche (`/`) als Trennzeichen für Pfade auf allen Plattformen nutzen.

    pack-command=C:/Programme/GNU/tar/gtar.exe ...

In den Argumenten des Befehls wird dies nicht unterstützt, da zumindest Windows-Programme den Schrägstrich für Optionen nutzen. Zum Beispiel funktioniert das folgende nicht, da `C:/meinearchivierung.bat` ein Argument für cmd.exe ist und `/` in Argumenten nicht in `\` umgewandelt wird, sondern nur in Befehlen:

    pack-command=cmd.exe C:/meinearchivierung.bat

Dies muss wie folgt umgeschrieben werden.

    pack-command=cmd.exe C:\\meinearchivierung.bat

### Dateiname der zu archivierenden Datei, wie er dem `pack-command` übergeben wird

Es gibt drei Möglichkeiten Dateinamen dem Archivierungs-Befehl zu übergeben.

1. Als Befehlszeilen-Argumente.

   Beispiel (GNU-tar):

       pack-command=tar cf -

   Beispiel (ZIP):

       pack-command=zip -r - %f

   In diesem Fall werden die Dateinamen über die Befehlszeile übergeben, genau so, als wenn die Befehlszeileneingabe genutzt würde. Kleopatra benutzt keine Shell um den Befehl auszuführen. Daher ist die sicherste Methode Dateinamen zu übergeben, auch wenn dies auf einigen Systemen an Begrenzungen der Befehlszeilenlänge stoßen kann. Sofern das Literal `%f` angegeben ist, wird es durch die Namen der zu archivierenden Dateien ersetzt. Anderenfalls werden diese Dateinamen an das Ende der Befehlszeile angehangen. Daher kann das ZIP-Beispiel wie folgt gleichbedeutend umgeschrieben werden:

       pack-command=zip -r -

2. Über die Standard-Eingabe und durch Zeilenumbrüche getrennt: `|` voranstellen.

   Beispiel (GNU-tar):

       pack-command=|gtar cf - -T-

   Beispiel (ZIP):

       pack-command=|zip -@ -

   In diesem Fall werden die Dateinamen dem Archivierungs-Programm über stdin zeilenweise übergeben. Dies umgeht Probleme auf Systemen, die eine niedrige Begrenzung für die Anzahl an erlaubten Befehlszeilenzeilenparametern setzen, schlägt jedoch fehl, wenn Dateinamen Zeilenumbrüche enthalten.

   ### Anmerkung

   Derzeit unterstützt Kleopatra nur LF als Steuerzeichen für einen Zeilenumbruch und nicht CRLF. Abhängig von Rückmeldungen der Benutzer kann sich dies in Zukunft ändern.

3. Über die Standard-Eingabe und durch NUL-Bytes getrennt: `0|` voranstellen.

   Beispiel (GNU-tar):

       pack-command=0|gtar cg - -T- --null

   Dies ist das gleiche wie oben, außer, dass NUL-Bytes für die Trennung der Dateinamen genutzt wurde. Da NUL-Bytes in Dateinamen verboten sind, ist dies die robusteste Methode um Dateinamen zu übergeben. Allerdings wird sie nicht von allen Archivierungs-Programmen unterstützt.