Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 19676)
+++ trunk/ippTools/src/difftool.c	(revision 19677)
@@ -44,4 +44,5 @@
 static bool pendingcleanupskyfileMode(pxConfig *config);
 static bool donecleanupMode(pxConfig *config);
+static bool updatediffskyfileMode(pxConfig *config);
 
 static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state);
@@ -78,4 +79,5 @@
         MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode);
         MODECASE(DIFFTOOL_MODE_DONECLEANUP,           donecleanupMode);
+        MODECASE(DIFFTOOL_MODE_UPDATEDIFFSKYFILE,     updatediffskyfileMode);
         default:
             psAbort("invalid option (this should not happen)");
@@ -495,5 +497,4 @@
                            uri,
                            path_base,
-                           "full",      // data_state
                            bg,
                            bg_stdev,
@@ -1218,2 +1219,22 @@
     return true;
 }
+
+static bool updatediffskyfileMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    PXOPT_LOOKUP_S16(code, config->args, "-code", true, false);
+
+    psMetadata *where = psMetadataAlloc();
+    PXOPT_COPY_S64(config->args, where, "-diff_id",   "diff_id",   "==");
+
+    if (!pxSetFaultCode(config->dbh, "diffSkyfile", where, code)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
+        psFree (where);
+        return false;
+    }
+    psFree (where);
+
+    return true;
+}
+
Index: trunk/ippTools/src/difftool.h
===================================================================
--- trunk/ippTools/src/difftool.h	(revision 19676)
+++ trunk/ippTools/src/difftool.h	(revision 19677)
@@ -38,4 +38,5 @@
     DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE,
     DIFFTOOL_MODE_DONECLEANUP,
+    DIFFTOOL_MODE_UPDATEDIFFSKYFILE,
 } difftoolMode;
 
Index: trunk/ippTools/src/difftoolConfig.c
===================================================================
--- trunk/ippTools/src/difftoolConfig.c	(revision 19676)
+++ trunk/ippTools/src/difftoolConfig.c	(revision 19677)
@@ -170,6 +170,11 @@
     psMetadata *donecleanupArgs = psMetadataAlloc();
     psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label",  0,            "list blocks for specified label", NULL);
-    psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
+    psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
     psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    // -updatediffskyfile
+    psMetadata *updatediffskyfileArgs = psMetadataAlloc();
+    psMetadataAddS64(updatediffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,      "define diff ID (required)", 0);
+    psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-code", 0,         "set fault code (required)", 0);
+
 
     psFree(now);
@@ -191,4 +196,5 @@
     PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs);
     PXOPT_ADD_MODE("-donecleanup",           "show runs that have been cleaned",     DIFFTOOL_MODE_DONECLEANUP,          donecleanupArgs);
+    PXOPT_ADD_MODE("-updatediffskyfile",     "update fault code for a diffskyfile",  DIFFTOOL_MODE_UPDATEDIFFSKYFILE,          updatediffskyfileArgs);
 
     if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
