Index: /trunk/psModules/src/config/pmConfig.c
===================================================================
--- /trunk/psModules/src/config/pmConfig.c	(revision 6889)
+++ /trunk/psModules/src/config/pmConfig.c	(revision 6890)
@@ -3,6 +3,6 @@
  *  @author PAP, IfA
  *
- *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-04-17 18:10:08 $
+ *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-18 22:41:40 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -18,4 +18,5 @@
 #include "pslib.h"
 #include "pmConfig.h"
+#include "psMetadataItemCompare.h"
 
 #define PS_SITE "PS_SITE"         // Name of the environment variable containing the site config file
@@ -365,48 +366,16 @@
         // Check for the existence of the rule
         psMetadataItem *headerItem = psMetadataLookup((psMetadata*)header, ruleItem->name);
-        if (! headerItem || headerItem->type != ruleItem->type) {
+        if (! headerItem) {
+            // It doesn't have a required header keyword, so it's not it
+            psFree(ruleIter);
+            psTrace(__func__, 5, "Can't find %s\n", ruleItem->name);
+            return false;
+        }
+
+        // Check to see if the rule works
+        if (! psMetadataItemCompare(headerItem, ruleItem)) {
+            psTrace(__func__, 5, "%s doesn't match.\n", ruleItem->name);
             psFree(ruleIter);
             return false;
-        }
-
-        // Check to see if the rule works
-        switch (ruleItem->type) {
-        case PS_DATA_STRING:
-            psTrace(__func__, 8, "Matching %s: '%s' vs '%s'\n", ruleItem->name,
-                    ruleItem->data.V, headerItem->data.V);
-            if (strncmp(ruleItem->data.V, headerItem->data.V,
-                        strlen(ruleItem->data.V)) != 0) {
-                psFree(ruleIter);
-                return false;
-            }
-            break;
-        case PS_DATA_S32:
-        case PS_DATA_BOOL:
-            psTrace(__func__, 8, "Matching %s: %d vs %d\n", ruleItem->name,
-                    ruleItem->data.S32, headerItem->data.S32);
-            if (ruleItem->data.S32 != headerItem->data.S32) {
-                psFree(ruleIter);
-                return false;
-            }
-            break;
-        case PS_DATA_F32:
-            psTrace(__func__, 8, "Matching %s: %f vs %f\n", ruleItem->name,
-                    ruleItem->data.F32, headerItem->data.F32);
-            if (ruleItem->data.F32 != headerItem->data.F32) {
-                psFree(ruleIter);
-                return false;
-            }
-            break;
-        case PS_DATA_F64:
-            psTrace(__func__, 8, "Matching %s: %g vs %g\n", ruleItem->name,
-                    ruleItem->data.F64, headerItem->data.F64);
-            if (ruleItem->data.F64 != headerItem->data.F64) {
-                psFree(ruleIter);
-                return false;
-            }
-            break;
-        default:
-            psLogMsg(__func__, PS_LOG_WARN, "Ignoring invalid type in metadata: %x\n",
-                     ruleItem->type);
         }
     } // Iterating through the RULEs
@@ -423,6 +392,4 @@
                             )
 {
-    psMetadata *testFormat;
-
     assert(format);
     assert(camera);
@@ -449,20 +416,11 @@
         }
         psTrace(__func__, 5, "Reading camera format for %s...\n", formatsItem->name);
-        // unsigned int badLines = 0;  // Number of bad lines in reading camera configuration
-        // Format to test against what we've got
-
+        psMetadata *testFormat = NULL;  // Format to test against what we've got
         if (!readConfig(&testFormat, formatsItem->data.V, formatsItem->name)) {
-            psLogMsg(__func__, PS_LOG_WARN, "trouble reading reading camera format %s\n", formatsItem->name);
+            psLogMsg(__func__, PS_LOG_WARN, "Trouble reading reading camera format %s --- ignored.\n",
+                     formatsItem->name);
             psFree(testFormat);
             continue;
         }
-
-        # if (0)
-            psMetadata *testFormat = psMetadataConfigParse(NULL, &badLines, formatsItem->data.V, true);
-        if (badLines > 0) {
-            psLogMsg(__func__, PS_LOG_WARN, "%d bad lines encountered while reading camera"
-                     "format %s\n", badLines, formatsItem->name);
-        }
-        # endif
 
         if (pmConfigValidateCameraFormat(testFormat, header)) {
@@ -493,5 +451,4 @@
     psMetadata *format = NULL;          // The winning format
     bool mdok = false;                  // Metadata lookup status
-    psMetadata *testCamera = NULL;
 
     // If we don't know what sort of camera we have, we try all that we know
@@ -516,24 +473,10 @@
 
             psTrace(__func__, 5, "Reading camera configuration for %s...\n", camerasItem->name);
-            // unsigned int badLines = 0;  // Number of bad lines in reading camera configuration
-            // Camera to test against what we've got:
+            psMetadata *testCamera = NULL; // Camera to test against what we've got:
 
             if (!readConfig(&testCamera, camerasItem->data.V, camerasItem->name)) {
-                psLogMsg(__func__, PS_LOG_WARN, "trouble reading reading camera configuration %s\n", camerasItem->name);
+                psLogMsg(__func__, PS_LOG_WARN, "Trouble reading reading camera configuration %s --- "
+                         "ignored.\n", camerasItem->name);
                 psFree(testCamera);
-                continue;
-            }
-
-            # if (0)
-                psMetadata *testCamera = psMetadataConfigParse(NULL, &badLines, camerasItem->data.V, true);
-            if (badLines > 0) {
-                psLogMsg(__func__, PS_LOG_WARN, "%d bad lines encountered while reading camera"
-                         "configuration %s\n", badLines, camerasItem->name);
-            }
-            # endif
-
-            if (! testCamera) {
-                psLogMsg(__func__, PS_LOG_WARN, "Unable to interpret camera configuration for %s (%s) --- "
-                         "ignored\n", camerasItem->name, camerasItem->comment);
                 continue;
             }
