Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 19973)
+++ trunk/ippTools/src/dettool.c	(revision 19988)
@@ -280,32 +280,24 @@
     PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
 
-    // we have to support multipe exp_ids
+    // we have to support multiple exp_ids
     psMetadataItem *item = psMetadataLookup(config->args, "-exp_id");
     if (!item) {
         // this shouldn't actually happen when using psArgs
-        psError(PS_ERR_UNKNOWN, true, "-exp_id is required");
+        psError(PS_ERR_UNKNOWN, true, "at least one -exp_id is required");
         return false;
     }
     psMetadata *where = psMetadataAlloc();
 
+    if ((item->type != PS_DATA_METADATA_MULTI) && (item->type != PS_DATA_S64)) {
+        psAbort("-exp_id was not parsed correctly (this should not happen");
+    }
+
     // make sure that -exp_id was parsed correctly
-    // XXX this can be removed someday
-    // XXX Special case for a multi : move into a macro?
     if (item->type == PS_DATA_METADATA_MULTI) {
         psListIterator *iter = psListIteratorAlloc(item->data.list, 0, false);
         psMetadataItem *mItem = NULL;
         while ((mItem = psListGetAndIncrement(iter))) {
-            psString exp_id = mItem->data.V;
-            // if exp_id is NULL then it means that -exp_id has not been
-            // specified
-            if (!exp_id) {
-                psError(PS_ERR_UNKNOWN, true,
-                        "at least one -exp_id is required");
-                psFree(where);
-                return false;
-            }
-
-            if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id",
-                 PS_META_DUPLICATE_OK, "==", exp_id)) {
+	    psS64 exp_id = mItem->data.S64;
+            if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", PS_META_DUPLICATE_OK, "==", exp_id)) {
                 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
                 psFree(iter);
@@ -315,7 +307,13 @@
         }
         psFree(iter);
-    } else {
-        psAbort(                "-exp_id was not parsed correctly (this should not happen");
-    }
+    } 
+    if (item->type == PS_DATA_S64) {
+	psS64 exp_id = item->data.S64;
+	if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", PS_META_DUPLICATE_OK, "==", exp_id)) {
+	    psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+	    psFree(where);
+	    return false;
+	}
+    } 
 
     if (psListLength(where->list) < 1) {
