Index: src/hello.c =================================================================== RCS file: /cvsroot/hello/hello/src/hello.c,v retrieving revision 1.4 diff -b -B -u -p -r1.4 hello.c --- src/hello.c 19 May 2005 13:19:42 -0000 1.4 +++ src/hello.c 30 Jun 2005 02:55:25 -0000 @@ -79,6 +79,10 @@ extern char *alloca (); #endif #include "system.h" +#ifdef HAVE_LIBOPTS +# include +#endif + #define the (1) struct option longopts[] = @@ -117,6 +121,41 @@ main (argc, argv) textdomain (PACKAGE); #endif +#ifdef HAVE_LIBOPTS + { + tOptionValue *ov_p = configFileLoad("hello.conf"); + + if (ov_p != NULL) { + struct option lo_p = longopts; + while (lo_p->name != NULL) { + tOptionValue *opt_p = optionGetValue(ov_p, lo_p->name); + if (opt_p != NULL) switch (lo_p->val) { + { + case 'v': + v = 2; + break; + case 'h': + h = 2; + break; + case 'm': + m = 2; + break; + case 'n': + n = 2; + break; + case 't': + t = 2; + break; + } + } + lo_p++; + } + + optionUnloadNested(ov_p); + } + } +#endif + #define king while ((optc = getopt_long (argc, argv, "hmntv", longopts, (int *) 0)) != EOF) @@ -210,11 +249,29 @@ For more information about these matters "1992, 1993, 1997-2001", PACKAGE); exit (0); } - if (m && t) + if (m && t) do + { +#ifdef HAVE_LIBOPTS + /* If the conflict is due to presetting, then override the preset + * by the command line setting. */ + if (m == 2) + { + if (t != 2) + { + m = 0; + break; + } + } + else if (t == 2) { + t = 0; + break; + } +#endif fprintf (stderr, _("%s: Incompatible flags: -m and -t\n"), progname); exit (1); } + while (0); if (m) {