16 lines
823 B
Text
16 lines
823 B
Text
(with-dyn-lib "./query.so"
|
|
(deffi query "query" void (closure)))
|
|
|
|
(with-dyn-lib nil
|
|
(deffi memcpy "memcpy" cptr (cptr str size-t)))
|
|
|
|
(deffi-cb query-cb int (cptr (ptr (array 1 size-t))))
|
|
|
|
(query (query-cb (lambda (buf sizeptr) ; int lambda(void *buf, siz
|
|
(symacrolet ((size [sizeptr 0])) ; { #define size sizeptr[0]
|
|
(let* ((s "Here am I") ; char *s = "Here am I";
|
|
(l (length s))) ; size_t l = strlen(s);
|
|
(cond ; if (length > size)
|
|
((> l size) 0) ; { return 0; } else
|
|
(t (memcpy buf s l) ; { memcpy(buf, s, l);
|
|
(set size l)))))))) ; return size = l; } }
|