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

Reply via email to