ffi: Peek C strings as non-legacy strings, else bytevectors.
authorMatt Birkholz <matt@birchwood-abbey.net>
Sat, 23 Dec 2017 09:52:49 +0000 (02:52 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Sat, 23 Dec 2017 17:16:54 +0000 (10:16 -0700)
commita827b5e2baed39f95565a2cf7f4df2672d3c960c
treef9866e96de62da71d27c74ed826aa6782786a36b
parentc49d7f876315704ac2d0905be824bfebb3456f1c
ffi: Peek C strings as non-legacy strings, else bytevectors.

When the FFI peeks at a C string (ASCII and null terminated) it now
copies the characters into a ustring (rather than a deprecated legacy
string).  If the C string contains non-ASCII characters, the FFI
returns a bytevector, passing the decoding problem on to higher
levels, and avoiding an extra copy (from bytes to string) when no
translation is needed.

Add c-peek-csubstring, a version of c-peek-cstring that takes a byte
count and does NOT require the C string to be null terminated.
src/microcode/pruxffi.c
src/runtime/ffi.scm
src/runtime/runtime.pkg