Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 8186)
+++ trunk/ippTools/src/dettool.c	(revision 8205)
@@ -105,6 +105,6 @@
     } 
 
-    psArray *result = p_psDBFetchResult(config->dbh);
-    if (!result) {
+    psArray *output = p_psDBFetchResult(config->dbh);
+    if (!output) {
         // XXX check psError here
         psError(PS_ERR_UNKNOWN, false, "no pending rawDetrendExp rows found");
@@ -123,11 +123,11 @@
 
     // negative simple so the default is true
-    if (!ippdbPrintMetadatas(stdout, result, "rawDetrendExp", !simple)) {
+    if (!ippdbPrintMetadatas(stdout, output, "rawDetrendExp", !simple)) {
         psError(PS_ERR_UNKNOWN, false, "failed to print array");
-        psFree(result);
-        return false;
-    }
-
-    psFree(result);
+        psFree(output);
+        return false;
+    }
+
+    psFree(output);
 
     return true;
@@ -275,4 +275,5 @@
     }
 
+    // XXX simplify this but just editing the psMetadata in the runs array
     // print imfile list
     psMetadata *output = psMetadataAlloc();
@@ -322,10 +323,22 @@
     }
 
-    psString str = psMetadataConfigFormat(output); 
-    psFree(output);
-    fprintf(stdout, "%s\n", str);
-    psFree(str);
-
     psFree(runs);
+
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (!ippdbPrintMetadata(stdout, output, !simple)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print array");
+        psFree(output);
+        return false;
+    }
 
     return true;
@@ -484,19 +497,21 @@
     }
 
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
     if (psArrayLength(inputExp)) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(inputExp); i++) {
-            psMetadata *md = detInputExpMetadataFromObject(inputExp->data[i]);
-            psMetadataAddMetadata(
-            output, PS_LIST_TAIL, "detInputExp",  PS_META_DUPLICATE_OK, NULL,
-                    md);
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+        // negative simple so the default is true
+        if (!detInputExpPrintObjects(stdout, inputExp, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(inputExp);
+            return false;
+        }
     }
 
@@ -541,19 +556,22 @@
     }
 
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
     // did we remove all of the rawImfiles?
     if (rawImfiles->n) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(rawImfiles); i++) {
-            psMetadata *md = rawImfileMetadataFromObject(rawImfiles->data[i]);
-            psMetadataAddMetadata(
-            output, PS_LIST_TAIL, "rawImfile",  PS_META_DUPLICATE_OK, NULL, md);
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+        // negative simple so the default is true
+        if (!rawImfilePrintObjects(stdout, rawImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(rawImfiles);
+            return false;
+        }
     }
 
@@ -930,21 +948,22 @@
     }
 
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
     // print imfile list
     if (processedImfiles->n) {
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(processedImfiles); i++) {
-            psMetadata *md = detProcessedImfileMetadataFromObject(
-                    processedImfiles->data[i]);
-            psMetadataAddMetadata(
-                output, PS_LIST_TAIL, "detProcessedImfile", PS_META_DUPLICATE_OK,
-                NULL, md
-            );
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+        // negative simple so the default is true
+        if (!detProcessedImfilePrintObjects(stdout, processedImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(processedImfiles);
+            return false;
+        }
     }
 
@@ -1095,21 +1114,22 @@
     }
 
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // print imfile list
     if (stackedImfiles->n) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(stackedImfiles); i++) {
-            psMetadata *md = detStackedImfileMetadataFromObject(
-                    stackedImfiles->data[i]);
-            psMetadataAddMetadata(
-                output, PS_LIST_TAIL, "detStackedImfile", PS_META_DUPLICATE_OK,
-                NULL, md
-            );
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+        // negative simple so the default is true
+        if (!detStackedImfilePrintObjects(stdout, stackedImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(stackedImfiles);
+            return false;
+        }
     }
 
@@ -1186,21 +1206,24 @@
     psFree(valid_class_ids);
 
-    // print detStackedImfile if all class_ids are matched
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(stackedImfiles); i++) {
-        psMetadata *md = detStackedImfileMetadataFromObject(
-                stackedImfiles->data[i]);
-        psMetadataAddMetadata(
-            output, PS_LIST_TAIL, "detStackedImfile", PS_META_DUPLICATE_OK,
-            NULL, md
-        );
-        psFree(md);
-    }
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (stackedImfiles->n) {
+        if (!detStackedImfilePrintObjects(stdout, stackedImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(stackedImfiles);
+            return false;
+        }
+    }
+
     psFree(stackedImfiles);
-
-    psString str = psMetadataConfigFormat(output); 
-    psFree(output);
-    fprintf(stdout, "%s\n", str);
-    psFree(str);
   
     return true;
@@ -1456,21 +1479,24 @@
     }
 
-    // print detNormalizedImfiles
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(normalizedImfiles); i++) {
-        psMetadata *md = detStackedImfileMetadataFromObject(
-                normalizedImfiles->data[i]);
-        psMetadataAddMetadata(
-            output, PS_LIST_TAIL, "detNormalizedImfile", PS_META_DUPLICATE_OK,
-            NULL, md
-        );
-        psFree(md);
-    }
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (normalizedImfiles->n) {
+        if (!detNormalizedImfilePrintObjects(stdout, normalizedImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(normalizedImfiles);
+            return false;
+        }
+    }
+
     psFree(normalizedImfiles);
-
-    psString str = psMetadataConfigFormat(output); 
-    psFree(output);
-    fprintf(stdout, "%s\n", str);
-    psFree(str);
 
     return true;
@@ -1536,20 +1562,24 @@
     // if we nade it this far we must have a complete frame
 
-    // print detNormalizedImfiles
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(masterImfiles); i++) {
-        psMetadata *md = detStackedImfileMetadataFromObject(
-                masterImfiles->data[i]);
-        psMetadataAddMetadata(
-            output, PS_LIST_TAIL, "detNormalizedImfile", PS_META_DUPLICATE_OK,
-            NULL, md
-        );
-        psFree(md);
-    }
-
-    psString str = psMetadataConfigFormat(output); 
-    psFree(output);
-    fprintf(stdout, "%s\n", str);
-    psFree(str);
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (masterImfiles->n) {
+        if (!detNormalizedImfilePrintObjects(stdout, masterImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(masterImfiles);
+            return false;
+        }
+    }
+
+    psFree(masterImfiles);
 
     return true;
@@ -1708,21 +1738,21 @@
     }
 
-    if (psArrayLength(residImfiles)) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(residImfiles); i++) {
-            psMetadata *md = detResidImfileAnalysisMetadataFromObject(
-                    residImfiles->data[i]);
-            psMetadataAddMetadata(
-                output, PS_LIST_TAIL, "detResidImfileAnalysis",
-                PS_META_DUPLICATE_OK, NULL, md
-            );
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (residImfiles->n) {
+        if (!detResidImfileAnalysisPrintObjects(stdout, residImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(residImfiles);
+            return false;
+        }
     }
 
@@ -1839,24 +1869,25 @@
     }
 
-    if (psArrayLength(residExps)) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(residExps); i++) {
-            psMetadata *md = detResidExpAnalysisMetadataFromObject(
-                    residExps->data[i]);
-            psMetadataAddMetadata(
-                output, PS_LIST_TAIL, "detResidExpAnalysis",
-                PS_META_DUPLICATE_OK, NULL, md
-            );
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (residExps->n) {
+        if (!detResidExpAnalysisPrintObjects(stdout, residExps, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(residExps);
+            return false;
+        }
     }
 
     psFree(residExps);
+
     return true;
 }
@@ -1921,21 +1952,21 @@
     }
 
-    if (psArrayLength(masterFrames)) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(masterFrames); i++) {
-            psMetadata *md = detMasterFrameMetadataFromObject(
-                    masterFrames->data[i]);
-            psMetadataAddMetadata(
-                output, PS_LIST_TAIL, "detMasterFrame",
-                PS_META_DUPLICATE_OK, NULL, md
-            );
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (masterFrames->n) {
+        if (!detMasterFramePrintObjects(stdout, masterFrames, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(masterFrames);
+            return false;
+        }
     }
 
@@ -1958,21 +1989,21 @@
     }
 
-    if (psArrayLength(normalizedImfiles)) {
-        // print imfile list
-        psMetadata *output = psMetadataAlloc();
-        for (long i = 0; i < psArrayLength(normalizedImfiles); i++) {
-            psMetadata *md = detNormalizedImfileMetadataFromObject(
-                    normalizedImfiles->data[i]);
-            psMetadataAddMetadata(
-                output, PS_LIST_TAIL, "detNormalizedImfile",
-                PS_META_DUPLICATE_OK, NULL, md
-            );
-            psFree(md);
-        }
-
-        psString str = psMetadataConfigFormat(output); 
-        psFree(output);
-        fprintf(stdout, "%s\n", str);
-        psFree(str);
+    bool simple = false;
+    {
+        bool status = false;
+        simple = psMetadataLookupBool(&status, config->args, "-simple");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
+            return false;
+        }
+    }
+
+    // negative simple so the default is true
+    if (normalizedImfiles->n) {
+        if (!detNormalizedImfilePrintObjects(stdout, normalizedImfiles, !simple)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to print array");
+            psFree(normalizedImfiles);
+            return false;
+        }
     }
 
