Mercurial > hg > xemacs-beta
diff src/database.c @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | b8cc9ab3f761 |
children | 41dbb7a9d5f2 |
line wrap: on
line diff
--- a/src/database.c Mon Aug 13 11:19:22 2007 +0200 +++ b/src/database.c Mon Aug 13 11:20:41 2007 +0200 @@ -53,7 +53,7 @@ #endif /* WE_DONT_NEED_QUADS */ #endif /* HAVE_INTTYPES_H */ #endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) */ -#include DB_H_FILE /* Berkeley db's header file */ +#include DB_H_PATH /* Berkeley db's header file */ #ifndef DB_VERSION_MAJOR # define DB_VERSION_MAJOR 1 #endif /* DB_VERSION_MAJOR */ @@ -75,6 +75,9 @@ Lisp_Object Qdatabasep; +struct Lisp_Database; +typedef struct Lisp_Database Lisp_Database; + typedef struct { Lisp_Object (*get_subtype) (Lisp_Database *); @@ -110,6 +113,7 @@ #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) @@ -144,10 +148,12 @@ } static Lisp_Object -mark_database (Lisp_Object obj) +mark_database (Lisp_Object obj, void (*markobj) (Lisp_Object)) { Lisp_Database *db = XDATABASE (obj); - return db->fname; + + markobj (db->fname); + return Qnil; } static void @@ -189,7 +195,7 @@ DEFINE_LRECORD_IMPLEMENTATION ("database", database, mark_database, print_database, - finalize_database, 0, 0, 0, + finalize_database, 0, 0, Lisp_Database); DEFUN ("close-database", Fclose_database, 1, 1, 0, /* @@ -486,7 +492,7 @@ 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); @@ -499,12 +505,12 @@ 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); @@ -578,9 +584,7 @@ file = Fexpand_file_name (file, Qnil); UNGCPRO; - TO_EXTERNAL_FORMAT (LISP_STRING, file, - C_STRING_ALLOCA, filename, - Qfile_name); + GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); if (NILP (access_)) { @@ -759,8 +763,6 @@ void syms_of_database (void) { - INIT_LRECORD_IMPLEMENTATION (database); - defsymbol (&Qdatabasep, "databasep"); #ifdef HAVE_DBM defsymbol (&Qdbm, "dbm");