Prepare 'setvbuf' to support for non-file ports.
authorLudovic Courtès <ludo@gnu.org>
Thu, 16 Jan 2014 22:52:01 +0000 (23:52 +0100)
committerLudovic Courtès <ludo@gnu.org>
Sat, 18 Jan 2014 21:52:07 +0000 (22:52 +0100)
commit122f24cc8a3637ed42d7792ad1ff8ec0c49c58df
tree80dd5c071fb1342dd78e24d27ea759d03d42e93e
parent611563fb05c18ca52f780746e9963ca9735e9bac
Prepare 'setvbuf' to support for non-file ports.

* libguile/ports-internal.h (struct scm_port_internal): Add
  setvbuf' field.  Change 'pending_eof' to a 1-bit unsigned char.
* libguile/ports.c (scm_new_port_table_entry): Clear 'pti->setvbuf'.
* libguile/fports.c (scm_setvbuf): Accept any open port, and error out
  when PORT's setvbuf' field is NULL.  Remove explicit 'scm_gc_free' calls.
  (scm_i_fdes_to_port): Set PORT's 'setvbuf' field.
* test-suite/tests/ports.test ("setvbuf")["closed port", "string port"]:
  New tests.
* doc/ref/posix.texi (Ports and File Descriptors): Suggest that
  'setvbuf' works for different port types.
doc/ref/posix.texi
libguile/fports.c
libguile/ports-internal.h
libguile/ports.c
test-suite/tests/ports.test