Index: trunk/ippTools/src/chiptool.c
===================================================================
--- trunk/ippTools/src/chiptool.c	(revision 14098)
+++ trunk/ippTools/src/chiptool.c	(revision 14099)
@@ -38,4 +38,5 @@
 static bool addprocessedimfileMode(pxConfig *config);
 static bool processedimfileMode(pxConfig *config);
+static bool revertprocessedimfileMode(pxConfig *config);
 static bool updateprocessedimfileMode(pxConfig *config);
 static bool blockMode(pxConfig *config);
@@ -66,4 +67,5 @@
         MODECASE(CHIPTOOL_MODE_ADDPROCESSEDIMFILE,      addprocessedimfileMode);
         MODECASE(CHIPTOOL_MODE_PROCESSEDIMFILE,         processedimfileMode);
+        MODECASE(CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,   revertprocessedimfileMode);
         MODECASE(CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileMode);
         MODECASE(CHIPTOOL_MODE_BLOCK,                   blockMode);
@@ -671,4 +673,34 @@
 }
 
+static bool revertprocessedimfileMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    psString query = pxDataGet("chiptool_revertprocessedimfile.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+        return false;
+    }
+
+    if (config->where) {
+        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "chipProcessedImfile");
+        psStringAppend(&query, " AND %s", whereClause);
+        psFree(whereClause);
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
+
+    if (psDBAffectedRows(config->dbh) < 1) {
+        psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");
+        return false;
+    }
+
+    return true;
+}
 
 static bool updateprocessedimfileMode(pxConfig *config)
Index: trunk/ippTools/src/chiptool.h
===================================================================
--- trunk/ippTools/src/chiptool.h	(revision 14098)
+++ trunk/ippTools/src/chiptool.h	(revision 14099)
@@ -29,4 +29,5 @@
     CHIPTOOL_MODE_ADDPROCESSEDIMFILE,
     CHIPTOOL_MODE_PROCESSEDIMFILE,
+    CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,
     CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,
     CHIPTOOL_MODE_BLOCK,
Index: trunk/ippTools/src/chiptoolConfig.c
===================================================================
--- trunk/ippTools/src/chiptoolConfig.c	(revision 14098)
+++ trunk/ippTools/src/chiptoolConfig.c	(revision 14099)
@@ -108,6 +108,4 @@
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
             "search by exposure ID", NULL);
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class",  0,
-            "search by class", NULL);
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search by class ID", NULL);
@@ -183,6 +181,4 @@
     psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
             "define exposure ID", NULL);
-    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class",  0,
-            "define class", NULL);
     psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "define class ID", NULL);
@@ -206,21 +202,19 @@
     psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
             "search by exposure ID", NULL);
-    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class",  0,
-            "search by class", NULL);
     psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search by class ID", NULL);
     psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-code",  0,
-            "set fault code (required)", INT16_MAX);
-
-    // -retryprocessedimfile
-    psMetadata *retryprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(retryprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,
+            "set fault code (required)", 0);
+
+    // -revertprocessedimfile
+    psMetadata *revertprocessedimfileArgs = psMetadataAlloc();
+    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,
             "define chip ID (required)", NULL);
-    psMetadataAddStr(retryprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
+    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,
             "search by exposure ID", NULL);
-    psMetadataAddStr(retryprocessedimfileArgs, PS_LIST_TAIL, "-class",  0,
-            "search by class", NULL);
-    psMetadataAddStr(retryprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
+    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search by class ID", NULL);
+    psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code",  0,
+            "search by fault code", 0);
 
     // -block
@@ -247,7 +241,7 @@
     PXTOOL_ADD_MODE("-processedimfile",     "", CHIPTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs);
     PXTOOL_ADD_MODE("-updateprocessedimfile", "", CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,    updateprocessedimfileArgs);
-    PXTOOL_ADD_MODE("-retryprocessedimfile", "", CHIPTOOL_MODE_RETRYPROCESSEDIMFILE,    retryprocessedimfileArgs);
-    PXTOOL_ADD_MODE("-block",               "",            CHIPTOOL_MODE_BLOCK,          blockArgs);
-    PXTOOL_ADD_MODE("-masked",              "",      CHIPTOOL_MODE_MASKED,         maskedArgs);
+    PXTOOL_ADD_MODE("-revertprocessedimfile", "", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,    revertprocessedimfileArgs);
+    PXTOOL_ADD_MODE("-block",               "", CHIPTOOL_MODE_BLOCK,          blockArgs);
+    PXTOOL_ADD_MODE("-masked",              "", CHIPTOOL_MODE_MASKED,         maskedArgs);
     PXTOOL_ADD_MODE("-unblock",             "",  CHIPTOOL_MODE_UNBLOCK,        unblockArgs);
 
@@ -277,6 +271,4 @@
 }
 
-
-
     // generate SQL where clause
     config->where = psMetadataAlloc();
@@ -310,6 +302,18 @@
 
     addWhereStr(filter);
-    addWhereStr(class);
     addWhereStr(class_id);
+  
+    // 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;
+            }
+        }
+    }
 
     /*
Index: trunk/ippTools/src/regtoolConfig.c
===================================================================
--- trunk/ippTools/src/regtoolConfig.c	(revision 14098)
+++ trunk/ippTools/src/regtoolConfig.c	(revision 14099)
@@ -306,17 +306,4 @@
 }
 
-#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();
@@ -335,4 +322,5 @@
         }
     }
+
     addWhereStr(telescope);
     addWhereStr(exp_type);
@@ -341,5 +329,17 @@
     addWhereStr(tmp_class_id);
     addWhereStr(filter);
-    addWhereS16(code);
+
+    // 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 (config->where->list->n < 1) {
