Hello Diego, sorry for the late response. I've discovered that like a year ago, I attempted doing the same, but very much prefer your version. Thanks for posting the patch, it is merged now :)
Cheers Vasilij On 09/04/26 at 11:33pm, Diego A. Mundo wrote: > > 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 >
signature.asc
Description: PGP signature
