diff options
author | David Shaw <[email protected]> | 2002-11-08 03:31:21 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2002-11-08 03:31:21 +0000 |
commit | 7911a5ed86925eb24ce2df962965ee3ee51c47ff (patch) | |
tree | 48d3b2dd2a040e006f23ca40e001a5605706e5ed /g10/keyring.c | |
parent | * options.h, g10.c (main), trustdb.c (ask_ownertrust): Add (diff) | |
download | gnupg-7911a5ed86925eb24ce2df962965ee3ee51c47ff.tar.gz gnupg-7911a5ed86925eb24ce2df962965ee3ee51c47ff.zip |
* keyring.h, keyring.c (keyring_register_filename): Return the pointer if
a given keyring is registered twice.
* keydb.h, keydb.c (keydb_add_resource): Use flags to indicate a default
keyring. (keydb_locate_writable): Prefer the default keyring if possible.
* g10.c (main): Add --default-keyring option.
Diffstat (limited to 'g10/keyring.c')
-rw-r--r-- | g10/keyring.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/g10/keyring.c b/g10/keyring.c index 3160b1c37..405167122 100644 --- a/g10/keyring.c +++ b/g10/keyring.c @@ -190,25 +190,28 @@ update_offset_hash_table_from_kb (OffsetHashTable tbl, KBNODE node, off_t off) } } - - - /* - * Register a filename for plain keyring files. Returns a pointer to - * be used to create a handles etc or NULL to indicate that it has - * already been registered */ -void * -keyring_register_filename (const char *fname, int secret) + * Register a filename for plain keyring files. ptr is set to a + * pointer to be used to create a handles etc, or the already-issued + * pointer if it has already been registered. The function returns 1 + * if a new keyring was registered. +*/ +int +keyring_register_filename (const char *fname, int secret, void **ptr) { KR_NAME kr; if (active_handles) BUG (); /* We don't allow that */ - for (kr=kr_names; kr; kr = kr->next) { + for (kr=kr_names; kr; kr = kr->next) + { if ( !compare_filenames (kr->fname, fname) ) - return NULL; /* already registered */ - } + { + *ptr=kr; + return 0; /* already registered */ + } + } kr = m_alloc (sizeof *kr + strlen (fname)); strcpy (kr->fname, fname); @@ -224,7 +227,9 @@ keyring_register_filename (const char *fname, int secret) if (!kr_offtbl) kr_offtbl = new_offset_hash_table (); - return kr; + *ptr=kr; + + return 1; } int |