Index: trunk/ippTools/src/regtoolConfig.c
===================================================================
--- trunk/ippTools/src/regtoolConfig.c	(revision 8187)
+++ trunk/ippTools/src/regtoolConfig.c	(revision 8250)
@@ -22,35 +22,46 @@
     }
 
-    // -pending
-    psMetadata *pendingArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id",  0,
-        "define exposure ID", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst",  0,
-        "define camera of interest", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope",  0,
-        "define camera of interest", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type",  0,
-        "define class", NULL);
-    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-class",  0,
-        "define class", NULL);
-    psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple",  0,
+    // -pendingexp
+    psMetadata *pendingexpArgs = psMetadataAlloc();
+    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_id",  0,
+        "search by exposure ID", NULL);
+    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-inst",  0,
+        "search by camera", NULL);
+    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-telescope",  0,
+        "search by telescope", NULL);
+    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_type",  0,
+        "search by exposure type", NULL);
+    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-imfiles",  0,
+        "search for exps with N imfiles", NULL);
+    psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple",  0,
         "use the simple output format", false);
-
-
-    // -update
-    psMetadata *updateArgs = psMetadataAlloc();
-    psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-exp_id",  0,
+    
+    // -pendingimfile
+    psMetadata *pendingimfileArgs = psMetadataAlloc();
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+        "search by exposure ID", NULL);
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class",  0,
+        "search by class", NULL);
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id",  0,
+        "search by class ID", NULL);
+    psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple",  0,
+        "use the simple output format", false);
+
+
+    // -updateexp
+    psMetadata *updateexpArgs = psMetadataAlloc();
+    psMetadataAddStr(updateexpArgs, PS_LIST_TAIL, "-exp_id",  0,
         "exp_id to operate on", NULL); 
-    psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-filter",  0,
+    psMetadataAddStr(updateexpArgs, PS_LIST_TAIL, "-filter",  0,
         "define filter ", NULL);
-    psMetadataAddF32(updateArgs, PS_LIST_TAIL, "-airmass",  0,
+    psMetadataAddF32(updateexpArgs, PS_LIST_TAIL, "-airmass",  0,
         "define airmass", NAN);
-    psMetadataAddF64(updateArgs, PS_LIST_TAIL, "-ra",  0,
+    psMetadataAddF64(updateexpArgs, PS_LIST_TAIL, "-ra",  0,
         "define RA", NAN);
-    psMetadataAddF64(updateArgs, PS_LIST_TAIL, "-decl",  0,
+    psMetadataAddF64(updateexpArgs, PS_LIST_TAIL, "-decl",  0,
         "define DEC", NAN);
-    psMetadataAddF32(updateArgs, PS_LIST_TAIL, "-exp_time",  0,
+    psMetadataAddF32(updateexpArgs, PS_LIST_TAIL, "-exp_time",  0,
         "define exposure time", NAN);
-    psMetadataAddF64(updateArgs, PS_LIST_TAIL, "-background",  0,
+    psMetadataAddF64(updateexpArgs, PS_LIST_TAIL, "-background",  0,
         "define exposue background", NAN);
     /*
@@ -60,6 +71,29 @@
         "define URL", NULL);
     */
-    psMetadataAddBool(updateArgs, PS_LIST_TAIL, "-detrend",  0,
+    psMetadataAddBool(updateexpArgs, PS_LIST_TAIL, "-detrend",  0,
         "declare this as detrend data", false);
+    
+    // -updateimfile
+    psMetadata *updateimfileArgs = psMetadataAlloc();
+    psMetadataAddStr(updateimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+        "search by exposure ID", NULL);
+    psMetadataAddStr(updateimfileArgs, PS_LIST_TAIL, "-class",  0,
+        "search by class", NULL);
+    psMetadataAddStr(updateimfileArgs, PS_LIST_TAIL, "-class_id",  0,
+        "search by class ID", NULL);
+    psMetadataAddStr(updateimfileArgs, PS_LIST_TAIL, "-filter",  0,
+        "define filter ", NULL);
+    psMetadataAddF32(updateimfileArgs, PS_LIST_TAIL, "-airmass",  0,
+        "define airmass", NAN);
+    psMetadataAddF64(updateimfileArgs, PS_LIST_TAIL, "-ra",  0,
+        "define RA", NAN);
+    psMetadataAddF64(updateimfileArgs, PS_LIST_TAIL, "-decl",  0,
+        "define DEC", NAN);
+    psMetadataAddF32(updateimfileArgs, PS_LIST_TAIL, "-exp_time",  0,
+        "define exposure time", NAN);
+    psMetadataAddF64(updateimfileArgs, PS_LIST_TAIL, "-bg",  0,
+        "define exposue background", NAN);
+    psMetadataAddF64(updateimfileArgs, PS_LIST_TAIL, "-background_stdev",  0,
+        "define exposue background standard dev.", NAN);
 
 #define PXTOOL_MODE(option, modeval, argset) \
@@ -77,6 +111,7 @@
 
     // find which mode we're running under
-    PXTOOL_MODE("-pending",     P0SEARCH_MODE_PENDING,      pendingArgs);
-    PXTOOL_MODE("-update",      P0SEARCH_MODE_UPDATE,       updateArgs);
+    PXTOOL_MODE("-pendingexp",   P0SEARCH_MODE_PENDINGEXP,  pendingexpArgs);
+    PXTOOL_MODE("-pendingimfile",P0SEARCH_MODE_PENDINGIMFILE,pendingimfileArgs);
+    PXTOOL_MODE("-updateimfile", P0SEARCH_MODE_UPDATEIMFILE, updateimfileArgs);
 
     bool argErr = false;
@@ -91,18 +126,30 @@
     if (argErr) {
         printf("\nPan-STARRS Phase 0 Search Tool\n");
-        printf("Usage: %s <mode> [-update|-pending]\n\n", argv[0]);
-        printf(" <mode> : -pending | -update\n\n");
-        fprintf (stdout, "-pending ");
-        psArgumentHelp(pendingArgs);
-        psFree(pendingArgs);
-        fprintf (stdout, "-update ");
-        psArgumentHelp(updateArgs);
-        psFree(updateArgs);
+        printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
+        printf(" <mode> : [-pendingexp|-pendingimfile|-updateexp|-updateimfile]\n\n");
+
+        fprintf (stdout, "-pendingexp ");
+        psArgumentHelp(pendingexpArgs);
+        psFree(pendingexpArgs);
+
+        fprintf (stdout, "-pendingimfile ");
+        psArgumentHelp(pendingimfileArgs);
+        psFree(pendingimfileArgs);
+
+        fprintf (stdout, "-updateexp ");
+        psArgumentHelp(updateexpArgs);
+        psFree(updateexpArgs);
+
+        fprintf (stdout, "-updateimfile ");
+        psArgumentHelp(updateimfileArgs);
+        psFree(updateimfileArgs);
 
         goto FAIL;
     }
 
-    psFree(pendingArgs);
-    psFree(updateArgs);
+    psFree(pendingexpArgs);
+    psFree(pendingimfileArgs);
+    psFree(updateexpArgs);
+    psFree(updateimfileArgs);
 
     // setup search criterion
@@ -136,4 +183,15 @@
     addWhereStr(telescope);
     addWhereStr(exp_type);
+    {
+        int imfiles = 0; 
+        bool status = false;
+        if ((imfiles = psMetadataLookupS32(&status, config->args, "-imfiles"))) {
+            if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "imfiles", 0, "==", imfiles)) {
+                psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
+                goto FAIL;
+            }
+        }
+    }
+    addWhereStr(class);
     addWhereStr(class_id);
     addWhereStr(filter);
