From cb361af8b48b6436ff9a1e34def7d0cafa272133 Mon Sep 17 00:00:00 2001 From: Dmitry Shubin Date: Thu, 17 Jun 2010 03:51:28 +0400 Subject: [PATCH] gdbm: implement gdbm-setopt --- extra/gdbm/gdbm.factor | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/extra/gdbm/gdbm.factor b/extra/gdbm/gdbm.factor index 28aa9b35f2..2f052a3872 100644 --- a/extra/gdbm/gdbm.factor +++ b/extra/gdbm/gdbm.factor @@ -2,7 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.data alien.destructors assocs biassocs classes.struct combinators destructors gdbm.ffi io.backend -kernel libc literals math namespaces sequences serialize strings ; +kernel libc literals locals math namespaces sequences serialize +strings ; IN: gdbm TUPLE: gdbm @@ -125,7 +126,19 @@ PRIVATE> [ dbf swap object>datum gdbm_exists c-bool> ] with-destructors ; -! : gdbm-setopt ( option value size -- ret ) ; + ( size ptr ) + value ptr 0 int set-alien-value + dbf option ptr size gdbm_setopt check-error + ] with-destructors ; + +PRIVATE> + +: gdbm-setopt ( option value -- ) + over GDBM_CACHESIZE = [ >c-bool ] unless (gdbm-setopt) ; : gdbm-fdesc ( -- desc ) dbf gdbm_fdesc ;