IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 8219


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

fix handling of nested metadata

Location:
trunk/glueforge/templates/psdb
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/glueforge/templates/psdb/printmetadatas.tt

    r8206 r8219  
    44    PS_ASSERT_PTR_NON_NULL(mdname, false);
    55
     6    psMetadata *output = psMetadataAlloc();
    67    for (long i = 0; i < psArrayLength(mds); i++) {
    7         psMetadata *md = mds->data[i];
    8         if (![% pkg_namespace %]PrintMetadata(stream, md, mdcf)) {
    9             psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     8        psMetadata *md = psMetadataCopy(NULL, mds->data[i]);
     9        // don't bother to check the return status as the key we are trying to
     10        // remove may or may not be there
     11        // XXX someday psErr should be checked -- the only acceptable error
     12        // is key not found
     13
     14        psMetadataRemoveKey(md, [% pkg_name FILTER upper %]_DEFAULT_INDEX_NAME);
     15        if (!psMetadataAddMetadata(output, PS_LIST_TAIL, mdname, PS_META_DUPLICATE_OK, NULL, md)) {
     16            psError(PS_ERR_UNKNOWN, false, "failed to add a metadata item");
     17            psFree(md);
     18            psFree(output);
    1019            return false;
    1120        }
     21
     22        psFree(md);
    1223    }
     24
     25    if (![% pkg_namespace %]PrintMetadata(stream, output, mdcf)) {
     26        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     27        psFree(output);
     28        return false;
     29    }
     30
     31    psFree(output);
    1332
    1433    return true;
  • trunk/glueforge/templates/psdb/printmetadatasraw.tt

    r8206 r8219  
    44    PS_ASSERT_PTR_NON_NULL(mdname, false);
    55
     6    psMetadata *output = psMetadataAlloc();
    67    for (long i = 0; i < psArrayLength(mds); i++) {
    78        psMetadata *md = mds->data[i];
    8         if (![% pkg_namespace %]PrintMetadataRaw(stream, md, mdcf)) {
    9             psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     9        if (!psMetadataAddMetadata(output, PS_LIST_TAIL, mdname, PS_META_DUPLICATE_OK, NULL, md)) {
     10            psError(PS_ERR_UNKNOWN, false, "failed to add a metadata item");
     11            psFree(output);
    1012            return false;
    1113        }
    1214    }
    1315
     16    if (![% pkg_namespace %]PrintMetadataRaw(stream, output, mdcf)) {
     17        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     18        psFree(output);
     19        return false;
     20    }
     21
     22    psFree(output);
     23
    1424    return true;
    1525}
Note: See TracChangeset for help on using the changeset viewer.