Index: /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/high_speed_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/high_speed_catalogs.c	(revision 33472)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/high_speed_catalogs.c	(revision 33473)
@@ -50,5 +50,8 @@
   }
   
-finish: {
+finish:
+
+  // in relastro (NOT relastr_client), save the Images.dat, Photcodes.dat, SkyTable.fits files
+  if (!hostID) {
     char photcodeFile[1024];
     snprintf (photcodeFile, 1024, "%s/Photcodes.dat", HIGH_SPEED_DIR);
@@ -57,9 +60,9 @@
       exit (1);
     }
-
+    
     // need to copy across the Images, SkyTable, and Photcode tables:
     char *skyfile = SkyTableFilename (HIGH_SPEED_DIR);
     SkyTableSave (sky, skyfile);
-
+    
     char line[2048];
     snprintf (line, 2048, "cp %s/Images.dat %s/Images.dat", CATDIR, HIGH_SPEED_DIR);
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/initialize.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/initialize.c	(revision 33472)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/initialize.c	(revision 33473)
@@ -13,90 +13,13 @@
   if (FIT_TARGET == TARGET_MERGE_SOURCE) return;
 
-  /* build a list of accepted photcodes. these will be used by bcatalog to accept or
-     reject loaded data */
+  fprintf (stderr, "PHOTCODE_KEEP_LIST: %s\n", PHOTCODE_KEEP_LIST);
+  fprintf (stderr, "PHOTCODE_SKIP_LIST: %s\n", PHOTCODE_SKIP_LIST);
+  fprintf (stderr, "PHOTCODE_A_LIST: %s\n", PHOTCODE_A_LIST);
+  fprintf (stderr, "PHOTCODE_B_LIST: %s\n", PHOTCODE_B_LIST);
 
-  NphotcodesKeep = 0;
-  photcodesKeep = NULL;
-  if (PHOTCODE_KEEP_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesKeep, PhotCode *, NPHOTCODES);
-
-    /* parse the comma-separated list of photcodesKeep */
-    list = PHOTCODE_KEEP_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "PHOTCODE_LIST: %s\n", PHOTCODE_KEEP_LIST);
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesKeep[NphotcodesKeep] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesKeep ++;
-      CHECK_REALLOCATE (photcodesKeep, PhotCode *, NPHOTCODES, NphotcodesKeep, 10);
-    }
-  }
-
-  NphotcodesSkip = 0;
-  photcodesSkip = NULL;
-  if (PHOTCODE_SKIP_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesSkip, PhotCode *, NPHOTCODES);
-
-    /* parse the comma-separated list of photcodesSkip */
-    list = PHOTCODE_SKIP_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "PHOTCODE_LIST: %s\n", PHOTCODE_SKIP_LIST);
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesSkip[NphotcodesSkip] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesSkip ++;
-      CHECK_REALLOCATE (photcodesSkip, PhotCode *, NPHOTCODES, NphotcodesSkip, 10);
-    }
-  }
-
-  NphotcodesGroupA = 0;
-  photcodesGroupA = NULL;
-  if (PHOTCODE_A_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesGroupA, PhotCode *, NPHOTCODES);
-
-    /* parse the comma-separated list of photcodesGroupA */
-    fprintf (stderr, "PHOTCODE_A_LIST: %s\n", PHOTCODE_A_LIST);
-    list = PHOTCODE_A_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesGroupA[NphotcodesGroupA] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesGroupA ++;
-      CHECK_REALLOCATE (photcodesGroupA, PhotCode *, NPHOTCODES, NphotcodesGroupA, 10);
-    }
-  }
-
-  NphotcodesGroupB = 0;
-  photcodesGroupB = NULL;
-  if (PHOTCODE_B_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesGroupB, PhotCode *, NPHOTCODES);
-
-    fprintf (stderr, "PHOTCODE_B_LIST: %s\n", PHOTCODE_B_LIST);
-    /* parse the comma-separated list of photcodesGroupB */
-    list = PHOTCODE_B_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesGroupB[NphotcodesGroupB] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesGroupB ++;
-      CHECK_REALLOCATE (photcodesGroupB, PhotCode *, NPHOTCODES, NphotcodesGroupB, 10);
-    }
-  }
+  photcodesKeep = ParsePhotcodeList (PHOTCODE_KEEP_LIST, &NphotcodesKeep);
+  photcodesSkip = ParsePhotcodeList (PHOTCODE_SKIP_LIST, &NphotcodesSkip);
+  photcodesGroupA = ParsePhotcodeList (PHOTCODE_A_LIST, &NphotcodesGroupA);
+  photcodesGroupB = ParsePhotcodeList (PHOTCODE_B_LIST, &NphotcodesGroupB);
 
   initstats (STATMODE);
@@ -133,90 +56,13 @@
   args_client (argc, argv);
 
-  /* build a list of accepted photcodes. these will be used by bcatalog to accept or
-     reject loaded data */
+  fprintf (stderr, "PHOTCODE_KEEP_LIST: %s\n", PHOTCODE_KEEP_LIST);
+  fprintf (stderr, "PHOTCODE_SKIP_LIST: %s\n", PHOTCODE_SKIP_LIST);
+  fprintf (stderr, "PHOTCODE_A_LIST: %s\n", PHOTCODE_A_LIST);
+  fprintf (stderr, "PHOTCODE_B_LIST: %s\n", PHOTCODE_B_LIST);
 
-  NphotcodesKeep = 0;
-  photcodesKeep = NULL;
-  if (PHOTCODE_KEEP_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesKeep, PhotCode *, NPHOTCODES);
-
-    /* parse the comma-separated list of photcodesKeep */
-    list = PHOTCODE_KEEP_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "PHOTCODE_LIST: %s\n", PHOTCODE_KEEP_LIST);
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesKeep[NphotcodesKeep] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesKeep ++;
-      CHECK_REALLOCATE (photcodesKeep, PhotCode *, NPHOTCODES, NphotcodesKeep, 10);
-    }
-  }
-
-  NphotcodesSkip = 0;
-  photcodesSkip = NULL;
-  if (PHOTCODE_SKIP_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesSkip, PhotCode *, NPHOTCODES);
-
-    /* parse the comma-separated list of photcodesSkip */
-    list = PHOTCODE_SKIP_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "PHOTCODE_LIST: %s\n", PHOTCODE_SKIP_LIST);
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesSkip[NphotcodesSkip] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesSkip ++;
-      CHECK_REALLOCATE (photcodesSkip, PhotCode *, NPHOTCODES, NphotcodesSkip, 10);
-    }
-  }
-
-  NphotcodesGroupA = 0;
-  photcodesGroupA = NULL;
-  if (PHOTCODE_A_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesGroupA, PhotCode *, NPHOTCODES);
-
-    /* parse the comma-separated list of photcodesGroupA */
-    fprintf (stderr, "PHOTCODE_A_LIST: %s\n", PHOTCODE_A_LIST);
-    list = PHOTCODE_A_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesGroupA[NphotcodesGroupA] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesGroupA ++;
-      CHECK_REALLOCATE (photcodesGroupA, PhotCode *, NPHOTCODES, NphotcodesGroupA, 10);
-    }
-  }
-
-  NphotcodesGroupB = 0;
-  photcodesGroupB = NULL;
-  if (PHOTCODE_B_LIST != NULL) {
-    NPHOTCODES = 10;
-    ALLOCATE (photcodesGroupB, PhotCode *, NPHOTCODES);
-
-    fprintf (stderr, "PHOTCODE_B_LIST: %s\n", PHOTCODE_B_LIST);
-    /* parse the comma-separated list of photcodesGroupB */
-    list = PHOTCODE_B_LIST;
-    while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
-      list = NULL; // pass NULL on successive strtok_r calls
-      fprintf (stderr, "codename: %s\n", codename);
-      if ((photcodesGroupB[NphotcodesGroupB] = GetPhotcodebyName (codename)) == NULL) {
-        fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
-        exit (1);
-      }
-      NphotcodesGroupB ++;
-      CHECK_REALLOCATE (photcodesGroupB, PhotCode *, NPHOTCODES, NphotcodesGroupB, 10);
-    }
-  }
+  photcodesKeep = ParsePhotcodeList (PHOTCODE_KEEP_LIST, &NphotcodesKeep);
+  photcodesSkip = ParsePhotcodeList (PHOTCODE_SKIP_LIST, &NphotcodesSkip);
+  photcodesGroupA = ParsePhotcodeList (PHOTCODE_A_LIST, &NphotcodesGroupA);
+  photcodesGroupB = ParsePhotcodeList (PHOTCODE_B_LIST, &NphotcodesGroupB);
 
   initstats (STATMODE);
@@ -227,2 +73,35 @@
 }
 
+PhotCode *ParsePhotcodeList (char *rawlist, int *nphotcodes) {
+
+  *nphotcodes = 0;
+  if (!rawlist) return NULL;
+
+  Nphotcodes = 0;
+  photcodes = NULL;
+  int NPHOTCODES = 10;
+  ALLOCATE (photcodes, PhotCode *, NPHOTCODES);
+
+  /* parse the comma-separated list of photcodes */
+  char *myList = strcreate(rawlist);
+  char *list = myList;
+  char *codename = NULL;
+  char *ptr = NULL;
+  while ((codename = strtok_r (list, ",", &ptr)) != NULL) {
+    list = NULL; // pass NULL on successive strtok_r calls
+    if ((photcodes[Nphotcodes] = GetPhotcodebyName (codename)) == NULL) {
+      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", codename);
+      exit (1);
+    }
+    if (photcodes[Nphotcodes][0].type != PHOT_SEC) {
+      fprintf (stderr, "photcode %s is not an filter type (SEC)\n", codename);
+      exit (1);
+    }
+    Nphotcodes ++;
+    CHECK_REALLOCATE (photcodes, PhotCode *, NPHOTCODES, Nphotcodes, 10);
+  }
+  free (myList);
+
+  *nphotcodes = Nphotcodes;
+  return photcodes;
+}
