]> gitweb.factorcode.org Git - factor.git/commitdiff
gdbm: patch over an ABI change in version 1.14
authorBjörn Lindqvist <bjourne@gmail.com>
Thu, 25 Jan 2018 20:53:32 +0000 (21:53 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Sat, 27 Jan 2018 21:44:26 +0000 (22:44 +0100)
extra/gdbm/ffi/ffi.factor
extra/gdbm/gdbm.factor

index 4d1117b55debdcf77e65f13cf5c1f18b4c9e36b5..e6a1f9a2aa336031c1c5d72d72e15c5e62ea065d 100755 (executable)
@@ -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 )
index b7573072a5d5bb3785b6f304fab5eff23df83fb0..f92d243a56ec161bd63120007d443f679eb37f27 100644 (file)
@@ -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 ;
 
-
 <PRIVATE
 
-: gdbm-throw ( -- * ) gdbm_errno gdbm-error number>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 ;