The current --list option outputed the keys and all their signatures
which can be overly verbose.  It also did not take a list of keys on
the command line to limit its output (although the code suggests that
was intended).

That patch brings consistency with gpg, providing --list-keys and
--list-sigs options that function equivalently to those provided by
gpg.

Signed-off-by: Allan McRae <[email protected]>
---
 doc/pacman-key.8.txt     |    7 +++++--
 scripts/pacman-key.sh.in |   21 +++++++++++++--------
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/doc/pacman-key.8.txt b/doc/pacman-key.8.txt
index 14f3cb9..8adce8c 100644
--- a/doc/pacman-key.8.txt
+++ b/doc/pacman-key.8.txt
@@ -71,8 +71,11 @@ Options
        Ensure the keyring is properly initialized and has the required access
        permissions.
 
-*-l, \--list*::
-       Equivalent to --list-sigs from GnuPG.
+*-l, \--list-keys* [keyid(s)]::
+       Lists all or specified keys from the public keyring.
+
+*--list-sigs* [keyid(s)]::
+       Same as --list-keys, but the signatures are listed too.
 
 *-r, \--receive* <keyserver> <keyid(s)>::
        Fetch the specified keyids from the specified key server URL.
diff --git a/scripts/pacman-key.sh.in b/scripts/pacman-key.sh.in
index e6a4691..1fc1ab5 100644
--- a/scripts/pacman-key.sh.in
+++ b/scripts/pacman-key.sh.in
@@ -35,7 +35,8 @@ FINGER=0
 IMPORT=0
 IMPORT_TRUSTDB=0
 INIT=0
-LIST=0
+LISTKEYS=0
+LISTSIGS=0
 RECEIVE=0
 RELOAD=0
 UPDATEDB=0
@@ -58,7 +59,7 @@ usage() {
        echo "$(gettext "  -e, --export [<keyid(s)>] Export the specified or 
all keyids")"
        echo "$(gettext "  -f, --finger [<keyid(s)>] List fingerprint for 
specified or all keyids")"
        echo "$(gettext "  -h, --help                Show this help message and 
exit")"
-       echo "$(gettext "  -l, --list                List keys")"
+       echo "$(gettext "  -l, --list-keys [<keyid(s)>] List the specified or 
all keys")"
        echo "$(gettext "  -r, --receive <keyserver> <keyid(s)> Fetch the 
specified keyids")"
        echo "$(gettext "  -u, --updatedb            Update the trustdb of 
pacman")"
        echo "$(gettext "  -v, --verify <signature>  Verify the file specified 
by the signature")"
@@ -71,6 +72,7 @@ usage() {
        echo "$(gettext "  --import <dir(s)>         Imports pubring.gpg and 
trustdb.gpg from dir(s)")"
        echo "$(gettext "  --import-trustdb <dir(s)> Imports ownertrust values 
from trustdb.gpg in dir(s)")"
        echo "$(gettext "  --init                    Ensure the keyring is 
properly initialized")"
+       echo "$(gettext "  --list-sigs [<keyid(s)>]  List keys and their 
signatures")"
        echo "$(gettext "  --reload                  Reload the default keys")"
 }
 
@@ -317,10 +319,10 @@ if ! type gettext &>/dev/null; then
        }
 fi
 
-OPT_SHORT="a::d:e:f::hlr:uv:V"
+OPT_SHORT="a::d:e:f::hl::r:uv:V"
 OPT_LONG="add::,config:,delete:,edit-key:,export::,finger::,gpgdir:"
-OPT_LONG+=",help,import:,import-trustdb:,init,list,receive:,reload,updatedb"
-OPT_LONG+=",verify:,version"
+OPT_LONG+=",help,import:,import-trustdb:,init,list-keys::,list-sigs::,,receive:"
+OPT_LONG+=",reload,updatedb,verify:,version"
 if ! OPT_TEMP="$(parse_options $OPT_SHORT $OPT_LONG "$@")"; then
        echo; usage; exit 1 # E_INVALID_OPTION;
 fi
@@ -344,7 +346,8 @@ while true; do
                --import)         IMPORT=1; shift; IMPORT_DIRS=($1) ;;
                --import-trustdb) IMPORT_TRUSTDB=1; shift; IMPORT_DIRS=($1) ;;
                --init)           INIT=1 ;;
-               -l|--list)        LIST=1 ;;
+               -l|--list-keys)   LISTKEYS=1; [[ -n $2 && ${2:0:1} != "-" ]] && 
shift && KEYIDS=($1) ;;
+               --list-sigs)      LISTSIGS=1; [[ -n $2 && ${2:0:1} != "-" ]] && 
shift && KEYIDS=($1) ;;
                -r|--receive)     RECEIVE=1; shift; TMP=($1); 
KEYSERVER=${TMP[0]}; KEYIDS=(${TMP[@]:1}); unset TMP;;
                --reload)         RELOAD=1 ;;
                -u|--updatedb)    UPDATEDB=1 ;;
@@ -383,7 +386,8 @@ PACMAN_KEYRING_DIR=${PACMAN_KEYRING_DIR:-$(get_from 
"$CONFIG" "GPGDir" || echo "
 GPG_PACMAN=(gpg --homedir ${PACMAN_KEYRING_DIR} --no-permission-warning)
 
 # check only a single operation has been given
-numopt=$(( ADD + DELETE + EDITKEY + EXPORT + FINGER + IMPORT + IMPORT_TRUSTDB 
+ INIT + LIST + RECEIVE + RELOAD + UPDATEDB + VERIFY ))
+numopt=$(( ADD + DELETE + EDITKEY + EXPORT + FINGER + IMPORT + IMPORT_TRUSTDB +
+               INIT + LISTKEYS + LISTSIGS + RECEIVE + RELOAD + UPDATEDB + 
VERIFY ))
 
 case $numopt in
        0)
@@ -407,7 +411,8 @@ esac
 (( IMPORT )) && import
 (( IMPORT_TRUSTDB)) && import_trustdb
 (( INIT )) && initialize
-(( LIST )) && "${GPG_PACMAN[@]}" --batch --list-sigs "${KEYIDS[@]}"
+(( LISTKEYS )) && "${GPG_PACMAN[@]}" --batch --list-keys "${KEYIDS[@]}"
+(( LISTSIGS )) && "${GPG_PACMAN[@]}" --batch --list-sigs "${KEYIDS[@]}"
 (( RECEIVE )) && receive_keys
 (( RELOAD )) && reload_keyring
 (( UPDATEDB )) && "${GPG_PACMAN[@]}" --batch --check-trustdb
-- 
1.7.6


Reply via email to