From 1da99396dc65993ba34ac0370ca5d6acda6a3322 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 18 Mar 2018 07:02:37 -0400 Subject: [PATCH] Add support for gdbm-1.14. As of gdbm-1.14, 'gdbm_errno' no longer exists as a binary interface. It has been replaced by 'gdbm_errno_location', a function that returns int*. We now use this new interface if it's available. --- gdbm.scm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/gdbm.scm b/gdbm.scm index b92992f..4d38cc3 100644 --- a/gdbm.scm +++ b/gdbm.scm @@ -17,6 +17,9 @@ ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . +;; Modified by Mark H Weaver in March 2018 to support +;; gdbm-1.14 with its new 'gdbm_errno_location' interface. + (define-module (gdbm) #:use-module (system foreign) #:use-module (rnrs bytevectors) @@ -151,10 +154,21 @@ ;;; errors -(define %errno (dynamic-pointer "gdbm_errno" libgdbm)) +(define %list-int + (list int)) + +(define (dereference-int ptr) + (apply (lambda (errno) errno) + (parse-c-struct ptr %list-int))) + +(define %errno-location + (or (false-if-exception + (let ((func (dynamic-func "gdbm_errno_location" libgdbm))) + (pointer->procedure '* func '()))) + (const (dynamic-pointer "gdbm_errno" libgdbm)))) (define (gdbm-errno) - (pointer-address (dereference-pointer %errno))) + (dereference-int (%errno-location))) (define (gdbm-error) (error (pointer->string (%gdbm-strerror (gdbm-errno))))) -- 2.16.2 id' value='31def9a9df583dd27f8604302700ff48368c43f3'/>
AgeCommit message (Expand)Author
2020-04-10installer: tests: Don't install to a CD/DVD....* gnu/installer/tests.scm (choose-partitioning): Use 'find' to select the disk. Ludovic Courtès
2020-03-26installer: tests: Use a filter to select desktop-environments....* gnu/installer/tests.scm (choose-services): Turn desktop-environments list into a choose-desktop-environment procedure. This way, it is easier to select all desktop-environments or none, in the same way as choose-network-service? and choose-network-management-tool? arguments. Mathieu Othacehe
2020-03-05tests: install: Add "gui-installed-os"....* gnu/installer/tests.scm: New file. * gnu/local.mk (INSTALLER_MODULES): Add it. * gnu/tests/install.scm (run-install): Add #:gui-test. Add (gnu installer tests) to the marionette imported modules. Honor GUI-TEST. Check whether SCRIPT is true. (%root-password, %syslog-conf): New variable. (operating-system-with-console-syslog, gui-test-program) (guided-installation-test): New procedures. (%extra-packages, installation-os-for-gui-tests) (%test-gui-installed-os): New variable. Ludovic Courtès