comparison src/database.c @ 440:8de8e3f6228a r21-2-28

Import from CVS: tag r21-2-28
author cvs
date Mon, 13 Aug 2007 11:33:38 +0200
parents 9d177e8d4150
children abe6d1db359e
comparison
equal deleted inserted replaced
439:357dd071b03c 440:8de8e3f6228a
73 Lisp_Object Vdatabase_coding_system; 73 Lisp_Object Vdatabase_coding_system;
74 #endif 74 #endif
75 75
76 Lisp_Object Qdatabasep; 76 Lisp_Object Qdatabasep;
77 77
78 struct Lisp_Database;
79 typedef struct Lisp_Database Lisp_Database;
80
81 typedef struct 78 typedef struct
82 { 79 {
83 Lisp_Object (*get_subtype) (Lisp_Database *); 80 Lisp_Object (*get_subtype) (Lisp_Database *);
84 Lisp_Object (*get_type) (Lisp_Database *); 81 Lisp_Object (*get_type) (Lisp_Database *);
85 Lisp_Object (*get) (Lisp_Database *, Lisp_Object); 82 Lisp_Object (*get) (Lisp_Database *, Lisp_Object);
487 #if DB_VERSION_MAJOR == 1 484 #if DB_VERSION_MAJOR == 1
488 for (status = dbp->seq (dbp, &keydatum, &valdatum, R_FIRST); 485 for (status = dbp->seq (dbp, &keydatum, &valdatum, R_FIRST);
489 status == 0; 486 status == 0;
490 status = dbp->seq (dbp, &keydatum, &valdatum, R_NEXT)) 487 status = dbp->seq (dbp, &keydatum, &valdatum, R_NEXT))
491 { 488 {
492 /* ### Needs mule-izing */ 489 /* #### Needs mule-izing */
493 key = make_string ((Bufbyte *) keydatum.data, keydatum.size); 490 key = make_string ((Bufbyte *) keydatum.data, keydatum.size);
494 val = make_string ((Bufbyte *) valdatum.data, valdatum.size); 491 val = make_string ((Bufbyte *) valdatum.data, valdatum.size);
495 call2 (func, key, val); 492 call2 (func, key, val);
496 } 493 }
497 #else 494 #else
500 497
501 #if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6 498 #if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
502 status = dbp->cursor (dbp, NULL, &dbcp, 0); 499 status = dbp->cursor (dbp, NULL, &dbcp, 0);
503 #else 500 #else
504 status = dbp->cursor (dbp, NULL, &dbcp); 501 status = dbp->cursor (dbp, NULL, &dbcp);
505 #endif 502 #endif
506 for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST); 503 for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST);
507 status == 0; 504 status == 0;
508 status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT)) 505 status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT))
509 { 506 {
510 /* ### Needs mule-izing */ 507 /* #### Needs mule-izing */
511 key = make_string ((Bufbyte *) keydatum.data, keydatum.size); 508 key = make_string ((Bufbyte *) keydatum.data, keydatum.size);
512 val = make_string ((Bufbyte *) valdatum.data, valdatum.size); 509 val = make_string ((Bufbyte *) valdatum.data, valdatum.size);
513 call2 (func, key, val); 510 call2 (func, key, val);
514 } 511 }
515 dbcp->c_close (dbcp); 512 dbcp->c_close (dbcp);
579 CHECK_STRING (file); 576 CHECK_STRING (file);
580 GCPRO2 (file, access_); 577 GCPRO2 (file, access_);
581 file = Fexpand_file_name (file, Qnil); 578 file = Fexpand_file_name (file, Qnil);
582 UNGCPRO; 579 UNGCPRO;
583 580
584 GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); 581 TO_EXTERNAL_FORMAT (LISP_STRING, file,
582 C_STRING_ALLOCA, filename,
583 Qfile_name);
585 584
586 if (NILP (access_)) 585 if (NILP (access_))
587 { 586 {
588 accessmask = O_RDWR | O_CREAT; 587 accessmask = O_RDWR | O_CREAT;
589 } 588 }