Index: trunk/ippTools/src/camtoolConfig.c
===================================================================
--- trunk/ippTools/src/camtoolConfig.c	(revision 14023)
+++ trunk/ippTools/src/camtoolConfig.c	(revision 14100)
@@ -181,4 +181,13 @@
             "only return imfiles with a fault status set", false);
 
+    // -revertprocessedexp
+    psMetadata *revertprocessedexpArgs = psMetadataAlloc();
+    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0,
+            "search by camtool ID (required)", NULL);
+    psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-chip_id", 0,
+            "search by chiptool ID", NULL);
+    psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code",  0,
+            "search by fault code", 0);
+
     // -updateprocessedexp
     psMetadata *updateprocessedexpArgs = psMetadataAlloc();
@@ -217,4 +226,5 @@
     PXTOOL_ADD_MODE("-addprocessedexp",     "", CAMTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
     PXTOOL_ADD_MODE("-processedexp",        "", CAMTOOL_MODE_PROCESSEDEXP,  processedexpArgs);
+    PXTOOL_ADD_MODE("-revertprocessedexp",  "", CAMTOOL_MODE_REVERTPROCESSEDEXP,  revertprocessedexpArgs);
     PXTOOL_ADD_MODE("-updateprocessedexp",  "", CAMTOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpArgs);
     PXTOOL_ADD_MODE("-block",               "", CAMTOOL_MODE_BLOCK,         blockArgs);
@@ -299,7 +309,19 @@
         }
     }
-    addWhereStr(class);
     addWhereStr(class_id);
     addWhereStr(filter);
+
+    // convert '-code' to 'fault'
+    {
+        psS16 fault = 0;
+        bool status = false;
+        if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {
+            if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {
+                psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+                psFree(config);
+                return NULL;
+            }
+        }
+    }
 
     if (psListLength(config->where->list) < 1) {
