IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18729


Ignore:
Timestamp:
Jul 24, 2008, 4:06:01 PM (18 years ago)
Author:
eugene
Message:

include mod from HEAD by PAP (remove mask values and start from scratch)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20080719/psModules/src/config/pmConfigMask.c

    r18605 r18729  
    138138}
    139139
     140// Remove from the header keywords starting with the provided string
     141static int maskRemoveHeader(psMetadata *header, // Header from which to remove keywords
     142                            const char *start // Remove keywords that start with this string
     143                            )
     144{
     145    psString regex = NULL;              // Regular expression for keywords
     146    psStringAppend(&regex, "^%s[0-9][0-9]", start);
     147    psMetadataIterator *iter = psMetadataIteratorAlloc(header, PS_LIST_HEAD, regex); // Iterator
     148    psFree(regex);
     149    psMetadataItem *item;               // Item from iteration
     150    int num = 0;                        // Number of items removed
     151    while ((item = psMetadataGetAndIncrement(iter))) {
     152        psMetadataRemoveKey(header, item->name);
     153        num++;
     154    }
     155    psFree(iter);
     156    return num;
     157}
     158
     159
    140160// write the named mask bits to the header
    141161bool pmConfigMaskWriteHeader(const pmConfig *config, psMetadata *header)
     
    143163    PS_ASSERT_PTR_NON_NULL(config, false);
    144164    PS_ASSERT_METADATA_NON_NULL(header, false);
     165
     166    maskRemoveHeader(header, "MSKNAM");
     167    maskRemoveHeader(header, "MSKVAL");
     168    if (psMetadataLookup(header, "MSKNUM")) {
     169        psMetadataRemoveKey(header, "MSKNUM");
     170    }
    145171
    146172    char namekey[80];
     
    159185    psMetadataItem *item;               // Item from iteration
    160186    while ((item = psMetadataGetAndIncrement(iter))) {
     187        if (strcmp(item->name + strlen(item->name) - strlen(".ALREADY"), ".ALREADY") == 0) {
     188            continue;
     189        }
    161190
    162191        if (item->type != PS_DATA_U8) {
     
    165194        }
    166195
    167         snprintf (namekey,  64, "MSKNAM%02d", nMask);
    168         snprintf (valuekey, 64, "MSKVAL%02d", nMask);
    169 
    170         psMetadataAddStr (header, PS_LIST_TAIL, namekey, 0, "Bitmask bit name", item->name);
    171         psMetadataAddU8 (header, PS_LIST_TAIL, valuekey, 0, "Bitmask bit value", item->data.U8);
    172         nMask ++;
    173     }
    174 
    175     psMetadataAddS32 (header, PS_LIST_TAIL, "MSKNUM", 0, "Bitmask bit count", nMask);
     196        snprintf(namekey,  64, "MSKNAM%02d", nMask);
     197        snprintf(valuekey, 64, "MSKVAL%02d", nMask);
     198
     199        psMetadataAddStr(header, PS_LIST_TAIL, namekey, 0, "Bitmask bit name", item->name);
     200        psMetadataAddU8(header, PS_LIST_TAIL, valuekey, 0, "Bitmask bit value", item->data.U8);
     201        nMask++;
     202    }
     203
     204    psMetadataAddS32(header, PS_LIST_TAIL, "MSKNUM", 0, "Bitmask bit count", nMask);
    176205    return true;
    177206}
Note: See TracChangeset for help on using the changeset viewer.