remove db3 library, if you really want it, get it from e-d-s
2003-11-18 JP Rosevear <jpr@ximian.com> * Makefile.am: remove db3 library, if you really want it, get it from e-d-s svn path=/trunk/; revision=23424
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2003-11-18 JP Rosevear <jpr@ximian.com>
|
||||
|
||||
* Makefile.am: remove db3 library, if you really want it, get it
|
||||
from e-d-s
|
||||
|
||||
2003-11-14 JP Rosevear <jpr@ximian.com>
|
||||
|
||||
* Makefile.am: don't build the e-source stuff anymore, its in
|
||||
|
@ -1,6 +1,5 @@
|
||||
eutilincludedir = $(privincludedir)/e-util
|
||||
econdincludedir = $(privincludedir)/e-conduit
|
||||
edb3includedir = $(privincludedir)/e-db3util
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir) \
|
||||
@ -9,11 +8,10 @@ INCLUDES = \
|
||||
-DG_LOG_DOMAIN=\"e-utils\" \
|
||||
-DG_DISABLE_DEPRECATED \
|
||||
-DGTK_DISABLE_DEPRECATED \
|
||||
$(DB3_CFLAGS) \
|
||||
$(GNOME_PILOT_CFLAGS) \
|
||||
$(E_UTIL_CFLAGS)
|
||||
|
||||
privlib_LTLIBRARIES = libeutil.la libedb3util.la libeconduit.la
|
||||
privlib_LTLIBRARIES = libeutil.la libeconduit.la
|
||||
|
||||
eutilinclude_HEADERS = \
|
||||
e-account-list.h \
|
||||
@ -114,18 +112,6 @@ EXTRA_DIST = \
|
||||
ChangeLog.pre-1-4 \
|
||||
e-util-marshal.list
|
||||
|
||||
edb3include_HEADERS = \
|
||||
e-db3-utils.h \
|
||||
e-dbhash.h
|
||||
|
||||
libedb3util_la_SOURCES = \
|
||||
$(edb3include_HEADERS) \
|
||||
e-db3-utils.c \
|
||||
e-dbhash.c
|
||||
|
||||
libedb3util_la_LIBADD = \
|
||||
$(DB3_LDADD)
|
||||
|
||||
BUILT_SOURCES = $(MARSHAL_GENERATED)
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
|
@ -1,184 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "e-db3-utils.h"
|
||||
|
||||
#include <db.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <libgnome/gnome-util.h>
|
||||
|
||||
#if DB_VERSION_MAJOR != 3 || \
|
||||
DB_VERSION_MINOR != 1 || \
|
||||
DB_VERSION_PATCH != 17
|
||||
#error Including wrong DB3. Need libdb 3.1.17.
|
||||
#endif
|
||||
|
||||
static char *
|
||||
get_check_filename (const char *filename)
|
||||
{
|
||||
return g_strdup_printf ("%s-upgrading", filename);
|
||||
}
|
||||
|
||||
static char *
|
||||
get_copy_filename (const char *filename)
|
||||
{
|
||||
return g_strdup_printf ("%s-copy", filename);
|
||||
}
|
||||
|
||||
static int
|
||||
cp_file (const char *src, const char *dest)
|
||||
{
|
||||
int i;
|
||||
int o;
|
||||
char buffer[1024];
|
||||
int length;
|
||||
int place;
|
||||
|
||||
i = open (src, O_RDONLY);
|
||||
if (i == -1)
|
||||
return -1;
|
||||
o = creat (dest, S_IREAD | S_IWRITE);
|
||||
if (o == -1) {
|
||||
close (i);
|
||||
return -1;
|
||||
}
|
||||
while (1) {
|
||||
length = read (i, &buffer, sizeof (buffer));
|
||||
|
||||
if (length == 0)
|
||||
break;
|
||||
|
||||
if (length == -1) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
else {
|
||||
close (i);
|
||||
close (o);
|
||||
unlink (dest);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
place = 0;
|
||||
while (length != 0) {
|
||||
int count;
|
||||
count = write (o, buffer + place, length);
|
||||
if (count == -1) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
else {
|
||||
close (i);
|
||||
close (o);
|
||||
unlink (dest);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
length -= count;
|
||||
place += count;
|
||||
}
|
||||
}
|
||||
if (close (i))
|
||||
return -1;
|
||||
if (close (o))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
touch_file (const char *file)
|
||||
{
|
||||
int o;
|
||||
o = creat (file, S_IREAD | S_IWRITE);
|
||||
if (o == -1)
|
||||
return -1;
|
||||
|
||||
if (close (o) == -1)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
resume_upgrade (const char *filename, const char *copy_filename, const char *check_filename)
|
||||
{
|
||||
DB *db;
|
||||
int ret_val;
|
||||
|
||||
ret_val = db_create (&db, NULL, 0);
|
||||
|
||||
if (ret_val == 0)
|
||||
ret_val = cp_file (copy_filename, filename);
|
||||
|
||||
if (ret_val == 0)
|
||||
ret_val = db->upgrade (db, filename, 0);
|
||||
|
||||
if (ret_val == 0)
|
||||
ret_val = unlink (check_filename);
|
||||
if (ret_val == 0)
|
||||
ret_val = unlink (copy_filename);
|
||||
|
||||
db->close (db, 0);
|
||||
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
int
|
||||
e_db3_utils_maybe_recover (const char *filename)
|
||||
{
|
||||
int ret_val = 0;
|
||||
char *copy_filename;
|
||||
char *check_filename;
|
||||
|
||||
copy_filename = get_copy_filename (filename);
|
||||
check_filename = get_check_filename (filename);
|
||||
|
||||
if (g_file_exists (check_filename)) {
|
||||
ret_val = resume_upgrade(filename, copy_filename, check_filename);
|
||||
} else if (g_file_exists (copy_filename)) {
|
||||
unlink (copy_filename);
|
||||
}
|
||||
|
||||
g_free (copy_filename);
|
||||
g_free (check_filename);
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
int
|
||||
e_db3_utils_upgrade_format (const char *filename)
|
||||
{
|
||||
char *copy_filename;
|
||||
char *check_filename;
|
||||
DB *db;
|
||||
int ret_val;
|
||||
|
||||
ret_val = db_create (&db, NULL, 0);
|
||||
if (ret_val != 0)
|
||||
return ret_val;
|
||||
|
||||
copy_filename = get_copy_filename (filename);
|
||||
check_filename = get_check_filename (filename);
|
||||
|
||||
ret_val = cp_file (filename, copy_filename);
|
||||
|
||||
if (ret_val == 0)
|
||||
ret_val = touch_file (check_filename);
|
||||
if (ret_val == 0)
|
||||
ret_val = db->upgrade (db, filename, 0);
|
||||
if (ret_val == 0)
|
||||
ret_val = unlink (check_filename);
|
||||
|
||||
if (ret_val == 0)
|
||||
ret_val = unlink (copy_filename);
|
||||
|
||||
db->close (db, 0);
|
||||
|
||||
g_free (check_filename);
|
||||
g_free (copy_filename);
|
||||
return ret_val;
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* db3 utils.
|
||||
*
|
||||
* Author:
|
||||
* Chris Lahey <clahey@ximian.com>
|
||||
*
|
||||
* Copyright 2001, Ximian, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __E_DB3_UTILS_H__
|
||||
#define __E_DB3_UTILS_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#pragma }
|
||||
#endif /* __cplusplus */
|
||||
|
||||
int e_db3_utils_maybe_recover (const char *filename);
|
||||
int e_db3_utils_upgrade_format (const char *filename);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* ! __E_DB3_UTILS_H__ */
|
||||
|
@ -1,227 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Author:
|
||||
* JP Rosevear (jpr@ximian.com)
|
||||
*
|
||||
* Copyright 2000, Ximian, Inc.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "e-dbhash.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <db.h>
|
||||
#include "md5-utils.h"
|
||||
|
||||
#if DB_VERSION_MAJOR != 3 || \
|
||||
DB_VERSION_MINOR != 1 || \
|
||||
DB_VERSION_PATCH != 17
|
||||
#error Including wrong DB3. Need libdb 3.1.17.
|
||||
#endif
|
||||
|
||||
struct _EDbHashPrivate
|
||||
{
|
||||
DB *db;
|
||||
};
|
||||
|
||||
EDbHash *
|
||||
e_dbhash_new (const char *filename)
|
||||
{
|
||||
EDbHash *edbh;
|
||||
DB *db;
|
||||
int rv;
|
||||
|
||||
int major, minor, patch;
|
||||
|
||||
db_version (&major, &minor, &patch);
|
||||
|
||||
if (major != 3 ||
|
||||
minor != 1 ||
|
||||
patch != 17) {
|
||||
g_warning ("Wrong version of libdb.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Attempt to open the database */
|
||||
rv = db_create (&db, NULL, 0);
|
||||
if (rv != 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rv = db->open (db, filename, NULL, DB_HASH, 0, 0666);
|
||||
if (rv != 0) {
|
||||
rv = db->open (db, filename, NULL, DB_HASH, DB_CREATE, 0666);
|
||||
|
||||
if (rv != 0)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
edbh = g_new (EDbHash, 1);
|
||||
edbh->priv = g_new (EDbHashPrivate, 1);
|
||||
edbh->priv->db = db;
|
||||
|
||||
return edbh;
|
||||
}
|
||||
|
||||
static void
|
||||
string_to_dbt(const char *str, DBT *dbt)
|
||||
{
|
||||
memset (dbt, 0, sizeof (DBT));
|
||||
dbt->data = (void*)str;
|
||||
dbt->size = strlen (str) + 1;
|
||||
}
|
||||
|
||||
static void
|
||||
md5_to_dbt(const char str[16], DBT *dbt)
|
||||
{
|
||||
memset (dbt, 0, sizeof (DBT));
|
||||
dbt->data = (void*)str;
|
||||
dbt->size = 16;
|
||||
}
|
||||
|
||||
void
|
||||
e_dbhash_add (EDbHash *edbh, const gchar *key, const gchar *data)
|
||||
{
|
||||
DB *db;
|
||||
DBT dkey;
|
||||
DBT ddata;
|
||||
guchar local_hash[16];
|
||||
|
||||
g_return_if_fail (edbh != NULL);
|
||||
g_return_if_fail (edbh->priv != NULL);
|
||||
g_return_if_fail (edbh->priv->db != NULL);
|
||||
g_return_if_fail (key != NULL);
|
||||
g_return_if_fail (data != NULL);
|
||||
|
||||
db = edbh->priv->db;
|
||||
|
||||
/* Key dbt */
|
||||
string_to_dbt (key, &dkey);
|
||||
|
||||
/* Data dbt */
|
||||
md5_get_digest (data, strlen (data), local_hash);
|
||||
md5_to_dbt (local_hash, &ddata);
|
||||
|
||||
/* Add to database */
|
||||
db->put (db, NULL, &dkey, &ddata, 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_dbhash_remove (EDbHash *edbh, const char *key)
|
||||
{
|
||||
DB *db;
|
||||
DBT dkey;
|
||||
|
||||
g_return_if_fail (edbh != NULL);
|
||||
g_return_if_fail (edbh->priv != NULL);
|
||||
g_return_if_fail (key != NULL);
|
||||
|
||||
db = edbh->priv->db;
|
||||
|
||||
/* Key dbt */
|
||||
string_to_dbt (key, &dkey);
|
||||
|
||||
/* Remove from database */
|
||||
db->del (db, NULL, &dkey, 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_dbhash_foreach_key (EDbHash *edbh, EDbHashFunc func, gpointer user_data)
|
||||
{
|
||||
DB *db;
|
||||
DBT dkey;
|
||||
DBT ddata;
|
||||
DBC *dbc;
|
||||
int db_error = 0;
|
||||
|
||||
g_return_if_fail (edbh != NULL);
|
||||
g_return_if_fail (edbh->priv != NULL);
|
||||
g_return_if_fail (func != NULL);
|
||||
|
||||
db = edbh->priv->db;
|
||||
|
||||
db_error = db->cursor (db, NULL, &dbc, 0);
|
||||
|
||||
if (db_error != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
memset(&dkey, 0, sizeof(DBT));
|
||||
memset(&ddata, 0, sizeof(DBT));
|
||||
db_error = dbc->c_get(dbc, &dkey, &ddata, DB_FIRST);
|
||||
|
||||
while (db_error == 0) {
|
||||
(*func) ((const char *)dkey.data, user_data);
|
||||
|
||||
db_error = dbc->c_get(dbc, &dkey, &ddata, DB_NEXT);
|
||||
}
|
||||
dbc->c_close (dbc);
|
||||
}
|
||||
|
||||
EDbHashStatus
|
||||
e_dbhash_compare (EDbHash *edbh, const char *key, const char *compare_data)
|
||||
{
|
||||
DB *db;
|
||||
DBT dkey;
|
||||
DBT ddata;
|
||||
guchar compare_hash[16];
|
||||
|
||||
g_return_val_if_fail (edbh != NULL, FALSE);
|
||||
g_return_val_if_fail (edbh->priv != NULL, FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
g_return_val_if_fail (compare_hash != NULL, FALSE);
|
||||
|
||||
db = edbh->priv->db;
|
||||
|
||||
/* Key dbt */
|
||||
string_to_dbt (key, &dkey);
|
||||
|
||||
/* Lookup in database */
|
||||
memset (&ddata, 0, sizeof (DBT));
|
||||
db->get (db, NULL, &dkey, &ddata, 0);
|
||||
|
||||
/* Compare */
|
||||
if (ddata.data) {
|
||||
md5_get_digest (compare_data, strlen (compare_data), compare_hash);
|
||||
|
||||
if (memcmp (ddata.data, compare_hash, sizeof (guchar) * 16))
|
||||
return E_DBHASH_STATUS_DIFFERENT;
|
||||
} else {
|
||||
return E_DBHASH_STATUS_NOT_FOUND;
|
||||
}
|
||||
|
||||
return E_DBHASH_STATUS_SAME;
|
||||
}
|
||||
|
||||
void
|
||||
e_dbhash_write (EDbHash *edbh)
|
||||
{
|
||||
DB *db;
|
||||
|
||||
g_return_if_fail (edbh != NULL);
|
||||
g_return_if_fail (edbh->priv != NULL);
|
||||
|
||||
db = edbh->priv->db;
|
||||
|
||||
/* Flush database to disk */
|
||||
db->sync (db, 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_dbhash_destroy (EDbHash *edbh)
|
||||
{
|
||||
DB *db;
|
||||
|
||||
g_return_if_fail (edbh != NULL);
|
||||
g_return_if_fail (edbh->priv != NULL);
|
||||
|
||||
db = edbh->priv->db;
|
||||
|
||||
/* Close datbase */
|
||||
db->close (db, 0);
|
||||
|
||||
g_free (edbh->priv);
|
||||
g_free (edbh);
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Writes hashes that go to/from disk in db form. Hash keys are strings
|
||||
*
|
||||
* Author:
|
||||
* JP Rosevear (jpr@ximian.com)
|
||||
*
|
||||
* Copyright 2000, Ximian, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __E_DBHASH_H__
|
||||
#define __E_DBHASH_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
typedef enum {
|
||||
E_DBHASH_STATUS_SAME,
|
||||
E_DBHASH_STATUS_DIFFERENT,
|
||||
E_DBHASH_STATUS_NOT_FOUND,
|
||||
} EDbHashStatus;
|
||||
|
||||
typedef struct _EDbHash EDbHash;
|
||||
typedef struct _EDbHashPrivate EDbHashPrivate;
|
||||
|
||||
struct _EDbHash
|
||||
{
|
||||
EDbHashPrivate *priv;
|
||||
};
|
||||
|
||||
typedef void (*EDbHashFunc) (const char *key, gpointer user_data);
|
||||
|
||||
EDbHash *e_dbhash_new (const char *filename);
|
||||
|
||||
void e_dbhash_add (EDbHash *edbh, const char *key, const char *data);
|
||||
void e_dbhash_remove (EDbHash *edbh, const char *key);
|
||||
|
||||
EDbHashStatus e_dbhash_compare (EDbHash *edbh, const char *key, const char *compare_data);
|
||||
void e_dbhash_foreach_key (EDbHash *edbh, EDbHashFunc func, gpointer user_data);
|
||||
|
||||
void e_dbhash_write (EDbHash *edbh);
|
||||
|
||||
void e_dbhash_destroy (EDbHash *edbh);
|
||||
|
||||
#endif /* ! __E_DBHASH_H__ */
|
||||
|
Reference in New Issue
Block a user