NAME

kjb_fopen - A front end for fopen

SYNOPSIS

#include "l/l_sys_io.h"

Example compile flags (system dependent):
  -DLINUX_X86_64 -DLINUX_X86_64_OPTERON  -DGNU_COMPILER 
   -I/home/kobus/include
   -L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
  -lKJB                               -lfftw3  -lgsl -lgslcblas -ljpeg  -lSVM -lstdc++                    -lpthread -lSLATEC -lg2c    -lacml -lacml_mv -lblas -lg2c      -lncursesw 


FILE *kjb_fopen
(
	const char *input_fd_name,
	const char *mode
);

DESCRIPTION

The routine kjb_fopen should be used to open files that are used with the KJB library. It implements additional features such as more comprehensive diagnostics, and sytem independent determination of file name from the file pointer. It also implements acceptance of the "b" (for binary) mode character. (This is STILL not universally available). Another feature is a routine print_open_files (development version only!) to print all open files. An additional feature is that "~", and "~users"" is expanded. Of course, this means that you cannot open a file that starts with a double ~. If the user settable option "disable-dir-open" is set, then an open attempt on a directory failes. If the user settable option "uncompress-files" is set, and the filenanme has suffix ".gz" or ".Z", then the file is uncompressed into tempory space, and the temporary file is opened instead. The temporary file is removed on file close. Files opened with kjb_fopen MUST be closed with kjb_fclose. This function is not re-entrant (i.e., not thread-safe).

RETURNS

A regular FILE* handle on success, and NULL on failure.

WARNING

Many KJB library routines requiring a file pointer will assume that this pointer came from one of kjb_fopen, kjb_freopen, kjb_popen, or kjb_fdopen. Furthermore the library assumes that all files opened with one of these routines will be closed with kjb_fclose. Furthermore, the KJB library file IO routines assume that stdin, stdout, and stderr will not be closed with fclose (kjb_fclose is OK). In short, if one makes use of the IO portion of the library, then kjb_fopen and friends should be used. Using file pointers obtained from kjb_fopen with non KJB library routines is less critical, but can lead to minor problems such as incorrect paging. Of course, when there is no non-KJB library routine for the given task, then there is no problem.

DISCLAIMER

This software is not adequatedly tested. It is recomended that results are checked independantly where appropriate.

AUTHOR

Kobus Barnard

DOCUMENTER

Kobus Barnard

SEE ALSO

set_low_level_io_options , kjb_read_exact , kjb_read , kjb_read_2 , safe_pipe_write , kjb_write , kjb_write_2 , kjb_fread_exact , kjb_fread , kjb_fread_2 , kjb_fwrite , kjb_fwrite_2 , kjb_safe_fflush , kjb_fflush , kjb_ioctl , set_blocking , set_no_blocking , stdin_get_line , fget_line , dget_line , fput_line , kjb_mkdir , kjb_mkdir_2 , kjb_unlink , kjb_unlink_2 , kjb_rmdir , kjb_freopen , kjb_fdopen , kjb_fclose , kjb_realpath , get_fd_name , get_user_fd_name , kjb_fseek , kjb_ftell , kjb_fputs , kjb_fgetc , kjb_fputc , pso , p_stderr , kjb_fprintf , pdo , kjb_vfprintf , is_file , is_directory , fp_get_path_type , get_path_type , get_file_size , fp_get_byte_size , get_file_age , stream_younger , stream_older , get_file_mod_time , kjb_isatty , print_underlined , start_stdout_shadow , stop_stdout_shadow , start_stderr_shadow , stop_stderr_shadow , enable_stdout , disable_stdout , kjb_glob , kjb_simple_glob