#endif /* WE_DONT_NEED_QUADS */
#endif /* HAVE_INTTYPES_H */
#endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) */
-#include DB_H_PATH /* Berkeley db's header file */
+#include DB_H_FILE /* Berkeley db's header file */
#ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1
#endif /* DB_VERSION_MAJOR */
Lisp_Object Qdatabasep;
-struct Lisp_Database;
-typedef struct Lisp_Database Lisp_Database;
-
typedef struct
{
Lisp_Object (*get_subtype) (Lisp_Database *);
#define XDATABASE(x) XRECORD (x, database, Lisp_Database)
#define XSETDATABASE(x, p) XSETRECORD (x, p, database)
#define DATABASEP(x) RECORDP (x, database)
-#define GC_DATABASEP(x) GC_RECORDP (x, database)
#define CHECK_DATABASE(x) CHECK_RECORD (x, database)
#define CONCHECK_DATABASE(x) CONCHECK_RECORD (x, database)
#define DATABASE_LIVE_P(x) (x->live_p)
static Lisp_Database *
allocate_database (void)
{
- Lisp_Database *db = alloc_lcrecord_type (Lisp_Database, lrecord_database);
+ Lisp_Database *db = alloc_lcrecord_type (Lisp_Database, &lrecord_database);
db->fname = Qnil;
db->live_p = 0;
}
static Lisp_Object
-mark_database (Lisp_Object obj, void (*markobj) (Lisp_Object))
+mark_database (Lisp_Object object)
{
- Lisp_Database *db = XDATABASE (obj);
-
- markobj (db->fname);
- return Qnil;
+ Lisp_Database *db = XDATABASE (object);
+ return db->fname;
}
static void
if (for_disksave)
{
- Lisp_Object obj;
- XSETDATABASE (obj, db);
+ Lisp_Object object;
+ XSETDATABASE (object, db);
signal_simple_error
- ("Can't dump an emacs containing database objects", obj);
+ ("Can't dump an emacs containing database objects", object);
}
db->funcs->close (db);
}
DEFINE_LRECORD_IMPLEMENTATION ("database", database,
mark_database, print_database,
- finalize_database, 0, 0,
+ finalize_database, 0, 0, 0,
Lisp_Database);
DEFUN ("close-database", Fclose_database, 1, 1, 0, /*
}
DEFUN ("database-live-p", Fdatabase_live_p, 1, 1, 0, /*
-Return t if OBJ is an active database.
+Return t if OBJECT is an active database.
*/
- (obj))
+ (object))
{
- return DATABASEP (obj) && DATABASE_LIVE_P (XDATABASE (obj)) ? Qt : Qnil;
+ return DATABASEP (object) && DATABASE_LIVE_P (XDATABASE (object)) ?
+ Qt : Qnil;
}
DEFUN ("database-file-name", Fdatabase_file_name, 1, 1, 0, /*
}
DEFUN ("databasep", Fdatabasep, 1, 1, 0, /*
-Return t if OBJ is a database.
+Return t if OBJECT is a database.
*/
- (obj))
+ (object))
{
- return DATABASEP (obj) ? Qt : Qnil;
+ return DATABASEP (object) ? Qt : Qnil;
}
#ifdef HAVE_DBM
status == 0;
status = dbp->seq (dbp, &keydatum, &valdatum, R_NEXT))
{
- /* ### Needs mule-izing */
+ /* #### Needs mule-izing */
key = make_string ((Bufbyte *) keydatum.data, keydatum.size);
val = make_string ((Bufbyte *) valdatum.data, valdatum.size);
call2 (func, key, val);
}
#else
- DBC *dbcp;
+ {
+ DBC *dbcp;
- status = dbp->cursor (dbp, NULL, &dbcp);
- for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST);
- status == 0;
- status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT))
- {
- /* ### Needs mule-izing */
- key = make_string ((Bufbyte *) keydatum.data, keydatum.size);
- val = make_string ((Bufbyte *) valdatum.data, valdatum.size);
- call2 (func, key, val);
- }
- dbcp->c_close (dbcp);
+#if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+ status = dbp->cursor (dbp, NULL, &dbcp, 0);
+#else
+ status = dbp->cursor (dbp, NULL, &dbcp);
+#endif
+ for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST);
+ status == 0;
+ status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT))
+ {
+ /* #### Needs mule-izing */
+ key = make_string ((Bufbyte *) keydatum.data, keydatum.size);
+ val = make_string ((Bufbyte *) valdatum.data, valdatum.size);
+ call2 (func, key, val);
+ }
+ dbcp->c_close (dbcp);
+ }
#endif /* DB_VERSION_MAJOR */
}
file = Fexpand_file_name (file, Qnil);
UNGCPRO;
- GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename);
+ TO_EXTERNAL_FORMAT (LISP_STRING, file,
+ C_STRING_ALLOCA, filename,
+ Qfile_name);
if (NILP (access_))
{
void
syms_of_database (void)
{
+ INIT_LRECORD_IMPLEMENTATION (database);
+
defsymbol (&Qdatabasep, "databasep");
#ifdef HAVE_DBM
defsymbol (&Qdbm, "dbm");