diff options
author | Werner Koch <wk@gnupg.org> | 1999-02-26 17:59:48 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 1999-02-26 17:59:48 +0100 |
commit | 694099b9af96d53ad4a4f9bc70e08c2f393f9f4e (patch) | |
tree | ff5ddc557b85093cbf4076374bd43b2e958ce804 /g10/ringedit.c | |
parent | See ChangeLog: Thu Feb 25 18:47:39 CET 1999 Werner Koch (diff) | |
download | gnupg2-694099b9af96d53ad4a4f9bc70e08c2f393f9f4e.tar.xz gnupg2-694099b9af96d53ad4a4f9bc70e08c2f393f9f4e.zip |
See ChangeLog: Fri Feb 26 17:55:41 CET 1999 Werner Koch
Diffstat (limited to 'g10/ringedit.c')
-rw-r--r-- | g10/ringedit.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/g10/ringedit.c b/g10/ringedit.c index bc7d40e05..b61aa9b94 100644 --- a/g10/ringedit.c +++ b/g10/ringedit.c @@ -79,6 +79,8 @@ typedef struct resource_table_struct RESTBL; #define MAX_RESOURCES 10 static RESTBL resource_table[MAX_RESOURCES]; +static int default_public_resource; +static int default_secret_resource; static int search( PACKET *pkt, KBPOS *kbpos, int secret ); @@ -348,11 +350,17 @@ add_keyblock_resource( const char *url, int force, int secret ) goto leave; } + /* fixme: avoid duplicate resources */ resource_table[i].used = 1; resource_table[i].secret = !!secret; resource_table[i].fname = m_strdup(filename); resource_table[i].iobuf = iobuf; resource_table[i].rt = rt; + if( secret ) + default_secret_resource = i; + else + default_public_resource = i; + leave: if( rc ) log_error("keyblock resource `%s': %s\n", filename, g10_errstr(rc) ); @@ -386,9 +394,12 @@ keyblock_resource_name( KBPOS *kbpos ) int get_keyblock_handle( const char *filename, int secret, KBPOS *kbpos ) { - int i; + int i = 0; - for(i=0; i < MAX_RESOURCES; i++ ) + if( !filename ) + i = secret? default_secret_resource : default_public_resource; + + for(; i < MAX_RESOURCES; i++ ) { if( resource_table[i].used && !resource_table[i].secret == !secret ) { /* fixme: dos needs case insensitive file compare */ if( !filename || !strcmp( resource_table[i].fname, filename ) ) { @@ -398,6 +409,7 @@ get_keyblock_handle( const char *filename, int secret, KBPOS *kbpos ) return 0; } } + } return -1; /* not found */ } |