aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keylist.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>1998-11-08 17:23:14 +0000
committerWerner Koch <[email protected]>1998-11-08 17:23:14 +0000
commit35c10545075da2353511ed83f7b5bb664f055df4 (patch)
treec92b3dc1ff2306194942b0d28e16e9ea8d28846e /g10/keylist.c
parentoverhauled the trustdb stuff (diff)
downloadgnupg-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.c44
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 );
}