8.6.1 Implementation Defined Options

file access methods used:

R/O, R/W and BIN work as you would expect. W/O translates into the C file opening mode w (or wb): The file is cleared, if it exists, and created, if it does not (with both open-file and create-file). Under Unix create-file creates a file with 666 permissions modified by your umask.

file exceptions:

The file words do not raise exceptions (except, perhaps, memory access faults when you pass illegal addresses or file-ids).

file line terminator:

System-dependent. Gforth outputs LF on Unix (including WSL(2)) and CRLF on Windows (if anybody ever builds a Windows version again). Gforth accepts LF, CR and CRLF on input.

file name format:

System dependent. Gforth just uses the file name format of your OS.

information returned by FILE-STATUS:

FILE-STATUS returns the most powerful file access mode allowed for the file: Either R/O, W/O or R/W. If the file cannot be accessed, R/O BIN is returned. BIN is applicable along with the returned mode.

input file state after an exception when including source:

All files that are left via the exception are closed.

ior values and meaning:

The iors returned by the file and memory allocation words are intended as throw codes. They typically are in the range -512−-2047 of OS errors. The mapping from OS error numbers to iors is -512−errno.

maximum depth of file input nesting:

limited by the amount of return stack, locals/TIB stack, and the number of open files available. This should not give you troubles.

maximum size of input line:

For file input, the maximum input line size is only limited by memory; the buffer is expanded to read in as long lines as the file contains. For terminal input, this auto-expansion does not happen, and the current size of the input buffer is used; max#tib ? shows the current input buffer size.

methods of mapping block ranges to files:

By default, blocks are accessed in the file blocks.fb in the current working directory. The file can be switched with open-blocks or use.

number of string buffers provided by S":

The interpretation semantics S" allocates the memory for the strings, so the number of string buffers is only limited by memory.

size of string buffer used by S":

S" allocates the strings, as long as they are.