Attached is a patch to port inotify to CHICKEN 6. I made sure tests are still
passing on C5 too.
Diego
From 1f682dad4e39fd9d61a75a4ad6b650c7b0fd52bc Mon Sep 17 00:00:00 2001
From: "Diego A. Mundo" <[email protected]>
Date: Fri, 4 Sep 2026 19:27:13 -0400
Subject: [PATCH] Port to CHICKEN 6
---
examples/fallkiste.scm | 2 +-
examples/reload.scm | 2 +-
examples/tailf.scm | 2 +-
examples/udisks-watch.scm | 2 +-
inotify-lolevel-module.scm | 8 ++++++--
inotify-lolevel.scm | 15 ++++++++++++++-
inotify-module.scm | 7 ++++++-
tests/run.scm | 2 +-
8 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/examples/fallkiste.scm b/examples/fallkiste.scm
index 9e52044..c2d1dfe 100644
--- a/examples/fallkiste.scm
+++ b/examples/fallkiste.scm
@@ -2,7 +2,7 @@
(cond-expand
(chicken-4
(use posix inotify scsh-process))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken base))
(import (chicken pathname))
(import (chicken process-context))
diff --git a/examples/reload.scm b/examples/reload.scm
index c53a0a6..33f16bb 100644
--- a/examples/reload.scm
+++ b/examples/reload.scm
@@ -2,7 +2,7 @@
(cond-expand
(chicken-4
(use inotify utils))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken base))
(import (chicken format))
(import (chicken io))
diff --git a/examples/tailf.scm b/examples/tailf.scm
index 92bb14e..116efc9 100644
--- a/examples/tailf.scm
+++ b/examples/tailf.scm
@@ -4,7 +4,7 @@
(cond-expand
(chicken-4
(use inotify utils))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken base))
(import (chicken file posix))
(import (chicken io))
diff --git a/examples/udisks-watch.scm b/examples/udisks-watch.scm
index e63617b..c3d48eb 100644
--- a/examples/udisks-watch.scm
+++ b/examples/udisks-watch.scm
@@ -2,7 +2,7 @@
(cond-expand
(chicken-4
(use irregex inotify scsh-process srfi-18))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken base))
(import (chicken format))
(import (chicken irregex))
diff --git a/inotify-lolevel-module.scm b/inotify-lolevel-module.scm
index 8e17d0b..2d63279 100644
--- a/inotify-lolevel-module.scm
+++ b/inotify-lolevel-module.scm
@@ -9,15 +9,19 @@ (module inotify-lolevel
(chicken-4
(import chicken foreign)
(use srfi-18 lolevel))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken base))
(import (chicken bitwise))
- (import (chicken blob))
(import (chicken condition))
(import (chicken foreign))
(import (chicken format))
(import (chicken memory))
(import (srfi 18))
(import miscmacros)))
+ (cond-expand
+ (chicken-5
+ (import (chicken blob)))
+ (chicken-6
+ (import (only (chicken bytevector) make-bytevector))))
(include "inotify-lolevel.scm"))
diff --git a/inotify-lolevel.scm b/inotify-lolevel.scm
index fadd824..3e5b6d4 100644
--- a/inotify-lolevel.scm
+++ b/inotify-lolevel.scm
@@ -34,6 +34,11 @@ (define close
"int ret = close(fd);"
"C_return(ret < 0 ? -errno : ret);"))
+(cond-expand
+ (chicken-6
+ (define-foreign-type blob u8vector))
+ (else))
+
(define inotify_next_events
(foreign-lambda* int ((blob buf) (int buf_len) (pointer-vector events) (int fd))
;; adapted from inotify(7)
@@ -60,11 +65,14 @@ (define inotify_next_events
;;; records
(define-record event wd flags cookie name)
-(define-record-printer (event e out)
+
+(define (display-event e out)
(if (event-name e)
(fprintf out "#<event ~a: ~s ~s>" (event-wd e) (event-flags e) (event-name e))
(fprintf out "#<event ~a: ~s>" (event-wd e) (event-flags e))))
+(set-record-printer! event display-event)
+
(define (pointer->event ptr)
(let ((wd ((foreign-lambda* int ((inotify_event* event))
"C_return(event->wd);") ptr))
@@ -226,6 +234,11 @@ (define %min-event-size (foreign-value "sizeof(struct inotify_event)" int))
(define %max-event-size (+ %min-event-size (foreign-value "NAME_MAX" int) 1))
(define %max-event-count (/ %events-buffer-size %min-event-size))
+(cond-expand
+ (chicken-6
+ (define make-blob make-bytevector))
+ (else))
+
(define (%next-events! fd)
(when (> %max-event-size %events-buffer-size)
(abort (usage-error "NAME_MAX exceeds read buffer size" '%next-events!)))
diff --git a/inotify-module.scm b/inotify-module.scm
index 15cf753..f8e6b37 100644
--- a/inotify-module.scm
+++ b/inotify-module.scm
@@ -14,7 +14,7 @@ (module inotify
(import chicken foreign)
(use inotify-lolevel extras srfi-18 srfi-69
lolevel posix data-structures files))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken base))
(import (chicken condition))
(import (chicken file))
@@ -27,4 +27,9 @@ (module inotify
(import queues)
(import inotify-lolevel)))
+ (cond-expand
+ (chicken-6
+ (import (only (scheme base) make-parameter)))
+ (else))
+
(include "inotify.scm"))
diff --git a/tests/run.scm b/tests/run.scm
index 0f2d498..648f85b 100644
--- a/tests/run.scm
+++ b/tests/run.scm
@@ -2,7 +2,7 @@
(cond-expand
(chicken-4
(use inotify test srfi-18 posix srfi-1))
- (chicken-5
+ ((or chicken-5 chicken-6)
(import (chicken file))
(import (chicken process))
(import (srfi 1))
--
2.47.3