Index: trunk/ippTools/src/stacktool.c
===================================================================
--- trunk/ippTools/src/stacktool.c	(revision 25800)
+++ trunk/ippTools/src/stacktool.c	(revision 25835)
@@ -48,5 +48,4 @@
 
 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state);
-static bool setstackRunStateByLabel(pxConfig *config, const char *label, const char *state);
 
 # define MODECASE(caseName, func) \
@@ -110,8 +109,14 @@
 
     // required options
-    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false);
-    PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
-    PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false);
-    PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false);
+    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false);
+
+    // optional
+    PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);
+    PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false);
+    PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false);
+    PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);
+    PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false);
+    PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);
+    PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false);
 
     psMetadata *where = psMetadataAlloc();
@@ -161,8 +166,6 @@
     PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
-    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
-
-    if (!psListLength(where->list) &&
-        !psMetadataLookupBool(NULL, config->args, "-all")) {
+
+    if (!psListLength(where->list)) {
         psFree(where);
         psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
@@ -346,4 +349,6 @@
             workdir,
             label,
+            data_group ? data_group : label,
+            dist_group,
             reduction,
             dvodb,
@@ -351,5 +356,6 @@
             skycell_id,
             tess_id,
-            filter);
+            filter,
+            note);
 
         if (!stackRunInsertObject(config->dbh, run)) {
@@ -469,5 +475,5 @@
 
     // required options
-    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false);
+    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false);
     PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false);
     PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false);
@@ -476,10 +482,13 @@
     // default
     PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
-    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
+    PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false);
 
     // options
-    PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
-    PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false);
-    PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false);
+    PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);
+    PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false);
+    PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false);
+    PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);
+    PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);
+    PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false);
 
     // we have to support multipe exp_ids
@@ -496,4 +505,6 @@
         workdir,
         label,
+        data_group ? data_group : label,
+        dist_group,
         reduction,
         dvodb,
@@ -501,5 +512,6 @@
         skycell_id,
         tess_id,
-        filter);
+        filter,
+        note);
 
     if (!run) {
@@ -570,8 +582,30 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
+#ifdef notdef
     PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false);
     PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
     PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
-
+#endif
+    psMetadata *where = psMetadataAlloc();
+    PXOPT_COPY_S64(config->args, where, "-stack_id",  "stack_id",   "==");
+    PXOPT_COPY_STR(config->args, where, "-label",     "label",     "==");
+    PXOPT_COPY_STR(config->args, where, "-state",     "state",     "==");
+    if (!psListLength(where->list)) {
+        psFree(where);
+        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
+        return false;
+    }
+
+    psString query = psStringCopy("UPDATE stackRun");
+
+    // pxUpdateRun gets parameters from config->args and updates
+    bool result = pxUpdateRun(config, where, &query, true);
+
+    psFree(query);
+    psFree(where);
+
+    return result;
+
+#ifdef notdef
     // Hack-y work around to make stacktool more like the other tools, without breaking other stuff (hopefully).
 
@@ -587,4 +621,5 @@
     psError(PS_ERR_UNKNOWN, false, "Required options not found.");
     return false;
+#endif
 }
 
@@ -1015,4 +1050,5 @@
 }
 
+#ifdef notdef
 static bool setstackRunStateByLabel(pxConfig *config, const char *label, const char *state)
 {
@@ -1034,4 +1070,5 @@
     return true;
 }
+#endif
 
 static bool pendingcleanuprunMode(pxConfig *config)
