bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18592: FFI should have portable access to ‘errno’


From: Mark H Weaver
Subject: bug#18592: FFI should have portable access to ‘errno’
Date: Sat, 24 Jan 2015 03:08:23 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

address@hidden (Ludovic Courtès) writes:

> Chaos Eternal <address@hidden> 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]