IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 7, 2006, 2:25:35 PM (20 years ago)
Author:
jhoblitt
Message:

VERSION to 0.0.22

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippdb/src/ippdb.c

    r8214 r8222  
    183183    PS_ASSERT_PTR_NON_NULL(mdname, false);
    184184
     185    psMetadata *output = psMetadataAlloc();
     186    for (long i = 0; i < psArrayLength(mds); i++) {
     187        psMetadata *md = psMetadataCopy(NULL, mds->data[i]);
     188        // don't bother to check the return status as the key we are trying to
     189        // remove may or may not be there
     190        // XXX someday psErr should be checked -- the only acceptable error
     191        // is key not found
     192
     193        psMetadataRemoveKey(md, IPPDB_DEFAULT_INDEX_NAME);
     194        if (!psMetadataAddMetadata(output, PS_LIST_TAIL, mdname, PS_META_DUPLICATE_OK, NULL, md)) {
     195            psError(PS_ERR_UNKNOWN, false, "failed to add a metadata item");
     196            psFree(md);
     197            psFree(output);
     198            return false;
     199        }
     200
     201        psFree(md);
     202    }
     203
     204    if (!ippdbPrintMetadata(stream, output, mdcf)) {
     205        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     206        psFree(output);
     207        return false;
     208    }
     209
     210    psFree(output);
     211
     212    return true;
     213}
     214
     215bool ippdbPrintMetadatasRaw(FILE *stream, psArray *mds, const char *mdname, bool mdcf)
     216{
     217    PS_ASSERT_PTR_NON_NULL(mds, false);
     218    PS_ASSERT_PTR_NON_NULL(mdname, false);
     219
     220    psMetadata *output = psMetadataAlloc();
    185221    for (long i = 0; i < psArrayLength(mds); i++) {
    186222        psMetadata *md = mds->data[i];
    187         if (!ippdbPrintMetadata(stream, md, mdcf)) {
    188             psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     223        if (!psMetadataAddMetadata(output, PS_LIST_TAIL, mdname, PS_META_DUPLICATE_OK, NULL, md)) {
     224            psError(PS_ERR_UNKNOWN, false, "failed to add a metadata item");
     225            psFree(output);
    189226            return false;
    190227        }
    191228    }
    192229
    193     return true;
    194 }
    195 
    196 bool ippdbPrintMetadatasRaw(FILE *stream, psArray *mds, const char *mdname, bool mdcf)
    197 {
    198     PS_ASSERT_PTR_NON_NULL(mds, false);
    199     PS_ASSERT_PTR_NON_NULL(mdname, false);
    200 
    201     for (long i = 0; i < psArrayLength(mds); i++) {
    202         psMetadata *md = mds->data[i];
    203         if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    204             psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    205             return false;
    206         }
    207     }
     230    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     231        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     232        psFree(output);
     233        return false;
     234    }
     235
     236    psFree(output);
    208237
    209238    return true;
Note: See TracChangeset for help on using the changeset viewer.