Index: /trunk/Ohana/src/opihi/cmd.astro/csystem.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/csystem.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/cmd.astro/csystem.c	(revision 8427)
@@ -5,5 +5,5 @@
   /* USAGE: csystem [C/G/E/H] [C/G/E/H] [epoch] */
   int i;
-  double Xin, Yin, X, Y, Xo, xo, phi, T;
+  double X, Y, Xo, xo, phi, T;
   double sin_x, sin_y, cos_x, cos_y;
   float *x, *y;
Index: /trunk/Ohana/src/opihi/cmd.astro/drizzle.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/drizzle.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/cmd.astro/drizzle.c	(revision 8427)
@@ -293,5 +293,5 @@
   YY = (SYy*Sx2 - SYx*Sxy) / (Sx2*Sy2 - Sxy*Sxy);
   YO = Y/N - YX*x/N - YY*y/N;
-
+  return (TRUE);
 }
 
Index: /trunk/Ohana/src/opihi/cmd.data/queuedrop.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/queuedrop.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/cmd.data/queuedrop.c	(revision 8427)
@@ -5,5 +5,4 @@
   int N;
   char *Key;
-  char *var;
   char *line;
   char *Value;
@@ -19,5 +18,5 @@
   }
 
-  if ((argc != 2) || (Key == -1)) {
+  if ((argc != 2) || (Key == NULL)) {
     gprint (GP_ERR, "USAGE: queuedrop (queue) [-key N value]\n");
     return (FALSE);
Index: /trunk/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/avextract.c	(revision 8426)
+++ /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);
Index: /trunk/Ohana/src/opihi/dvo/calextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/calextract.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/calextract.c	(revision 8427)
@@ -62,16 +62,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[Nr];
-    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);
 
     /* extract values, assign to vectors */
@@ -115,10 +111,5 @@
       }
     }
-    if (catalog.average != (Average *) NULL) free (catalog.average);
-    if (catalog.measure != (Measure *) NULL) free (catalog.measure);
-    if (catalog.secfilt != (SecFilt *) NULL) free (catalog.secfilt);
-    catalog.average = (Average *) NULL; 
-    catalog.secfilt = (SecFilt *) NULL;
-    catalog.measure = (Measure *) NULL;
+    dvo_catalog_free (&catalog);
   }
 
@@ -134,5 +125,4 @@
 
 escape:
-  
   if (RegionName != NULL) free (RegionName);
   if (RegionList != NULL) free (RegionList);
Index: /trunk/Ohana/src/opihi/dvo/calmextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/calmextract.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/calmextract.c	(revision 8427)
@@ -75,16 +75,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[Nr];
-    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);
 
     /* extract values, assign to vectors */
@@ -141,10 +137,5 @@
       if (M1 != NULL) free (M1);
     }
-    if (catalog.average != (Average *) NULL) free (catalog.average);
-    if (catalog.measure != (Measure *) NULL) free (catalog.measure);
-    if (catalog.secfilt != (SecFilt *) NULL) free (catalog.secfilt);
-    catalog.average = (Average *) NULL; 
-    catalog.secfilt = (SecFilt *) NULL;
-    catalog.measure = (Measure *) NULL;
+    dvo_catalog_free (&catalog);
   }
 
@@ -161,5 +152,4 @@
 
 escape:
-  
   FreeImageSelection ();
   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
Index: /trunk/Ohana/src/opihi/dvo/catalog.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/catalog.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/catalog.c	(revision 8427)
@@ -316,16 +316,12 @@
       /* lock, load, unlock catalog */
       catalog.filename = filename;
-      switch (lock_catalog (&catalog, LCK_SOFT)) {
-      case 2:
-	unlock_catalog (&catalog);
-      case 0:
-	continue;
-      }
       catalog.catflags = LOAD_AVES;
-      if (!load_catalog (&catalog, TRUE)) {
-	unlock_catalog (&catalog);
-	continue;
-      }
-      unlock_catalog (&catalog);
+
+      // 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);
     }
     
Index: /trunk/Ohana/src/opihi/dvo/ccd.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/ccd.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/ccd.c	(revision 8427)
@@ -59,16 +59,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[k];
-    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);
 
     /* get correct mags, convert to X,Y */
@@ -109,10 +105,5 @@
       if (M2 != NULL) free (M2);
     }
-    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);
   }
   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
@@ -126,7 +117,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);
Index: /trunk/Ohana/src/opihi/dvo/cmatch.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/cmatch.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/cmatch.c	(revision 8427)
@@ -29,16 +29,12 @@
   /* load data from the photometry database file */
   catalog1.filename = filename;
-  switch (lock_catalog (&catalog1, LCK_SOFT)) {
-  case 2:
-    unlock_catalog (&catalog1);
-  case 0:
-    return (FALSE);
+  catalog1.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
+
+  // an error exit status here is a significant error
+  if (!dvo_catalog_open (&catalog1, NULL, FALSE, "r")) {
+      fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog1.filename);
+      exit (2);
   }
-  catalog1.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
-  if (!load_catalog (&catalog1, TRUE)) {
-    unlock_catalog (&catalog1);
-    return (FALSE);
-  }
-  unlock_catalog (&catalog1);
+  dvo_catalog_unlock (&catalog1);
   gprint (GP_ERR, "read %d stars from phot catalog file %s\n", catalog1.Naverage, filename);
 
@@ -78,5 +74,5 @@
   compare (&catalog1, &catalog2, rvec, dvec, mvec, drvec, ddvec, dmvec, radius);
 
-  free (catalog1.average);
+  dvo_catalog_free (&catalog1);
   free (catalog2.average);
 
Index: /trunk/Ohana/src/opihi/dvo/cmd.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/cmd.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/cmd.c	(revision 8427)
@@ -57,16 +57,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[j];
-    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);
     
     /* get correct mags, convert to X,Y */
@@ -107,10 +103,5 @@
       if (M3 != NULL) free (M3);
     }
-    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);
   }
   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
@@ -124,7 +115,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);
Index: /trunk/Ohana/src/opihi/dvo/ddmags.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/ddmags.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/ddmags.c	(revision 8427)
@@ -60,16 +60,13 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[k];
-    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, TRUE)) {
-      unlock_catalog (&catalog);
-      continue;
-    }
-    unlock_catalog (&catalog);
+    dvo_catalog_unlock (&catalog);
+
     // gprint (GP_ERR, "seaching %s with %d stars\n", catalog.filename, catalog.Naverage);
     // ListPhotSelections ();
@@ -113,11 +110,5 @@
     }
     // gprint (GP_ERR, "selected %d stars\n", Npts);
-
-    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);
   }
   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
@@ -130,7 +121,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);
Index: /trunk/Ohana/src/opihi/dvo/dmagaves.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/dmagaves.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/dmagaves.c	(revision 8427)
@@ -51,16 +51,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[j];
-    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);
 
     /* get correct mags, convert to X,Y */
@@ -89,10 +85,5 @@
       if (M1 != NULL) free (M1);
     }
-    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);
   }
   SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
@@ -106,7 +97,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);
Index: /trunk/Ohana/src/opihi/dvo/dmagmeas.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/dmagmeas.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/dmagmeas.c	(revision 8427)
@@ -59,16 +59,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[j];
-    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);
 
     /* get correct mags, convert to X,Y */
@@ -109,10 +105,5 @@
       if (M3 != NULL) free (M3);
     }
-    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);
   }
   FreeImageSelection ();
@@ -128,7 +119,5 @@
   FreeImageSelection ();
   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);
Index: /trunk/Ohana/src/opihi/dvo/dmags.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/dmags.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/dmags.c	(revision 8427)
@@ -58,16 +58,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[j];
-    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);
 
     /* get correct mags, convert to X,Y */
@@ -108,10 +104,5 @@
       if (M3 != NULL) free (M3);
     }
-    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);
   }
 
@@ -131,7 +122,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);
Index: /trunk/Ohana/src/opihi/dvo/dmt.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/dmt.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/dmt.c	(revision 8427)
@@ -70,16 +70,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[k];
-    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, TRUE)) {
-      unlock_catalog (&catalog);
-      continue;
-    }
-    unlock_catalog (&catalog);
+    dvo_catalog_unlock (&catalog);
 
     for (i = 0; i < catalog.Naverage; i++) {
@@ -114,4 +110,5 @@
       }
     }
+    dvo_catalog_free (&catalog);
   }
   Yvec.Nelements = Xvec.Nelements = N;
Index: /trunk/Ohana/src/opihi/dvo/fitcolors.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 8427)
@@ -2,5 +2,4 @@
 # define NMIN_PTS 100
 
-static void init_catalog (Catalog *catalog);
 static void free_catalog (Catalog *catalog, int Ncatalog);
 
@@ -19,5 +18,5 @@
   char name[64], filename[64], plotname[64], label[64];
   double *M1, *M2;
-  float *out, *colorFit, *deltaFit, color, dColor, C0, C1;
+  float *out, *colorFit, *deltaFit, dColor, C0, C1;
   float minDelta, maxDelta, minColor, maxColor;
   int fd, Npx, Npy, NPX, NPY, Nplot, PLOT;
@@ -168,18 +167,12 @@
     /* lock, load, unlock catalog */
     catalog[k].filename = skylist[0].filename[k];
-    switch (lock_catalog (&catalog[k], LCK_SOFT)) {
-      case 2:
-	unlock_catalog (&catalog[k]);
-      case 0:
-	catalog[k].Naverage = 0;
-	continue;
+    catalog[k].catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
+
+    // an error exit status here is a significant error
+    if (!dvo_catalog_open (&catalog[k], NULL, FALSE, "r")) {
+      fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog[k].filename);
+      exit (2);
     }
-    catalog[k].catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
-    if (!load_catalog (&catalog[k], TRUE)) {
-      catalog[k].Naverage = 0;
-      unlock_catalog (&catalog[k]);
-      continue;
-    }
-    unlock_catalog (&catalog[k]);
+    dvo_catalog_unlock (&catalog[k]);
     // XXX make a subset catalog consisting of only Average and Measure values which meet
     // the selection criteria
@@ -400,17 +393,6 @@
   if (catalog == NULL) return;
   for (i = 0; i < Ncatalog; i++) {
-    if (catalog[i].average != NULL) free (catalog[i].average);
-    if (catalog[i].secfilt != NULL) free (catalog[i].secfilt);
-    if (catalog[i].measure != NULL) free (catalog[i].measure);
+    dvo_catalog_free (&catalog[i]);
   }
   free (catalog);
 }
-
-static void init_catalog (Catalog *catalog) {
-  catalog[0].average = NULL; 
-  catalog[0].secfilt = NULL;
-  catalog[0].measure = NULL;
-  catalog[0].Naverage = 0; 
-  catalog[0].Nsecfilt = 0;
-  catalog[0].Nmeasure = 0;
-}
Index: /trunk/Ohana/src/opihi/dvo/fitsed.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/fitsed.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/fitsed.c	(revision 8427)
@@ -24,13 +24,11 @@
   
   int *hashcode;
-  int i, j, k, m, N, done, Nfit, NP1, NP2, NP, Np, Npts, NPTS;
-  int N1, N2, i1, i2, mode[4];
+  int i, j, k, m, N, done, Nfit;
   int Nsec, status;
   void *oldsignal;
   char *RegionName, *RegionList;
-  char name[64], filename[64], plotname[64], label[64];
-  char line[1024], key[20];
+  char name[64], line[1024], key[20];
   float *fitmags, *fiterrs, *wavecode, *vegaToAB;
-  float minWave, maxWave, color;
+  float color;
   double X, Y;
   int fd, PLOT;
@@ -184,17 +182,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[k];
-    switch (lock_catalog (&catalog, LCK_SOFT)) {
-      case 2:
-	unlock_catalog (&catalog);
-      case 0:
-	catalog.Naverage = 0;
-	continue;
-    }
     catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
-    if (!load_catalog (&catalog, TRUE)) {
-      catalog.Naverage = 0;
-      unlock_catalog (&catalog);
-      continue;
-    }
+
+    // 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);
 
     // perform the fit to all sources
@@ -258,5 +251,4 @@
       // create the vectors for the example plots
       if (PLOT) {
-	double tmp;
 	// find plot range
 	SetLimitsRaw (NULL, SEDtable[minFit.row][0].mags, Nfilter, &graphdata);
@@ -326,13 +318,11 @@
 	  if (!strcasecmp (key, "ESCAPE")) {
 	    KiiCursorOff (fd);
-	    unlock_catalog (&catalog);
 	    goto escape;
 	  }
 	}
       }
-
       // we now have the min chisq row. use this to supply the other filter values....
     }
-    unlock_catalog (&catalog);
+    dvo_catalog_free (&catalog);
   }
   gprint (GP_ERR, "fitted %d stars\n", Nfit);
@@ -366,8 +356,4 @@
 finish:
   if (skylist != NULL) 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);
-
   if (RegionName != NULL) free (RegionName);
   if (RegionList != NULL) free (RegionList);
Index: /trunk/Ohana/src/opihi/dvo/gstar.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/gstar.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/gstar.c	(revision 8427)
@@ -72,16 +72,12 @@
   /* lock, load, unlock catalog */
   catalog.filename = skylist[0].filename[0];
-  switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      return (FALSE);
-  }
   catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
-  if (!load_catalog (&catalog, TRUE)) {
-    unlock_catalog (&catalog);
-    return (FALSE);
-  }
-  unlock_catalog (&catalog);
+
+  // 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);
 
   Nstars = catalog.Naverage;
@@ -209,7 +205,5 @@
   free (DEC);
   free (N1);
-  if (catalog.average != 0) free (catalog.average);
-  if (catalog.measure != 0) free (catalog.measure);
-  if (catalog.secfilt != 0) free (catalog.secfilt);
+  dvo_catalog_free (&catalog);
 
   freePhotcodeSequence ();
Index: /trunk/Ohana/src/opihi/dvo/imdata.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/imdata.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/imdata.c	(revision 8427)
@@ -121,16 +121,12 @@
     /* get file name and open */
     catalog.filename = skylist[0].filename[j];
-    switch (lock_catalog (&catalog, LCK_SOFT)) {
-      case 2:
-	unlock_catalog (&catalog);
-      case 0:
-	continue;
-    }
-    catalog.catflags = LOAD_AVES;
-    if (!load_catalog (&catalog, TRUE)) {
-      unlock_catalog (&catalog);
-      continue;
-    }
-    unlock_catalog (&catalog);
+    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);
+    }
+    dvo_catalog_unlock (&catalog);
 
     /* assign vector values */
@@ -203,10 +199,5 @@
 	break;
     }
-    if (catalog.average != 0) {
-      free (catalog.average);
-    }
-    if (catalog.measure != 0) {
-      free (catalog.measure);
-    }
+    dvo_catalog_free (&catalog);
   }
   
Index: /trunk/Ohana/src/opihi/dvo/lcurve.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/lcurve.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/lcurve.c	(revision 8427)
@@ -82,16 +82,12 @@
   /* set filename, read in header */
   catalog.filename = skylist[0].filename[0];
-  switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      return (FALSE);
+  catalog.catflags = LOAD_AVES | LOAD_MEAS;
+
+  // 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;
-  if (!load_catalog (&catalog, TRUE)) {
-    unlock_catalog (&catalog);
-    return (FALSE);
-  }
-  unlock_catalog (&catalog);
+  dvo_catalog_unlock (&catalog);
 
   Nstars = catalog.Naverage;
@@ -195,7 +191,6 @@
 
   if (ErrorBars) free (dYvec.elements);
-  if (catalog.average != 0) free (catalog.average);
-  if (catalog.measure != 0) free (catalog.measure);
- 
+  dvo_catalog_free (&catalog);
+
   SkyListFree (skylist, FALSE);
   return (TRUE);
Index: /trunk/Ohana/src/opihi/dvo/lightcurve.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/lightcurve.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/lightcurve.c	(revision 8427)
@@ -58,16 +58,12 @@
   /* set filename, read in header */
   catalog.filename = skylist[0].filename[0];
-  switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      return (FALSE);
+  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, TRUE)) {
-    unlock_catalog (&catalog);
-    return (FALSE);
-  }
-  unlock_catalog (&catalog);
+  dvo_catalog_unlock (&catalog);
 
   Nstars = catalog.Naverage;
@@ -143,8 +139,5 @@
   free (DEC);
   free (N1);
-  if (catalog.average != 0) free (catalog.average);
-  if (catalog.measure != 0) free (catalog.measure);
-  if (catalog.secfilt != 0) free (catalog.secfilt);
- 
+  dvo_catalog_free (&catalog);
   SkyListFree (skylist, FALSE);
   return (TRUE);
Index: /trunk/Ohana/src/opihi/dvo/mextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/mextract.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/mextract.c	(revision 8427)
@@ -14,11 +14,10 @@
 
   /* defaults */
-  catalog.average = (Average *) NULL; 
-  catalog.secfilt = (SecFilt *) NULL;
-  catalog.measure = (Measure *) NULL;
+  skylist = NULL;
   RegionName = NULL;
   RegionList = NULL;
   code = NULL;
   mode = MAG_REL;
+  dvo_catalog_init (&catalog, TRUE);
 
   /* load photcode information */
@@ -57,16 +56,12 @@
   for (i = 0; i < skylist[0].Nregions; i++) {
     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++) {
@@ -81,10 +76,5 @@
       if (M1 != NULL) free (M1);
     }
-    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;
@@ -105,7 +95,5 @@
   FreeImageSelection ();
   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);
Index: /trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/photometry.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/photometry.c	(revision 8427)
@@ -324,8 +324,14 @@
   char PhotCodeFile[256];
 
-  if (VarConfig ("ZERO_PT", "%lf", &ZERO_POINT) == (char *) NULL) return (FALSE);
+  if (VarConfig ("ZERO_PT", "%lf", &ZERO_POINT) == (char *) NULL) {
+      gprint (GP_ERR, "ZERO_PT undefined in config\n");
+      return (FALSE);
+  }
   SetZeroPoint (ZERO_POINT);
 
-  if (VarConfig ("PHOTCODE_FILE", "%s", PhotCodeFile) == (char *) NULL) return (FALSE);
+  if (VarConfig ("PHOTCODE_FILE", "%s", PhotCodeFile) == (char *) NULL) {
+      gprint (GP_ERR, "PHOTCODE_FILE undefined in config\n");
+      return (FALSE);
+  }
   if (!LoadPhotcodes (PhotCodeFile)) {
     gprint (GP_ERR, "error loading photcodes\n");
@@ -354,4 +360,5 @@
   gprint (GP_ERR, "NcodeSelect: %d, %d - %d\n",     NcodeSelect, NcodeSign, NcodeValue);
   gprint (GP_ERR, "FWHMSelect: %d, %d %f %f\n",     FWHMSelect, FWHMsign, FWHMvalue, FWHMfrac);
+  return (TRUE);
 }
 
Index: /trunk/Ohana/src/opihi/dvo/pmeasure.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 8427)
@@ -81,16 +81,12 @@
     /* lock, load, unlock catalog */
     catalog.filename = skylist[0].filename[j];
-    switch (lock_catalog (&catalog, LCK_SOFT)) {
-      case 2:
-	unlock_catalog (&catalog);
-      case 0:
-	continue;
+    catalog.catflags = LOAD_AVES | LOAD_MEAS;
+
+    // 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;
-    if (!load_catalog (&catalog, TRUE)) {
-      unlock_catalog (&catalog);
-      continue;
-    }
-    unlock_catalog (&catalog);
+    dvo_catalog_unlock (&catalog);
 
     /* data has been loaded, get ready to plot it */
@@ -138,6 +134,5 @@
     free (Zvec.elements);
 
-    if (catalog.average != 0) free (catalog.average);
-    if (catalog.measure != 0) free (catalog.measure);
+    dvo_catalog_free (&catalog);
   }
   return (TRUE);
Index: /trunk/Ohana/src/opihi/dvo/subpix.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/subpix.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/dvo/subpix.c	(revision 8427)
@@ -42,16 +42,12 @@
   /* lock, load, unlock catalog */
   catalog.filename = skylist[0].filename[0];
-  switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      return (FALSE);
+  catalog.catflags = LOAD_AVES | LOAD_MEAS;
+
+  // 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;
-  if (!load_catalog (&catalog, TRUE)) {
-    unlock_catalog (&catalog);
-    return (FALSE);
-  }
-  unlock_catalog (&catalog);
+  dvo_catalog_unlock (&catalog);
 
   /* quick search of star list for Ra, Dec */
@@ -88,6 +84,5 @@
     free (entry);
     free (index);
-    if (catalog.average != 0) free (catalog.average);
-    if (catalog.measure != 0) free (catalog.measure);
+    dvo_catalog_free (&catalog);
     SkyListFree (skylist, FALSE);
     return (TRUE);
@@ -152,6 +147,5 @@
   }
 
-  if (catalog.average != 0) free (catalog.average);
-  if (catalog.measure != 0) free (catalog.measure);
+  dvo_catalog_free (&catalog);
   free (image);
   free (index);
Index: /trunk/Ohana/src/opihi/include/external.h
===================================================================
--- /trunk/Ohana/src/opihi/include/external.h	(revision 8426)
+++ /trunk/Ohana/src/opihi/include/external.h	(revision 8427)
@@ -11,4 +11,8 @@
 # include <errno.h>
 # include <pthread.h>
+
+# include <netinet/ip.h>
+# include <netdb.h>
+# include <arpa/inet.h>
 
 # include <ohana.h>
Index: /trunk/Ohana/src/opihi/include/pantasks.h
===================================================================
--- /trunk/Ohana/src/opihi/include/pantasks.h	(revision 8426)
+++ /trunk/Ohana/src/opihi/include/pantasks.h	(revision 8427)
@@ -5,9 +5,4 @@
 # include <time.h>
 # include <zlib.h>
-# include <netinet/ip.h>
-# include <netdb.h>
-# include <arpa/inet.h>
-
-typedef struct sockaddr_in SockAddress;
 
 typedef enum {
@@ -210,9 +205,4 @@
 void *ListenClients (void *data);
 
-int InitServerSocket (SockAddress *Address);
-int WaitServerSocket (int InitSocket, SockAddress *Address);
-int GetClientSocket (char *hostname);
-int InitServerSocket_Named (char *hostname, SockAddress *Address);
-
 /*
 void InitPrint ();
Index: /trunk/Ohana/src/opihi/include/shell.h
===================================================================
--- /trunk/Ohana/src/opihi/include/shell.h	(revision 8426)
+++ /trunk/Ohana/src/opihi/include/shell.h	(revision 8427)
@@ -17,4 +17,6 @@
 
 typedef int CommandF ();
+
+typedef struct sockaddr_in SockAddress;
 
 /*** typedef structs used by shell functions ***/
@@ -149,3 +151,10 @@
 int           gwrite          		PROTO((char *buffer, int size, int N, gpDest dest));
 
+/* socket functions */
+int InitServerSocket (SockAddress *Address);
+int WaitServerSocket (int InitSocket, SockAddress *Address);
+int GetClientSocket (char *hostname);
+int InitServerSocket_Named (char *hostname, SockAddress *Address);
+
 # endif
+
Index: /trunk/Ohana/src/opihi/lib.data/queues.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/queues.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/lib.data/queues.c	(revision 8427)
@@ -232,13 +232,9 @@
       key2 = ChooseKey (queue[0].lines[j], Key);
       if (key2 == NULL) continue;
-      if (strcmp (key1, key2)) {
-	if (Key != -1) free (key2);
-	continue;
-      }
-      found = TRUE;
-      if (Key != -1) free (key2);
+      found = !strcmp (key1, key2);
+      free (key2);
     }      
     if (!found) PushQueue (queue, tmp.lines[i]);
-    if (Key != -1) free (key1);
+    free (key1);
   }
   for (i = 0; i < tmp.Nlines; i++) {
@@ -287,14 +283,13 @@
       key2 = ChooseKey (queue[0].lines[j], Key);
       if (key2 == NULL) continue;
-      if (strcmp (key1, key2)) {
-	if (Key != -1) free (key2);
-	continue;
+      found = !strcmp (key1, key2);
+      if (found) {
+	// XXX do I need to free queue[0].lines[j]??
+	queue[0].lines[j] = strcreate (tmp.lines[i]);
       }
-      queue[0].lines[j] = strcreate (tmp.lines[i]);
-      found = TRUE;
-      if (Key != -1) free (key2);
+      free (key2);
     }      
     if (!found) PushQueue (queue, tmp.lines[i]);
-    if (Key != -1) free (key1);
+    free (key1);
   }
   for (i = 0; i < tmp.Nlines; i++) {
Index: /trunk/Ohana/src/opihi/lib.shell/SocketOps.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/SocketOps.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/lib.shell/SocketOps.c	(revision 8427)
@@ -1,3 +1,3 @@
-# include "pantasks.h"
+# include "shell.h"
 
 # define MY_PORT 2000
@@ -273,3 +273,4 @@
     VALID = NULL;
   }
-}
+  return (TRUE);
+}
Index: /trunk/Ohana/src/opihi/lib.shell/version.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/version.c	(revision 8426)
+++ /trunk/Ohana/src/opihi/lib.shell/version.c	(revision 8427)
@@ -13,5 +13,5 @@
   char *p, *q;
 
-  p = strcasestr (input, "$NAME:");
+  p = strstr (input, "$NAME:");
   if (p == NULL) return (unknown);
 
