aboutsummaryrefslogtreecommitdiffstats
path: root/dbutil.scm
diff options
context:
space:
mode:
authorThomas Bushnell, BSG <tb@debian.org>2005-11-02 14:55:21 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:32 -0800
commit34c54a22ff7818bb8b38ef4d9c87dbbcb221ba73 (patch)
tree1189d06a81277bcf8539b0260a69a19f6038effb /dbutil.scm
parent611b3db17894e5fdc0db3d49eaf6743d27b44233 (diff)
parent5145dd3aa0c02c9fc496d1432fc4410674206e1d (diff)
downloadslib-34c54a22ff7818bb8b38ef4d9c87dbbcb221ba73.tar.gz
slib-34c54a22ff7818bb8b38ef4d9c87dbbcb221ba73.zip
Import Debian changes 3a2-1debian/3a2-1
slib (3a2-1) unstable; urgency=low * New upstream release. * Acknowledge NMU. (Closes: #281809) * Makefile: Don't hack Makefile; use rules instead. * debian/rules: Set on make invocations: prefix, htmldir, TEXI2HTML. * debian/rules (clean): Clean more stuff here. * Makefile: Comment out old rule for $(htmldir)slib_toc.html. Instead, specify directly that the texi2html invocation produces that file. * debian/rules (binary-indep): Find web files in slib subdir. * debian/control (Build-Depends-Indep): Go back to using scm.
Diffstat (limited to 'dbutil.scm')
-rw-r--r--dbutil.scm26
1 files changed, 16 insertions, 10 deletions
diff --git a/dbutil.scm b/dbutil.scm
index 5e5c86d..5df7b49 100644
--- a/dbutil.scm
+++ b/dbutil.scm
@@ -113,11 +113,13 @@
(if (null? *base-table-implementations*) (require 'alist-table))
(cond ((and (not (and mutable? (not certificate)))
(loop *base-table-implementations*)))
- ((memq 'alist-table *base-table-implementations*) #f)
- ((let ()
- (require 'alist-table)
- (loop (list (car *base-table-implementations*)))))
- (else #f)))
+ ((and (not (memq 'alist-table *base-table-implementations*))
+ (let ()
+ (require 'alist-table)
+ (loop (list (car *base-table-implementations*))))))
+ (else
+ (and certificate (file-unlock! filename certificate))
+ #f)))
(define (mdbm:open-type filename type mutable?)
(require type)
@@ -126,7 +128,9 @@
(let* ((sys (cadr (assq type *base-table-implementations*)))
(open (and sys (sys 'open-database)))
(ndb (and open (open filename mutable?))))
- (and ndb (list ndb 1 type certificate))))))
+ (cond (ndb (list ndb 1 type certificate))
+ (else (and certificate (file-unlock! filename certificate))
+ #f))))))
;;@args filename base-table-type
;;@1 should be a string naming a file; or @code{#f}. @2 must be a
@@ -302,14 +306,16 @@
(define certificate #f)
(and entry (set! rdb (car entry)))
(and (procedure? rdb)
- (set! certificate (or (and entry (cadddr entry))
- (and (rdb 'filename)
- (file-lock! (rdb 'filename))))))
+ (set! certificate (and entry (cadddr entry))))
(cond ((and entry (not (eqv? 1 (cadr entry))))
(set-car! (cdr entry) (+ -1 (cadr entry)))
#f)
- ((or (not certificate) (not (procedure? rdb)))
+ ((not (procedure? rdb))
+ (slib:warn 'close-database 'not 'procedure? rdb)
#f)
+ ((not certificate)
+ (and dbs (set! dbs (mdbm:remove-entry dbs entry)))
+ #t)
(else
(let* ((filename (rdb 'filename))
(dbclose (rdb 'close-database))