Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 19771)
+++ trunk/ippTools/src/dettool.c	(revision 19812)
@@ -245,9 +245,9 @@
     PXOPT_LOOKUP_S64(ref_det_id, config->args, "-ref_det_id", true, false);
     PXOPT_LOOKUP_S32(ref_iter, config->args, "-ref_iter", true, false);
-    if (!strncmp(mode, "verify", 7) && ((ref_det_id == 0) || (ref_iter == -1))) {
+    if (!strcmp(mode, "verify") && ((ref_det_id == 0) || (ref_iter == -1))) {
         psError(PS_ERR_UNKNOWN, false, "verify mode requires both -ref_det_id and -ref_iter");
         return false;
     } 
-    if (strncmp(mode, "verify", 7) && ((ref_det_id != 0) || (ref_iter != -1))) {
+    if (strcmp(mode, "verify") && ((ref_det_id != 0) || (ref_iter != -1))) {
         psError(PS_ERR_UNKNOWN, false, "master mode cannot have -ref_det_id or -ref_iter set");
         return false;
@@ -494,9 +494,9 @@
     PXOPT_LOOKUP_S64(ref_det_id, config->args, "-ref_det_id", false, false);
     PXOPT_LOOKUP_S32(ref_iter, config->args, "-ref_iter", false, false);
-    if (!strncmp(mode, "verify", 7) && ((ref_det_id == 0) || (ref_iter == -1))) {
+    if (!strcmp(mode, "verify") && ((ref_det_id == 0) || (ref_iter == -1))) {
         psError(PS_ERR_UNKNOWN, false, "verify mode requires both -ref_det_id and -ref_iter");
         return false;
     } 
-    if (strncmp(mode, "verify", 7) && ((ref_det_id != 0) || (ref_iter != -1))) {
+    if (strcmp(mode, "verify") && ((ref_det_id != 0) || (ref_iter != -1))) {
         psError(PS_ERR_UNKNOWN, false, "master mode cannot have -ref_det_id or -ref_iter set");
         return false;
@@ -734,9 +734,9 @@
     PXOPT_LOOKUP_S64(ref_det_id, config->args, "-ref_det_id", false, false);
     PXOPT_LOOKUP_S32(ref_iter, config->args, "-ref_iter", false, false);
-    if (!strncmp(mode, "verify", 7) && ((ref_det_id == 0) || (ref_iter == -1))) {
+    if (!strcmp(mode, "verify") && ((ref_det_id == 0) || (ref_iter == -1))) {
         psError(PS_ERR_UNKNOWN, false, "verify mode requires both -ref_det_id and -ref_iter");
         return false;
     } 
-    if (strncmp(mode, "verify", 7) && ((ref_det_id != 0) || (ref_iter != -1))) {
+    if (strcmp(mode, "verify") && ((ref_det_id != 0) || (ref_iter != -1))) {
         psError(PS_ERR_UNKNOWN, false, "master mode cannot have -ref_det_id or -ref_iter set");
         return false;
@@ -920,7 +920,12 @@
 
     // additional restriction on the detInputExp's to be selected
-    PXOPT_COPY_TIME(config->args, input_filter, "-set_input_begin", "dateobs", ">=");
-    PXOPT_COPY_TIME(config->args, input_filter, "-set_input_end", "dateobs", "<");
-
+    PXOPT_LOOKUP_TIME(input_begin, config->args, "-set_input_begin", false, false);
+    if (input_begin) {
+      PXOPT_COPY_TIME(config->args, input_filter, "-set_input_begin", "dateobs", ">=");
+    }
+    PXOPT_LOOKUP_TIME(input_end, config->args, "-set_input_end", false, false);
+    if (input_end) {
+      PXOPT_COPY_TIME(config->args, input_filter, "-set_input_end", "dateobs", "<");
+    }
     PXOPT_LOOKUP_BOOL(only_accepted, config->args, "-only_accepted", false); // optional
 
@@ -962,8 +967,5 @@
 
     if (only_accepted) {
-        psString whereClause = NULL;
-	psStringAppend(&whereClause, " AND accept = 1");
-        psStringAppend(&query, " AND %s", whereClause);
-        psFree(whereClause);
+	psStringAppend(&query, " AND accept = 1");
     }
 
@@ -1770,25 +1772,29 @@
     PS_ASSERT_PTR_NON_NULL(state, false);
 
-    // check that state is a valid string value
-    if (!(
-            (strncmp(state, "run", 4) == 0)
-            || (strncmp(state, "stop", 5) == 0)
-            || (strncmp(state, "drop", 5) == 0)
-            || (strncmp(state, "register", 4) == 0)
-        )
-    ) {
-        psError(PS_ERR_UNKNOWN, false,
-                "invalid detRun state: %s", state);
-        return false;
-    }
+    if (!isValidDetRunState (state)) return false;
 
     char *query = "UPDATE detRun SET state = '%s' WHERE det_id = %" PRId64;
     if (!p_psDBRunQuery(config->dbh, query, state, det_id)) {
-        psError(PS_ERR_UNKNOWN, false,
-                "failed to change state for det_id %" PRId64, det_id);
-        return false;
-    }
-
-    return true;
+        psError(PS_ERR_UNKNOWN, false, "failed to change state for det_id %" PRId64, det_id);
+        return false;
+    }
+
+    return true;
+}
+
+// the detRun states are a superset of the data states below
+bool isValidDetRunState (const char *state) {
+
+    // check that state is a valid string value
+    if (!strcmp(state, "run")) return true;
+    if (!strcmp(state, "stop")) return true;
+    if (!strcmp(state, "drop")) return true;
+    if (!strcmp(state, "wait")) return true;
+    if (!strcmp(state, "test")) return true;
+    if (!strcmp(state, "ignore")) return true;
+    if (!strcmp(state, "register")) return true;
+
+    psError(PS_ERR_UNKNOWN, true, "invalid detRun state: %s", state);
+    return false;
 }
 
@@ -1796,8 +1802,8 @@
 
     // check that state is a valid string value
-    if (!strncmp(data_state, "run", 4)) return true;
-    if (!strncmp(data_state, "stop", 5)) return true;
-    if (!strncmp(data_state, "drop", 5)) return true;
-    if (!strncmp(data_state, "register", 4)) return true;
+    if (!strcmp(data_state, "run")) return true;
+    if (!strcmp(data_state, "stop")) return true;
+    if (!strcmp(data_state, "drop")) return true;
+    if (!strcmp(data_state, "register")) return true;
 
     psError(PS_ERR_UNKNOWN, true, "invalid data state: %s", data_state);
@@ -1811,6 +1817,6 @@
 
     // check that state is a valid string value
-    if (!strncmp(mode, "master", 7)) return true;
-    if (!strncmp(mode, "verify", 7)) return true;
+    if (!strcmp(mode, "master")) return true;
+    if (!strcmp(mode, "verify")) return true;
 
     psError(PS_ERR_UNKNOWN, false, "invalid detRun mode: %s", mode);
