NAME
read_fl_db_from_config_file - Reads a fluorescent database from a config file
SYNOPSIS
#include "s2/s2_fluorescence.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
int read_fl_db_from_config_file
(
Fluorescent_database **fl_db_ptr_ptr,
const char *env_var,
const char *directory,
const char *file_name,
const char *message_name,
char *config_file_name,
size_t config_file_name_size
);
DESCRIPTION
This routine reads a fluorescent database from a configuration file, checking
several possible locations for the file. If the parameter "env_var" is not
NULL, then it first tries using this string as the configuration file name.
Next it looks for "file_name" in the current directory, then the user's home
directory, and, depending on how the library was built, then the "shared"
home directory and/or the programmer's home directory. If "directory" is not
NULL, then it is used as a sub-directory in all paths starting from a home
directory (i.e., all paths except the current directory).
The parameter message_name can be used to specify a name for the
configuration file to be used in error and verbose output messages. If
message_name is NULL, then "configuration" is used.
If the buffer config_file_name is not NULL, then the file name actually used
is copied into it. If it is used, then its size must be passed in via
config_file_name_size;
RETURNS
Either NO_ERROR, or ERROR, with an appropriate error message being set.
EXAMPLE
Suppose directory is "x" and file_name is "y". Also supposed that the
shared directory is "~iis" (compiled in constant) and the programmer's
directory is "~kobus" (another compiled in constant). Then the following
files are tried in the order listed.
./y
~/x/y
~iis/x/y
~kobus/x/y
The file name actually used is put into the buffer config_file_name whose
size must be passed in via max_len;
The flourescent database *fl_db_ptr_ptr is created or resized as necessary.
If file_name is the special name "off" (or "none" or "0"), then the above
does not apply. In this case, *fl_db_ptr_ptr is freed and set to NULL.
NOTE
The form of the flourescent database file is a header of the form:
#! t=fluorescent_db c=<num_fluorescent_surfaces>
Followed by <num_fluorescent_surfaces> groups of spectra. Each group of
spectra must be started with the spectra header, and end with the special
soft end of file:
#! eof
(Note that the "#" is resettable by the user option "comment-char", and
the "!" is resettable by the user option "header-char").
Each group of spectra must contain an even number of spectra which are
the spectra of an illuminant, followed by a spectra of the response of
the given fluorescent surface to that illuminant. A reasonable number of
relatively different illuminat spectra are required to adequately
characterize a fluorescent surface.
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
create_fluorescent_database
,
free_fluorescent_database
,
get_target_fluorescent_database
,
read_fluorescent_database
,
write_fluorescent_database