Index: /trunk/Ohana/src/opihi/dvo/detrend.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/detrend.c	(revision 2797)
+++ /trunk/Ohana/src/opihi/dvo/detrend.c	(revision 2798)
@@ -12,6 +12,6 @@
   double trange;
   int TypeSelect, CCDSelect, FilterSelect;
-  char *Filter, *Type;
-  int type, mode, CCD;
+  char *Filter;
+  int Type, mode, CCD;
   int NVALUE;
   float *value;
@@ -66,26 +66,11 @@
   if (N = get_argument (argc, argv, "-type")) {
     remove_argument (N, &argc, argv);
-    Type = strcreate (argv[N]);
+    Type = get_image_type (argv[N]);
+    if (Type == T_UNDEF) {
+      fprintf (stderr, "ERROR: invalid image type %s\n", argv[N]);
+      return (FALSE);
+    }
     remove_argument (N, &argc, argv);
     TypeSelect = TRUE;
-  }
-  type = TYPE_NONE;
-  if (TypeSelect) {
-    if (!strncasecmp (Type, "obj", 3)) {
-      type = TYPE_OBJECT;
-    }
-    if (!strncasecmp (Type, "bias", 4)) {
-      type = TYPE_BIAS;
-    }
-    if (!strncasecmp (Type, "dark", 4)) {
-      type = TYPE_DARK;
-    }
-    if (!strncasecmp (Type, "flat", 4)) {
-      type = TYPE_FLAT;
-    }
-    if (type == TYPE_NONE) {
-      fprintf (stderr, "invalid image type %s\n", Type);
-      return (FALSE);
-    }
   }
 
@@ -173,5 +158,5 @@
     if (FilterSelect && (strcasecmp (pimage[i].filter, Filter))) continue;
     if (CCDSelect && (pimage[i].ccd != CCD)) continue;
-    if (TypeSelect && (pimage[i].type != type)) continue;
+    if (TypeSelect && (pimage[i].type != Type)) continue;
 
     /* assign correct value */
Index: /trunk/Ohana/src/opihi/dvo/imsearch.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/imsearch.c	(revision 2797)
+++ /trunk/Ohana/src/opihi/dvo/imsearch.c	(revision 2798)
@@ -1,6 +1,3 @@
 # include "dvo.h"
-
-static char typename[5][32] = {"none", "object", "dark", "bias", "flat"};
-static char modename[3][32] = {"none", "mef", "single"};
 
 imsearch (int argc, char **argv) {
@@ -12,6 +9,6 @@
   int i, Nimage, status, N, TimeSelect, SaveNames;
   int ModeSelect, TypeSelect, CCDSelect, FilterSelect;
-  char *Filter, *Type, *Mode, *pmode, *ptype, *obstime;
-  int type, mode, CCD;
+  char *Filter, *obstime;
+  int Type, Mode, CCD;
   unsigned long int tzero;
   double trange;
@@ -44,5 +41,9 @@
   if (N = get_argument (argc, argv, "-type")) {
     remove_argument (N, &argc, argv);
-    Type = strcreate (argv[N]);
+    Type = get_image_type (argv[N]);
+    if (Type == T_UNDEF) {
+      fprintf (stderr, "ERROR: invalid image type %s\n", argv[N]);
+      return (FALSE);
+    }
     remove_argument (N, &argc, argv);
     TypeSelect = TRUE;
@@ -52,5 +53,9 @@
   if (N = get_argument (argc, argv, "-mode")) {
     remove_argument (N, &argc, argv);
-    Mode = strcreate (argv[N]);
+    Mode = get_image_mode (argv[N]);
+    if (Mode == M_UNDEF) {
+      fprintf (stderr, "ERROR: invalid image mode %s\n", argv[N]);
+      exit (1);
+    }
     remove_argument (N, &argc, argv);
     ModeSelect = TRUE;
@@ -79,38 +84,4 @@
     fprintf (stderr, "USAGE: imsearch [-time start range] [-type type] [-mode mode] [-ccd N] [-filter name]\n");
     exit (1);
-  }
-
-  type = TYPE_NONE;
-  if (TypeSelect) {
-    if (!strncasecmp (Type, "obj", 3)) {
-      type = TYPE_OBJECT;
-    }
-    if (!strncasecmp (Type, "bias", 4)) {
-      type = TYPE_BIAS;
-    }
-    if (!strncasecmp (Type, "dark", 4)) {
-      type = TYPE_DARK;
-    }
-    if (!strncasecmp (Type, "flat", 4)) {
-      type = TYPE_FLAT;
-    }
-    if (type == TYPE_NONE) {
-      fprintf (stderr, "invalid image type %s\n", Type);
-      return (FALSE);
-    }
-  }
-
-  mode = MODE_NONE;
-  if (ModeSelect) {
-    if (!strncasecmp (Mode, "mef", 3)) {
-      mode = MODE_MEF;
-    }
-    if (!strncasecmp (Mode, "single", 4) || !strncasecmp (Mode, "split", 4)) {
-      mode = MODE_SINGLE;
-    }
-    if (mode == MODE_NONE) {
-      fprintf (stderr, "invalid image mode %s\n", Mode);
-      return (FALSE);
-    }
   }
 
@@ -149,19 +120,10 @@
     if (ModeSelect && (pimage[i].mode != mode)) continue;
     if (CCDSelect && (pimage[i].ccd != CCD)) continue;
-    if (TypeSelect && (pimage[i].type != type)) continue;
-
-    if ((pimage[i].mode < 0) || (pimage[i].mode > 2)) 
-      pmode = modename[0];
-    else
-      pmode = modename[(int)pimage[i].mode];
-
-    if ((pimage[i].type < 0) || (pimage[i].type > 4)) 
-      ptype = typename[0];
-    else
-      ptype = typename[(int)pimage[i].type];
+    if (TypeSelect && (pimage[i].type != Type)) continue;
 
     obstime = ctime (&pimage[i].obstime);
     obstime[strlen(obstime)-1] = 0;
-    fprintf (stdout, "%5d %6s %6s %2d %2d   ", i, ptype, pmode, pimage[i].ccd, pimage[i].type);
+
+    fprintf (stdout, "%5d %6s %6s %2d %2d   ", i, get_type_name(pimage[i].type), get_mode_name(pimage[i].mode), pimage[i].ccd, pimage[i].type);
     fprintf (stdout, "%s %s  ", pimage[i].pathname, pimage[i].filename);
     fprintf (stdout, "%s %s %f %s\n", pimage[i].filter, pimage[i].instrument, pimage[i].exptime, obstime);
