#include <string.h>
#include <unistd.h>
+#include "charfuncs.h"
#include "keydb.h"
#include "keyid.h"
#include "keystructs.h"
#include "onak-conf.h"
#include "parsekey.h"
-/**
- * keydb_fetchchar - Fetches a char from a file.
- */
-static int keydb_fetchchar(void *fd, size_t count, unsigned char *c)
-{
- return !(read( *(int *) fd, c, count));
-}
-
-/**
- * keydb_putchar - Puts a char to a file.
- */
-static int keydb_putchar(void *fd, size_t count, unsigned char *c)
-{
- return !(write( *(int *) fd, c, count));
-}
-
/**
* initdb - Initialize the key database.
*
char keyfile[1024];
int fd = -1;
- snprintf(keyfile, 1023, "%s/0x%llX", config.file_dbpath,
+ snprintf(keyfile, 1023, "%s/0x%llX", config.db_dir,
keyid & 0xFFFFFFFF);
fd = open(keyfile, O_RDONLY); // | O_SHLOCK);
if (fd > -1) {
- read_openpgp_stream(keydb_fetchchar, &fd, &packets);
+ read_openpgp_stream(file_fetchchar, &fd, &packets);
parse_keys(packets, publickey);
+ free_packet_list(packets);
+ packets = NULL;
close(fd);
}
char keyfile[1024];
int fd = -1;
- snprintf(keyfile, 1023, "%s/0x%llX", config.file_dbpath,
+ snprintf(keyfile, 1023, "%s/0x%llX", config.db_dir,
get_keyid(publickey) & 0xFFFFFFFF);
fd = open(keyfile, O_WRONLY | O_CREAT, 0664); // | O_EXLOCK);
flatten_publickey(publickey, &packets, &list_end);
publickey -> next = next;
- write_openpgp_stream(keydb_putchar, &fd, packets);
+ write_openpgp_stream(file_putchar, &fd, packets);
close(fd);
+ free_packet_list(packets);
+ packets = NULL;
}
return (fd > -1);
{
char keyfile[1024];
- snprintf(keyfile, 1023, "%s/0x%llX", config.file_dbpath,
+ snprintf(keyfile, 1023, "%s/0x%llX", config.db_dir,
keyid & 0xFFFFFFFF);
return unlink(keyfile);