Index: trunk/ippTools/src/stacktoolConfig.c
===================================================================
--- trunk/ippTools/src/stacktoolConfig.c	(revision 11814)
+++ trunk/ippTools/src/stacktoolConfig.c	(revision 11851)
@@ -27,5 +27,4 @@
 #include "p6tool.h"
 
-// this function can not fail -- exits on error
 pxConfig *p6toolConfig(pxConfig *config, int argc, char **argv) {
     if (!config) {
@@ -39,5 +38,6 @@
     if (!config->modules) {
         psError(PS_ERR_UNKNOWN, false, "Can't find site configuration");
-        goto FAIL;
+        psFree(config);
+        return NULL;
     }
 
@@ -59,6 +59,6 @@
     // -updaterun
     psMetadata *updaterunArgs = psMetadataAlloc();
-    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "define p4 ID (required)", NULL);
+    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-p6_id", 0,
+            "define p6 ID (required)", NULL);
     psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0,
             "set state (required)", NULL);
@@ -70,176 +70,74 @@
 #endif
 
-    // -addinputexp
-    psMetadata *addinputexpArgs = psMetadataAlloc();
-    psMetadataAddStr(addinputexpArgs, PS_LIST_TAIL, "-p4_id", 0,
+    // -addinputscfile
+    psMetadata *addinputscfileArgs = psMetadataAlloc();
+    psMetadataAddStr(addinputscfileArgs, PS_LIST_TAIL, "-p6_id", 0,
+            "define p6 ID (required)", NULL);
+    psMetadataAddStr(addinputscfileArgs, PS_LIST_TAIL, "-p4_id", 0,
             "define p4 ID (required)", NULL);
-    psMetadataAddStr(addinputexpArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(addinputexpArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddBool(addinputexpArgs, PS_LIST_TAIL, "-magiced",  0,
-            "has this exposure been magiced", false);
-
-    // -exp
-    psMetadata *expArgs = psMetadataAlloc();
-    psMetadataAddStr(expArgs, PS_LIST_TAIL, "-p4_id", 0,
+    psMetadataAddStr(addinputscfileArgs, PS_LIST_TAIL, "-skycell_id",  0,
+            "define skycell ID (required)", NULL);
+    psMetadataAddStr(addinputscfileArgs, PS_LIST_TAIL, "-tess_id",  0,
+            "define tessellation ID (required)", NULL);
+
+    // -inputscfile
+    psMetadata *inputscfileArgs = psMetadataAlloc();
+    psMetadataAddStr(inputscfileArgs, PS_LIST_TAIL, "-p6_id", 0,
+            "search by p6 ID (required)", NULL);
+    psMetadataAddStr(inputscfileArgs, PS_LIST_TAIL, "-p4_id", 0,
+            "search by p4 ID (required)", NULL);
+    psMetadataAddStr(inputscfileArgs, PS_LIST_TAIL, "-skycell_id",  0,
+            "search by skycell ID (required)", NULL);
+    psMetadataAddStr(inputscfileArgs, PS_LIST_TAIL, "-tess_id",  0,
+            "search by tessellation ID (required)", NULL);
+    psMetadataAddU64(inputscfileArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
+    psMetadataAddBool(inputscfileArgs, PS_LIST_TAIL, "-simple",  0,
+            "use the simple output format", false);
+
+    // -tosum
+    psMetadata *tosumArgs = psMetadataAlloc();
+    psMetadataAddStr(tosumArgs, PS_LIST_TAIL, "-p6_id", 0,
+            "search by p6 ID (required)", NULL);
+    psMetadataAddStr(tosumArgs, PS_LIST_TAIL, "-p4_id", 0,
+            "search by p4 ID (required)", NULL);
+    psMetadataAddStr(tosumArgs, PS_LIST_TAIL, "-skycell_id",  0,
+            "search by skycell ID (required)", NULL);
+    psMetadataAddStr(tosumArgs, PS_LIST_TAIL, "-tess_id",  0,
+            "search by tessellation ID (required)", NULL);
+    psMetadataAddU64(tosumArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
+    psMetadataAddBool(tosumArgs, PS_LIST_TAIL, "-simple",  0,
+            "use the simple output format", false);
+
+    // -addsumscfile
+    psMetadata *addsumscfileArgs = psMetadataAlloc();
+    psMetadataAddStr(addsumscfileArgs, PS_LIST_TAIL, "-p4_id", 0,
             "define p4 ID (required)", NULL);
-    psMetadataAddStr(expArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(expArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddU64(expArgs, PS_LIST_TAIL, "-limit",  0,
+    psMetadataAddStr(addsumscfileArgs, PS_LIST_TAIL, "-skycell_id",  0,
+            "define skycell ID (required)", NULL);
+    psMetadataAddStr(addsumscfileArgs, PS_LIST_TAIL, "-tess_id",  0,
+            "define tessellation ID (required)", NULL);
+    psMetadataAddStr(addsumscfileArgs, PS_LIST_TAIL, "-uri", 0,
+            "define URI of file (required)", 0);
+    psMetadataAddF64(addsumscfileArgs, PS_LIST_TAIL, "-bg",  0,
+            "define exposue background", NAN);
+    psMetadataAddF64(addsumscfileArgs, PS_LIST_TAIL, "-bg_mean_stdev",  0,
+            "define exposue background mean stdev", NAN);
+
+    // -sumscfile
+    psMetadata *sumscfileArgs= psMetadataAlloc();
+    psMetadataAddStr(sumscfileArgs, PS_LIST_TAIL, "-p6_id", 0,
+            "search by p6 ID (required)", NULL);
+    psMetadataAddStr(sumscfileArgs, PS_LIST_TAIL, "-p4_id", 0,
+            "search by p4 ID (required)", NULL);
+    psMetadataAddStr(sumscfileArgs, PS_LIST_TAIL, "-skycell_id",  0,
+            "search by skycell ID (required)", NULL);
+    psMetadataAddStr(sumscfileArgs, PS_LIST_TAIL, "-tess_id",  0,
+            "search by tessellation ID (required)", NULL);
+    psMetadataAddU64(sumscfileArgs, PS_LIST_TAIL, "-limit",  0,
             "limit result set to N items", 0);
-    psMetadataAddBool(expArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-
-    // -imfile
-    psMetadata *imfileArgs = psMetadataAlloc();
-    psMetadataAddStr(imfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "define p4 ID (required)", NULL);
-    psMetadataAddStr(imfileArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(imfileArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddU64(imfileArgs, PS_LIST_TAIL, "-limit",  0,
-            "limit result set to N items", 0);
-    psMetadataAddBool(imfileArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-
-    // -tooverlap
-    psMetadata *tooverlapArgs = psMetadataAlloc();
-    psMetadataAddStr(tooverlapArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddU64(tooverlapArgs, PS_LIST_TAIL, "-limit",  0,
-            "limit result set to N items", 0);
-    psMetadataAddBool(tooverlapArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-
-    // -addoverlap
-    psMetadata *addoverlapArgs = psMetadataAlloc();
-    psMetadataAddStr(addoverlapArgs, PS_LIST_TAIL, "-mapfile", 0,
-            "skycell <-> imfile mapping description", NULL);
-
-    // -scmap
-    psMetadata *scmapArgs = psMetadataAlloc();
-    psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-skycell_id", 0,
-            "searcy by skycell ID", NULL);
-    psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-tess_id", 0,
-            "searcy by tess ID", NULL);
-    psMetadataAddU64(scmapArgs, PS_LIST_TAIL, "-limit",  0,
-            "limit result set to N items", 0);
-    psMetadataAddBool(scmapArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-
-    // -towarped
-    psMetadata *towarpedArgs = psMetadataAlloc();
-    psMetadataAddStr(towarpedArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddU64(towarpedArgs, PS_LIST_TAIL, "-limit",  0,
-            "limit result set to N items", 0);
-    psMetadataAddBool(towarpedArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
- 
-    // -addwarped
-    psMetadata *addwarpedArgs = psMetadataAlloc();
-    psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "define p4 ID (required)", NULL);
-    psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-skycell_id",  0,
-            "define skycell ID (required)", NULL);
-    psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-tess_id",  0,
-            "define tessellation ID (required)", NULL);
-    psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-uri", 0,
-            "define URI of file (required)", 0);
-    psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg",  0,
-            "define exposue background", NAN);
-    psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg_mean_stdev",  0,
-            "define exposue background mean stdev", NAN);
- 
-    // -warped
-    psMetadata *warpedArgs = psMetadataAlloc();
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-skycell_id",  0,
-            "define skycell ID (required)", NULL);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-tess_id",  0,
-            "define tessellation ID (required)", NULL);
-    psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(warpedArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit",  0,
-            "limit result set to N items", 0);
-    psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-
-#if 0
-    // -tostackedimfile
-    psMetadata *tostackedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(tostackedimfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddBool(tostackedimfileArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-
-    // -addstackedimfile
-    psMetadata *addstackedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(addstackedimfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "define p4 ID (required)", NULL);
-    psMetadataAddStr(addstackedimfileArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(addstackedimfileArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddStr(addstackedimfileArgs, PS_LIST_TAIL, "-class_id", 0,
-            "define class ID (required)", 0);
-    psMetadataAddStr(addstackedimfileArgs, PS_LIST_TAIL, "-uri", 0,
-            "define URI of file (required)", 0);
-    psMetadataAddStr(addstackedimfileArgs, PS_LIST_TAIL, "-b1_uri",  0,
-            "define banana 1", NULL);
-    psMetadataAddStr(addstackedimfileArgs, PS_LIST_TAIL, "-b2_uri",  0,
-            "define banana 2", NULL);
-
-    // -stackedimfile
-    psMetadata *stackedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(stackedimfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddBool(stackedimfileArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
- 
-    // -todiffimfile
-    psMetadata *todiffimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(todiffimfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddBool(todiffimfileArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
- 
-    // -adddiffimfile
-    psMetadata *adddiffimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(adddiffimfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "define p4 ID (required)", NULL);
-    psMetadataAddStr(adddiffimfileArgs, PS_LIST_TAIL, "-exp_tag", 0,
-            "define exposure tag (required)", NULL);
-    psMetadataAddS32(adddiffimfileArgs, PS_LIST_TAIL, "-p3_version", 0,
-            "define phase 3 version of exposure tag (required)", 0);
-    psMetadataAddStr(adddiffimfileArgs, PS_LIST_TAIL, "-class_id", 0,
-            "define class ID (required)", 0);
-    psMetadataAddStr(adddiffimfileArgs, PS_LIST_TAIL, "-uri", 0,
-            "define URI of file (required)", 0);
-    psMetadataAddStr(adddiffimfileArgs, PS_LIST_TAIL, "-b1_uri",  0,
-            "define banana 1", NULL);
-    psMetadataAddStr(adddiffimfileArgs, PS_LIST_TAIL, "-b2_uri",  0,
-            "define banana 2", NULL);
-
-    // -diffimfile
-    psMetadata *diffimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(diffimfileArgs, PS_LIST_TAIL, "-p4_id", 0,
-            "search by p4 ID", NULL);
-    psMetadataAddBool(diffimfileArgs, PS_LIST_TAIL, "-simple",  0,
-            "use the simple output format", false);
-#endif 
+    psMetadataAddBool(sumscfileArgs, PS_LIST_TAIL, "-simple",  0,
+            "use the simple output format", false);
 
     psFree(now);
@@ -252,5 +150,6 @@
         if (config->mode) { \
             psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \
-            goto FAIL; \
+            psFree(config); \
+            return NULL; \
         } \
         config->mode = modeval; \
@@ -267,21 +166,9 @@
     PXTOOL_MODE("-definerun",       P6TOOL_MODE_DEFINERUN,      definerunArgs);
     PXTOOL_MODE("-updaterun",       P6TOOL_MODE_UPDATERUN,      updaterunArgs);
-    PXTOOL_MODE("-addinputexp",     P6TOOL_MODE_ADDINPUTEXP,    addinputexpArgs);
-    PXTOOL_MODE("-exp",             P6TOOL_MODE_EXP,            expArgs);
-    PXTOOL_MODE("-imfile",          P6TOOL_MODE_IMFILE,         imfileArgs);
-    PXTOOL_MODE("-tooverlap",       P6TOOL_MODE_TOOVERLAP,      tooverlapArgs);
-    PXTOOL_MODE("-addoverlap",      P6TOOL_MODE_ADDOVERLAP,     addoverlapArgs);
-    PXTOOL_MODE("-scmap",           P6TOOL_MODE_SCMAP,          scmapArgs);
-    PXTOOL_MODE("-towarped",        P6TOOL_MODE_TOWARPED,       towarpedArgs);
-    PXTOOL_MODE("-addwarped",       P6TOOL_MODE_ADDWARPED,      addwarpedArgs);
-    PXTOOL_MODE("-warped",          P6TOOL_MODE_WARPED,         warpedArgs);
-#if 0
-    PXTOOL_MODE("-tostackedimfile", P6TOOL_MODE_TOSTACKEDIMFILE, tostackedimfileArgs);
-    PXTOOL_MODE("-addstackedimfile", P6TOOL_MODE_ADDSTACKEDIMFILE, addstackedimfileArgs);
-    PXTOOL_MODE("-stackedimfile",   P6TOOL_MODE_STACKEDIMFILE, stackedimfileArgs);
-    PXTOOL_MODE("-todiffimfile", P6TOOL_MODE_TODIFFIMFILE, todiffimfileArgs);
-    PXTOOL_MODE("-adddiffimfile", P6TOOL_MODE_ADDDIFFIMFILE, adddiffimfileArgs);
-    PXTOOL_MODE("-diffimfile",   P6TOOL_MODE_DIFFIMFILE, diffimfileArgs);
-#endif
+    PXTOOL_MODE("-addinputscfile",  P6TOOL_MODE_ADDINPUTSCFILE, addinputscfileArgs);
+    PXTOOL_MODE("-inputscfile",     P6TOOL_MODE_INPUTSCFILE,    inputscfileArgs);
+    PXTOOL_MODE("-tosum",           P6TOOL_MODE_TOSUM,          tosumArgs);
+    PXTOOL_MODE("-addsumscfile",    P6TOOL_MODE_ADDSUMSCFILE,   addsumscfileArgs);
+    PXTOOL_MODE("-sumscfile",       P6TOOL_MODE_SUMSCFILE,      sumscfileArgs);
 
     bool argErr = false;
@@ -312,5 +199,6 @@
 
         psFree(argSets);
-        goto FAIL;
+        psFree(config);
+        return NULL;
     }
 
@@ -325,5 +213,6 @@
         if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\
             psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
-            goto FAIL; \
+            psFree(config); \
+            return NULL; \
         } \
     } \
@@ -337,5 +226,6 @@
         if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \
             psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
-            goto FAIL; \
+            psFree(config); \
+            return NULL; \
         } \
     } \
@@ -352,5 +242,6 @@
         if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "p4_id", 0, "==", (psS32)atoi(str))) {
             psError(PS_ERR_UNKNOWN, false, "failed to add item p4_id");
-            goto FAIL; 
+            psFree(config);
+            return NULL;
         } 
     } 
@@ -371,5 +262,6 @@
     if (!config->dbh) {
         psError(PS_ERR_UNKNOWN, false, "Can't configure database");
-        goto FAIL;
+        psFree(config);
+        return NULL;
     }
 
@@ -379,9 +271,3 @@
 
     return config;
-
-FAIL:
-    psFree(config);
-    pmConfigDone();
-    psLibFinalize();
-    exit(EXIT_FAILURE);
-}
+}
