IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 17, 2009, 4:23:38 PM (17 years ago)
Author:
eugene
Message:

added function pxAddLabelSearchArgs to allow -label entries to be multiple

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pxtools.c

    r23883 r23918  
    6060        if (!state) {
    6161            psError(PS_ERR_PROGRAMMING, false, "%s not found in row %ld of table %s",
    62                 columnName, i, tableName);
     62                    columnName, i, tableName);
    6363            return false;
    6464        }
     
    6969            // if state isn't cleaned or full we can't set it to cleaned
    7070            psError(PS_ERR_PROGRAMMING, true, "%s with state %s may not be exported cleaned",
    71                 tableName, state);
     71                    tableName, state);
    7272            return false;
    7373        }
     
    7575    return true;
    7676}
     77
     78// XXX verify data type?
     79bool pxAddLabelSearchArgs (pxConfig *config, psMetadata *where, char *name, char *field, char *op) {
     80
     81    psMetadataItem *item = psMetadataLookup(config->args, name);
     82    if (!item) {
     83        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", name);
     84        return false;
     85    }
     86    psAssert (item->type == PS_DATA_METADATA_MULTI, "%s should be a multi container", name);
     87    psAssert (item->data.list->n, "%s should at least have a place-holder", name);
     88    psMetadataItem *entry = (psMetadataItem *)item->data.list->head->data;
     89    psAssert (entry, "%s should at least have a place-holder", name);
     90    if (entry->data.str) {
     91        psListIterator *iter = psListIteratorAlloc (item->data.list, PS_LIST_HEAD, true);
     92        psMetadataItem *item = NULL;
     93        while ((item = psListGetAndIncrement(iter))) {
     94            // need to change the name and comment
     95            psFree (item->name);
     96            item->name = psStringCopy (field);
     97            psFree (item->comment);
     98            item->comment = psStringCopy (op);
     99            if (!psMetadataAddItem(where, item, PS_LIST_TAIL, PS_META_DUPLICATE_OK)) {
     100                psError(PS_ERR_UNKNOWN, false, "failed to add item %s", field);
     101                psFree(where);
     102                return false;
     103            }
     104        }
     105        psFree (iter);
     106    }
     107    return true;
     108}
Note: See TracChangeset for help on using the changeset viewer.