Index: trunk/ippTools/src/regtool.c
===================================================================
--- trunk/ippTools/src/regtool.c	(revision 25705)
+++ trunk/ippTools/src/regtool.c	(revision 25775)
@@ -334,14 +334,24 @@
     PXOPT_COPY_TIME(config->args, where, "-dateobs_end",   "dateobs",  "<=");
     PXOPT_COPY_STR(config->args, where,  "-filter",        "filter", "==");
+    PXOPT_COPY_STR(config->args, where,  "-exp_type",      "exp_type", "==");
+    PXOPT_COPY_STR(config->args, where,  "-obs_mode",      "obs_mode", "==");
     PXOPT_COPY_S64(config->args, where,  "-magicked",      "magicked", "==");
-
-    PXOPT_LOOKUP_S64(magicked, config->args, "-magicked", false, false);
-    PXOPT_LOOKUP_BOOL(destreaked, config->args,     "-destreaked", false);
-    PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false);
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
     PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
+    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     PXOPT_LOOKUP_BOOL(ordered_by_date, config->args, "-ordered_by_date", false);
+
+    // build where string for some parameters that don't fit PXOPT_COPY*
+    psString where2 = NULL;
+    if (!pxmagicAddWhere(config, &where2, "rawImfile")) {
+        psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");
+        return false;
+    }
+    if (!pxspaceAddWhere(config, &where2, "rawImfile")) {
+        psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");
+        return false;
+    }
 
     psString query = pxDataGet("regtool_processedimfile.sql");
@@ -356,6 +366,13 @@
         psStringAppend(&query, " AND %s", whereClause);
         psFree(whereClause);
+    } else if (!all && !where2) {
+        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
+        return false;
     }
     psFree(where);
+    if (where2) {
+        psStringAppend(&query, where2);
+        psFree(where2);
+    }
 
     if (faulted) {
@@ -366,20 +383,4 @@
         psStringAppend(&query, " %s", "AND rawImfile.fault = 0");
     }
-
-    if (not_destreaked) {
-        if (destreaked) {
-            psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense");
-            return false;
-        }
-        if (magicked) {
-            psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense");
-            return false;
-        }
-        psStringAppend(&query, " AND rawImfile.magicked = 0");
-    }
-    if (destreaked) {
-        psStringAppend(&query, " AND rawImfile.magicked != 0");
-    }
-
 
     // add the ORDER BY statement if desired
