Index: trunk/Ohana/src/libdvo/include/dvo_util.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo_util.h	(revision 39404)
+++ trunk/Ohana/src/libdvo/include/dvo_util.h	(revision 39457)
@@ -61,5 +61,5 @@
 // There is no need to release memory pointed to by return value. 
 // It will be freed when dvoConfigFree() is invoked.
-Image *dvoImageByExternID(dvoConfig *dvoConfig, int sourceID, int externID);
+Image *dvoImageByExternID(dvoConfig *dvoConfig, unsigned short sourceID, unsigned int externID);
 
 // Loads the sky table for the database.
@@ -72,5 +72,5 @@
 // return a list of detections from a particular image id
 // Use dvoFree() to free the memory pointed to by results
-off_t dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID);
+off_t dvoGetDetections(SkyList *skylist, unsigned int imageID, dvoDetection **results, unsigned int *pMaxDetID);
 
 // free memory returned by various dvo util functions
Index: trunk/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvodb.h	(revision 39404)
+++ trunk/Ohana/src/libdvo/include/dvodb.h	(revision 39457)
@@ -490,6 +490,6 @@
 double        TimeValue (time_t time, time_t TimeReference, int TimeFormat);
 
-void          image_subset          PROTO((Image *image, off_t Nimage, off_t **Subset, off_t *Nsubset, SkyRegionSelection *selection, unsigned long int tzero, double trange, int TimeSelect));
-off_t         match_image_subset    PROTO((Image *image, off_t *subset, off_t Nsubset, unsigned int T, short int S));
+void          image_subset          PROTO((Image *image, off_t Nimage, off_t **Subset, off_t *Nsubset, SkyRegionSelection *selection, e_time tzero, double trange, int TimeSelect));
+off_t         match_image_subset    PROTO((Image *image, off_t *subset, off_t Nsubset, e_time T, short int S));
 
 // dvo DB field functions
Index: trunk/Ohana/src/libdvo/include/libdvo_astro.h
===================================================================
--- trunk/Ohana/src/libdvo/include/libdvo_astro.h	(revision 39404)
+++ trunk/Ohana/src/libdvo/include/libdvo_astro.h	(revision 39457)
@@ -67,7 +67,7 @@
   int NMAP;
   AstromOffsetMap **map;
-   int *imageIDtoTableSeq;
-  int MaxImageID;
-  int MaxTableID;
+  int *imageIDtoTableSeq;
+  unsigned int MaxImageID;
+  unsigned int MaxTableID;
 } AstromOffsetTable;
 
Index: trunk/Ohana/src/libdvo/src/AstromOffsetMapIO.c
===================================================================
--- trunk/Ohana/src/libdvo/src/AstromOffsetMapIO.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/AstromOffsetMapIO.c	(revision 39457)
@@ -77,5 +77,6 @@
     }
     AstromOffsetTableSetIDs (table);
-    gfits_free_header (ftable.header);
+
+    gfits_free_header (&theader);
     gfits_free_table  (&ftable);
   } else {
@@ -98,9 +99,12 @@
     // Convert the disk array of maps to then internal format in a rich structure:
     table = AstromOffsetMapToTable (map_disk, Nmap);
+
+    gfits_free_header (&theader);
     gfits_free_table  (&ftable);
   }
 
-  gfits_free_header (&theader);
+  gfits_free_header (&header);
   gfits_free_matrix (&matrix);
+  fclose (f);
 
   return (table);
@@ -130,4 +134,5 @@
   ftable.header = &theader;
   gfits_table_set_AstromOffsetMap_Disk_6x6 (&ftable, map_disk, Nmap, TRUE);
+  FREE (map_disk);
 
   f = fopen (filename, "w");
@@ -143,4 +148,9 @@
   fclose (f);
 
+  gfits_free_header (&header);
+  gfits_free_matrix (&matrix);
+  gfits_free_header (&theader);
+  gfits_free_table  (&ftable);
+
   return (TRUE);
 }
@@ -148,5 +158,6 @@
 AstromOffsetTable *AstromOffsetMapToTable(AstromOffsetMap_Disk_6x6 *map_disk, off_t Nmap) {
 
-  int i, j, k;
+  unsigned int i;
+  int j, k;
 
   AstromOffsetTable *table = NULL;
@@ -157,9 +168,9 @@
 
   // find the max value of imageID
-  int MaxTableID = 0;
-  int MaxImageID = 0;
+  unsigned int MaxTableID = 0;
+  unsigned int MaxImageID = 0;
   for (i = 0; i < Nmap; i++) {
-    MaxTableID = MAX(map_disk[i].tableID, MaxTableID);
-    MaxImageID = MAX(map_disk[i].imageID, MaxImageID);
+    MaxTableID = MAX(MaxTableID, map_disk[i].tableID);
+    MaxImageID = MAX(MaxImageID, map_disk[i].imageID);
   }
   table->MaxTableID = MaxTableID;
@@ -312,27 +323,34 @@
 int AstromOffsetTableSetIDs (AstromOffsetTable *table) {
 
-  int i;
-
   // find the max value of imageID
-  int MaxTableID = 0;
-  int MaxImageID = 0;
-  for (i = 0; i < table->Nmap; i++) {
-    MaxTableID = MAX(table->map[i][0].tableID, MaxTableID);
-    MaxImageID = MAX(table->map[i][0].imageID, MaxImageID);
-  }
-  table->MaxTableID = MaxTableID;
-  table->MaxImageID = MaxImageID;
+  unsigned int MaxTableID = 0;
+  unsigned int MaxImageID = 0;
+  {
+    int j;
+    for (j = 0; j < table->Nmap; j++) {
+      MaxTableID = MAX(MaxTableID, table->map[j][0].tableID);
+      MaxImageID = MAX(MaxImageID, table->map[j][0].imageID);
+    }
+    table->MaxTableID = MaxTableID;
+    table->MaxImageID = MaxImageID;
+  }
 
   // generate the index and init values to -1
-  ALLOCATE (table->imageIDtoTableSeq, int, MaxImageID + 1);
-  for (i = 0; i <= MaxImageID; i++) {
-    table->imageIDtoTableSeq[i] = -1;
+  {
+    unsigned int i;
+    ALLOCATE (table->imageIDtoTableSeq, int, MaxImageID + 1);
+    for (i = 0; i <= MaxImageID; i++) {
+      table->imageIDtoTableSeq[i] = -1;
+    }
   }
 
   // assign the ID values
-  for (i = 0; i < table->Nmap; i++) {
-    int ImageID = table->map[i][0].imageID;
-    myAssert (table->imageIDtoTableSeq[ImageID] == -1, "oops, duplicate image IDs");
-    table->imageIDtoTableSeq[ImageID] = i;
+  { 
+    int j;
+    for (j = 0; j < table->Nmap; j++) {
+      int ImageID = table->map[j][0].imageID;
+      myAssert (table->imageIDtoTableSeq[ImageID] == -1, "oops, duplicate image IDs");
+      table->imageIDtoTableSeq[ImageID] = j;
+    }
   }
   return TRUE;
Index: trunk/Ohana/src/libdvo/src/AstromOffsetMapUtils.c
===================================================================
--- trunk/Ohana/src/libdvo/src/AstromOffsetMapUtils.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/AstromOffsetMapUtils.c	(revision 39457)
@@ -11,6 +11,7 @@
   off_t i;
   for (i = 0; i < Nimages; i++) {
-    int imageID = images[i].imageID;
-    if (imageID < 0) continue;
+    // if (images[i].imageID < 0) continue;
+
+    unsigned int imageID = images[i].imageID;
     if (imageID > table->MaxImageID) continue;
     
@@ -126,6 +127,6 @@
   tgt->keep = src->keep; 
 
-  int Nx = src->dX;
-  int Ny = src->dY;
+  int Nx = src->Nx;
+  int Ny = src->Ny;
 
   int j, k;
Index: trunk/Ohana/src/libdvo/src/HostTable.c
===================================================================
--- trunk/Ohana/src/libdvo/src/HostTable.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/HostTable.c	(revision 39457)
@@ -27,6 +27,7 @@
   int i;
   for (i = 0; i < Nhosts; i++) {
-    free (hosts[i].hostname);
-    free (hosts[i].pathname);
+    FREE (hosts[i].hostname);
+    FREE (hosts[i].pathname);
+    FREE (hosts[i].results);
     FreeIOBuffer (&hosts[i].stdout);
     FreeIOBuffer (&hosts[i].stderr);
@@ -43,4 +44,5 @@
   }
   if (table->index) free (table->index);
+
   free (table);
   return;
Index: trunk/Ohana/src/libdvo/src/ImageOps.c
===================================================================
--- trunk/Ohana/src/libdvo/src/ImageOps.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/ImageOps.c	(revision 39457)
@@ -5,5 +5,5 @@
 void image_subset (Image *image, off_t Nimage, off_t **Subset, off_t *Nsubset,
 		   SkyRegionSelection *selection, 
-		   unsigned long int tzero, double trange, int TimeSelect) 
+		   e_time tzero, double trange, int TimeSelect) 
 {
 
Index: trunk/Ohana/src/libdvo/src/RegionHostTable.c
===================================================================
--- trunk/Ohana/src/libdvo/src/RegionHostTable.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/RegionHostTable.c	(revision 39457)
@@ -42,4 +42,18 @@
   for (i = 0; i < Nhosts; i++) {
     free (hosts[i].hostname);
+    FreeIOBuffer (&hosts[i].stdout);
+    FreeIOBuffer (&hosts[i].stderr);
+    FREE (hosts[i].image);
+    FREE (hosts[i].imseq);
+    FREE (hosts[i].neighbors);
+    if (hosts[i].astromTable) {
+      FREE (hosts[i].astromTable->map);
+      FREE (hosts[i].astromTable->imageIDtoTableSeq);
+      FREE (hosts[i].astromTable);
+    }
+    // do NOT use AstromOffsetTableFree : an astromTable is
+    // only set here by relastro:assign_images, and it uses
+    // AstromOffsetTableAddMapFromImage to assign pointers, not copies
+    // AstromOffsetTableFree(hosts[i].astromTable);
   }
   free (hosts);
@@ -55,4 +69,5 @@
   if (table->index) free (table->index);
   free (table);
+
   return;
 }
@@ -83,5 +98,5 @@
   RegionHostInfo *hosts = NULL;
   ALLOCATE (hosts, RegionHostInfo, NHOSTS);
-  InitRegionHosts (hosts, Nhosts, NHOSTS);
+  InitRegionHosts (hosts, 0, NHOSTS);
 
   int maxID = 0;
Index: trunk/Ohana/src/libdvo/src/dbExtractImages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractImages.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dbExtractImages.c	(revision 39457)
@@ -55,4 +55,5 @@
 /* return image.field based on the selection */
 dbValue dbExtractImages (Image *image, off_t Nimage, off_t N, dbField *field) {
+  OHANA_UNUSED_PARAM(Nimage); // XXX: not sure why this is supplied
 
   double x, y;
Index: trunk/Ohana/src/libdvo/src/db_utils.c
===================================================================
--- trunk/Ohana/src/libdvo/src/db_utils.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/db_utils.c	(revision 39457)
@@ -10,4 +10,7 @@
 // by default, no graphdata 
 int GetGraphdata(Graphdata *graph, int *kapa, char *name) {
+  OHANA_UNUSED_PARAM(graph);
+  OHANA_UNUSED_PARAM(kapa);
+  OHANA_UNUSED_PARAM(name);
     return FALSE;
 }
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c	(revision 39457)
@@ -1,5 +1,5 @@
 # include <dvo.h>
 
-int dvo_match_image (Image *image, int Nimage, unsigned int T, short int S) {
+int dvo_match_image (Image *image, int Nimage, int T, short int S) {
 
   int N, Nlo, Nhi, N1, N2;
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c	(revision 39457)
@@ -17,9 +17,9 @@
      it is not defined for a legacy database, we can generate them using the existing index values.
      If it is missing, give a warning and recommend the user upgrade the DB */
-  if (!gfits_scan (&catalog[0].header, "OBJID",    "%d", 1, &catalog[0].objID)) {
+  if (!gfits_scan (&catalog[0].header, "OBJID",    "%u", 1, &catalog[0].objID)) {
     if (VERBOSE) fprintf (stderr, "WARNING: OBJID is not set for %s: upgrade for full feature set\n", catalog[0].filename);
     catalog[0].objID = 0;
   }
-  if (!gfits_scan (&catalog[0].header, "CATID",    "%d", 1, &catalog[0].catID)) {
+  if (!gfits_scan (&catalog[0].header, "CATID",    "%u", 1, &catalog[0].catID)) {
     if (VERBOSE) fprintf (stderr, "WARNING: CATID is not set for %s: upgrade for full feature set\n", catalog[0].filename);
     catalog[0].catID = 0;
Index: trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 39457)
@@ -29,9 +29,9 @@
      it is not defined for a legacy database, we can generate them using the existing index values.
      If it is missing, give a warning and recommend the user upgrade the DB */
-  if (!gfits_scan (&catalog[0].header, "OBJID",    "%d", 1, &catalog[0].objID)) {
+  if (!gfits_scan (&catalog[0].header, "OBJID",    "%u", 1, &catalog[0].objID)) {
     if (VERBOSE) fprintf (stderr, "WARNING: OBJID is not set for this database: upgrade for full feature set\n");
     catalog[0].objID = 0;
   }
-  if (!gfits_scan (&catalog[0].header, "CATID",    "%d", 1, &catalog[0].catID)) {
+  if (!gfits_scan (&catalog[0].header, "CATID",    "%u", 1, &catalog[0].catID)) {
     if (VERBOSE) fprintf (stderr, "WARNING: CATID is not set for this database: upgrade for full feature set\n");
     catalog[0].catID = 0;
Index: trunk/Ohana/src/libdvo/src/dvo_convert.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert.c	(revision 39457)
@@ -320,4 +320,5 @@
 
 Missing *FtableToMissing (FTable *ftable, Average *average, off_t *Nmissing, DVOCatFormat *format, char nativeBytes) {
+  OHANA_UNUSED_PARAM(average);
 
   Missing *missing;
@@ -397,4 +398,5 @@
 
 SecFilt *FtableToSecFilt (FTable *ftable, Average *average, off_t *Nsecfilt, DVOCatFormat *format, char nativeBytes) {
+  OHANA_UNUSED_PARAM(average);
 
   SecFilt *secfilt;
@@ -509,4 +511,5 @@
 
 Lensing *FtableToLensing (FTable *ftable, Average *average, off_t *Nlensing, DVOCatFormat *format, char nativeBytes) {
+  OHANA_UNUSED_PARAM(average);
 
   Lensing *lensing;
@@ -652,4 +655,5 @@
 
 Lensobj *FtableToLensobj (FTable *ftable, Average *average, off_t *Nlensobj, DVOCatFormat *format, char nativeBytes) {
+  OHANA_UNUSED_PARAM(average);
 
   Lensobj *lensobj;
@@ -769,4 +773,5 @@
 
 StarPar *FtableToStarPar (FTable *ftable, Average *average, off_t *Nstarpar, DVOCatFormat *format, char nativeBytes) {
+  OHANA_UNUSED_PARAM(average);
 
   StarPar *starpar;
@@ -874,4 +879,5 @@
 
 GalPhot *FtableToGalPhot (FTable *ftable, Average *average, off_t *Ngalphot, DVOCatFormat *format, char nativeBytes) {
+  OHANA_UNUSED_PARAM(average);
 
   GalPhot *galphot;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 39457)
@@ -100,4 +100,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_DEV_1_ToInternal (Average_PS1_DEV_1 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -138,4 +139,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_DEV_1 *AverageInternalTo_PS1_DEV_1 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 39457)
@@ -97,4 +97,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_DEV_2_ToInternal (Average_PS1_DEV_2 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -133,4 +134,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_DEV_2 *AverageInternalTo_PS1_DEV_2 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 39457)
@@ -55,4 +55,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_REF_ToInternal (Average_PS1_REF *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -80,4 +81,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_REF *AverageInternalTo_PS1_REF (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_SIM.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_SIM.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_SIM.c	(revision 39457)
@@ -4,4 +4,5 @@
 
 Measure *Measure_PS1_SIM_ToInternal (Average *ave, Measure_PS1_SIM *in, off_t Nvalues) {
+  OHANA_UNUSED_PARAM(ave);
 
   off_t i;
@@ -51,4 +52,5 @@
 
 Measure_PS1_SIM *MeasureInternalTo_PS1_SIM (Average *ave, Measure *in, off_t Nvalues) {
+  OHANA_UNUSED_PARAM(ave);
 
   off_t i;
@@ -97,4 +99,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_SIM_ToInternal (Average_PS1_SIM *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -143,4 +146,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_SIM *AverageInternalTo_PS1_SIM (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 39457)
@@ -115,4 +115,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_V1_ToInternal (Average_PS1_V1 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -152,4 +153,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_V1 *AverageInternalTo_PS1_V1 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 39457)
@@ -116,4 +116,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_V2_ToInternal (Average_PS1_V2 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -157,4 +158,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_V2 *AverageInternalTo_PS1_V2 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 39457)
@@ -116,4 +116,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_V3_ToInternal (Average_PS1_V3 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -159,4 +160,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_V3 *AverageInternalTo_PS1_V3 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 39457)
@@ -134,4 +134,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_V4_ToInternal (Average_PS1_V4 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -180,4 +181,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_V4 *AverageInternalTo_PS1_V4 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c	(revision 39457)
@@ -4,4 +4,5 @@
 
 Measure *Measure_PS1_V5_ToInternal (Average *ave, Measure_PS1_V5 *in, off_t Nvalues) {
+  OHANA_UNUSED_PARAM(ave);
 
   off_t i;
@@ -79,4 +80,5 @@
 
 Measure_PS1_V5 *MeasureInternalTo_PS1_V5 (Average *ave, Measure *in, off_t Nvalues) {
+  OHANA_UNUSED_PARAM(ave);
 
   off_t i;
@@ -153,4 +155,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_PS1_V5_ToInternal (Average_PS1_V5 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -225,4 +228,5 @@
 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
 Average_PS1_V5 *AverageInternalTo_PS1_V5 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -1640,4 +1644,5 @@
 
 Measure *Measure_PS1_V5alt_ToInternal (Average *ave, Measure_PS1_V5alt *in, off_t Nvalues) {
+  OHANA_UNUSED_PARAM(ave);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 39457)
@@ -106,4 +106,5 @@
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_Panstarrs_DEV_0_ToInternal (Average_Panstarrs_DEV_0 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -143,4 +144,5 @@
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
 Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 39457)
@@ -106,4 +106,5 @@
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
 Average *Average_Panstarrs_DEV_1_ToInternal (Average_Panstarrs_DEV_1 *in, off_t Nvalues, SecFilt **primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
@@ -143,4 +144,5 @@
 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used
 Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, off_t Nvalues, SecFilt *primary) {
+  OHANA_UNUSED_PARAM(primary);
 
   off_t i;
Index: trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39457)
@@ -467,4 +467,5 @@
 /***/
 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return NAN;
@@ -572,4 +573,5 @@
 
 float PhotCalErr (Measure *measure, dvoMagClassType class) {
+  OHANA_UNUSED_PARAM(class);
 
   float dMcal = measure[0].dMcal;
@@ -578,4 +580,5 @@
 
 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return NAN;
@@ -640,4 +643,6 @@
 
 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
+  OHANA_UNUSED_PARAM(secfilt);
 
   int Np;
@@ -710,4 +715,5 @@
 
 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return NAN;
@@ -757,4 +763,5 @@
 // return the number of detections in this filter (gpc1)
 int PhotNcode (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return 0;
@@ -768,4 +775,5 @@
 // return the number of detections in this filter (gpc1)
 int PhotSecfiltFlags (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return 0;
@@ -778,4 +786,5 @@
 
 int PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return 0;
@@ -824,4 +833,5 @@
 
 float PhotAveFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -836,4 +846,5 @@
 
 float PhotAvedFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -848,4 +859,5 @@
 
 float PhotAveFluxKron (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -860,4 +872,5 @@
 
 float PhotAvedFluxKron (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -872,4 +885,5 @@
 
 float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -884,4 +898,5 @@
 
 float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -896,4 +911,5 @@
 
 float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -921,4 +937,5 @@
 // Xm is now (2014.07.03) stored as the chisq except in dvo formats which use as short
 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -1188,4 +1205,5 @@
 /***/
 float PhotFluxAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return NAN;
@@ -1248,4 +1266,5 @@
 
 float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return NAN;
@@ -1610,4 +1629,5 @@
 /***/
 float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+  OHANA_UNUSED_PARAM(average);
 
   if (code == NULL) return NAN;
@@ -1746,4 +1766,5 @@
 
 float PhotdMTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -1759,4 +1780,5 @@
 // Xm is now (2014.07.03) stored as the chisq except in dvo formats which use as short
 float PhotXmTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
 
   int Ns;
@@ -1853,45 +1875,45 @@
 }
 
-LENSFIELD(X11_sm_obj);
-LENSFIELD(X12_sm_obj);
-LENSFIELD(X22_sm_obj);
-LENSFIELD(E1_sm_obj);
-LENSFIELD(E2_sm_obj);
-
-LENSFIELD(X11_sh_obj);
-LENSFIELD(X12_sh_obj);
-LENSFIELD(X22_sh_obj);
-LENSFIELD(E1_sh_obj);
-LENSFIELD(E2_sh_obj);
-
-LENSFIELD(X11_sm_psf);
-LENSFIELD(X12_sm_psf);
-LENSFIELD(X22_sm_psf);
-LENSFIELD(E1_sm_psf);
-LENSFIELD(E2_sm_psf);
-
-LENSFIELD(X11_sh_psf);
-LENSFIELD(X12_sh_psf);
-LENSFIELD(X22_sh_psf);
-LENSFIELD(E1_sh_psf);
-LENSFIELD(E2_sh_psf);
-
-LENSFIELD( F_ApR5);
-LENSFIELD(dF_ApR5);
-LENSFIELD(sF_ApR5);
-LENSFIELD(fF_ApR5);
-
-LENSFIELD( F_ApR6);
-LENSFIELD(dF_ApR6);
-LENSFIELD(sF_ApR6);
-LENSFIELD(fF_ApR6);
-
-LENSFIELD( F_ApR7);
-LENSFIELD(dF_ApR7);
-LENSFIELD(sF_ApR7);
-LENSFIELD(fF_ApR7);
-
-LENSFIELD(E1);
-LENSFIELD(E2);
+LENSFIELD(X11_sm_obj)
+LENSFIELD(X12_sm_obj)
+LENSFIELD(X22_sm_obj)
+LENSFIELD(E1_sm_obj)
+LENSFIELD(E2_sm_obj)
+
+LENSFIELD(X11_sh_obj)
+LENSFIELD(X12_sh_obj)
+LENSFIELD(X22_sh_obj)
+LENSFIELD(E1_sh_obj)
+LENSFIELD(E2_sh_obj)
+
+LENSFIELD(X11_sm_psf)
+LENSFIELD(X12_sm_psf)
+LENSFIELD(X22_sm_psf)
+LENSFIELD(E1_sm_psf)
+LENSFIELD(E2_sm_psf)
+
+LENSFIELD(X11_sh_psf)
+LENSFIELD(X12_sh_psf)
+LENSFIELD(X22_sh_psf)
+LENSFIELD(E1_sh_psf)
+LENSFIELD(E2_sh_psf)
+
+LENSFIELD( F_ApR5)
+LENSFIELD(dF_ApR5)
+LENSFIELD(sF_ApR5)
+LENSFIELD(fF_ApR5)
+
+LENSFIELD( F_ApR6)
+LENSFIELD(dF_ApR6)
+LENSFIELD(sF_ApR6)
+LENSFIELD(fF_ApR6)
+
+LENSFIELD( F_ApR7)
+LENSFIELD(dF_ApR7)
+LENSFIELD(sF_ApR7)
+LENSFIELD(fF_ApR7)
+
+LENSFIELD(E1)
+LENSFIELD(E2)
 
 # if (1)
Index: trunk/Ohana/src/libdvo/src/dvo_tiny_values.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 39457)
@@ -78,6 +78,12 @@
 int free_tiny_values (Catalog *catalog) {
 
-  if (catalog[0].averageT) free (catalog[0].averageT);
-  if (catalog[0].measureT) free (catalog[0].measureT);
+  if (catalog[0].averageT) {
+    free (catalog[0].averageT);
+    catalog[0].averageT = NULL;
+  }
+  if (catalog[0].measureT) { 
+    free (catalog[0].measureT);
+    catalog[0].measureT = NULL;
+  }
   return (TRUE);
 }
Index: trunk/Ohana/src/libdvo/src/dvo_util.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_util.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvo_util.c	(revision 39457)
@@ -1,198 +1,192 @@
+#include <dvo_util.h>
+
 // dvo_util.c
 // This file contains a set of functions that provide simple read-only access to a dvo database
 //
-#include <dvo_util.h>
-
-void dvoFree(void *ptr)
-{
-    if (ptr) {
-        FREE(ptr);
-    }
-}
-
-dvoConfig * dvoConfigAlloc()
-{
-    dvoConfig *config;
-
-    ALLOCATE(config, dvoConfig, 1);
-
-    memset(config, 0, sizeof(dvoConfig));
-    return config;
-}
-
-void dvoConfigFree(dvoConfig *dvoConfig)
-{
-    if (dvoConfig) {
-        if (dvoConfig->skyTable) {
-            SkyTableFree(dvoConfig->skyTable);
-        }
-        if (dvoConfig->images) {
-            gfits_db_free(&dvoConfig->imageDB);
-        }
-        FREE(dvoConfig);
-    }
-}
-
-dvoConfig *dvoConfigRead(int *argc, char **argv)
-{
-    dvoConfig *dvoConfig = dvoConfigAlloc();
-    char MasterPhotcodeFile[256];
-
-    char *file = SelectConfigFile(argc, argv, "ptolemy");
-    char *configData = LoadConfigFile(file);
-    if (!configData) {
-        fprintf(stderr, "ERROR: can't find configuration file %s\n", file);
-        if (file) {
-            FREE(file);
-        }
-        exit(3);
-    }
-    FREE (file);
-    file = NULL;
-
-    ScanConfig (configData, "GSCFILE",         "%s", 0, dvoConfig->gscfile);
-    ScanConfig (configData, "CATDIR",          "%s", 0, dvoConfig->catdir);
-    ScanConfig (configData, "CATMODE",         "%s",  0, dvoConfig->catmode);
-    ScanConfig (configData, "CATFORMAT",       "%s",  0, dvoConfig->catformat);
-    ScanConfig (configData, "PHOTCODE_FILE",   "%s",  0, MasterPhotcodeFile);
-    if (!ScanConfig (configData, "SKY_DEPTH",    "%d",  0, &dvoConfig->skyDepth)) {
-        dvoConfig->skyDepth = 2;
-    }
-    if (!ScanConfig (configData, "SKY_TABLE",    "%s",  0, dvoConfig->skyTableFile)) {
-        dvoConfig->skyTableFile[0] = 0;
-    }
-
-    snprintf (dvoConfig->photcodeFile, 256, "%s/Photcodes.dat", dvoConfig->catdir);
-    if (!LoadPhotcodes (dvoConfig->photcodeFile, MasterPhotcodeFile, FALSE)) {
-        fprintf (stderr, "error loading photcode table %s or master file %s\n",
-            dvoConfig->photcodeFile, MasterPhotcodeFile);
-        exit (1);
-    }
-
-    double zero_point;
-    ScanConfig (configData, "ZERO_PT",                "%lf", 0, &zero_point);
-    SetZeroPoint (zero_point);
+
+void dvoFree(void *ptr) {
+  if (ptr) {
+    FREE(ptr);
+  }
+}
+
+dvoConfig *dvoConfigAlloc() {
+  dvoConfig *config;
+
+  ALLOCATE(config, dvoConfig, 1);
+
+  memset(config, 0, sizeof(dvoConfig));
+  return config;
+}
+
+void dvoConfigFree(dvoConfig *dvoConfig) {
+  if (dvoConfig) {
+    if (dvoConfig->skyTable) {
+      SkyTableFree(dvoConfig->skyTable);
+    }
+    if (dvoConfig->images) {
+      gfits_db_free(&dvoConfig->imageDB);
+    }
+    FREE(dvoConfig);
+  }
+}
+
+dvoConfig *dvoConfigRead(int *argc, char **argv) {
+  dvoConfig *dvoConfig = dvoConfigAlloc();
+  char MasterPhotcodeFile[256];
+
+  char *file = SelectConfigFile(argc, argv, "ptolemy");
+  char *configData = LoadConfigFile(file);
+  if (!configData) {
+    fprintf(stderr, "ERROR: can't find configuration file %s\n", file);
+    if (file) {
+      FREE(file);
+    }
+    exit(3);
+  }
+  FREE (file);
+  file = NULL;
+
+  ScanConfig (configData, "GSCFILE",         "%s", 0, dvoConfig->gscfile);
+  ScanConfig (configData, "CATDIR",          "%s", 0, dvoConfig->catdir);
+  ScanConfig (configData, "CATMODE",         "%s",  0, dvoConfig->catmode);
+  ScanConfig (configData, "CATFORMAT",       "%s",  0, dvoConfig->catformat);
+  ScanConfig (configData, "PHOTCODE_FILE",   "%s",  0, MasterPhotcodeFile);
+  if (!ScanConfig (configData, "SKY_DEPTH",    "%d",  0, &dvoConfig->skyDepth)) {
+    dvoConfig->skyDepth = 2;
+  }
+  if (!ScanConfig (configData, "SKY_TABLE",    "%s",  0, dvoConfig->skyTableFile)) {
+    dvoConfig->skyTableFile[0] = 0;
+  }
+
+  snprintf (dvoConfig->photcodeFile, 256, "%s/Photcodes.dat", dvoConfig->catdir);
+  if (!LoadPhotcodes (dvoConfig->photcodeFile, MasterPhotcodeFile, FALSE)) {
+    fprintf (stderr, "error loading photcode table %s or master file %s\n",
+	     dvoConfig->photcodeFile, MasterPhotcodeFile);
+    exit (1);
+  }
+
+  double zero_point;
+  ScanConfig (configData, "ZERO_PT",                "%lf", 0, &zero_point);
+  SetZeroPoint (zero_point);
 
 #if (DVO_UTIL_READ_CAMERA_CONFIG)
-    // at one point I thought reading the camera configuration might be useful
-    // but we didn't need it
-    if (!ScanConfig (configData, "CAMERA_CONFIG", "%s", 0, dvoConfig->cameraConfig)) {
-        fprintf (stderr, "can't find CAMERA_CONFIG in configuration\n");
-        exit (3);
-    }
-    char * cameraConfigData = LoadConfigFile(dvoConfig->cameraConfig);
-    if (!cameraConfigData) {
-        fprintf (stderr, "failed to load %s\n", dvoConfig->cameraConfig);
-        exit (3);
-    }
-
-    ScanConfig (cameraConfigData, "NCCD", "%d", 1, &dvoConfig->nCCD);
+  // at one point I thought reading the camera configuration might be useful
+  // but we didn't need it
+  if (!ScanConfig (configData, "CAMERA_CONFIG", "%s", 0, dvoConfig->cameraConfig)) {
+    fprintf (stderr, "can't find CAMERA_CONFIG in configuration\n");
+    exit (3);
+  }
+  char * cameraConfigData = LoadConfigFile(dvoConfig->cameraConfig);
+  if (!cameraConfigData) {
+    fprintf (stderr, "failed to load %s\n", dvoConfig->cameraConfig);
+    exit (3);
+  }
+
+  ScanConfig (cameraConfigData, "NCCD", "%d", 1, &dvoConfig->nCCD);
 #endif
 
-    return (dvoConfig);
-}
-
-int dvoLoadImages(dvoConfig *dvoConfig)
-{
-    if (dvoConfig->images) {
-        return TRUE;
-    }
-
-    char filename[256];
+  return (dvoConfig);
+}
+
+int dvoLoadImages(dvoConfig *dvoConfig) {
+  if (dvoConfig->images) {
+    return TRUE;
+  }
+
+  char filename[256];
   
-    snprintf (filename, 256, "%s/Images.dat", dvoConfig->catdir);
-
-    gfits_db_init (&dvoConfig->imageDB);
-    dvoConfig->imageDB.lockstate = LCK_SOFT;
-    dvoConfig->imageDB.timeout   = 120.0;
-
-    if (!gfits_db_lock (&dvoConfig->imageDB, filename)) {
-        fprintf (stderr, "error opening image catalog %s (1)\n", filename);
-        return (FALSE);
-    }
-
-    if (dvoConfig->imageDB.dbstate == LCK_EMPTY) {
-        fprintf (stderr, "note: image catalog is empty\n");
-        ALLOCATE (dvoConfig->images, Image, 1);
-        dvoConfig->nImages = 1;
-        return (TRUE);
-    }
-
-    int status = dvo_image_load (&dvoConfig->imageDB, TRUE, FALSE);
-    gfits_db_close (&dvoConfig->imageDB);
-
-    if (!status) {
-        fprintf (stderr, "problem loading image database table\n");
-        return (FALSE);
-    }
-
-    dvoConfig->images = gfits_table_get_Image (&dvoConfig->imageDB.ftable, &dvoConfig->nImages, &dvoConfig->imageDB.scaledValue, &dvoConfig->imageDB.nativeOrder);
-    if (!dvoConfig->images) {
-        fprintf (stderr, "problem loading images\n");
-        return (FALSE);
-    }
-
+  snprintf (filename, 256, "%s/Images.dat", dvoConfig->catdir);
+
+  gfits_db_init (&dvoConfig->imageDB);
+  dvoConfig->imageDB.lockstate = LCK_SOFT;
+  dvoConfig->imageDB.timeout   = 120.0;
+
+  if (!gfits_db_lock (&dvoConfig->imageDB, filename)) {
+    fprintf (stderr, "error opening image catalog %s (1)\n", filename);
+    return (FALSE);
+  }
+
+  if (dvoConfig->imageDB.dbstate == LCK_EMPTY) {
+    fprintf (stderr, "note: image catalog is empty\n");
+    ALLOCATE (dvoConfig->images, Image, 1);
+    dvoConfig->nImages = 1;
     return (TRUE);
-}
-Image *dvoImageByExternID(dvoConfig *dvoConfig, int sourceID, int externID)
-{
-    int i;
+  }
+
+  int status = dvo_image_load (&dvoConfig->imageDB, TRUE, FALSE);
+  gfits_db_close (&dvoConfig->imageDB);
+
+  if (!status) {
+    fprintf (stderr, "problem loading image database table\n");
+    return (FALSE);
+  }
+
+  dvoConfig->images = gfits_table_get_Image (&dvoConfig->imageDB.ftable, &dvoConfig->nImages, &dvoConfig->imageDB.scaledValue, &dvoConfig->imageDB.nativeOrder);
+  if (!dvoConfig->images) {
+    fprintf (stderr, "problem loading images\n");
+    return (FALSE);
+  }
+
+  return (TRUE);
+}
+
+Image *dvoImageByExternID(dvoConfig *dvoConfig, unsigned short sourceID, unsigned int externID) {
+
+  unsigned int i;
     
-    if (!dvoLoadImages(dvoConfig)) return NULL;
-
-    for (i=0; i<dvoConfig->nImages; i++) {
-        Image *image = dvoConfig->images + i;
-        if ((image->externID == externID) && (image->sourceID == sourceID)) {
-            BuildChipMatch(dvoConfig->images, dvoConfig->nImages);
-	    return image;
-        }
-    }
-    fprintf(stderr, "can't find image for %d %d\n", sourceID, externID);
-    return NULL;
-}
-
-SkyTable *dvoLoadSkyTable(dvoConfig *dvoConfig)
-{
-    if (!dvoConfig->skyTable) {
-        char *skyfile = "";
-        dvoConfig->skyTable = SkyTableLoadOptimal(dvoConfig->catdir, skyfile, dvoConfig->gscfile,
-                                                    FALSE, dvoConfig->skyDepth, 0);
-    }
-
-    if (dvoConfig->skyTable == NULL) {
-        fprintf(stderr, "failed to load SkyTable\n");
-        return NULL;
-    }
-
-    SkyTableSetFilenames(dvoConfig->skyTable, dvoConfig->catdir, "cpt");
-
-    return dvoConfig->skyTable;
-}
-
-SkyList *dvoSkyListByExternID(dvoConfig *dvoConfig, int sourceID, int externID, Image **ppImage)
-{
-    Image *image = dvoImageByExternID(dvoConfig, sourceID, externID);
-    if (image == NULL) {
-        // fprintf(stderr, "can't find image for %d %d\n", sourceID, externID);
-        return NULL;
-    }
-
-    if (dvoLoadSkyTable(dvoConfig) == NULL) {
-        fprintf(stderr, "failed to load Sky table\n");
-        return NULL;
-    }
-    SkyList *skylist = SkyListByImage(dvoConfig->skyTable, -1, image);
-    if (!skylist->Nregions) {
-        fprintf(stderr, "failed to find SkyList for image  %d %d\n", sourceID, externID);
-        return NULL;
-    }
-
-    *ppImage = image;
-
-    return skylist;
-}
-
-off_t dvoGetDetections(SkyList *skylist, int imageID, dvoDetection **results, int *pMaxDetID)
-{
+  if (!dvoLoadImages(dvoConfig)) return NULL;
+
+  for (i = 0; i < dvoConfig->nImages; i++) {
+    Image *image = dvoConfig->images + i;
+    if ((image->externID == externID) && (image->sourceID == sourceID)) {
+      BuildChipMatch(dvoConfig->images, dvoConfig->nImages);
+      return image;
+    }
+  }
+  fprintf(stderr, "can't find image for %d %d\n", sourceID, externID);
+  return NULL;
+}
+
+SkyTable *dvoLoadSkyTable(dvoConfig *dvoConfig) {
+  if (!dvoConfig->skyTable) {
+    char *skyfile = "";
+    dvoConfig->skyTable = SkyTableLoadOptimal(dvoConfig->catdir, skyfile, dvoConfig->gscfile,
+					      FALSE, dvoConfig->skyDepth, 0);
+  }
+
+  if (dvoConfig->skyTable == NULL) {
+    fprintf(stderr, "failed to load SkyTable\n");
+    return NULL;
+  }
+
+  SkyTableSetFilenames(dvoConfig->skyTable, dvoConfig->catdir, "cpt");
+
+  return dvoConfig->skyTable;
+}
+
+SkyList *dvoSkyListByExternID(dvoConfig *dvoConfig, int sourceID, int externID, Image **ppImage) {
+  Image *image = dvoImageByExternID(dvoConfig, sourceID, externID);
+  if (image == NULL) {
+    // fprintf(stderr, "can't find image for %d %d\n", sourceID, externID);
+    return NULL;
+  }
+
+  if (dvoLoadSkyTable(dvoConfig) == NULL) {
+    fprintf(stderr, "failed to load Sky table\n");
+    return NULL;
+  }
+  SkyList *skylist = SkyListByImage(dvoConfig->skyTable, -1, image);
+  if (!skylist->Nregions) {
+    fprintf(stderr, "failed to find SkyList for image  %d %d\n", sourceID, externID);
+    return NULL;
+  }
+
+  *ppImage = image;
+
+  return skylist;
+}
+
+off_t dvoGetDetections(SkyList *skylist, unsigned int imageID, dvoDetection **results, unsigned int *pMaxDetID) {
   int GetMeasures = 1;
   int reg;
@@ -204,69 +198,71 @@
   *pMaxDetID = -1;
   for (reg=0; reg< skylist->Nregions; reg++) {
-      /* lock, load, unlock catalog */
-      Catalog catalog;
-
-      dvo_catalog_init (&catalog, TRUE);
-      catalog.filename = skylist->filename[reg];
-      catalog.catflags = GetMeasures ? DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT : DVO_LOAD_AVERAGE | DVO_LOAD_SECFILT;
-      catalog.Nsecfilt = 0;
-
-      // an error exit status here is a significant error
-      if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) {
-          fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
-          exit (2);
+    /* lock, load, unlock catalog */
+    Catalog catalog;
+
+    dvo_catalog_init (&catalog, TRUE);
+    catalog.filename = skylist->filename[reg];
+    catalog.catflags = GetMeasures ? DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_SECFILT : DVO_LOAD_AVERAGE | DVO_LOAD_SECFILT;
+    catalog.Nsecfilt = 0;
+
+    // an error exit status here is a significant error
+    if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) {
+      fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
+      exit (2);
+    }
+    dvo_catalog_unlock (&catalog);
+
+    off_t Nmeasure = catalog.Nmeasure;
+
+    off_t i;
+    for (i=0; i< Nmeasure; i++) {
+      Measure *m = catalog.measure + i;
+      if (m->imageID != imageID) {
+	continue;
       }
-      dvo_catalog_unlock (&catalog);
-
-      off_t Nmeasure = catalog.Nmeasure;
-
-      off_t i;
-      for (i=0; i< Nmeasure; i++) {
-        Measure *m = catalog.measure + i;
-        if (m->imageID != imageID) {
-            continue;
-        }
-        Average *a = catalog.average + m->averef;
+      Average *a = catalog.average + m->averef;
         
-        dvoDetection *det = detections + Ndetect;
-
-        det->valid     = 1;
-        det->ave      = *a;
-        det->meas     = *m;
+      dvoDetection *det = detections + Ndetect;
+
+      det->valid     = 1;
+      det->ave      = *a;
+      det->meas     = *m;
 #ifdef notdfe
-        det->objID     = a->objID;
-        det->catID     = m->catID;
-        det->detID     = m->detID;
-        det->pspsObjID = a->extID;
-        det->pspsDetID = m->extID;
+      det->objID     = a->objID;
+      det->catID     = m->catID;
+      det->detID     = m->detID;
+      det->pspsObjID = a->extID;
+      det->pspsDetID = m->extID;
 #endif
         
-        if ((int) det->meas.detID > *pMaxDetID) {
-            *pMaxDetID = det->meas.detID;
-        }
-
-        Ndetect++;
-        CHECK_REALLOCATE(detections, dvoDetection, detectionsArrayLength, Ndetect, 1000);
+      if (det->meas.detID > *pMaxDetID) {
+	*pMaxDetID = det->meas.detID;
       }
 
-      dvo_catalog_free (&catalog);
+      Ndetect++;
+      CHECK_REALLOCATE(detections, dvoDetection, detectionsArrayLength, Ndetect, 1000);
+    }
+
+    dvo_catalog_free (&catalog);
   }
   size_t NInvalidDetID = 0;
   if (Ndetect) {
-      dvoDetection *sorted;
-      ALLOCATE(sorted, dvoDetection, *pMaxDetID + 1);
-
-      memset(sorted, 0, sizeof(dvoDetection) * *pMaxDetID);
-      off_t i;
-      for (i = 0; i < Ndetect; i++) {
-
-          if (detections[i].meas.detID < 0 || detections[i].meas.detID > (*pMaxDetID + 1))
-              NInvalidDetID++;
-          else
-              sorted[detections[i].meas.detID] = detections[i];
-      }
-      *results = sorted;
+    dvoDetection *sorted;
+    ALLOCATE(sorted, dvoDetection, *pMaxDetID + 1);
+
+    memset(sorted, 0, sizeof(dvoDetection) * *pMaxDetID);
+    off_t i;
+    for (i = 0; i < Ndetect; i++) {
+
+      // if (detections[i].meas.detID < 0 || detections[i].meas.detID > (*pMaxDetID + 1))
+
+      if (detections[i].meas.detID > (*pMaxDetID + 1))
+	NInvalidDetID++;
+      else
+	sorted[detections[i].meas.detID] = detections[i];
+    }
+    *results = sorted;
   } else {
-      *results = NULL;
+    *results = NULL;
   }
 
Index: trunk/Ohana/src/libdvo/src/dvosorts.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvosorts.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/dvosorts.c	(revision 39457)
@@ -76,4 +76,5 @@
 /* sort a coordinate pair (X,Y) and the associated index (S) */
 void sort_coords_indexonly (double *X, double *Y, off_t *S, off_t N) {
+  OHANA_UNUSED_PARAM(Y);
   
 # define SWAPFUNC(A,B){ off_t itmp; \
Index: trunk/Ohana/src/libdvo/src/match_image.c
===================================================================
--- trunk/Ohana/src/libdvo/src/match_image.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/match_image.c	(revision 39457)
@@ -1,5 +1,5 @@
 # include "dvo.h"
 
-off_t match_image (Image *image, off_t Nimage, unsigned int T, short int S) {
+off_t match_image (Image *image, off_t Nimage, e_time T, short int S) {
 
   off_t N, Nlo, Nhi, N1, N2;
@@ -37,5 +37,5 @@
 }
 
-off_t match_image_subset (Image *image, off_t *subset, off_t Nsubset, unsigned int T, short int S) {
+off_t match_image_subset (Image *image, off_t *subset, off_t Nsubset, e_time T, short int S) {
 
   off_t N, Nlo, Nhi, N1, N2;
Index: trunk/Ohana/src/libdvo/src/mosaic_astrom.c
===================================================================
--- trunk/Ohana/src/libdvo/src/mosaic_astrom.c	(revision 39404)
+++ trunk/Ohana/src/libdvo/src/mosaic_astrom.c	(revision 39457)
@@ -64,4 +64,8 @@
     images[i].coords.mosaic = &images[j].coords;
   }
+
+  free (DISentry);
+  free (DIStzero);
+
   return (TRUE);
 }
