Index: trunk/ippTools/src/regtoolConfig.c
===================================================================
--- trunk/ippTools/src/regtoolConfig.c	(revision 14097)
+++ trunk/ippTools/src/regtoolConfig.c	(revision 14098)
@@ -252,4 +252,11 @@
         "use the simple output format", false);
 
+    // -revertprocessedimfile
+    psMetadata *revertprocessedexpArgs = psMetadataAlloc();
+    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id",  0,
+            "search by exposure ID (required)", NULL);
+    psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code",  0,
+            "search by fault code", 0);
+
     // -updatedprocessedexp
     psMetadata *updatedprocessedexpArgs = psMetadataAlloc();
@@ -271,4 +278,5 @@
     PXTOOL_ADD_MODE("-addprocessedexp",         "",  REGTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
     PXTOOL_ADD_MODE("-processedexp",            "",     REGTOOL_MODE_PROCESSEDEXP, processedexpArgs);
+    PXTOOL_ADD_MODE("-revertprocessedexp",      "", REGTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpArgs);
     PXTOOL_ADD_MODE("-updateprocessedexp",      "",  REGTOOL_MODE_UPDATEPROCESSEDEXP,      updatedprocessedexpArgs);
 
@@ -298,4 +306,17 @@
 }
 
+#define addWhereS16(name) \
+{ \
+    psS16 s16 = 0; \
+    bool status = false; \
+    if ((s16= psMetadataLookupS16(&status, config->args, "-" #name))) { \
+        if (!psMetadataAddS16(config->where, PS_LIST_TAIL, #name, 0, "==", s16)) { \
+            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
+            psFree(config); \
+            return NULL; \
+        } \
+    } \
+}
+
     // generate SQL where clause
     config->where = psMetadataAlloc();
@@ -320,4 +341,5 @@
     addWhereStr(tmp_class_id);
     addWhereStr(filter);
+    addWhereS16(code);
 
     if (config->where->list->n < 1) {
