summaryrefslogtreecommitdiffstats
path: root/g10/ringedit.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>1999-02-26 17:59:48 +0100
committerWerner Koch <wk@gnupg.org>1999-02-26 17:59:48 +0100
commit694099b9af96d53ad4a4f9bc70e08c2f393f9f4e (patch)
treeff5ddc557b85093cbf4076374bd43b2e958ce804 /g10/ringedit.c
parentSee ChangeLog: Thu Feb 25 18:47:39 CET 1999 Werner Koch (diff)
downloadgnupg2-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.c16
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 */
}