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");