#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <db.h>
#define DATABASE "access.db"
typedef struct {
char address[80];
char phone[30];
} addrinfo;
int main(void)
{
DB *db;
DBT key, data;
int ret, t_ret;
addrinfo info, *addrp;
if (! (db = dbopen(DATABASE, O_CREAT|O_RDWR, 0644, DB_HASH, NULL))) {
fprintf(stderr, "Couldn't initialize database!\n");
exit(1);
}
strcpy(info.address, "Kukvagen 54");
strcpy(info.phone, "12345");
memset(&key, 0, sizeof(key));
memset(&data, 0, sizeof(data));
key.data = "minnies";
key.size = sizeof("minnies");
data.data = &info;
data.size = sizeof(info);
if (! (ret = db->put(db, &key, &data, 0)))
printf("db: %s: key stored.\n", (char *)key.data);
else {
perror("DB->put");
goto err;
}
if (! (ret = db->get(db, &key, &data, 0))) {
addrp = (addrinfo *)data.data;
printf("db: %s: key retrieved: data was %s, %s.\n",
(char *)key.data, addrp->address, addrp->phone);
} else {
if (ret > 0)
fprintf(stderr, "Key not found\n");
else
perror("DB->get");
goto err;
}
if (! (ret = db->del(db, &key, 0)))
printf("db: %s: key was deleted.\n", (char *)key.data);
else {
if (ret > 0)
fprintf(stderr, "Key not found\n");
else
perror("DB->del");
goto err;
}
if (! (ret = db->get(db, &key, &data, 0)))
printf("db: %s: key retrieved: data was %s.\n",
(char *)key.data, (char *)data.data);
else {
if (ret > 0)
fprintf(stderr, "Key not found\n");
else
perror("DB->get");
}
err:
if ((t_ret = db->close(db)) != 0 && ret == 0)
ret = t_ret;
exit(ret);
}