Index: trunk/ippTools/src/chiptoolConfig.c
===================================================================
--- trunk/ippTools/src/chiptoolConfig.c	(revision 8535)
+++ trunk/ippTools/src/chiptoolConfig.c	(revision 8658)
@@ -26,22 +26,42 @@
     psMetadata *defineArgs = psMetadataAlloc();
 
-    // -pending
-    psMetadata *pendingArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst",  0, "define camera of interest", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter",  0, "define filter of interest", NULL); 
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id",  0, "define exposure ID", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-class",  0, "define class", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-class_id",  0, "define class ID", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-uri",  0, "define URL", NULL);
-    psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple",  0,
-        "use the simple output format", false);
+    // -pendingimfile
+    psMetadata *pendingimfileArgs = psMetadataAlloc();
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst",  0,
+            "define camera of interest", NULL);
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-filter",  0,
+            "define filter of interest", NULL); 
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "define exposure ID", NULL);
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class",  0,
+            "define class", NULL);
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id",  0,
+            "define class ID", NULL);
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-uri",  0,
+            "define URL", NULL);
+    psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple",  0,
+            "use the simple output format", false);
  
-    // -done
-    psMetadata *doneArgs = psMetadataAlloc();
-    psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-exp_id",  0,
+    // -addprocessedimfile
+    psMetadata *addprocessedimfileArgs = psMetadataAlloc();
+    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
             "define exp_id (required)", NULL); 
-    psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-class_id",  0, "define class ID", NULL);
-    psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-uri",  0,
+    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
+            "define class ID", NULL);
+    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-uri",  0,
             "define URL", NULL);
+    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-recip",  0,
+            "define recipe (required)", NULL);
+    psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg",  0,
+            "define exposue background", NAN);
+    psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev",  0,
+            "define exposue background stdev", NAN);
+    psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev",  0,
+            "define exposue background mean stdev", NAN);
+    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-b1_uri",  0,
+            "define banana 1", NULL);
+    psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-b2_uri",  0,
+            "define banana 2", NULL);
+
 
 #define PXTOOL_MODE(option, modeval, argset) \
@@ -52,14 +72,20 @@
         if (config->mode) { \
             psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \
+            goto FAIL; \
         } \
         config->mode = modeval; \
         config->args = psMemIncrRefCounter(argset); \
     } \
+    if (!psMetadataAddMetadata(argSets, PS_LIST_TAIL, option, 0, NULL, argset)) {; \
+        psError(PS_ERR_UNKNOWN, false, "failed to add argset for %s", option); \
+    } \
+    psFree(argset); \
 }
 
+    psMetadata *argSets = psMetadataAlloc();
     PXTOOL_MODE("-quick",       P2TOOL_MODE_QUICK,        quickArgs);
     PXTOOL_MODE("-define",      P2TOOL_MODE_DEFINE,       defineArgs);
-    PXTOOL_MODE("-pending",     P2TOOL_MODE_PENDING,      pendingArgs);
-    PXTOOL_MODE("-done",        P2TOOL_MODE_DONE,         doneArgs);
+    PXTOOL_MODE("-pendingimfile", P2TOOL_MODE_PENDINGIMFILE, pendingimfileArgs);
+    PXTOOL_MODE("-addprocessedimfile",P2TOOL_MODE_ADDPROCESSEDIMFILE,addprocessedimfileArgs);
 
     bool argErr = false;
@@ -74,26 +100,23 @@
     if (argErr) {
         printf("\nPan-STARRS Phase 2 Search Tool\n\n");
-        printf("Usage: %s [mode] [options]\n\n", argv[0]);
-        printf(" [mode] : -quick | -define | -pending | -done\n\n");
-        fprintf (stdout, "-quick ");
-        psArgumentHelp(quickArgs);
-        psFree(quickArgs);
-        fprintf (stdout, "-define ");
-        psArgumentHelp(defineArgs);
-        psFree(defineArgs);
-        fprintf (stdout, "-pending ");
-        psArgumentHelp(pendingArgs);
-        psFree(pendingArgs);
-        fprintf (stdout, "-done ");
-        psArgumentHelp(doneArgs);
-        psFree(doneArgs);
+        printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
+        printf(" <mode> :\n\n");
 
+        psMetadataIterator *iter = psMetadataIteratorAlloc(argSets, 0, NULL);
+        psMetadataItem *item = NULL;
+        while ((item = psMetadataGetAndIncrement(iter))) {
+            if (!item->type == PS_DATA_METADATA) {
+                psAbort(argv[0], "all options must be specified as a metadata");            }
+
+            fprintf(stdout, "%s ", item->name);
+            psArgumentHelp(item->data.md);
+        }
+        psFree(iter);
+
+        psFree(argSets);
         goto FAIL;
     }
 
-    psFree(quickArgs)
-    psFree(defineArgs)
-    psFree(pendingArgs)
-    psFree(doneArgs)
+    psFree(argSets);
 
     // setup search criterion
