[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If for some reason it is difficult or unworkable to integrate configuration
file processing with command line option parsing, the libopts
(see section libopts External Procedures) library can still be used to process configuration
files. Below is a "Hello, World!" greeting program that tries
to load a configuration file `hello.conf' to see if it should use
an alternate greeting or to personalize the salutation.
#include <sys/types.h> #include <pwd.h> #include <string.h> #include <unistd.h> #include <autoopts/options.h> int main( int argc, char** argv ) { char* greeting = "Hello"; char* greeted = "World"; const tOptionValue* pOV = configFileLoad( "hello.conf" ); if (pOV != NULL) { const tOptionValue* pGetV = optionGetValue( pOV, "greeting" ); if ( (pGetV != NULL) && (pGetV->valType == OPARG_TYPE_STRING)) greeting = strdup( pGetV->v.strVal ); pGetV = optionGetValue( pOV, "personalize" ); if (pGetV != NULL) { struct passwd* pwe = getpwuid( getuid() ); if (pwe != NULL) greeted = strdup( pwe->pw_gecos ); } optionUnloadNested( pOV ); /* deallocate config data */ } printf( "%s, %s!\n", greeting, greeted ); return 0; } |
You may now compile and run this program thus:
$ opts=`autoopts-config cflags ldflags` $ cc -o hello hello.c ${opts} $ ./hello Hello, World! $ echo 'greeting Buzz off' > hello.conf $ ./hello Buzz off, World! $ echo personalize > hello.conf $ ./hello Hello, Bruce Korb! |
This document was generated by Bruce Korb on April, 24 2005 using texi2html 1.76.