diff options
author | Werner Koch <[email protected]> | 1998-11-08 17:23:14 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1998-11-08 17:23:14 +0000 |
commit | 35c10545075da2353511ed83f7b5bb664f055df4 (patch) | |
tree | c92b3dc1ff2306194942b0d28e16e9ea8d28846e /g10/keylist.c | |
parent | overhauled the trustdb stuff (diff) | |
download | gnupg-0-4-3.tar.gz gnupg-0-4-3.zip |
ready to release 0.4.3V0-4-3
Diffstat (limited to 'g10/keylist.c')
-rw-r--r-- | g10/keylist.c | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/g10/keylist.c b/g10/keylist.c index a1150cdd5..257e869e4 100644 --- a/g10/keylist.c +++ b/g10/keylist.c @@ -115,23 +115,41 @@ list_one( const char *name, int secret ) { int rc = 0; KBNODE keyblock = NULL; - KBPOS kbpos; - rc = secret? find_secret_keyblock_byname( &kbpos, name ) - : find_keyblock_byname( &kbpos, name ); - if( rc ) { - log_error("%s: user not found\n", name ); - return; + if( secret ) { + KBPOS kbpos; + + rc = secret? find_secret_keyblock_byname( &kbpos, name ) + : find_keyblock_byname( &kbpos, name ); + if( rc ) { + log_error("%s: user not found\n", name ); + return; + } + + rc = read_keyblock( &kbpos, &keyblock ); + if( rc ) { + log_error("%s: keyblock read problem: %s\n", name, g10_errstr(rc) ); + return; + } + merge_keys_and_selfsig( keyblock ); + list_keyblock( keyblock, secret ); + release_kbnode( keyblock ); } + else { + GETKEY_CTX ctx; - rc = read_keyblock( &kbpos, &keyblock ); - if( rc ) { - log_error("%s: keyblock read problem: %s\n", name, g10_errstr(rc) ); - return; + rc = get_pubkey_byname( &ctx, NULL, name, &keyblock ); + if( rc ) { + log_error("%s: %s\n", name, g10_errstr(rc) ); + get_pubkey_end( ctx ); + return; + } + do { + list_keyblock( keyblock, 0 ); + release_kbnode( keyblock ); + } while( !get_pubkey_next( ctx, NULL, &keyblock ) ); + get_pubkey_end( ctx ); } - merge_keys_and_selfsig( keyblock ); - list_keyblock( keyblock, secret ); - release_kbnode( keyblock ); } |