Tcl_EnterFile(3)

NAME
Tcl_EnterFile, Tcl_GetOpenFile, Tcl_FilePermissions - manipulate the table of open files

SYNOPSIS
#include <tcl.h>

Tcl_EnterFile(interp, file, permissions)

int
Tcl_GetOpenFile(interp, string, write, checkUsage, filePtr)

int
Tcl_FilePermissions(file)

ARGUMENTS
Tcl interpreter from which file is to be accessed. Handle for file that is to become accessible in interp. OR-ed combination of TCL_FILE_READABLE and TCL_FILE_WRITABLE; indicates whether file was opened for reading or writing or both. String identifying file, such as stdin or file4. Non-zero means the file will be used for writing, zero means it will be used for reading. If non-zero, then an error will be generated if the file wasn't opened for the access indicated by write. Points to word in which to store pointer to FILE structure for the file given by string.

DESCRIPTION

These procedures provide access to Tcl's file naming mechanism. Tcl_EnterFile enters an open file into Tcl's file table so that it can be accessed using Tcl commands like gets, puts, seek, and close. It returns in interp->result an identifier such as file4 that can be used to refer to the file in subsequent Tcl commands. Tcl_EnterFile is typically used to implement new Tcl commands that open sockets, pipes, or other kinds of files not already supported by the built-in commands.

Tcl_GetOpenFile takes as argument a file identifier of the form returned by the open command or Tcl_EnterFile and returns at *filePtr a pointer to the FILE structure for the file. The write argument indicates whether the FILE pointer will be used for reading or writing. In some cases, such as a file that connects to a pipeline of subprocesses, different FILE pointers will be returned for reading and writing. Tcl_GetOpenFile normally returns TCL_OK. If an error occurs in Tcl_GetOpenFile (e.g. string didn't make any sense or checkUsage was set and the file wasn't opened for the access specified by write) then TCL_ERROR is returned and interp->result will contain an error message. If checkUsage is zero and the file wasn't opened for the access specified by write, then the FILE pointer returned at *filePtr may not correspond to write.

Tcl_FilePermissions returns an OR-ed combination of the mask bits TCL_FILE_READABLE and TCL_FILE_WRITABLE; these indicate whether the given file was opened for reading or writing or both. If file does not refer to a file in Tcl's file table then -1 is returned.

KEYWORDS
file table, permissions, pipeline, read, write