Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 7141)
+++ trunk/ippTools/src/dettool.c	(revision 7142)
@@ -16,5 +16,5 @@
 
 static detInputExpRow *rawDetrenTodetInputExpRow(rawDetrendExpRow *rawExp, psS32 det_id);
-static psArray *searchRawImfiles(pxConfig *config);
+static psArray *searchRawImfiles(pxConfig *config, psMetadata *where);
 
 int main(int argc, char **argv)
@@ -159,5 +159,5 @@
 
     // search from rawImfiles
-    psArray *rawImfiles = searchRawImfiles(config);
+    psArray *rawImfiles = searchRawImfiles(config, NULL);
 
     // print imfile list
@@ -177,12 +177,17 @@
 }
 
-static psArray *searchRawImfiles(pxConfig *config)
+static psArray *searchRawImfiles(pxConfig *config, psMetadata *where)
 {
     PS_ASSERT_PTR_NON_NULL(config, NULL);
+
+    // use the default where if "where" is NULL
+    if (!where) {
+        where = config->where;
+    }
 
     // select exp_ids from detInputExp matching det_idp
     // where query should be pre-generated
     psArray *detInputExp = 
-        detInputExpSelectRowObjects(config->dbh, config->where, 0);
+        detInputExpSelectRowObjects(config->dbh, where, 0);
     if (!detInputExp) {
         psError(PS_ERR_UNKNOWN, false, "no rawDetrendExp rows found");
@@ -321,5 +326,5 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    // det_id, class_id, uri, & recipe are required
+    // det_id, class_id, uri, stats, & recipe are required
     bool status = false;
     psString det_id = psMetadataLookupStr(&status, config->args, "-det_id");
@@ -350,15 +355,28 @@
 
     // correlate the class_id against the input exposure(s)
-    psArray *rawImfiles = searchRawImfiles(config);
+
+    // we have to generate our own where claus as we want to search only by the
+    // det_id
+    psMetadata *where = psMetadataAlloc();
+    if (!psMetadataAddS32(where, PS_LIST_TAIL, "det_id", 0, "==",
+            (psS32)atoi(det_id))) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+        psFree(where);
+        return false;
+    }
+
+    psArray *rawImfiles = searchRawImfiles(config, where);
 
     bool valid_class_id = false;
-    for (long i = 0; i < psArrayLength(rawImfiles); i++) {
-        if (class_id == ((rawImfileRow *)rawImfiles->data[i])->class_id) {
-            valid_class_id = true;
-            break;
+    if (rawImfiles) {
+        for (long i = 0; i < psArrayLength(rawImfiles); i++) {
+            if (strcmp(class_id, ((rawImfileRow *)rawImfiles->data[i])->class_id) == 0) {
+                valid_class_id = true;
+                break;
+            }
         }
-    }
-    psFree(rawImfiles);
-
+        psFree(rawImfiles);
+    } 
+    
     if (!valid_class_id) {
         psError(PS_ERR_UNKNOWN, true, 
@@ -371,5 +389,4 @@
         (psS32)atol(det_id), class_id, uri, stats, recipe
     );   
-    psFree(rawImfiles);
 
     // insert the new row into the detProcessedImfile table
