Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/avextract.c	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/avextract.c	(revision 35327)
@@ -137,5 +137,5 @@
   // this does all the work of re-packaging the command, calling it on the remote machines, then loading in the results
   if (PARALLEL && !HOST_ID) {
-    int status = HostTableParallelOps (argc, argv, RESULT_FILE, TRUE, 0, VERBOSE);
+      int status = HostTableParallelOps (skylist, argc, argv, RESULT_FILE, TRUE, 0, VERBOSE);
 
     dbFreeFields (fields, Nfields);
Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/avmatch.c
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/avmatch.c	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/avmatch.c	(revision 35327)
@@ -95,5 +95,5 @@
 
     // I need to pass the RA & DEC vectors to the remote clients...
-    int status = HostTableParallelOps (argc, argv, RESULT_FILE, TRUE, RAvec->Nelements, VERBOSE);
+    int status = HostTableParallelOps (skylist, argc, argv, RESULT_FILE, TRUE, RAvec->Nelements, VERBOSE);
     if (vec) free (vec);
     
Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/dvo_host_utils.c
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/dvo_host_utils.c	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/dvo_host_utils.c	(revision 35327)
@@ -8,5 +8,5 @@
 # define DIE(WHO,MSG) { perror(WHO); myAbort(MSG); }
 
-int HostTableLaunchJobs (HostTable *table, char *basecmd, char *options, int VERBOSE) {
+int HostTableLaunchJobs (SkyList *sky, HostTable *table, char *basecmd, char *options, int VERBOSE) {
 
   char uniquer[12];
@@ -35,6 +35,22 @@
 
   int top_status = TRUE;
-  int i;
+  int i, j;
   for (i = 0; i < table->Nhosts; i++) {
+
+      if (sky && (sky->Nregions < table->Nhosts)) {
+      // do any of the regions want this host?
+      int wantThisHost = FALSE;
+      for (j = 0; j < sky->Nregions; j++) {
+	if (HostTableTestHost (sky->regions[j], table->hosts[i].hostID)) {
+	  wantThisHost = TRUE;
+	  break;
+	}
+      }
+      if (!wantThisHost) {
+	// fprintf (stderr, "skip host %s\n", table->hosts[i].hostname);
+	continue;
+      }
+      // fprintf (stderr, "not skip host %s\n", table->hosts[i].hostname);
+    }
 
     // ensure that the paths are absolute path names
@@ -88,14 +104,14 @@
 // an alternative ending step ignores the result files and instead saves the names into
 // the list 'result:n' for the user to access as desired
-int HostTableParallelOps (int argc, char **argv, char *ResultFile, int ReadVectors, int Nelements, int VERBOSE) {
+int HostTableParallelOps (SkyList *sky, int argc, char **argv, char *ResultFile, int ReadVectors, int Nelements, 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;
-  }
+  // XX // load the list of hosts
+  // XX SkyTable *sky = GetSkyTable();
+  // XX if (!sky) {
+  // XX   gprint (GP_ERR, "failed to load sky table for database\n");
+  // XX   return FALSE;
+  // XX }
 
   char *tmppath = GetCATDIR ();
@@ -145,5 +161,5 @@
 
   // launch this command remotely
-  HostTableLaunchJobs (table, basecmd, options, VERBOSE);
+  HostTableLaunchJobs (sky, table, basecmd, options, VERBOSE);
   free (options);
   free (basecmd);
Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mextract.c
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mextract.c	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mextract.c	(revision 35327)
@@ -171,5 +171,5 @@
 
     // call the remote client
-    int status = HostTableParallelOps (targc, targv, RESULT_FILE, TRUE, 0, VERBOSE);
+    int status = HostTableParallelOps (skylist, targc, targv, RESULT_FILE, TRUE, 0, VERBOSE);
 
     dbFreeFields (fields, Nfields);
Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mmatch.c
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mmatch.c	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mmatch.c	(revision 35327)
@@ -167,5 +167,5 @@
 
     // call the remote client
-    int status = HostTableParallelOps (targc, targv, RESULT_FILE, TRUE, 0, VERBOSE);
+    int status = HostTableParallelOps (skylist, targc, targv, RESULT_FILE, TRUE, 0, VERBOSE);
     if (vec) free (vec);
     
Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/remote.c
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/remote.c	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/remote.c	(revision 35327)
@@ -62,5 +62,5 @@
 
   // strip of the 'remote' and send the remaining arguments to the remote machine
-  int status = HostTableParallelOps (argc - 1, &argv[1], NULL, ReadVectors, 0, VERBOSE);
+  int status = HostTableParallelOps (NULL, argc - 1, &argv[1], NULL, ReadVectors, 0, VERBOSE);
   return status;
 }
Index: /branches/eam_branches/ipp-20130307/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- /branches/eam_branches/ipp-20130307/Ohana/src/opihi/include/dvoshell.h	(revision 35326)
+++ /branches/eam_branches/ipp-20130307/Ohana/src/opihi/include/dvoshell.h	(revision 35327)
@@ -99,6 +99,6 @@
 dbValue      dbExtractImages        PROTO((Image *image, off_t Nimage, off_t N, dbField *field));
 
-int          HostTableLaunchJobs    PROTO((HostTable *table, char *basecmd, char *options, int VERBOSE));
-int          HostTableParallelOps   PROTO((int argc, char **argv, char *ResultFile, int ReadVectors, int Nelements, int VERBOSE));
+int          HostTableLaunchJobs    PROTO((SkyList *sky, HostTable *table, char *basecmd, char *options, int VERBOSE));
+int          HostTableParallelOps   PROTO((SkyList *sky, int argc, char **argv, char *ResultFile, int ReadVectors, int Nelements, int VERBOSE));
 int          HostTableReloadResults PROTO((char *uniquer, int VERBOSE));
 int          HostTableGetResults    PROTO((char *uniquer, int VERBOSE));
