mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 20:30:28 +02:00
This will allow better Scheme integration for ports. * libguile/ports.h (scm_t_port_buffer): Change "holder" member to be a bytevector defined to have "buf" as its starting point. (scm_t_ptob_descriptor): Change read and write functions to take bytevectors as arguments and to return the number of octets read or written. (scm_make_port_type): Adapt accordingly. (scm_c_read_bytes, scm_c_write_bytes): New functions that take bytevectors. * libguile/ports.c (scm_make_port_type): Adapt to read/write function prototype change. (scm_c_make_port_buffer): Arrange to populate the "bytevector" field. (scm_i_read_bytes_unlocked): New function. (scm_i_read_unlocked): Use scm_i_read_bytes_unlocked. (scm_c_read_bytes_unlocked): New function. (scm_c_read_unlocked): Update comment, and always go through the buffer. (scm_c_read_bytes): New function. (scm_flush_unlocked): Use scm_i_write_unlocked instead of the port's write function. (scm_i_write_bytes_unlocked): New function. (scm_i_write_unlocked): Use scm_i_write_bytes_unlocked. (scm_c_write_bytes_unlocked): New function. (scm_c_write_unlocked): Always write through the buffer. (scm_c_write_bytes): New function. (scm_truncate_file): Remove unused variable. (void_port_read, void_port_write): Adapt to read/write prototype change. * libguile/fports.c (fport_read, fport_write): * libguile/r6rs-ports.c (bytevector_input_port_read) (custom_binary_input_port_read, bytevector_output_port_write) (custom_binary_output_port_write, transcoded_port_write) (transcoded_port_read): Adapt to read/write prototype change. (scm_get_bytevector_n, scm_get_bytevector_n_x) (scm_get_bytevector_all): Use scm_c_read_bytes. (scm_put_bytevector): Use scm_c_write_bytes. * libguile/strports.c (string_port_read, string_port_write): * libguile/vports.c (soft_port_write, soft_port_read): Adapt to read/write prototype change. * test-suite/standalone/test-scm-c-read.c (custom_port_read): Fix for read API change. |
||
---|---|---|
.. | ||
.gitignore | ||
Makefile.am | ||
README | ||
test-asmobs | ||
test-asmobs-lib.c | ||
test-bad-identifiers | ||
test-command-line-encoding | ||
test-command-line-encoding2 | ||
test-conversion.c | ||
test-extensions | ||
test-extensions-lib.c | ||
test-fast-slot-ref.in | ||
test-ffi | ||
test-ffi-lib.c | ||
test-foreign-object-c.c | ||
test-foreign-object-scm | ||
test-guild-compile | ||
test-guile-snarf | ||
test-import-order | ||
test-import-order-a.scm | ||
test-import-order-b.scm | ||
test-import-order-c.scm | ||
test-import-order-d.scm | ||
test-language | ||
test-language.el | ||
test-language.js | ||
test-list.c | ||
test-loose-ends.c | ||
test-mb-regexp | ||
test-num2integral.c | ||
test-out-of-memory | ||
test-pthread-create-secondary.c | ||
test-pthread-create.c | ||
test-require-extension | ||
test-round.c | ||
test-scm-c-bind-keyword-arguments.c | ||
test-scm-c-read.c | ||
test-scm-spawn-thread.c | ||
test-scm-take-locale-symbol.c | ||
test-scm-take-u8vector.c | ||
test-scm-to-latin1-string.c | ||
test-scm-values.c | ||
test-scm-with-guile.c | ||
test-smob-mark.c | ||
test-srfi-4.c | ||
test-stack-overflow | ||
test-system-cmds | ||
test-unwind.c | ||
test-use-srfi.in | ||
test-with-guile-module.c |
-*-text-*- These tests use the standard automake TESTS mechanism. Tests should be listed in TESTS in Makefile.am, and should exit with 0 on success, non-zero on failure, and 77 if the result should be ignored. See the automake info pages for more information. If you want to use a scheme script, prefix it as follows: #!/bin/sh exec guile -s "$0" "$@" !# Makefile.am will arrange for all tests (scripts or executables) to be run under uninstalled-env so that the PATH, LD_LIBRARY_PATH, and GUILE_LOAD_PATH will be augmented appropriately. The Makefile.am has an example of creating a shared library to be used from a test scheme script as well. You can also create standalone executables that include your own code, are linked against libguile, and that run a given test script (or scripts). One way to do this is to create the binary, make sure it calls scm_shell (argc, argv) as its final action, and put this bit at the top of your test script: #!./my-test-binary -s !#