]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - keydb_file.c
cscvs to tla changeset 8
[onak.git] / keydb_file.c
index 9784ecfcdcc93748b3d0d7eac2dc926dfbb7b97b..243e59ef83cb60344d189ac0877c71dc7c145646 100644 (file)
@@ -20,7 +20,7 @@
 #include "keystructs.h"
 #include "ll.h"
 #include "mem.h"
-#include "onak_conf.h"
+#include "onak-conf.h"
 #include "parsekey.h"
 
 /**
@@ -34,9 +34,9 @@ static int keydb_fetchchar(void *fd, size_t count, unsigned char *c)
 /**
  *     keydb_putchar - Puts a char to a file.
  */
-static int keydb_putchar(void *fd, unsigned char c)
+static int keydb_putchar(void *fd, size_t count, unsigned char *c)
 {
-       return !(write( *(int *) fd, &c, sizeof(c)));
+       return !(write( *(int *) fd, c, count));
 }
 
 /**
@@ -57,10 +57,31 @@ void cleanupdb(void)
 {
 }
 
+/**
+ *     starttrans - Start a transaction.
+ *
+ *     This is just a no-op for flat file access.
+ */
+bool starttrans(void)
+{
+       return true;
+}
+
+/**
+ *     endtrans - End a transaction.
+ *
+ *     This is just a no-op for flat file access.
+ */
+void endtrans(void)
+{
+       return;
+}
+
 /**
  *     fetch_key - Given a keyid fetch the key from storage.
  *     @keyid: The keyid to fetch.
  *     @publickey: A pointer to a structure to return the key in.
+ *     @intrans: If we're already in a transaction.
  *
  *     We use the hex representation of the keyid as the filename to fetch the
  *     key from. The key is stored in the file as a binary OpenPGP stream of
@@ -68,7 +89,8 @@ void cleanupdb(void)
  *     in and then parse_keys() to parse the packets into a publickey
  *     structure.
  */
-int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey)
+int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey,
+               bool intrans)
 {
        struct openpgp_packet_list *packets = NULL;
        char keyfile[1024];
@@ -90,13 +112,15 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey)
 /**
  *     store_key - Takes a key and stores it.
  *     @publickey: A pointer to the public key to store.
+ *     @intrans: If we're already in a transaction.
+ *     @update: If true the key exists and should be updated.
  *
  *     Again we just use the hex representation of the keyid as the filename
  *     to store the key to. We flatten the public key to a list of OpenPGP
  *     packets and then use write_openpgp_stream() to write the stream out to
  *     the file.
  */
-int store_key(struct openpgp_publickey *publickey)
+int store_key(struct openpgp_publickey *publickey, bool intrans, bool update)
 {
        struct openpgp_packet_list *packets = NULL;
        struct openpgp_packet_list *list_end = NULL;
@@ -124,11 +148,12 @@ int store_key(struct openpgp_publickey *publickey)
 /**
  *     delete_key - Given a keyid delete the key from storage.
  *     @keyid: The keyid to delete.
+ *     @intrans: If we're already in a transaction.
  *
  *     This function deletes a public key from whatever storage mechanism we
  *     are using. Returns 0 if the key existed.
  */
-int delete_key(uint64_t keyid)
+int delete_key(uint64_t keyid, bool intrans)
 {
        char keyfile[1024];
 
@@ -138,9 +163,25 @@ int delete_key(uint64_t keyid)
        return unlink(keyfile);
 }
 
+/**
+ *     fetch_key_text - Trys to find the keys that contain the supplied text.
+ *     @search: The text to search for.
+ *     @publickey: A pointer to a structure to return the key in.
+ *
+ *     This function searches for the supplied text and returns the keys that
+ *     contain it.
+ *
+ *     TODO: Write for flat file access. Some sort of grep?
+ */
+int fetch_key_text(const char *search, struct openpgp_publickey **publickey)
+{
+       return 0;
+}
+
 /*
  * Include the basic keydb routines.
  */
 #define NEED_KEYID2UID 1
 #define NEED_GETKEYSIGS 1
+#define NEED_GETFULLKEYID 1
 #include "keydb.c"