Index: trunk/ippTools/src/regtool.c
===================================================================
--- trunk/ippTools/src/regtool.c	(revision 23506)
+++ trunk/ippTools/src/regtool.c	(revision 23544)
@@ -319,7 +319,9 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where,  "-exp_id", "exp_id", "==");
-    PXOPT_COPY_STR(config->args, where,  "-exp_name", "exp_name", "==");
-    PXOPT_COPY_STR(config->args, where,  "-class_id", "class_id", "==");
+    PXOPT_COPY_S64(config->args, where,  "-exp_id",        "exp_id",   "==");
+    PXOPT_COPY_STR(config->args, where,  "-exp_name",      "exp_name", "==");
+    PXOPT_COPY_STR(config->args, where,  "-class_id",      "class_id", "==");
+    PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs",  ">=");
+    PXOPT_COPY_TIME(config->args, where, "-dateobs_end",   "dateobs",  "<=");
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
@@ -447,14 +449,45 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
+    PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);
+    PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);
+
+    PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);
+    PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);
+
+    if ((code == INT16_MAX) && !isfinite(user_1)) { 
+        psError(PS_ERR_UNKNOWN, false, "one of -code or -user_1 must be selected");
+        return false;
+    }
+    if ((code != INT16_MAX) && isfinite(user_1)) { 
+        psError(PS_ERR_UNKNOWN, false, "only one of -code or -user_1 must be selected");
+        return false;
+    }
+
     psMetadata *where = psMetadataAlloc();
     PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
     PXOPT_COPY_STR(config->args, where,  "-class_id",     "class_id", "==");
 
-    PXOPT_LOOKUP_S16(code, config->args, "-code", true, false);
-
-    if (!pxSetFaultCode(config->dbh, "rawImfile", where, code)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
-        psFree (where);
-        return false;
+    if (code != INT16_MAX) {
+	// this is fairly dangerous : can set all if the where is not set...
+	if (!pxSetFaultCode(config->dbh, "rawImfile", where, code)) {
+	    psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
+	    psFree (where);
+	    return false;
+	}
+    }
+
+    if (isfinite(user_1)) {
+	psString query = pxDataGet("regtool_updateprocessedimfile.sql");
+	if (!query) {
+	    psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+	    return false;
+	}
+
+	if (!p_psDBRunQueryF(config->dbh, query, user_1, exp_id, class_id)) {
+	    psError(PS_ERR_UNKNOWN, false, "database error");
+	    psFree(query);
+	    return false;
+	}
+	psFree(query);
     }
     psFree (where);
