IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 22, 2007, 5:19:43 PM (19 years ago)
Author:
magnier
Message:

fixed pmConfigValidateCameraFormat to distinguish error and invalid

Location:
trunk/psModules/src/config
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/config/pmConfig.c

    r11041 r11245  
    44 *  @author EAM (IfA)
    55 *
    6  *  @version $Revision: 1.72 $ $Name: not supported by cvs2svn $
    7  *  @date $Date: 2007-01-11 22:55:36 $
     6 *  @version $Revision: 1.73 $ $Name: not supported by cvs2svn $
     7 *  @date $Date: 2007-01-23 03:19:35 $
    88 *
    99 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    676676
    677677// XXX aren't these (return false) below errors: call psError?
    678 bool pmConfigValidateCameraFormat(const psMetadata *cameraFormat, const psMetadata *header)
     678bool pmConfigValidateCameraFormat(bool *valid, const psMetadata *cameraFormat, const psMetadata *header)
    679679{
    680680    PS_ASSERT_PTR_NON_NULL(cameraFormat, false);
     
    683683    // Read the rule for that camera format
    684684    bool mdStatus = true;
     685
    685686    psMetadata *rule = psMetadataLookupMetadata(&mdStatus, cameraFormat, "RULE");
    686687    if (! mdStatus || ! rule) {
    687688        psError(PS_ERR_UNKNOWN, false, "Unable to read rule for camera.");
     689        *valid = false;
    688690        return false;
    689691    }
     
    692694    psMetadataIterator *ruleIter = psMetadataIteratorAlloc(rule, PS_LIST_HEAD, NULL); // Rule iterator
    693695    psMetadataItem *ruleItem = NULL;    // Item from the metadata
    694     while ((ruleItem = psMetadataGetAndIncrement(ruleIter))) {
     696
     697    *valid = true;
     698    while (*valid && (ruleItem = psMetadataGetAndIncrement(ruleIter))) {
    695699        // Check for the existence of the rule
    696700        psMetadataItem *headerItem = psMetadataLookup(header, ruleItem->name);
    697701        if (! headerItem) {
    698             // doesn't match, but not an error
     702            // rule item not found in header
    699703            psTrace("psModules.config", 5, "Can't find %s", ruleItem->name);
    700             psFree(ruleIter);
    701             return false;
     704            *valid = false;
    702705        }
    703706
    704707        // Check to see if the rule works
    705         if (! psMetadataItemCompare(headerItem, ruleItem)) {
     708        if (headerItem && !psMetadataItemCompare(headerItem, ruleItem)) {
    706709            psTrace("psModules.config", 5, "%s doesn't match.", ruleItem->name);
    707             psFree(ruleIter);
    708             return false;
     710            *valid = false;
    709711        }
    710712    } // Iterating through the RULEs
     
    713715    return true;
    714716}
    715 
    716717
    717718// Given a camera and a header, see if any of the camera formats match the header
     
    750751        psMetadata *testFormat = formatsItem->data.md; // Format to test against
    751752
    752         if (pmConfigValidateCameraFormat(testFormat, header)) {
     753        psTrace("psModules.config", 5, "trying format %s", formatsItem->name);
     754
     755        bool valid = false;
     756        if (!pmConfigValidateCameraFormat(&valid, testFormat, header)) {
     757            psError (PS_ERR_UNKNOWN, false, "Error in config scripts for camera %s, format %s\n",
     758                     cameraName, formatsItem->name);
     759            return false;
     760        }
     761        if (valid) {
    753762            if (!*format) {
    754763                psLogMsg("psModules.config", PS_LOG_INFO, "Camera %s, format %s matches header.\n",
     
    762771                         cameraName, formatsItem->name);
    763772            }
    764         } else {
    765             psErr *error = psErrorLast();
    766             if (error->code != PS_ERR_NONE) {
    767                 psError (PS_ERR_UNKNOWN, false, "Error in config scripts for camera %s, format %s\n",\
    768                          cameraName, formatsItem->name);
    769                 return false;
    770             }
    771             psFree(error);
    772773        }
    773774    }
    774775    psFree(formatsIter);
    775 
    776776    return result;
    777777}
  • trunk/psModules/src/config/pmConfig.h

    r11040 r11245  
    99/// @author Eugene Magnier, IfA
    1010///
    11 /// @version $Revision: 1.24 $ $Name: not supported by cvs2svn $
    12 /// @date $Date: 2007-01-11 22:54:56 $
     11/// @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
     12/// @date $Date: 2007-01-23 03:19:43 $
    1313///
    1414/// Copyright 2005-2006 Institute for Astronomy, University of Hawaii
     
    9797///
    9898/// Given a FITS header (the PHU header), check it against the RULE metadata contained within the camera
    99 /// format; return true if it matches.
    100 bool pmConfigValidateCameraFormat(const psMetadata *cameraFormat, ///< Camera format containing the RULE
     99/// format; return found = true if it matches. return false on serious errors
     100bool pmConfigValidateCameraFormat(bool *valid,
     101                                  const psMetadata *cameraFormat, ///< Camera format containing the RULE
    101102                                  const psMetadata *header // FITS header for the PHU
    102103                                 );
Note: See TracChangeset for help on using the changeset viewer.