(module test * (import scheme srfi-4 (chicken foreign)) (define strerror1 (let ((NL_TEXTMAX (foreign-value "NL_TEXTMAX" int)) (strerror_r (foreign-lambda int "strerror_r" int u8vector size_t)) ) (lambda (errnum) (let* ((buf (make-u8vector NL_TEXTMAX 0)) (ret (strerror_r errnum buf NL_TEXTMAX))) (if (zero? ret) buf (string-append "error " (number->string errnum))))))) (define strerror2 (let ((NL_TEXTMAX (foreign-value "NL_TEXTMAX" int)) (strerror_r (foreign-lambda int "strerror_r" int c-string size_t)) ) (lambda (errnum) (let* ((buf (make-string NL_TEXTMAX)) (ret (strerror_r errnum buf NL_TEXTMAX))) (if (zero? ret) buf (string-append "error " (number->string errnum))))))) )