From 66ce47e30a70feb628696a7410c92b957d757fde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Thu, 25 Jan 2018 21:53:32 +0100 Subject: [PATCH] gdbm: patch over an ABI change in version 1.14 --- extra/gdbm/ffi/ffi.factor | 3 +++ extra/gdbm/gdbm.factor | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/extra/gdbm/ffi/ffi.factor b/extra/gdbm/ffi/ffi.factor index 4d1117b55d..e6a1f9a2aa 100755 --- a/extra/gdbm/ffi/ffi.factor +++ b/extra/gdbm/ffi/ffi.factor @@ -42,6 +42,9 @@ FUNCTION: int gdbm_exists ( GDBM_FILE dbf, datum key ) FUNCTION: int gdbm_setopt ( GDBM_FILE dbf, int option, int* value, int size ) FUNCTION: int gdbm_fdesc ( GDBM_FILE dbf ) +! Removed in gdbm 1.14 C-GLOBAL: int gdbm_errno +! Added in gdbm 1.14 +FUNCTION: int *gdbm_errno_location ( ) FUNCTION: c-string gdbm_strerror ( int errno ) diff --git a/extra/gdbm/gdbm.factor b/extra/gdbm/gdbm.factor index b7573072a5..f92d243a56 100644 --- a/extra/gdbm/gdbm.factor +++ b/extra/gdbm/gdbm.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2010 Dmitry Shubin. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.c-types alien.data alien.destructors -alien.enums alien.syntax classes.struct combinators destructors -fry gdbm.ffi io.backend kernel libc locals math namespaces +alien.enums alien.syntax classes.struct combinators continuations +destructors fry gdbm.ffi io.backend kernel libc locals math namespaces sequences serialize strings ; IN: gdbm @@ -41,10 +41,12 @@ ENUM: gdbm-error gdbm-option-already-set gdbm-illegal-option ; - enum throw ; +: gdbm-errno ( -- n ) + [ gdbm_errno ] [ drop gdbm_errno_location int deref ] recover ; + +: gdbm-throw ( -- * ) gdbm-errno gdbm-error number>enum throw ; : check-error ( ret -- ) 0 = [ gdbm-throw ] unless ;