Index: trunk/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/avextract.c	(revision 7917)
+++ trunk/Ohana/src/opihi/dvo/avextract.c	(revision 8427)
@@ -54,19 +54,16 @@
   if ((vec = SelectVector (argv[1], ANYVECTOR, TRUE)) == NULL) goto escape;
 
+  // XXX need to add interrupt test to this loop
   for (i = 0; i < skylist[0].Nregions; i++) {
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[i];
-    switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+    catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
+
+    // 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);
     }
-    catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
-    if (!load_catalog (&catalog, FALSE)) {
-      unlock_catalog (&catalog);
-      continue;
-    }
-    unlock_catalog (&catalog);
+    dvo_catalog_unlock (&catalog);
 
     for (j = 0; j < catalog.Naverage; j++) {
@@ -76,10 +73,5 @@
       CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 2000);
     }
-    if (catalog.average != NULL) free (catalog.average);
-    if (catalog.secfilt != NULL) free (catalog.secfilt);
-    if (catalog.measure != NULL) free (catalog.measure);
-    catalog.average = (Average *) NULL; 
-    catalog.secfilt = (SecFilt *) NULL;
-    catalog.measure = (Measure *) NULL;
+    dvo_catalog_free (&catalog);
   }
   vec[0].Nelements = N;
@@ -95,7 +87,5 @@
 escape:
   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
-  if (catalog.average != NULL) free (catalog.average);
-  if (catalog.secfilt != NULL) free (catalog.secfilt);
-  if (catalog.measure != NULL) free (catalog.measure);
+  dvo_catalog_free (&catalog);
   if (RegionName != NULL) free (RegionName);
   if (RegionList != NULL) free (RegionList);
