@node IO operations @section IO operations Provided by module @code{(hnh util io)}. @defun open-input-port path @defunx open-output-port path Like @code{open-*-file}, but ``-'' gives @code{standard-@{input,output@}}. @end defun @defun read-lines port Return a list of all lines read from port. The trailing newlines are @emph{not} part of the string. @end defun @defun with-atomic-output-to-file filename thunk Same functionality as the regular @var{with-output-to-file}, but with the difference that either everything is written, or nothing is written, and if anything is written it's all written atomicaly at once (the original file will never contain an intermidiate state). Does NOT handle race conditions between threads. propagates the return value of @var{thunk} upon successfully writing the file, and @code{#f} otherwise. @end defun @defun call-with-tmpfile proc [#:tmpl ``/tmp/file-XXXXXXX''] Creates a new temporary file, named per the template @var{tmpl}, then call @var{proc} with two arguments: an open input-output port to the file, and the generated name of the file. The file will be closed upon the procedures return. However, the file @emph{may} be left on disk. @end defun @defun read-file path Open file at path, and return its content as a string. @end defun @defun displayln x [port] Calls @code{display}, followed by @code{newline}. @end defun