RLE_OPEN_F(3)

NAME
rle_open_f - Open a binary file for input or output with defaults.
rle_open_f_noexit - Returns error code instead of exiting.

SYNOPSIS
FILE *rle_open_f( prog_name, file_name, mode )
char *prog_name, *file_name, *mode;

FILE *rle_open_f_noexit( prog_name, file_name, mode )
char *prog_name, *file_name, *mode;

DESCRIPTION
The function rle_open_f is provided to simplify the task of opening files in toolkit programs. It works similarly to fopen(3), but it also provides error checking and messages, and default values for input and output. If the specified file_name cannot be opened, an error message is printed and the program exits. A variant rle_open_f_noexit is provided which will return NULL if the file cannot be opened. An error message is still printed. On those systems which require it, a 'b' will be appended to the mode string so that the file will be opened in binary mode. If the file_name is NULL or "-", then stdin will be returned for input (mode "r") files and stdout will be returned for output (mode "w" or "a") files. The following two options are available only on systems supporting pipes. If the file_name starts with a "|" character, then the rest of the file name will be taken as a sh(1) command. If mode is "r", a pipe from the output of the sh command will be returned. If mode is "w" or "a", a pipe to the input of the sh command will be returned. If the file_name ends with the suffix ".Z" (and does not start with "|"), then the compress(1) program will be invoked to uncompress (mode "r") or compress (mode "w" or "a") the file. The file descriptor returned by rle_open_f will be a pipe from or to the compress program.

SEE ALSO
fopen(3), popen(3), compress(1).

AUTHOR
Gerald Winter
Spencer W. Thomas
University of Michigan

BUGS
If the command invoked via popen does not exist, the popen still returns successfully, and the underlying sh prints an error message.

There is no way of telling that a particular FILE pointer has been created by popen, so it isn't possible to cleanly close the pipe with pclose. In fact, the eventual output file may not even exist by the time the program exits.