Index: branches/eam_branches/ipp-20120405/Ohana/src/opihi/dvo/dvo_host_utils.c
===================================================================
--- branches/eam_branches/ipp-20120405/Ohana/src/opihi/dvo/dvo_host_utils.c	(revision 33907)
+++ branches/eam_branches/ipp-20120405/Ohana/src/opihi/dvo/dvo_host_utils.c	(revision 33911)
@@ -184,2 +184,70 @@
   return TRUE;
 }
+
+// re-gather the remote results files: this can be used in case one of the clients failed,
+// and has since been re-run
+int HostTableReloadResults (char *uniquer, int VERBOSE) {
+
+  int i;
+
+  // load the list of hosts
+  SkyTable *sky = GetSkyTable();
+  if (!sky) {
+    gprint (GP_ERR, "failed to load sky table for database\n");
+    return FALSE;
+  }
+
+  char *CATDIR = GetCATDIR ();
+  if (!CATDIR) {
+    gprint (GP_ERR, "failed to get CATDIR for database\n");
+    return FALSE;
+  }
+
+  HostTable *table = HostTableLoad (CATDIR, sky->hosts);
+  if (!table) {
+    gprint (GP_ERR, "ERROR: failure reading Host Table %s for database %s\n", sky->hosts, CATDIR);
+    return FALSE;
+  }    
+
+  // load fields from file
+  int    Nvec = 0;
+  Vector **vec = NULL;
+  for (i = 0; i < table->Nhosts; i++) {
+    if (table->hosts[i].status) continue; 
+
+    // ensure that the paths are absolute path names
+    char *tmppath = abspath (table->hosts[i].pathname, DVO_MAX_PATH);
+    free (table->hosts[i].pathname);
+    table->hosts[i].pathname = tmppath;
+
+    // need to save the results filename with the uniquer
+    // XXX a bit of a waste (but only 1024 * 60 bytes or so
+    ALLOCATE (table->hosts[i].results, char, DVO_MAX_PATH);
+    snprintf (table->hosts[i].results, DVO_MAX_PATH, "%s/dvo.results.%s.fits", table->hosts[i].pathname, uniquer);
+
+    int    Ninvec = 0;
+    Vector **invec = ReadVectorTableFITS (table->hosts[i].results, "RESULT", &Ninvec);
+    if (!invec) {
+      // failed to read the file, now what?
+      gprint (GP_ERR, "failed to read remote result file : %s\n", table->hosts[i].results);
+      free (table->hosts[i].results);
+      table->hosts[i].results = NULL;
+      continue;
+    }
+    free (table->hosts[i].results);
+    table->hosts[i].results = NULL;
+
+    vec = MergeVectors (vec, &Nvec, invec, Ninvec);
+    if (vec != invec) {
+      FreeVectorArray (invec, Ninvec);
+    }
+  }
+
+  for (i = 0; i < Nvec; i++) {
+    AssignVector (vec[i], vec[i]->name, ANYVECTOR, TRUE);
+  }
+  free (vec);
+
+  free (table);
+  return TRUE;
+}
Index: branches/eam_branches/ipp-20120405/Ohana/src/opihi/dvo/remote.c
===================================================================
--- branches/eam_branches/ipp-20120405/Ohana/src/opihi/dvo/remote.c	(revision 33907)
+++ branches/eam_branches/ipp-20120405/Ohana/src/opihi/dvo/remote.c	(revision 33911)
@@ -8,4 +8,10 @@
   int N;
 
+  int VERBOSE = FALSE;
+  if ((N = get_argument (argc, argv, "-v"))) {
+    remove_argument (N, &argc, argv);
+    VERBOSE = TRUE;
+  }
+
   if (argc < 2) {
     gprint (GP_ERR, "USAGE: remote (command)\n");
@@ -13,4 +19,5 @@
     gprint (GP_ERR, "  options:\n");
     gprint (GP_ERR, "  -v : verbose mode:\n");
+    gprint (GP_ERR, "OR:    remote -reload (uniquer)\n");
     return FALSE;
   }
@@ -23,8 +30,14 @@
   // with a set of vectors to load.
 
-  int VERBOSE = FALSE;
-  if ((N = get_argument (argc, argv, "-v"))) {
+  if ((N = get_argument (argc, argv, "-reload"))) {
+    if (argc != N) {
+      gprint (GP_ERR, "USAGE: remote -reload (uniquer)\n");
+      gprint (GP_ERR, " (uniquer) is the element in the middle of the results file\n");
+      gprint (GP_ERR, " eg: dvo.results.XXXXX.YYYYY.fits\n");
+      return FALSE;
+    }
     remove_argument (N, &argc, argv);
-    VERBOSE = TRUE;
+    int status = HostTableReloadResults (argv[1], VERBOSE);
+    return status;
   }
 
Index: branches/eam_branches/ipp-20120405/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- branches/eam_branches/ipp-20120405/Ohana/src/opihi/include/dvoshell.h	(revision 33907)
+++ branches/eam_branches/ipp-20120405/Ohana/src/opihi/include/dvoshell.h	(revision 33911)
@@ -101,3 +101,5 @@
 int          HostTableLaunchJobs    PROTO((HostTable *table, char *basecmd, char *options));
 int          HostTableParallelOps   PROTO((int argc, char **argv, char *ResultFile, int Nelements, int VERBOSE));
-# endif
+int          HostTableReloadResults PROTO((char *uniquer, int VERBOSE));
+
+# endif // DVOSHELL_H
