From 5fc47b3d24f1fa568ffb54db8e8054f190e2fb2b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 20 May 2017 21:20:34 -0700 Subject: ffi: add two tests based on glob function. One approach captures the paths as a carray of strings, and explicitly frees it with globfree. The other approach uses a zarray, taking advantage of null termination. globfree is elided because TXR FFI does the freeing; the types used declare to it that it is taking ownership of a dynamically allocated vector of dynamically allocated strings, and so it performs the equivalent of globfree. * tests/017/glob-carray.expected: New file. * tests/017/glob-carray.tl: Likewise. * tests/017/glob-zarray.expected: Likewise. * tests/017/glob-zarray.tl: Likewise. --- tests/017/glob-zarray.tl | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 tests/017/glob-zarray.tl (limited to 'tests/017/glob-zarray.tl') diff --git a/tests/017/glob-zarray.tl b/tests/017/glob-zarray.tl new file mode 100644 index 00000000..b6e16d13 --- /dev/null +++ b/tests/017/glob-zarray.tl @@ -0,0 +1,17 @@ +(load "../common") + +(defstruct glob-t nil + pathc pathv reserve) + +(deffi-type glob-t (struct glob-t + (pathc size-t) + (pathv (ptr-out-d (zarray str-d))) + (reserve size-t))) + +(with-dyn-lib (libc) + (deffi globb "glob" int (str int closure (ptr-out glob-t))) + (deffi-cb glob-cb int (str int) -1)) + +(let* ((g (new glob-t))) + (prinl (globb "tests/001/*.txr" 0 (glob-cb (lambda (path err))) g)) + (prinl g)) -- cgit v1.2.3