Index: trunk/ippTools/src/warptool.c
===================================================================
--- trunk/ippTools/src/warptool.c	(revision 13821)
+++ trunk/ippTools/src/warptool.c	(revision 14102)
@@ -42,4 +42,5 @@
 static bool addwarpedMode(pxConfig *config);
 static bool warpedMode(pxConfig *config);
+static bool revertwarpedMode(pxConfig *config);
 
 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile);
@@ -77,4 +78,5 @@
         MODECASE(WARPTOOL_MODE_ADDWARPED,         addwarpedMode);
         MODECASE(WARPTOOL_MODE_WARPED,            warpedMode);
+        MODECASE(WARPTOOL_MODE_REVERTWARPED,      revertwarpedMode);
         default:
             psAbort("invalid option (this should not happen)");
@@ -884,4 +886,11 @@
     }
 
+    // default values
+    psS16 code = psMetadataLookupS16(&status, config->args, "-code");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code");
+        return false;
+    }
+
     // we don't want to insert the last skyfile in a run but then not mark the
     // run as 'stop'
@@ -899,5 +908,6 @@
             path_base,
             bg,
-            bg_stdev
+            bg_stdev,
+            code
         )) {
         if (!psDBRollback(config->dbh)) {
@@ -1119,4 +1129,36 @@
 
 
+static bool revertwarpedMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    psString query = pxDataGet("warpool_revertwarped.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+        return false;
+    }
+
+    if (config->where) {
+        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "warpSkyfile");
+        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 setwarpRunState(pxConfig *config, const char *warp_id, const char *state)
 {
