IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 3, 2007, 11:32:43 AM (19 years ago)
Author:
Paul Price
Message:

Merging branch with FITS compression development. Minor conflicts in pmConfig.c, pmFPAfileDefine.c, pmFPAfileIO.c resolved.

File:
1 edited

Legend:

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

    r15116 r15180  
    44 *  @author EAM (IfA)
    55 *
    6  *  @version $Revision: 1.105 $ $Name: not supported by cvs2svn $
    7  *  @date $Date: 2007-09-29 22:18:39 $
    8  *
    9  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     6 *  Copyright 2007 Institute for Astronomy, University of Hawaii
    107 *
    118 */
     
    537534        psArgumentRemove(argNum, argc, argv);
    538535        if (argNum >= *argc) {
    539             psLogMsg("psModules.config", PS_LOG_WARN,
    540                      "-camera command-line switch provided without the required camera or filename --- "
    541                      "ignored.\n");
     536            psWarning("-camera command-line switch provided without the required camera or filename --- "
     537                      "ignored.\n");
    542538        } else {
    543539            bool mdok = true;           // Status of MD lookup
     
    852848    for (int i = 0; *valid && (i < keys->n); i++) {
    853849
    854         // get the ruleItem for this key
     850        // get the ruleItem for this key
    855851        psMetadataItem *ruleItem = psMetadataLookup(rule, keys->data[i]);
    856852
     
    861857            psTrace("psModules.config", 5, "Can't find %s", ruleItem->name);
    862858            *valid = false;
    863             continue;
    864         }
    865 
    866         // if the RULE type is a primitive type (int, float, etc) or string compare directly
    867         if (PS_DATA_IS_PRIMITIVE (ruleItem->type) || (ruleItem->type == PS_DATA_STRING)) {
    868             // Check to see if the rule works
    869             if (!psMetadataItemCompare(headerItem, ruleItem)) {
    870                 psTrace("psModules.config", 5, "%s doesn't match.", ruleItem->name);
    871                 *valid = false;
    872             }
    873             continue;
    874         }
    875 
    876         // for MULTI, try each one & succeed if any match (valid = true is default state)
    877         if (ruleItem->type == PS_DATA_METADATA_MULTI) {
    878             bool found = false;
    879             for (int j = 0; j < ruleItem->data.list->n; j++) {
    880                 psMetadataItem *entry = psListGet (ruleItem->data.list, j);
    881                 assert (entry);
    882                 if (psMetadataItemCompare(headerItem, entry)) {
    883                     found = true;
    884                     psTrace("psModules.config", 5, "%s in multi list matches.", ruleItem->name);
    885                     break;
    886                 }
    887             }
    888             if (!found) {
    889                 *valid = false;
    890                 psTrace("psModules.config", 5, "%s doesn't match.", ruleItem->name);
    891             }
    892             continue;
    893         }
    894 
    895         psError(PS_ERR_UNKNOWN, false, "Invalid type for RULE %s.", ruleItem->name);
     859            continue;
     860        }
     861
     862        // if the RULE type is a primitive type (int, float, etc) or string compare directly
     863        if (PS_DATA_IS_PRIMITIVE (ruleItem->type) || (ruleItem->type == PS_DATA_STRING)) {
     864            // Check to see if the rule works
     865            if (!psMetadataItemCompare(headerItem, ruleItem)) {
     866                psTrace("psModules.config", 5, "%s doesn't match.", ruleItem->name);
     867                *valid = false;
     868            }
     869            continue;
     870        }
     871
     872        // for MULTI, try each one & succeed if any match (valid = true is default state)
     873        if (ruleItem->type == PS_DATA_METADATA_MULTI) {
     874            bool found = false;
     875            for (int j = 0; j < ruleItem->data.list->n; j++) {
     876                psMetadataItem *entry = psListGet (ruleItem->data.list, j);
     877                assert (entry);
     878                if (psMetadataItemCompare(headerItem, entry)) {
     879                    found = true;
     880                    psTrace("psModules.config", 5, "%s in multi list matches.", ruleItem->name);
     881                    break;
     882                }
     883            }
     884            if (!found) {
     885                *valid = false;
     886                psTrace("psModules.config", 5, "%s doesn't match.", ruleItem->name);
     887            }
     888            continue;
     889        }
     890
     891        psError(PS_ERR_UNKNOWN, false, "Invalid type for RULE %s.", ruleItem->name);
    896892        *valid = false;
    897         psFree (keyList);
    898         psFree (keys);
     893        psFree (keyList);
     894        psFree (keys);
    899895        return false;
    900896    }
     
    11371133    psMetadataItem *rulesItem = NULL;   // Item from iteration
    11381134    while ((rulesItem = psMetadataGetAndIncrement(rulesIter))) {
    1139         // this will insert each of the MULTI entries, writing over the previous copies
    1140         if (PS_DATA_IS_PRIMITIVE (rulesItem->type) || (rulesItem->type == PS_DATA_STRING)) {
    1141             psMetadataItem *newItem = psMetadataItemCopy(rulesItem); // Copy of item
    1142             psMetadataAddItem(header, newItem, PS_LIST_TAIL, PS_META_REPLACE);
    1143             psFree(newItem);                // Drop reference
    1144             continue;
    1145         }
    1146        
    1147         # if (0) // XXX not needed
    1148         // for MULTI entries, supply the first one
    1149         if (rulesItem->type == PS_DATA_METADATA_MULTI) {
    1150             psMetadataItem *entry = psListGet (rulesItem->data.list, PS_LIST_HEAD);
    1151             if (!entry) {
    1152                 psError(PS_ERR_UNKNOWN, true, "No entries for MULTI RULE item.");
    1153                 return false;
    1154             }
    1155             psMetadataItem *newItem = psMetadataItemCopy(entry); // Copy of item
    1156             psMetadataAddItem(header, newItem, PS_LIST_TAIL, PS_META_REPLACE);
    1157             psFree(newItem);                // Drop reference
    1158             continue;
    1159         }
    1160         # endif
    1161 
    1162         psError(PS_ERR_UNKNOWN, false, "Invalid type for RULE %s.", rulesItem->name);
     1135        // this will insert each of the MULTI entries, writing over the previous copies
     1136        if (PS_DATA_IS_PRIMITIVE (rulesItem->type) || (rulesItem->type == PS_DATA_STRING)) {
     1137            psMetadataItem *newItem = psMetadataItemCopy(rulesItem); // Copy of item
     1138            psMetadataAddItem(header, newItem, PS_LIST_TAIL, PS_META_REPLACE);
     1139            psFree(newItem);                // Drop reference
     1140            continue;
     1141        }
     1142
     1143        # if (0) // XXX not needed
     1144        // for MULTI entries, supply the first one
     1145        if (rulesItem->type == PS_DATA_METADATA_MULTI) {
     1146            psMetadataItem *entry = psListGet (rulesItem->data.list, PS_LIST_HEAD);
     1147            if (!entry) {
     1148                psError(PS_ERR_UNKNOWN, true, "No entries for MULTI RULE item.");
     1149                return false;
     1150            }
     1151            psMetadataItem *newItem = psMetadataItemCopy(entry); // Copy of item
     1152            psMetadataAddItem(header, newItem, PS_LIST_TAIL, PS_META_REPLACE);
     1153            psFree(newItem);                // Drop reference
     1154            continue;
     1155        }
     1156        # endif
     1157
     1158        psError(PS_ERR_UNKNOWN, false, "Invalid type for RULE %s.", rulesItem->name);
    11631159        return false;
    11641160    }
Note: See TracChangeset for help on using the changeset viewer.