Index: /trunk/ippTools/src/chiptool.c
===================================================================
--- /trunk/ippTools/src/chiptool.c	(revision 6149)
+++ /trunk/ippTools/src/chiptool.c	(revision 6150)
@@ -154,4 +154,10 @@
 static bool doneMode(p2Config *config)
 {
+  // get exp_id/class/class_id/url from the CLI
+  // add the completed imfile to the p2DoneImfile tables
+  // remove corresponding entries from the p2PendingImfile table
+  // check to see if any p2PendingExps have no associated p2PendingImfiles
+  //    if so move the p2PendingExp(s) to p2DoneExp
+
     psArray *pendingFrames = p2searchPendingFrames(config);
     if (!pendingFrames) {
Index: /trunk/ippTools/src/chiptoolConfig.c
===================================================================
--- /trunk/ippTools/src/chiptoolConfig.c	(revision 6149)
+++ /trunk/ippTools/src/chiptoolConfig.c	(revision 6150)
@@ -1,7 +1,7 @@
 #include <pmConfig.h>
 
-# include "p2tools.h"
+#include "p2tools.h"
 
-bool p2searchConfig (p2Config *config, int argc, char **argv) {
+bool p2searchConfig(p2Config *config, int argc, char **argv) {
     PS_ASSERT_PTR_NON_NULL(config, false);
 
@@ -11,4 +11,5 @@
     config->recipe = NULL;          // Recipe configuration
     config->camera_name = NULL;     // Camera name
+    config->filter = NULL;          // Filter name
 
     if (! pmConfigRead(&config->site, &config->camera, &config->recipe, &argc, argv, RECIPE)) {
@@ -46,4 +47,5 @@
         config->mode = P2_MODE_PENDING;
     }
+    /*
     if ((N = psArgumentGet (argc, argv, "-update"))) {
         psArgumentRemove (N, &argc, argv);
@@ -53,4 +55,5 @@
         config->mode = P2_MODE_UPDATE;
     }
+    */
     if ((N = psArgumentGet (argc, argv, "-done"))) {
         psArgumentRemove (N, &argc, argv);
@@ -58,5 +61,5 @@
             psAbort (argv[0], "only one mode selection is allowed");
         }
-        config->mode = P2_MODE_UPDATE;
+        config->mode = P2_MODE_DONE;
     }
     
@@ -65,8 +68,13 @@
     psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-define",  0, "examine raw image table, add to pending image table", "");
     psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-pending", 0, "examine pending image table, write ppImage output", "");
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-update",  0, "update pending image table", "");
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-time",    0, "define time range of interest", "");
+//    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-update",  0, "update pending image table", "");
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-done",  0, "mov image from pending to done table", "");
+//    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-time",    0, "define time range of interest", "");
     psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-inst",  0, "define camera of interest", "");
     psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-filter",  0, "define filter of interest", "");
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-exp_id",  0, "define exposure ID", "");
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-class",  0, "define class", "");
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-class_id",  0, "define class ID", "");
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-url",  0, "define URL", "");
 
     if (config->mode == P2_MODE_NONE) {
@@ -80,5 +88,5 @@
         printf("\nPan-STARRS Phase 2 Search Tool\n\n");
         printf("Usage: %s [mode] [options]\n\n", argv[0]);
-        printf(" [mode] : -quick | -define | -pending | -update\n\n");
+        printf(" [mode] : -quick | -define | -pending | -donee\n\n");
         psArgumentHelp(config->arguments);
         psFree(config->arguments);
@@ -89,4 +97,14 @@
     config->camera_name = psMetadataLookupStr(&status, config->arguments,
         "-inst");
+    // XXX why is "" being returned when -inst is missing?
+    if (strcmp(config->camera_name, "") == 0) {
+        config->camera_name = NULL;
+    }
+    config->exp_id = psMetadataLookupStr(&status, config->arguments, "-exp_id");
+    config->class = psMetadataLookupStr(&status, config->arguments, "-class");
+    config->class_id = psMetadataLookupStr(&status, config->arguments,
+        "-class_id");
+    config->url = psMetadataLookupStr(&status, config->arguments, "-url");
+
     // add the input and output images to the arguments list
     //psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-output", 0, "Name of the output image", argv[1]);
Index: /trunk/ippTools/src/p2searchRawFrames.c
===================================================================
--- /trunk/ippTools/src/p2searchRawFrames.c	(revision 6149)
+++ /trunk/ippTools/src/p2searchRawFrames.c	(revision 6150)
@@ -6,8 +6,13 @@
 
     // build 'where' structure
-    psMetadata *where = psMetadataAlloc ();
+    psMetadata *where = NULL;
+   
+    if (config->camera_name || config->filter) {
+        where = psMetadataAlloc();
+    }
 
 //    psMetadataAddS32  (where, PS_LIST_TAIL, "TYPE",  0, "==", P2_TYPE_OBJECT);
 
+    config->camera_name = NULL;
     if (config->camera_name != NULL) {
         psMetadataAddStr(where, PS_LIST_TAIL, "camera", 0, "==",
Index: /trunk/ippTools/src/pxtools.h
===================================================================
--- /trunk/ippTools/src/pxtools.h	(revision 6149)
+++ /trunk/ippTools/src/pxtools.h	(revision 6150)
@@ -20,5 +20,5 @@
     P2_MODE_DEFINE,			// grab from raw, create pending
     P2_MODE_PENDING,			// grab from pending, output for ppImage
-    P2_MODE_UPDATE,			// set the current state
+//    P2_MODE_UPDATE,			// set the current state
     P2_MODE_DONE,			// set the current state
     P2_MODE_CREATE,			// set the current state
@@ -40,4 +40,8 @@
     psMetadata *recipe;
     psMetadata *arguments;
+    char *exp_id;
+    char *class;
+    char *class_id;
+    char *url;
 } p2Config;
 
