Configuration file examples

    #include <mplib1/cfg_file.h>

The configuration file routines can be used in a number of ways. The most obvious example is signalling whether to output debugging information. So, suppose we have a routine which we are writing which looks up an employee name for a given an employee ID.
    get_emp_name( int emp_id, char *emp_name )
    {
	int get_emp_name_debug,rv;

	*emp_name='\0';
	get_emp_name_debug = get_config_flag("GET_EMP_NAME_DEBUG");

	if (get_emp_name_debug)
	    fprintfile(stderr,"get_emp_name: entry: id=%d\n", emp_id );

	.... do fetch ....

	if (get_emp_name_debug)
	{
	    if (rv==FAIL)
		fprintfile(stderr,"get_emp_name: failed\n" );
	    else
		fprintfile(stderr,"get_emp_name: name=<%s>\n", emp_name );
	}
	return(rv);
    }
So, instead of making the debug portion compile conditional which leads to a different set of code being produced for production than that tested, the same routine goes to production. Since the default for a flag variable is false the debug output is suppressed until a configuration variable is provided which changes the value.

Another example would be to determine the name of a logfile.

    char *logname;
    FILE *log_fh;

    logname = eval_config_default( "LOGFILE_NAME", "$LOG_DIR/progname.log" );
    log_fh = fopen( logname, "a" );
    if (log_fh)
	fprintfile( log_fh, "logfile %s opened\n", logname );
Where progname is replaced with the name of the program being developed.