Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 10705)
+++ /trunk/ippTools/src/dettool.c	(revision 10706)
@@ -1437,4 +1437,11 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
+
     // select det_id, det_type & rawImfile *
     // get det_id from detInputExp.det_id
@@ -1477,4 +1484,11 @@
     }
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -1704,4 +1718,11 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
 
     // select detProcessedImfile.det_id
@@ -1772,4 +1793,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -2023,4 +2051,11 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
+
     // select detRun.iteration
     // select detProcessedImfile.det_id
@@ -2083,4 +2118,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -2407,4 +2449,11 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
 
     // select detRun.det_id (det_id)
@@ -2471,4 +2520,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -2627,4 +2683,11 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
 
     // select detNormalizedStatImfile.*
@@ -2668,4 +2731,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -2945,4 +3015,11 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
 
     psString query = psStringCopy(
@@ -2991,4 +3068,11 @@
     }
 #endif
+
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
 
     if (!p_psDBRunQuery(config->dbh, query)) {
Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 10705)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 10706)
@@ -204,4 +204,6 @@
     psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search for class ID", NULL);
+    psMetadataAddU64(toprocessedimfileArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(toprocessedimfileArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -249,4 +251,6 @@
     // -toprocessedexp
     psMetadata *toprocessedexpArgs = psMetadataAlloc();
+    psMetadataAddU64(toprocessedexpArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(toprocessedexpArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -282,4 +286,6 @@
     // -tostacked
     psMetadata *tostackedArgs = psMetadataAlloc();
+    psMetadataAddU64(tostackedArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(tostackedArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -306,4 +312,6 @@
     // -tonormalize
     psMetadata *tonormalizeArgs = psMetadataAlloc();
+    psMetadataAddU64(tonormalizeArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(tonormalizeArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -322,4 +330,6 @@
     // -tonormstat
     psMetadata *tonormstatArgs = psMetadataAlloc();
+    psMetadataAddU64(tonormstatArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(tonormstatArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -361,4 +371,6 @@
     // -tonormalizedexp
     psMetadata *tonormalizedexpArgs = psMetadataAlloc();
+    psMetadataAddU64(tonormalizedexpArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(tonormalizedexpArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -406,4 +418,6 @@
     // -toresidimfile
     psMetadata *toresidimfileArgs = psMetadataAlloc();
+    psMetadataAddU64(toresidimfileArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(toresidimfileArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -424,4 +438,6 @@
     // -toresidexp
     psMetadata *toresidexpArgs = psMetadataAlloc();
+    psMetadataAddU64(toresidexpArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
     psMetadataAddBool(toresidexpArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
