
at_eof(+Stream)

   Succeeds if the stream Stream is positioned at end of file. 

Arguments
   Stream              Stream handle or alias (atom)

Type
   Stream I/O

Description
   Used to test if the input stream Stream is positioned at end of file.

   For file streams and string streams, this means that either the next read
   operation will return an end-of-file condition, or end-of-file was already
   read and the next read operation would result in a past-end-of-file error.

   For tty streams, it means only that there is currently no further input
   available, and a subsequent read operation will prompt for more.

   For queue streams, it means only that the queue is currently empty.
   The queue will recover from the end-of-file condition when new data
   is written into it from the write end.

   For pipe and socket streams, this condition means that the next read
   operation will either block or return an end-of-file condition.
   To check whether there is any data to read, use stream_select/3.

   The null stream is always at end-of-file.

   Stream can be a symbolic stream name or a stream handle.


Modes and Determinism
   at_eof(+) is semidet

Fail Conditions
   Fails if Stream is a file with its pointer not at end of file.

Exceptions
     4 --- Stream is not instantiated.
     5 --- Stream is instantiated, but not to an atom or a stream handle.
   192 --- Stream is an illegal stream mode.

Examples
   
Success:
      at_eof(null).

      ?- open(file1,update,S), at_eof(S),
         write(S,hello), at(S,5), at_eof(S), close(S).
      yes.

Fail:

      ?- open(file1,write,S),write(S,hello), close(S),
         open(file1,read,S), at_eof(S), close(S).
      no.

Error:
      at_eof(X).                  (Error 4).
      at_eof("s").                (Error 5).
      at_eof(not_a_stream).       (Error 192).





See Also
   at / 2, seek / 2, stream_truncate / 1
