Changeset 15180 for trunk/psModules/src/config/pmConfig.c
- Timestamp:
- Oct 3, 2007, 11:32:43 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/config/pmConfig.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/config/pmConfig.c
r15116 r15180 4 4 * @author EAM (IfA) 5 5 * 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 10 7 * 11 8 */ … … 537 534 psArgumentRemove(argNum, argc, argv); 538 535 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"); 542 538 } else { 543 539 bool mdok = true; // Status of MD lookup … … 852 848 for (int i = 0; *valid && (i < keys->n); i++) { 853 849 854 // get the ruleItem for this key850 // get the ruleItem for this key 855 851 psMetadataItem *ruleItem = psMetadataLookup(rule, keys->data[i]); 856 852 … … 861 857 psTrace("psModules.config", 5, "Can't find %s", ruleItem->name); 862 858 *valid = false; 863 continue;864 } 865 866 // if the RULE type is a primitive type (int, float, etc) or string compare directly867 if (PS_DATA_IS_PRIMITIVE (ruleItem->type) || (ruleItem->type == PS_DATA_STRING)) {868 // Check to see if the rule works869 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); 896 892 *valid = false; 897 psFree (keyList);898 psFree (keys);893 psFree (keyList); 894 psFree (keys); 899 895 return false; 900 896 } … … 1137 1133 psMetadataItem *rulesItem = NULL; // Item from iteration 1138 1134 while ((rulesItem = psMetadataGetAndIncrement(rulesIter))) { 1139 // this will insert each of the MULTI entries, writing over the previous copies1140 if (PS_DATA_IS_PRIMITIVE (rulesItem->type) || (rulesItem->type == PS_DATA_STRING)) {1141 psMetadataItem *newItem = psMetadataItemCopy(rulesItem); // Copy of item1142 psMetadataAddItem(header, newItem, PS_LIST_TAIL, PS_META_REPLACE);1143 psFree(newItem); // Drop reference1144 continue;1145 }1146 1147 # if (0) // XXX not needed1148 // for MULTI entries, supply the first one1149 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 item1156 psMetadataAddItem(header, newItem, PS_LIST_TAIL, PS_META_REPLACE);1157 psFree(newItem); // Drop reference1158 continue;1159 }1160 # endif1161 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); 1163 1159 return false; 1164 1160 }
Note:
See TracChangeset
for help on using the changeset viewer.
