[ Stream I/O | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# at_eof(+Stream)

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

Stream
  Integer (stream number) or Atom (reserved or user-defined symbolic stream name).

## 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 select/3.
- The null stream is always at end-of-file.

Stream can be a symbolic stream name or a physical stream number.

### 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) instantiation fault
  Stream is not instantiated.
(5) type error
  Stream is instantiated, but not to an atom or an integer.
(192) illegal stream mode
  Stream is an illegal stream mode.

## Examples

    Success:
          at_eof(null).

          [eclipse]: open(file1,update,s), at_eof(s),
    	  write(s,hello), at(s,5), at_eof(s), close(s).
          yes.

    Fail:

          [eclipse]: 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