aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyring.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2002-11-08 03:31:21 +0000
committerDavid Shaw <[email protected]>2002-11-08 03:31:21 +0000
commit7911a5ed86925eb24ce2df962965ee3ee51c47ff (patch)
tree48d3b2dd2a040e006f23ca40e001a5605706e5ed /g10/keyring.c
parent* options.h, g10.c (main), trustdb.c (ask_ownertrust): Add (diff)
downloadgnupg-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.c29
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