Index: /trunk/ippTools/src/difftool.c
===================================================================
--- /trunk/ippTools/src/difftool.c	(revision 26948)
+++ /trunk/ippTools/src/difftool.c	(revision 26949)
@@ -90,5 +90,5 @@
         MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK,       definewarpstackMode);
         MODECASE(DIFFTOOL_MODE_DEFINEWARPWARP,        definewarpwarpMode);
-	MODECASE(DIFFTOOL_MODE_DEFINESTACKSTACK,      definestackstackMode);
+        MODECASE(DIFFTOOL_MODE_DEFINESTACKSTACK,      definestackstackMode);
         MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPRUN,     pendingcleanuprunMode);
         MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode);
@@ -1849,5 +1849,5 @@
   PXOPT_COPY_F32(config->args, stack1Where, "-good_frac", "stackSumSkyfile.good_frac", ">=");
   PXOPT_COPY_F32(config->args, stack2Where, "-good_frac", "stackSumSkyfile.good_frac", ">=");
-  
+
   PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); // required option
   PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); // option
@@ -1857,5 +1857,5 @@
   PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false);
   PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);
-  
+
   PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
   PXOPT_LOOKUP_BOOL(reRun, config->args, "-rerun", false);
@@ -1868,5 +1868,5 @@
     PXOPT_LOOKUP_STR(label,config->args, "-input_label",true,false);
   }
-  
+
   // Organize the config information into queries.
   psString stack1Query = NULL;
@@ -1905,5 +1905,5 @@
     return(false);
   }
-  
+
   if (!psDBTransaction(config->dbh)) {
     psError(PS_ERR_UNKNOWN, false, "database error");
@@ -1970,12 +1970,12 @@
     psString this_dist_group = psMetadataLookupStr(&mdok,row,"INPUT_dist_group");
     psString this_label = psMetadataLookupStr(&mdok,row,"INPUT_label");
-    
+
     psString this_stack1Query = psStringCopy(stack1Query);
-    
+
     psString thisWhere = psDBGenerateWhereConditionSQL(row,NULL);
     psStringSubstitute(&thisWhere,"stackRun.","INPUT_");
     psStringAppend(&this_stack1Query,"\n AND %s", thisWhere);
     psFree(thisWhere);
-    
+
 /*     psTrace("difftool",1, query,stack2Query,diffQuery,this_stack1Query,this_stack1Query); */
     if (!psDBTransaction(config->dbh)) {
@@ -1983,15 +1983,15 @@
       return(false);
     }
-    
+
     if (!p_psDBRunQueryF(config->dbh, query, stack2Query, diffQuery, this_stack1Query, this_stack1Query)) {
       psError(PS_ERR_UNKNOWN, false, "database error");
       psFree(query);
       if (!psDBRollback(config->dbh)) {
-	psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(PS_ERR_UNKNOWN, false, "database error");
       }
       return false;
     }
     psFree(this_stack1Query);
-    
+
     psArray *diff_id_output = p_psDBFetchResult(config->dbh);
     if (!diff_id_output) {
@@ -1999,15 +1999,15 @@
       switch (err) {
       case PS_ERR_DB_CLIENT:
-	psError(PXTOOLS_ERR_SYS, false, "database error");
-	break;
+        psError(PXTOOLS_ERR_SYS, false, "database error");
+        break;
       case PS_ERR_DB_SERVER:
-	psError(PXTOOLS_ERR_PROG, false, "database error");
-	break;
+        psError(PXTOOLS_ERR_PROG, false, "database error");
+        break;
       default:
-	psError(PXTOOLS_ERR_PROG, false, "unknown error");
-	break;
+        psError(PXTOOLS_ERR_PROG, false, "unknown error");
+        break;
       }
       if (!psDBRollback(config->dbh)) {
-	psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(PS_ERR_UNKNOWN, false, "database error");
       }
       return false;
@@ -2017,27 +2017,27 @@
       psFree(diff_id_output);
       if (!psDBCommit(config->dbh)) {
-	psError(PS_ERR_UNKNOWN, false, "database error");
-	return false;
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
       }
       return true;
     }
-    
+
     // ok we've got one create the diffRun
     diffRunRow *run = diffRunRowAlloc(
-				      0,          // ID
-				      "reg",      // state
-				      workdir,
-				      label ? label : this_label,
-				      data_group ? data_group : this_data_group,
-				      dist_group ? dist_group : this_dist_group,
-				      reduction,
-				      NULL,       // dvodb
-				      registered,
-				      tess_id,
-				      false,                 // bothways
-				      false,                 // exposure
-				      0,       // magicked
-				      note
-				      );
+                                      0,          // ID
+                                      "reg",      // state
+                                      workdir,
+                                      label ? label : this_label,
+                                      data_group ? data_group : this_data_group,
+                                      dist_group ? dist_group : this_dist_group,
+                                      reduction,
+                                      NULL,       // dvodb
+                                      registered,
+                                      tess_id,
+                                      false,                 // bothways
+                                      false,                 // exposure
+                                      0,       // magicked
+                                      note
+                                      );
     // Commit to database
     if (!diffRunInsertObject(config->dbh, run)) {
@@ -2045,5 +2045,5 @@
       psFree(run);
       if (!psDBRollback(config->dbh)) {
-	psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(PS_ERR_UNKNOWN, false, "database error");
       }
       return false;
@@ -2060,25 +2060,39 @@
       psTrace("difftool",1,"%s %ld %ld %s\n",in_skycell_id,in_input_stack_id,in_template_stack_id,in_tess_id);
       diffInputSkyfileRow *input = diffInputSkyfileRowAlloc(
-							    run->diff_id,   // ID
-							    in_skycell_id,
-							    NULL, // warp1_id
-							    in_input_stack_id, // stack1 
-							    NULL, // warp2_id
-							    in_template_stack_id, // stack2
-							    in_tess_id,
-							    0 // diff_skyfile_id
-							    );
+                                                            run->diff_id,   // ID
+                                                            in_skycell_id,
+                                                            PS_MAX_S64, // warp1_id -> NULL
+                                                            in_input_stack_id, // stack1
+                                                            PS_MAX_S64, // warp2_id -> NULL
+                                                            in_template_stack_id, // stack2
+                                                            in_tess_id,
+                                                            0 // diff_skyfile_id
+                                                            );
       // Commit to database the input
       if (!diffInputSkyfileInsertObject(config->dbh, input)) {
-	psError(PS_ERR_UNKNOWN, false, "database error");
-	psFree(input);
-	if (!psDBRollback(config->dbh)) {
-	  psError(PS_ERR_UNKNOWN, false, "database error");
-	}
-	return false;
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(input);
+        if (!psDBRollback(config->dbh)) {
+          psError(PS_ERR_UNKNOWN, false, "database error");
+        }
+        return false;
       }
+
       //      diffInputSkyfilePrintObject(stdout,input,1);
       psFree(input);
     }
+
+    if (!setdiffRunState(config, run->diff_id, "new", false)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64, run->diff_id);
+        psFree(stack1Query);
+        psFree(stack2Query);
+        psFree(diffQuery);
+        psFree(run);
+        if (!psDBRollback(config->dbh)) {
+            psError(PS_ERR_UNKNOWN, false, "database error");
+        }
+        return false;
+    }
+
     psFree(run);
   }
@@ -2088,5 +2102,5 @@
   psFree(diffQuery);
   psFree(output);
-  
+
   return(true);
 }
@@ -2111,9 +2125,9 @@
     psFree(query);
     query = queryCopy;
-    
+
     if (where && psListLength(where->list)) {
         psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-	psStringAppend(&whereClause, " AND ");
-	psStringSubstitute(&query,whereClause,"@INNERCONSTRAINT@");
+        psStringAppend(&whereClause, " AND ");
+        psStringSubstitute(&query,whereClause,"@INNERCONSTRAINT@");
         psFree(whereClause);
     }
@@ -2317,5 +2331,5 @@
       PXOPT_LOOKUP_S64(set_magicked, config->args, "-magicked", 0, false);
       magicked = set_magicked;
-  } 
+  }
 
   psString query = pxDataGet("difftool_change_skyfile_data_state.sql");
