Configuration/ReadConfiguration [ Functions ]
FUNCTION
Read the robodoc configuration file, and create a RB_Configuration structure.
SYNOPSIS
char *ReadConfiguration( unsigned int argc, char **argv, char *filename )
INPUTS
- argc -- the arg count as received by main()
- argv -- the arg valules as received by main()
- filename -- an optional filename. If none is given, "robodoc.rc" is used.
RESULT
An initialized configuration (a global).
SOURCE
{ FILE *f = NULL; char *path = NULL; if ( filename ) { path = Get_rc( filename ); if ( path ) { f = fopen( path, "r" ); } if ( !f ) { /* It should open as the user claimed it exists somewhere */ RB_Panic( "Can't open %s\n", filename ); } } else { /* Try the default rc file */ path = Get_rc( "robodoc.rc" ); if ( path ) { f = fopen( path, "r" ); } } AllocOptions( argc, argv ); Alloc_Parameters( &( configuration.items ), 10 ); Alloc_Parameters( &( configuration.ignore_items ), 10 ); Alloc_Parameters( &( configuration.source_items ), 10 ); Alloc_Parameters( &( configuration.preformatted_items ), 10 ); Alloc_Parameters( &( configuration.format_items ), 10 ); Alloc_Parameters( &( configuration.item_order ), 10 ); Alloc_Parameters( &( configuration.custom_headertypes ), 10 ); Alloc_Parameters( &( configuration.ignore_files ), 10 ); Alloc_Parameters( &( configuration.accept_files ), 10 ); Alloc_Parameters( &( configuration.header_markers ), 10 ); Alloc_Parameters( &( configuration.remark_markers ), 10 ); Alloc_Parameters( &( configuration.end_markers ), 10 ); Alloc_Parameters( &( configuration.remark_begin_markers ), 10 ); Alloc_Parameters( &( configuration.remark_end_markers ), 10 ); Alloc_Parameters( &( configuration.keywords ), 10 ); Alloc_Parameters( &( configuration.source_line_comments ), 10 ); Alloc_Parameters( &( configuration.header_ignore_chars ), 10 ); Alloc_Parameters( &( configuration.header_separate_chars ), 10 ); if ( f ) { SecondScan( f ); fclose( f ); } else { /* No .rc file found. That's OK */ } ComplementItemNames( ); ComplementHeaderMarkers( ); Complement_Remark_Markers( ); Install_Custom_HeaderTypes( ); // Make keywords hash table (if necessarry) add_keywords_to_hash_table( ); assert( configuration.items.number ); return path; }