OSSP CVS Repository

ossp - Check-in [2431]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 2431
Date: 2002-Jul-30 18:32:40 (local)
2002-Jul-30 16:32:40 (UTC)
User:ms
Branch:
Comment: Begin coding inspection of options for combination usage errors.
Tickets:
Inspections:
Files:
ossp-pkg/rc/rc_config.c      1.23 -> 1.24     33 inserted, 0 deleted

ossp-pkg/rc/rc_config.c 1.23 -> 1.24

--- rc_config.c  2002/07/29 16:34:59     1.23
+++ rc_config.c  2002/07/30 16:32:40     1.24
@@ -218,12 +218,45 @@
 /************************************************
 * configVerify(void)                            *
 * Verify config options help, usage, or version *
+* and ensure that no uncompatible option        *
+* combinations were given                       *
 ************************************************/
 rc_return_t configVerify(void)
 {
     ex_t Except;
     short bStop = FALSE;
 
+
+
+    try { /* Checks for legal option combination */
+        /* I'm too braindead to remember digital logic theory from the */
+        /* Uni, so I'll hack my own XOR gates with plain math instead  */
+        /* Exec XOR Eval XOR Print */
+        if (!configGetval(RC_EVL_VAL) \
+            + !configGetval(RC_EXC_VAL) \
+            + !configGetval(RC_PRN_VAL) < 2) { /* Warning! Magic number */
+            fprintf(stderr, RC_EEP_TEXT);
+            bStop = TRUE;
+        }
+        /* Silent XOR OutputOptions */
+        if (configGetval(RC_SIL_VAL) && (configGetval(RC_DBG_VAL) \
+            || configGetval(RC_VER_VAL) || configGetval(RC_EVL_VAL) \
+            || configGetval(RC_HLP_VAL) || configGetval(RC_INF_VAL) \
+            || configGetval(RC_LBL_VAL) || configGetval(RC_PRN_VAL) \
+            || configGetval(RC_RAW_VAL) || configGetval(RC_VRB_VAL) \
+            || configGetval(RC_QRY_VAL))) {
+            fprintf(stderr, RC_SLO_TEXT);
+            bStop = TRUE;
+        }
+    }
+    catch(Except) {
+        rethrow;
+    }
+    if (bStop) {                        /* Did user blow an option rule? */
+        clioptPrintusage();             /* Yes, so announce it as SUE.   */
+        return(RC_THROW(RC_ERR_TRM));
+    }
+
     try { /* Basic checks of version, usage, and help options */
         if (configGetval(RC_USE_VAL)) {
             clioptPrintusage();

CVSTrac 2.0.1