aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyring.c
diff options
context:
space:
mode:
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