Mercurial > hg > xemacs-beta
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 } |