l...@gnu.org (Ludovic Courtès) writes: > Chaos Eternal <chaoseter...@shlug.org> skribis: > >> Proposals to solve this bug: >> >> Proposal 1. >> >> Adding a keyword argument to pointer->procedure, if set to true, the >> generated wrapper will check 'errno' immediately after ffi_call and >> return the errno as second value. >> >> the proposed pointer->procedure maybe like this: >> pointer->procedure return_type func_ptr arg_types #:return-errno >> >> Proposal 2. >> >> let pointer->procedure check return_type, if it is a list: >> (func_return_type, 'errno) >> then return multiple values, as errno be second value. > > That’s my favorite because it’s both pragmatic and extensible (we can > also add support for h_errno, etc.)
We can't do this, because although it's not documented in our manual, a list passed as a foreign type already has a meaning: it means a struct. See 'parse_ffi_type' in foreign.c. I mentioned this fact on guile-user: https://lists.gnu.org/archive/html/guile-user/2012-05/msg00037.html Of the proposals given here, I would support #1, but maybe there's a better option. Thanks, Mark