From 3fa0a042ba05be65affaa1a52109d54ace7a07b9 Mon Sep 17 00:00:00 2001 From: Kevin Ryde Date: Fri, 29 Apr 2005 23:45:11 +0000 Subject: [PATCH] (Default Ports): Describe buffering on standard ports. --- doc/ref/api-io.texi | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/doc/ref/api-io.texi b/doc/ref/api-io.texi index 1c3408886..4d49ec063 100644 --- a/doc/ref/api-io.texi +++ b/doc/ref/api-io.texi @@ -616,8 +616,19 @@ return 0 immediately if the request size is 0 bytes. @deffnx {C Function} scm_current_input_port () @cindex standard input Return the current input port. This is the default port used -by many input procedures. Initially, @code{current-input-port} -returns the @dfn{standard input} in Unix and C terminology. +by many input procedures. + +Initially this is the @dfn{standard input} in Unix and C terminology. +When the standard input is a tty the port is unbuffered, otherwise +it's fully buffered. + +Unbuffered input is good if an application runs an interactive +subprocess, since any type-ahead input won't go into Guile's buffer +and hence be unavailable to the subprocess. + +Note that Guile buffering is completely separate from the tty ``line +discipline''. In the usual cooked mode on a tty, Guile only sees a +line of input once the user presses @key{return}. @end deffn @rnindex current-output-port @@ -625,16 +636,27 @@ returns the @dfn{standard input} in Unix and C terminology. @deffnx {C Function} scm_current_output_port () @cindex standard output Return the current output port. This is the default port used -by many output procedures. Initially, -@code{current-output-port} returns the @dfn{standard output} in -Unix and C terminology. +by many output procedures. + +Initially this is the @dfn{standard output} in Unix and C terminology. +When the standard output is a tty this port is unbuffered, otherwise +it's fully buffered. + +Unbuffered output to a tty is good for ensuring progress output or a +prompt is seen. But an application which always prints whole lines +could change to line buffered, or an application with a lot of output +could go fully buffered and perhaps make explicit @code{force-output} +calls (@pxref{Writing}) at selected points. @end deffn @deffn {Scheme Procedure} current-error-port @deffnx {C Function} scm_current_error_port () @cindex standard error output -Return the port to which errors and warnings should be sent (the -@dfn{standard error} in Unix and C terminology). +Return the port to which errors and warnings should be sent. + +Initially this is the @dfn{standard error} in Unix and C terminology. +When the standard error is a tty this port is unbuffered, otherwise +it's fully buffered. @end deffn @deffn {Scheme Procedure} set-current-input-port port