Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/Makefile
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/Makefile	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/Makefile	(revision 38594)
@@ -37,12 +37,9 @@
 mkcmf        : $(BIN)/mkcmf.$(ARCH)
 
-# programs in 'OTHERS' have not been updated since moving from Stars to Catalog as an internal carrier
 # programs in 'SERVER' use the client-server concept and are out of date
 
-INSTALL = addstar sedstar loadstarpar loadstarpar_client loadICRF loadICRF_client load2mass skycells mkcmf dumpskycells findskycell
-OTHERS  = loadwise loadtycho loadsupercos
+INSTALL = addstar sedstar loadstarpar loadstarpar_client loadICRF loadICRF_client load2mass loadwise loadtycho loadsupercos skycells mkcmf dumpskycells findskycell
 SERVER  = addstar_client addstarc addstard addstart
 
-old: $(OTHERS)
 all: $(INSTALL)
 
@@ -355,5 +352,4 @@
 $(SRC)/ConfigInit.$(ARCH).o \
 $(SRC)/Shutdown.$(ARCH).o \
-$(SRC)/StarOps.$(ARCH).o \
 $(SRC)/find_matches_refstars.$(ARCH).o \
 $(SRC)/build_links.$(ARCH).o \
@@ -372,4 +368,5 @@
 $(SRC)/Shutdown.$(ARCH).o \
 $(SRC)/find_matches_closest_refstars.$(ARCH).o \
+$(SRC)/replace_match.$(ARCH).o \
 $(SRC)/build_links.$(ARCH).o \
 $(SRC)/SetSignals.$(ARCH).o \
@@ -387,5 +384,5 @@
 $(SRC)/ConfigInit.$(ARCH).o \
 $(SRC)/Shutdown.$(ARCH).o \
-$(SRC)/StarOps.$(ARCH).o \
+$(SRC)/SkyListForStars.$(ARCH).o \
 $(SRC)/find_matches_refstars.$(ARCH).o \
 $(SRC)/build_links.$(ARCH).o \
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/WISE.h
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/WISE.h	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/WISE.h	(revision 38594)
@@ -35,18 +35,18 @@
 int getWISE_sortStars (WISE_Stars *tstars, int Ntstars);
 
-int loadwise_star_prelim (Stars **star, char *line, int Nmax);
-int loadwise_star_allsky (Stars **star, char *line, int Nmax);
-int loadwise_star_allwise (Stars **star, char *line, int Nmax);
+int loadwise_star_prelim  (Measure *measure, char *line, int Nmax);
+int loadwise_star_allsky  (Measure *measure, char *line, int Nmax);
+int loadwise_star_allwise (Measure *measure, char *line, int Nmax);
 
 
 char *nextWISEfield (char *line);
-int setWISE_cc_flag (Stars *star, char qual);
-int setWISE_ph_qual (Stars *star, char qual);
-int setWISE_rd_flag (Stars *star, char qual);
-int setWISE_bl_flag (Stars *star, char qual);
-int setWISE_gal_flag (Stars *star, char qual);
-int setWISE_mp_flag (Stars *star, char qual);
-int setWISE_dup_flag (Stars *star, char qual);
-int setWISE_use_flag (Stars *star, char qual);
+int setWISE_cc_flag  (Measure *measure, char qual);
+int setWISE_ph_qual  (Measure *measure, char qual);
+int setWISE_rd_flag  (Measure *measure, char qual);
+int setWISE_bl_flag  (Measure *measure, char qual);
+int setWISE_gal_flag (Measure *measure, char qual);
+int setWISE_mp_flag  (Measure *measure, char qual);
+int setWISE_dup_flag (Measure *measure, char qual);
+int setWISE_use_flag (Measure *measure, char qual);
 
 char *skipNbounds (char *line, char bound, int Nbound, int Nbyte);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/supercos.h
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/supercos.h	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/supercos.h	(revision 38594)
@@ -80,6 +80,5 @@
 Image *loadsupercos_plates (Survey *survey, int Nsurvey, char *filename, int *nimage);
 int loadsupercos_getFilterInfo (char *line, char *emulsion, char *filterID);
-int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyList *skytable, char *filename, AddstarClientOptions options);
-int loadsupercos_sortStars (Stars *tstars, int Ntstars);
+int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyTable *skytable, char *filename, AddstarClientOptions options);
 int *loadsupercos_image_index (Image *image, int Nimage);
 int loadsupercos_getST (char *line, double *st);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/load2mass_as_rawdata.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/load2mass_as_rawdata.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/load2mass_as_rawdata.c	(revision 38594)
@@ -12,5 +12,5 @@
 int load2mass_as_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options) {
   
-  int i, j, verbose;
+  int i, j, k, verbose;
   int Ntstars, NTSTARS;
   int Nbyte, Nextra, offset;
@@ -146,7 +146,7 @@
 
 	dvo_average_init (&newcat->average[Nave]);
-	dvo_measure_init (&newcat->measure[Nmeas+0]);
-	dvo_measure_init (&newcat->measure[Nmeas+1]);
-	dvo_measure_init (&newcat->measure[Nmeas+2]);
+	for (k = 0; k < 4; k++) {
+	  dvo_measure_init (&newcat->measure[Nmeas+k]);
+	}
 
 	newcat->average[Nave].R = tstars[j].R;
@@ -174,5 +174,6 @@
       }
 
-      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", (int) newcat->Naverage, 
+      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", 
+			  (int) newcat->Naverage, 
 			  region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax);
 
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos.c	(revision 38594)
@@ -15,5 +15,4 @@
   int i, status;
   SkyTable *sky;
-  SkyList *skylist = NULL;
   AddstarClientOptions options;
   FITS_DB db;
@@ -27,15 +26,4 @@
   SkyTableSetFilenames (sky, CATDIR, "cpt");
   
-  // generate the subset matching the user-selected region
-  skylist = SkyListByPatch (sky, -1, &UserPatch);
-
-  // if we only match to existing (already populated) regions, limit the select to those regions:
-  if (options.existing_regions) {
-    SkyList *tmp;
-    tmp = SkyListExistingSubset (skylist, CATDIR);
-    SkyListFree (skylist);
-    skylist = tmp;
-  }
-
   // load the images table (needed regardless)
   int Nsurvey = 0;
@@ -68,5 +56,5 @@
   for (i = 3; i < argc; i++) {
       fprintf (stderr, "loading %s\n", argv[i]);
-      loadsupercos_rawdata (image, imlist, Nimage, skylist, argv[i], options);
+      loadsupercos_rawdata (image, imlist, Nimage, sky, argv[i], options);
   }
   exit (0);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos_ops.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos_ops.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos_ops.c	(revision 38594)
@@ -79,17 +79,4 @@
 }
 
-int loadsupercos_sortStars (Stars *tstars, int Ntstars) {
-
-# define SWAPFUNC(A,B){ Stars temp = tstars[A]; tstars[A] = tstars[B]; tstars[B] = temp; }
-# define COMPARE(A,B)(tstars[A].average.R < tstars[B].average.R)
-
-  OHANA_SORT (Ntstars, COMPARE, SWAPFUNC);
-
-# undef SWAPFUNC
-# undef COMPARE
-  
-  return TRUE;
-}
-
 int *loadsupercos_image_index (Image *image, int Nimage) {
 
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos_rawdata.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos_rawdata.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadsupercos_rawdata.c	(revision 38594)
@@ -6,8 +6,8 @@
 # define DEBUG 0
 
-int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyList *skytable, char *filename, AddstarClientOptions options) {
+int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyTable *skytable, char *filename, AddstarClientOptions options) {
   
-  int i, j, verbose;
-  int Nstars, NSTARS, Nrecords;
+  int i;
+  int Nrecords;
   
   FILE *f;
@@ -15,7 +15,4 @@
 
   Detection *sstars;
-  Stars **stars, *tstars;
-  SkyList *skylist;
-  SkyRegion *region;
   Catalog catalog;
 
@@ -26,5 +23,4 @@
   if (f == NULL) Shutdown ("can't read the Supercosmos data file: %s", filename);
 
-  ALLOCATE (tstars, Stars, NRECORDS);
   ALLOCATE (sstars, Detection, NRECORDS); 
 
@@ -33,4 +29,10 @@
   double Dmin = +90.0;
   double Dmax = -90.0;
+
+  Catalog *newcat = NULL;
+  ALLOCATE (newcat, Catalog, 1);
+  dvo_catalog_init (newcat, TRUE);
+  ALLOCATE (newcat->average, Average, NRECORDS);
+  ALLOCATE (newcat->measure, Measure, NRECORDS);
 
   while ((Nrecords = fread (buffer, NBYTE, NRECORDS, f)) != 0) {
@@ -62,17 +64,20 @@
     // convert to the Stars format
     for (i = 0; i < Nrecords; i++) {
-	InitStar (&tstars[i]);
-	tstars[i].measure.Xccd = sstars[i].xCen;
-	tstars[i].measure.Yccd = sstars[i].yCen;
 
-	tstars[i].measure.M = sstars[i].sMag;
-	tstars[i].measure.Map = sstars[i].gMag;
-	tstars[i].measure.photFlags = sstars[i].class;
+	dvo_average_init (&newcat->average[i]);
+	dvo_measure_init (&newcat->measure[i]);
 
-	tstars[i].average.R = sstars[i].ra;
-	tstars[i].average.D = sstars[i].dec;
+	newcat->measure[i].Xccd = sstars[i].xCen;
+	newcat->measure[i].Yccd = sstars[i].yCen;
 
-	tstars[i].measure.R = sstars[i].ra;
-	tstars[i].measure.D = sstars[i].dec;
+	newcat->measure[i].M = sstars[i].sMag;
+	newcat->measure[i].Map = sstars[i].gMag;
+	newcat->measure[i].photFlags = sstars[i].class;
+
+	newcat->average[i].R = sstars[i].ra;
+	newcat->average[i].D = sstars[i].dec;
+
+	newcat->measure[i].R = sstars[i].ra;
+	newcat->measure[i].D = sstars[i].dec;
 
 	int Ni = imlist[sstars[i].plateID];
@@ -80,6 +85,6 @@
 
 	// XXX fix these
-	tstars[i].measure.Mcal = 0.0;
-	tstars[i].measure.dt = image[Ni].exptime;
+	newcat->measure[i].Mcal = 0.0;
+	newcat->measure[i].dt = image[Ni].exptime;
 
 	double sidtime = image[Ni].sidtime;
@@ -87,116 +92,54 @@
 	
 	double alt, az;
-	altaz (&alt, &az, 15.0*sidtime - tstars[i].average.R, tstars[i].average.D, latitude);
+	altaz (&alt, &az, 15.0*sidtime - newcat->average[i].R, newcat->average[i].D, latitude);
 
-	tstars[i].measure.airmass = 1.0 / cos(RAD_DEG*alt);
-	tstars[i].measure.az = az;
-	tstars[i].measure.t = image[Ni].tzero;
-	tstars[i].measure.imageID = image[Ni].imageID;
-	tstars[i].measure.photcode = image[Ni].photcode;
+	newcat->measure[i].airmass = 1.0 / cos(RAD_DEG*alt);
+	newcat->measure[i].az = az;
+	newcat->measure[i].t = image[Ni].tzero;
+	newcat->measure[i].imageID = image[Ni].imageID;
+	newcat->measure[i].photcode = image[Ni].photcode;
 
-	tstars[i].measure.FWx = ToShortPixels(sstars[i].aU);
-	tstars[i].measure.FWy = ToShortPixels(sstars[i].bU);
-	tstars[i].measure.theta = ToShortDegrees(sstars[i].thetaU);
+	newcat->measure[i].FWx = ToShortPixels(sstars[i].aU);
+	newcat->measure[i].FWy = ToShortPixels(sstars[i].bU);
+	newcat->measure[i].theta = ToShortDegrees(sstars[i].thetaU);
 
-	Rmin = MIN (Rmin, tstars[i].average.R);
-	Rmax = MAX (Rmax, tstars[i].average.R);
-	Dmin = MIN (Dmin, tstars[i].average.D);
-	Dmax = MAX (Dmax, tstars[i].average.D);
+	Rmin = MIN (Rmin, newcat->average[i].R);
+	Rmax = MAX (Rmax, newcat->average[i].R);
+	Dmin = MIN (Dmin, newcat->average[i].D);
+	Dmax = MAX (Dmax, newcat->average[i].D);
     }
 
     if (VERBOSE) fprintf (stderr, "scan %d stars (%10.6f - %10.6f, %10.6f - %10.6f) .. ", Nrecords, Rmin, Rmax, Dmin, Dmax);
 
-    // sort the tstars by RA
-    loadsupercos_sortStars (tstars, Nrecords);
+    SkyList *skylist = SkyListForStars (skytable, -1, newcat);
 
-    // scan through the stars, loading the containing catalogs
-    // skip through table for unsaved stars
-    for (i = 0; i < Nrecords; i++) {
-      if (tstars[i].found != -1) continue;
+    for (i = 0; i < skylist[0].Nregions; i++) {
+      // now we have all of the loaded stars in this catalog
+      dvo_catalog_init (&catalog, TRUE);
+      catalog.filename = skylist[0].filename[0];
+      catalog.catformat = dvo_catalog_catformat (CATFORMAT);  // set the default catformat from config data
+      catalog.catmode   = dvo_catalog_catmode (CATMODE);      // set the default catmode from config data
+      catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT;
+      catalog.Nsecfilt  = GetPhotcodeNsecfilt ();
 
-      // scan forward until we reach the UserPatch (stars sorted by RA)
-      if (tstars[i].average.R < UserPatch.Rmin) continue;
-      if (tstars[i].average.R > UserPatch.Rmax) break;
-      if (tstars[i].average.D < UserPatch.Dmin) continue;
-      if (tstars[i].average.D > UserPatch.Dmax) continue;
-
-      // identify the relevant catalog
-      skylist = SkyRegionByPoint_List (skytable, -1, tstars[i].average.R, tstars[i].average.D);
-      if (skylist[0].Nregions == 0) {
-	  SkyListFree (skylist);
-	  continue;
-      }
-      region = skylist[0].regions[0];
-      if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]);
-
-      int this_image_id = tstars[i].measure.imageID;
-
-      // loop over stars in this WISE region that are also in this output region
-      Nstars = 0;
-      NSTARS = 1000;
-      ALLOCATE (stars, Stars *, NSTARS);
-
-      for (j = i; j < Nrecords; j++) {
-	if (tstars[j].found != -1) continue;
-
-	if (tstars[j].measure.imageID != this_image_id) continue;
-
-	// check if in skyregion
-	if (tstars[j].average.R < region[0].Rmin) continue;
-	if (tstars[j].average.R > region[0].Rmax) break;
-	if (tstars[j].average.D < region[0].Dmin) continue;
-	if (tstars[j].average.D > region[0].Dmax) continue;
-	  
-	// check if in UserPatch
-	if (tstars[j].average.R < UserPatch.Rmin) continue;
-	if (tstars[j].average.R > UserPatch.Rmax) break;
-	if (tstars[j].average.D < UserPatch.Dmin) continue;
-	if (tstars[j].average.D > UserPatch.Dmax) continue;
-
-	stars[Nstars] = &tstars[j];
-	Nstars ++;
-
-	CHECK_REALLOCATE (stars, Stars *, NSTARS, Nstars, 1000);
-      }
-	  
-      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", Nstars, 
-			  region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax);
-
-      if (1) {
-	verbose = VERBOSE;
-	VERBOSE = FALSE;
-
-	// now we have all of the loaded stars in this catalog
-	dvo_catalog_init (&catalog, TRUE);
-	catalog.filename = skylist[0].filename[0];
-	catalog.catformat = dvo_catalog_catformat (CATFORMAT);  // set the default catformat from config data
-	catalog.catmode   = dvo_catalog_catmode (CATMODE);      // set the default catmode from config data
-	catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT;
-	catalog.Nsecfilt  = GetPhotcodeNsecfilt ();
-
-	// an error exit status here is a significant error
-	if (!dvo_catalog_open (&catalog, skylist[0].regions[0], VERBOSE, "w")) {
-	  fprintf (stderr, "ERROR: failure to open/create catalog file %s\n", catalog.filename);
-	  exit (2);
-	}
-
-	// assume no input star matches an existing star 
-	// simply add to the existing table
-	// loadWISE_catalog (&catalog, stars, Nstars);
-	find_matches_refstars (skylist[0].regions[0], stars, Nstars, &catalog, options);
-	// loadWISE_catalog (&catalog, stars, Nstars);
-
-	dvo_catalog_save (&catalog, VERBOSE);
-	dvo_catalog_unlock (&catalog);
-	dvo_catalog_free (&catalog);
-	// free (catalog.filename);
-	// XXX don't free this! it points to an element of the skytable
+      // an error exit status here is a significant error
+      if (!dvo_catalog_open (&catalog, skylist[0].regions[0], VERBOSE, "w")) {
+	fprintf (stderr, "ERROR: failure to open/create catalog file %s\n", catalog.filename);
+	exit (2);
       }
 
-      SkyListFree (skylist);
+      // assume no input star matches an existing star 
+      // simply add to the existing table
+      find_matches_refstars (skylist[0].regions[0], newcat, &catalog, options);
 
-      free (stars);
-      VERBOSE = verbose;
+      dvo_catalog_save (&catalog, VERBOSE);
+      dvo_catalog_unlock (&catalog);
+      dvo_catalog_free (&catalog);
     }
+
+    SkyListFree (skylist);
+    dvo_catalog_free (newcat);
+    free (newcat);
+    
     if (VERBOSE) fprintf (stderr, "done\n");
   }
@@ -204,5 +147,4 @@
   if (VERBOSE) fprintf (stderr, "\n");
   
-  free (tstars);
   free (sstars);
 
@@ -225,2 +167,15 @@
 */
 
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadtycho_rawdata.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadtycho_rawdata.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadtycho_rawdata.c	(revision 38594)
@@ -22,5 +22,4 @@
 
   Tycho_Stars *tstars;
-  Stars *stars, **starrefs; // this is an array of pointers to be consistent with input to find_match_refstars
   SkyList *skylist;
   SkyRegion *region;
@@ -87,8 +86,14 @@
       if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]);
 
-      // collect array of (Stars *) stars in a new output catalog
-      int Nstars = 0;
-      int NSTARS = (NGROUP*1000);
-      ALLOCATE (stars, Stars, NSTARS);
+      int Nave = 0;
+      int Nmeas = 0;
+      int NAVE = 1000;
+      int NMEAS = 4000;
+
+      Catalog *newcat = NULL;
+      ALLOCATE (newcat, Catalog, 1);
+      dvo_catalog_init (newcat, TRUE);
+      ALLOCATE (newcat->average, Average, NAVE);
+      ALLOCATE (newcat->measure, Measure, NMEAS);
 
       // loop over stars in this WISE region that are also in this output region
@@ -108,21 +113,28 @@
 	if (tstars[j].average.D > UserPatch.Dmax) continue;
 	  
-	for (k = 0; k < NGROUP; k++) {
-	  stars[Nstars+k].average = tstars[j].average;
-	  stars[Nstars+k].measure = tstars[j].measure[k];
-	  stars[Nstars+k].found = -1;
-	}	  
+	dvo_average_init (&newcat->average[Nave]);
+	newcat->average[Nave] = tstars[j].average;
+	for (k = 0; k < NGROUP; k++) { 
+	  dvo_measure_init (&newcat->measure[Nmeas + k]);
+	  newcat->measure[Nmeas + k] = tstars[j].measure[k];
+	}
 	tstars[j].flag = TRUE;
 
-	Nstars += NGROUP;
-	if (Nstars >= NSTARS - NGROUP) {
-	  NSTARS += (NGROUP*1000);
-	  REALLOCATE (stars, Stars, NSTARS);
-	}
+	newcat->average[Nave].Nmeasure = NGROUP;
+	newcat->average[Nave].measureOffset = Nmeas;
+
+	Nave ++;
+	Nmeas += NGROUP;
+
+	CHECK_REALLOCATE (newcat->average, Average, NAVE,  Nave,  1000);
+	CHECK_REALLOCATE (newcat->measure, Measure, NMEAS, Nmeas + NGROUP, 4000);
       }
+      newcat->Naverage = Nave;
+      newcat->Nmeasure = Nmeas;
 
-      ALLOCATE (starrefs, Stars *, NSTARS);
-      for (j = 0; j < Nstars; j++) {
-	starrefs[j] = &stars[j];
+      if (!newcat->Naverage) {
+	dvo_catalog_free (newcat);
+	free (newcat);
+	continue;
       }
 
@@ -145,5 +157,5 @@
       // assume no input star matches an existing star 
       // simply add to the existing table
-      find_matches_closest_refstars(region, starrefs, Nstars, &catalog, options);
+      find_matches_closest_refstars(region, newcat, &catalog, options);
 
       dvo_catalog_save (&catalog, verbose);
@@ -152,6 +164,6 @@
 
       SkyListFree (skylist);
-      free (stars);
-      free (starrefs);
+      dvo_catalog_free (newcat);
+      free (newcat);
     }
     free (tstars);
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadwise_rawdata.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadwise_rawdata.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadwise_rawdata.c	(revision 38594)
@@ -13,5 +13,5 @@
   
   int i, j, k, verbose;
-  int Nstars, NSTARS, Ntstars, NTSTARS;
+  int Ntstars, NTSTARS;
   int Nbyte, Nextra, offset;
 
@@ -21,5 +21,4 @@
   char *buffer, *p, *q;
 
-  Stars **stars; // this is an array of pointers to be consistent with input to find_match_refstars
   WISE_Stars *tstars;
   SkyList *skylist;
@@ -117,8 +116,14 @@
       if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]);
 
-      // collect array of (Stars *) stars in a new output catalog
-      Nstars = 0;
-      NSTARS = 3000;
-      ALLOCATE (stars, Stars *, NSTARS);
+      int Nave = 0;
+      int Nmeas = 0;
+      int NAVE = 1000;
+      int NMEAS = 4000;
+
+      Catalog *newcat = NULL;
+      ALLOCATE (newcat, Catalog, 1);
+      dvo_catalog_init (newcat, TRUE);
+      ALLOCATE (newcat->average, Average, NAVE);
+      ALLOCATE (newcat->measure, Measure, NMEAS);
 
       // loop over stars in this WISE region that are also in this output region
@@ -140,22 +145,21 @@
 	offset = tstars[j].offset;
 
+	dvo_average_init (&newcat->average[Nave]);
 	for (k = 0; k < 4; k++) {
-	  ALLOCATE (stars[Nstars + k], Stars, 1);
-	  InitStar (stars[Nstars + k]);
-	  stars[Nstars+k][0].average.R = tstars[j].R;
-	  stars[Nstars+k][0].average.D = tstars[j].D;
-	  stars[Nstars+k][0].measure.R = tstars[j].R;
-	  stars[Nstars+k][0].measure.D = tstars[j].D;
-	}	  
+	  dvo_measure_init (&newcat->measure[Nmeas+k]);
+	}
 	
+	newcat->average[Nave].R = tstars[j].R;
+	newcat->average[Nave].D = tstars[j].D;
+
 	switch (MODE) {
 	  case MODE_PRELIM:
-	    loadwise_star_prelim (&stars[Nstars], &buffer[offset], Nbyte - offset);
+	    loadwise_star_prelim (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset);
 	    break;
 	  case MODE_ALLSKY:
-	    loadwise_star_allsky (&stars[Nstars], &buffer[offset], Nbyte - offset);
+	    loadwise_star_allsky (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset);
 	    break;
 	  case MODE_ALLWISE:
-	    loadwise_star_allwise (&stars[Nstars], &buffer[offset], Nbyte - offset);
+	    loadwise_star_allwise (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset);
 	    break;
 	  default:
@@ -165,17 +169,24 @@
 	tstars[j].flag = TRUE;
 
-	Nstars += 4;
-	if (Nstars >= NSTARS - 4) {
-	  NSTARS += 4000;
-	  REALLOCATE (stars, Stars *, NSTARS);
-	}
-      }
-
-      if (!Nstars) {
-	free (stars);
+	newcat->average[Nave].Nmeasure = 4;
+	newcat->average[Nave].measureOffset = Nmeas;
+
+	Nave ++;
+	Nmeas += 4;
+
+	CHECK_REALLOCATE (newcat->average, Average, NAVE,  Nave,  1000);
+	CHECK_REALLOCATE (newcat->measure, Measure, NMEAS, Nmeas, 4000);
+      }
+      newcat->Naverage = Nave;
+      newcat->Nmeasure = Nmeas;
+
+      if (!newcat->Naverage) {
+	dvo_catalog_free (newcat);
+	free (newcat);
 	continue;
       }
 
-      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", Nstars, 
+      if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", 
+			  (int) newcat->Naverage, 
 			  region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax);
 
@@ -200,18 +211,14 @@
 	// assume no input star matches an existing star 
 	// simply add to the existing table
-	// loadWISE_catalog (&catalog, stars, Nstars);
-	find_matches_refstars (skylist[0].regions[0], stars, Nstars, &catalog, options);
-	// loadWISE_catalog (&catalog, stars, Nstars);
+	find_matches_refstars (skylist[0].regions[0], newcat, &catalog, options);
 
 	dvo_catalog_save (&catalog, VERBOSE);
 	dvo_catalog_unlock (&catalog);
 	dvo_catalog_free (&catalog);
-	// free (catalog.filename);
-	// XXX don't free this! it points to an element of the skytable
       }
 
       SkyListFree (skylist);
-      for (j = 0; j < Nstars; j++) free (stars[j]);
-      free (stars);
+      dvo_catalog_free (newcat);
+      free (newcat);
       VERBOSE = verbose;
     }
Index: /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadwise_star_full.c
===================================================================
--- /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadwise_star_full.c	(revision 38593)
+++ /branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadwise_star_full.c	(revision 38594)
@@ -242,5 +242,5 @@
 
   for (i = 0; i < 4; i++) {
-      setWISE_ph_qual (star[i], ptr[i]); // ph_qual
+      setWISE_ph_qual (&measure[i], ptr[i]); // ph_qual
   }
 
@@ -343,9 +343,9 @@
 
   // set blend flags for all 4 measures
-  setWISE_blend_flag (star, ptr); // nb & na both used here
+  setWISE_blend_flag (measure, ptr); // nb & na both used here
   ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: nb, na
 
   for (i = 0; i < 4; i++) {
-      setWISE_sat_flag (star[i], ptr); // w1sat
+      setWISE_sat_flag (&measure[i], ptr); // w1sat
       ptr = nextWISEfield (ptr); 
   }
@@ -353,19 +353,19 @@
 
   for (i = 0; i < 4; i++) {
-      setWISE_cc_flag (star[i], ptr[i]); // cc_flg
+      setWISE_cc_flag (&measure[i], ptr[i]); // cc_flg
   }
   ptr = nextWISEfield (ptr); // skip cc_flags
 
   // set ext flags for all 4 measures
-  setWISE_ext_flag_prelim (star, *ptr); // ext_flg
+  setWISE_ext_flag_prelim (measure, *ptr); // ext_flg
   ptr = nextWISEfield (ptr); // skip ext_flags
 
   for (i = 0; i < 4; i++) {
-      setWISE_var_flag_prelim (star[i], ptr[i]); // var_flg
+      setWISE_var_flag_prelim (&measure[i], ptr[i]); // var_flg
   }
   ptr = nextWISEfield (ptr); // skip var_flags
 
   for (i = 0; i < 4; i++) {
-      setWISE_ph_qual (star[i], ptr[i]); // ph_qual
+      setWISE_ph_qual (&measure[i], ptr[i]); // ph_qual
   }
 
