X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fdatabase.c;h=9cf085f8d9d0df9ecbe3599767d374517b6f1ea5;hb=f17de6fca511ac824ce47a64a740e3b7a3d0c75e;hp=8450333ef986afdcce84f20aebbb06949f20c514;hpb=d3dd71489ab2730d79536ebdc3c56cca82766e9d;p=chise%2Fxemacs-chise.git- diff --git a/src/database.c b/src/database.c index 8450333..9cf085f 100644 --- a/src/database.c +++ b/src/database.c @@ -53,7 +53,7 @@ typedef uint64_t u_int64_t; #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 */ @@ -75,9 +75,6 @@ Lisp_Object Vdatabase_coding_system; Lisp_Object Qdatabasep; -struct Lisp_Database; -typedef struct Lisp_Database Lisp_Database; - typedef struct { Lisp_Object (*get_subtype) (Lisp_Database *); @@ -113,7 +110,6 @@ struct 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) @@ -128,7 +124,7 @@ struct Lisp_Database 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; @@ -148,12 +144,10 @@ allocate_database (void) } 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 @@ -184,18 +178,18 @@ finalize_database (void *header, int for_disksave) 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, /* @@ -232,11 +226,12 @@ Return the subtype of database DATABASE, if any. } 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, /* @@ -250,11 +245,11 @@ Return the filename associated with the database DATABASE. } 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 @@ -492,7 +487,7 @@ berkdb_map (Lisp_Database *db, Lisp_Object func) 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); @@ -505,12 +500,12 @@ berkdb_map (Lisp_Database *db, Lisp_Object func) status = dbp->cursor (dbp, NULL, &dbcp, 0); #else status = dbp->cursor (dbp, NULL, &dbcp); -#endif +#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 */ + /* #### Needs mule-izing */ key = make_string ((Bufbyte *) keydatum.data, keydatum.size); val = make_string ((Bufbyte *) valdatum.data, valdatum.size); call2 (func, key, val); @@ -584,7 +579,9 @@ and defaults to 0755. 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_)) { @@ -763,6 +760,8 @@ each key and value in the database. void syms_of_database (void) { + INIT_LRECORD_IMPLEMENTATION (database); + defsymbol (&Qdatabasep, "databasep"); #ifdef HAVE_DBM defsymbol (&Qdbm, "dbm");