X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/2dbd7a37a809e2dcef6c8e7323ac15c98b051cd9..f15c8583198c3d6c26ca0c0a5b6fb019f98d6c3c:/doc/lispref/streams.texi diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index c287b61771..e52a543110 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990-1994, 1998-1999, 2001-2014 Free Software +@c Copyright (C) 1990-1994, 1998-1999, 2001-2015 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Read and Print @@ -339,6 +339,25 @@ shared structures. @xref{Circular Objects}. Its default value is @code{t}. @end defvar +@cindex binary I/O in batch mode +When reading or writing from the standard input/output streams of the +Emacs process in batch mode, it is sometimes required to make sure any +arbitrary binary data will be read/written verbatim, and/or that no +translation of newlines to or from CR-LF pairs are performed. This +issue does not exist on Posix hosts, only on MS-Windows and MS-DOS. +The following function allows to control the I/O mode of any standard +stream of the Emacs process. + +@defun set-binary-mode stream mode +Switch @var{stream} into binary or text I/O mode. If @var{mode} is +non-@code{nil}, switch to binary mode, otherwise switch to text mode. +The value of @var{stream} can be one of @code{stdin}, @code{stdout}, +or @code{stderr}. This function flushes any pending output data of +@var{stream} as a side effect, and returns the previous value of I/O +mode for @var{stream}. On Posix hosts, it always returns a +non-@code{nil} value and does nothing except flushing pending output. +@end defun + @node Output Streams @section Output Streams @cindex stream (for printing) @@ -618,7 +637,7 @@ spacing between calls. @defun terpri &optional stream ensure @cindex newline in print This function outputs a newline to @var{stream}. The name stands for -``terminate print''. If @var{ensure} is non-nil no newline is printed +``terminate print''. If @var{ensure} is non-@code{nil} no newline is printed if @var{stream} is already at the beginning of a line. Note in this case @var{stream} can not be a function and an error is signalled if it is. This function returns @code{t} if a newline is printed. @@ -686,6 +705,11 @@ This function outputs @var{object} to @var{stream}, just like indent and fill the object to make it more readable for humans. @end defun +If you need to use binary I/O in batch mode, e.g., use the functions +described in this section to write out arbitrary binary data or avoid +conversion of newlines on non-Posix hosts, see @ref{Input Functions, +set-binary-mode}. + @node Output Variables @section Variables Affecting Output @cindex output-controlling variables