Index: trunk/ippTools/src/laptool.c
===================================================================
--- trunk/ippTools/src/laptool.c	(revision 36555)
+++ trunk/ippTools/src/laptool.c	(revision 37384)
@@ -25,4 +25,5 @@
 static bool pendingrunMode(pxConfig *config);
 static bool updaterunMode(pxConfig *config);
+static bool revertsassMode(pxConfig *config);
 
 // Exposure level
@@ -69,5 +70,6 @@
     MODECASE(LAPTOOL_MODE_PENDINGRUN,    pendingrunMode);
     MODECASE(LAPTOOL_MODE_UPDATERUN,     updaterunMode);
-
+    MODECASE(LAPTOOL_MODE_REVERTSASS,    revertsassMode);
+    
     MODECASE(LAPTOOL_MODE_PENDINGEXP,    pendingexpMode);
     MODECASE(LAPTOOL_MODE_EXPOSURES,     exposuresMode);
@@ -695,4 +697,51 @@
 }
 
+static bool revertsassMode(pxConfig *config)
+{
+  PS_ASSERT_PTR_NON_NULL(config, false);
+
+  psMetadata *where = psMetadataAlloc();
+  PXOPT_COPY_S64(config->args, where, "-lap_id", "lap_id", "==");
+  PXOPT_COPY_S64(config->args, where, "-sass_id", "final_sass_id", "==");
+  if (!psListLength(where->list)) {
+    psFree(where);
+    psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
+    return false;
+  }
+
+  psString query = pxDataGet("laptool_revertsass.sql");
+  if (!query) {
+    psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement");
+    return(false);
+  }
+  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+  psStringAppend(&query, "\n WHERE %s", whereClause);
+  psFree(whereClause);
+
+  if (!psDBTransaction(config->dbh)) {
+    psError(PS_ERR_UNKNOWN, false, "database error");
+    return false;
+  }
+  
+  if (!p_psDBRunQuery(config->dbh, query)) {
+    psError(PS_ERR_UNKNOWN, false, "database error");
+    psFree(query);
+    return false;
+  }
+  psFree(query);
+
+  long numUpdated = psDBAffectedRows(config->dbh);
+  if (numUpdated != 1) {
+    psError(PS_ERR_UNKNOWN, false, "should have updated only one row. updated %ld", numUpdated);
+    return false;
+  }
+
+  if (!psDBCommit(config->dbh)) {
+    psError(PS_ERR_UNKNOWN, false, "database error");
+    return false;
+  }
+  
+  return true;
+}
 // Exposure level
 
