Index: trunk/ippdb/src/ippdb.c
===================================================================
--- trunk/ippdb/src/ippdb.c	(revision 8204)
+++ trunk/ippdb/src/ippdb.c	(revision 8210)
@@ -78,5 +78,5 @@
 }
 
-bool ippdbPrintMetadata(FILE *stream, psMetadata *md, bool mdconfigformat)
+bool ippdbPrintMetadata(FILE *stream, psMetadata *md, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(md, false);
@@ -90,5 +90,5 @@
     psMetadataRemoveKey(clean, IPPDB_DEFAULT_INDEX_NAME);
     
-    if (!ippdbPrintMetadataRaw(stream, clean, mdconfigformat)) {
+    if (!ippdbPrintMetadataRaw(stream, clean, mdcf)) {
         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(clean);
@@ -100,19 +100,83 @@
 }
 
-bool ippdbPrintMetadataRaw(FILE *stream, psMetadata *md, bool mdconfigformat)
+bool ippdbPrintMetadataRaw(FILE *stream, psMetadata *md, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(md, false);
 
-    psString str = psMetadataConfigFormat(md);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
-    }
-    fprintf(stream, "%s\n", str);
-    psFree(str);
+    if (mdcf) {
+        psString str = psMetadataConfigFormat(md);
+        if (!str) {
+            psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+            psFree(str);
+            return false;
+        }
+        fprintf(stream, "%s\n", str);
+        psFree(str);
+
+        return true;
+    }
+
+#define METADATAITEM_STRIFY_CASE(ptype, format, type) \
+case ptype: \
+    psStringAppend(&str, #format, item->data.type); \
+    break;
+
+    // else
+    // flatten the metadata into | separated values
+    psString str = NULL;
+    psMetadataItem *item = NULL;
+    psMetadataIterator *iter = psMetadataIteratorAlloc(md, 0, NULL);
+    while ((item = psMetadataGetAndIncrement(iter))) {
+        switch (item->type) {
+            METADATAITEM_STRIFY_CASE(PS_DATA_S8, %d, S8);
+            METADATAITEM_STRIFY_CASE(PS_DATA_S16, %d, S16);
+            METADATAITEM_STRIFY_CASE(PS_DATA_S32, %d, S32);
+            METADATAITEM_STRIFY_CASE(PS_DATA_S64, %lld, S64);
+            METADATAITEM_STRIFY_CASE(PS_DATA_U8, %u, U8);
+            METADATAITEM_STRIFY_CASE(PS_DATA_U16, %u, U16);
+            METADATAITEM_STRIFY_CASE(PS_DATA_U32, %u, U32);
+            METADATAITEM_STRIFY_CASE(PS_DATA_U64, %llu, U64);
+            METADATAITEM_STRIFY_CASE(PS_DATA_F32, %f, F32);
+            METADATAITEM_STRIFY_CASE(PS_DATA_F64, %f, F64);
+            case PS_DATA_STRING:
+                psStringAppend(&str, "%s", (char*)(item->data.V));
+                break;
+            case PS_DATA_BOOL:
+                if (item->data.B) {
+                    psStringAppend(&str, "T");
+                } else {
+                    psStringAppend(&str, "F");
+                }
+                break;
+            case PS_DATA_METADATA:
+                if (!ippdbPrintMetadataRaw(stream, item->data.md, mdcf)) {
+                    psError(PS_ERR_UNKNOWN, false ,"failed to print nested metadata");
+                }
+                // a metadata is a special case. We don't want a | seperating
+                // the metadata from any other output so we need to skip the
+                // !->offEnd test
+                continue;
+            default:
+                psError(PS_ERR_UNKNOWN, true,"unsupported psMetadataItem type");
+                psFree(iter);
+                psFree(str);
+                return false;
+        }
+        if (!iter->iter->offEnd) {
+            psStringAppend(&str, "|");
+        }
+    }
+    psFree(iter);
+
+    // if we did nothing but handle recursive metadatas str will be NULL
+    if (str) {
+        fprintf(stream, "%s\n", str);
+        psFree(str);
+    }
 
     return true;
 }
 
-bool ippdbPrintMetadatas(FILE *stream, psArray *mds, const char *mdname, bool mdconfigformat)
+bool ippdbPrintMetadatas(FILE *stream, psArray *mds, const char *mdname, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(mds, false);
@@ -121,5 +185,5 @@
     for (long i = 0; i < psArrayLength(mds); i++) {
         psMetadata *md = mds->data[i];
-        if (!ippdbPrintMetadata(stream, md, mdconfigformat)) {
+        if (!ippdbPrintMetadata(stream, md, mdcf)) {
             psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
             return false;
@@ -130,5 +194,5 @@
 }
 
-bool ippdbPrintMetadatasRaw(FILE *stream, psArray *mds, const char *mdname, bool mdconfigformat)
+bool ippdbPrintMetadatasRaw(FILE *stream, psArray *mds, const char *mdname, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(mds, false);
@@ -137,5 +201,5 @@
     for (long i = 0; i < psArrayLength(mds); i++) {
         psMetadata *md = mds->data[i];
-        if (!ippdbPrintMetadataRaw(stream, md, mdconfigformat)) {
+        if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
             psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
             return false;
@@ -644,5 +708,5 @@
     return deleted;
 }
-bool weatherPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool weatherPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -667,12 +731,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -1177,5 +1238,5 @@
     return deleted;
 }
-bool skyp_transparencyPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool skyp_transparencyPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -1200,12 +1261,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -1768,5 +1826,5 @@
     return deleted;
 }
-bool skyp_absorptionPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool skyp_absorptionPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -1791,12 +1849,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -2272,5 +2327,5 @@
     return deleted;
 }
-bool skyp_emissionPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool skyp_emissionPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -2295,12 +2350,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -2805,5 +2857,5 @@
     return deleted;
 }
-bool dimmPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool dimmPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -2828,12 +2880,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -3308,5 +3357,5 @@
     return deleted;
 }
-bool skyp_irPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool skyp_irPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -3331,12 +3380,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -3753,5 +3799,5 @@
     return deleted;
 }
-bool domePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool domePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -3776,12 +3822,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -4228,5 +4271,5 @@
     return deleted;
 }
-bool telescopePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool telescopePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -4251,12 +4294,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -4707,5 +4747,5 @@
     return deleted;
 }
-bool summitExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool summitExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -4730,12 +4770,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -5185,5 +5222,5 @@
     return deleted;
 }
-bool pzPendingExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool pzPendingExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -5208,12 +5245,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -5693,5 +5727,5 @@
     return deleted;
 }
-bool pzPendingImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool pzPendingImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -5716,12 +5750,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -6171,5 +6202,5 @@
     return deleted;
 }
-bool newExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool newExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -6194,12 +6225,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -6620,5 +6648,5 @@
     return deleted;
 }
-bool newImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool newImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -6643,12 +6671,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -7273,5 +7298,5 @@
     return deleted;
 }
-bool rawDetrendExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool rawDetrendExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -7296,12 +7321,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -7926,5 +7948,5 @@
     return deleted;
 }
-bool rawScienceExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool rawScienceExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -7949,12 +7971,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -8375,5 +8394,5 @@
     return deleted;
 }
-bool rawImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool rawImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -8398,12 +8417,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -9087,5 +9103,5 @@
     return deleted;
 }
-bool p1PendingExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool p1PendingExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -9110,12 +9126,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -9828,5 +9841,5 @@
     return deleted;
 }
-bool p2PendingExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool p2PendingExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -9851,12 +9864,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -10335,5 +10345,5 @@
     return deleted;
 }
-bool p2PendingImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool p2PendingImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -10358,12 +10368,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -11076,5 +11083,5 @@
     return deleted;
 }
-bool p2DoneExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool p2DoneExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -11099,12 +11106,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -11583,5 +11587,5 @@
     return deleted;
 }
-bool p2DoneImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool p2DoneImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -11606,12 +11610,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -12294,5 +12295,5 @@
     return deleted;
 }
-bool p3PendingExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool p3PendingExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -12317,12 +12318,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -12682,5 +12680,5 @@
     return deleted;
 }
-bool detRunPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detRunPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -12705,12 +12703,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -13393,5 +13388,5 @@
     return deleted;
 }
-bool detInputExpPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detInputExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -13416,12 +13411,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -13871,5 +13863,5 @@
     return deleted;
 }
-bool detProcessedImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detProcessedImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -13894,12 +13886,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -14348,5 +14337,5 @@
     return deleted;
 }
-bool detStackedImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detStackedImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -14371,12 +14360,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -14825,5 +14811,5 @@
     return deleted;
 }
-bool detNormalizedImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detNormalizedImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -14848,12 +14834,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -15242,5 +15225,5 @@
     return deleted;
 }
-bool detMasterFramePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detMasterFramePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -15265,12 +15248,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -15690,5 +15670,5 @@
     return deleted;
 }
-bool detMasterImfilePrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detMasterImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -15713,12 +15693,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -16257,5 +16234,5 @@
     return deleted;
 }
-bool detResidImfileAnalysisPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detResidImfileAnalysisPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -16280,12 +16257,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -16733,5 +16707,5 @@
     return deleted;
 }
-bool detResidExpAnalysisPrintObjects(FILE *stream, psArray *objects, bool mdconfigformat)
+bool detResidExpAnalysisPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -16756,12 +16730,9 @@
     }
 
-    psString str = psMetadataConfigFormat(output);
-    if (!str) {
-        psError(PS_ERR_UNKNOWN, false, "failed to format data into a string");
+    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
         psFree(output);
     }
     psFree(output);
-    fprintf(stream, "%s\n", str);
-    psFree(str);
 
     return true;
