Index: /trunk/Ohana/src/imregister/Makefile
===================================================================
--- /trunk/Ohana/src/imregister/Makefile	(revision 2802)
+++ /trunk/Ohana/src/imregister/Makefile	(revision 2803)
@@ -21,5 +21,5 @@
 INCS	= 	-I$(INC) -I$(LINC) -I$(XINC)
 LIBS	= 	-L$(LLIB) -lFITS -lohana -lm 
-# CFLAGS	=	$(INCS) -Wall -Wunused
+# CFLAGS	=	$(INCS) -Wall -Werror
 CFLAGS	=	$(INCS)
 LFLAGS	=	$(LIBS)
Index: /trunk/Ohana/src/imregister/base/ConfigFilter.c
===================================================================
--- /trunk/Ohana/src/imregister/base/ConfigFilter.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/base/ConfigFilter.c	(revision 2803)
@@ -64,5 +64,5 @@
 int MatchFilterList (char *line) {
 
-  char *p, tmp[31];
+  char *p;
   int i, blank;
 
Index: /trunk/Ohana/src/imregister/base/misc.c
===================================================================
--- /trunk/Ohana/src/imregister/base/misc.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/base/misc.c	(revision 2803)
@@ -105,4 +105,6 @@
   int mode;
 
+  mode = FORMAT_DATE;
+
   p1 = line;
   tmp = strtod (p1, &p2);
@@ -123,6 +125,4 @@
       mode = FORMAT_JD;
     }
-  } else { 
-    mode = FORMAT_DATE;
   }
   return (mode);
@@ -404,5 +404,5 @@
   int status, cmode;
   struct stat filestat;
-  char line [256];
+  char line[256];
 
   status = stat (filename, &filestat);
@@ -419,5 +419,4 @@
   }
 }
-
 
 int get_filter_arguments (int *argc, char **argv, int **Filt, int *Nfilt) {
@@ -459,5 +458,5 @@
   
    
-int get_version (int argc, char **argv, char *version) {
+void get_version (int argc, char **argv, char *version) {
 
   int N;
Index: /trunk/Ohana/src/imregister/base/parse_time.c
===================================================================
--- /trunk/Ohana/src/imregister/base/parse_time.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/base/parse_time.c	(revision 2803)
@@ -75,4 +75,5 @@
   for (c = strchr (line, 0x2d); c != (char *) NULL; c = strchr (line, 0x2d)) { *c = ' '; }
 
+  Nf = 0;
   switch (mode) {
   case 1:
Index: /trunk/Ohana/src/imregister/base/sort.c
===================================================================
--- /trunk/Ohana/src/imregister/base/sort.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/base/sort.c	(revision 2803)
@@ -1,2 +1,3 @@
+# include <string.h>
 
 void sort (float *value, int N) {
Index: /trunk/Ohana/src/imregister/detrend/altpath.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/altpath.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/altpath.c	(revision 2803)
@@ -5,6 +5,6 @@
   
   int i, j, n, found, status;
-  int Nimage, Nlist, Ncurrent, Nadd, Nremove;
-  int *list, *current, *curfound, *add, *remove;
+  int Nimage, Nlist;
+  int *list, *current;
   char *dBPath, infile[256], outfile[256], line[1024];
   DetReg *image;
@@ -106,4 +106,5 @@
 
   fprintf (stderr, "unknown altpath mode: %d\n", output.Altpath);
+  return (TRUE);
 }
 
Index: /trunk/Ohana/src/imregister/detrend/args.detregister.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/args.detregister.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/args.detregister.c	(revision 2803)
@@ -16,5 +16,5 @@
   /* define time range */
   descriptor[0].TimeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-time")) {
+  if ((N = get_argument (argc, argv, "-time"))) {
     remove_argument (N, &argc, argv);
     if (!str_to_time (argv[N], &descriptor[0].tstart)) { 
@@ -33,5 +33,5 @@
   /* set optional label */
   descriptor[0].label = strcreate ("detrend");
-  if (N = get_argument (argc, argv, "-label")) {
+  if ((N = get_argument (argc, argv, "-label"))) {
     remove_argument (N, &argc, argv);
     descriptor[0].label = strcreate (argv[N]);
@@ -41,5 +41,5 @@
   /* set optional label */
   descriptor[0].imageID = strcreate ("test");
-  if (N = get_argument (argc, argv, "-ID")) {
+  if ((N = get_argument (argc, argv, "-ID"))) {
     remove_argument (N, &argc, argv);
     descriptor[0].imageID = strcreate (argv[N]);
@@ -49,5 +49,5 @@
   /* set optional order */
   descriptor[0].order = 0;
-  if (N = get_argument (argc, argv, "-order")) {
+  if ((N = get_argument (argc, argv, "-order"))) {
     remove_argument (N, &argc, argv);
     descriptor[0].order = atoi (argv[N]);
@@ -56,13 +56,9 @@
  
   /* define image type */
-  descriptor[0].type = T_NONE;
-  if (N = get_argument (argc, argv, "-type")) {
+  descriptor[0].type = T_UNDEF;
+  if ((N = get_argument (argc, argv, "-type"))) {
     remove_argument (N, &argc, argv);
-    for (i = 0; i < NTYPE; i++) {
-      if (!strncasecmp (argv[N], typename[i], strlen(typename[i]))) {
-	descriptor[0].type = i;
-      }
-    }
-    if (descriptor[0].type == T_NONE) {
+    descriptor[0].type = get_image_type (argv[N]);
+    if (descriptor[0].type == T_UNDEF) {
       fprintf (stderr, "ERROR: invalid image type %s\n", argv[N]);
       exit (1);
@@ -73,5 +69,5 @@
   /* define ccd number */
   descriptor[0].CCDSelect = FALSE;
-  if (N = get_argument (argc, argv, "-ccd")) {
+  if ((N = get_argument (argc, argv, "-ccd"))) {
     remove_argument (N, &argc, argv);
     descriptor[0].CCD = -1;
@@ -92,5 +88,5 @@
   descriptor[0].Exptime = 0.0;
   descriptor[0].ExptimeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-exptime")) {
+  if ((N = get_argument (argc, argv, "-exptime"))) {
     remove_argument (N, &argc, argv);
     descriptor[0].Exptime = atof (argv[N]);
@@ -101,5 +97,5 @@
   /* define filter */
   descriptor[0].filter = FILTER_NONE;
-  if (N = get_argument (argc, argv, "-filter")) {
+  if ((N = get_argument (argc, argv, "-filter"))) {
     remove_argument (N, &argc, argv);
     for (i = 0; (i < NFILTER) && (descriptor[0].filter == FILTER_NONE); i++) {
@@ -122,4 +118,4 @@
     exit (1);
   }
-  
+  return (TRUE);
 }
Index: /trunk/Ohana/src/imregister/detrend/args.detsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/args.detsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/args.detsearch.c	(revision 2803)
@@ -6,14 +6,12 @@
 
   int i, N;
-  int MosaicSelect, ImageSelect, RangeSelect, bad, Recipe, Ncrit;
+  int MosaicSelect, ImageSelect, bad, Recipe, Ncrit;
   char *ImageFile, *ImageMode, *ImageExtend;
-  Header header;
-  char line[256];
   Criteria base, *crit;
-  int Ntimes, Nfilt, *filt;
+  int *filt;
   unsigned long *tstart, *tstop;
 
-  if (N = get_argument (argc, argv, "-h")) { usage (); }
-  if (N = get_argument (argc, argv, "--help")) { usage (); }
+  if ((N = get_argument (argc, argv, "-h"))) { usage (); }
+  if ((N = get_argument (argc, argv, "--help"))) { usage (); }
   bzero (&base, sizeof (Criteria));
 
@@ -23,7 +21,9 @@
   ConfigFilter ();
 
+  ImageFile = ImageMode = ImageExtend = NULL;
+
   /* mosaic-based selection */
   MosaicSelect = FALSE;
-  if (N = get_argument (argc, argv, "-mosaic")) {
+  if ((N = get_argument (argc, argv, "-mosaic"))) {
     remove_argument (N, &argc, argv);
     ImageFile = strcreate (argv[N]);
@@ -45,5 +45,5 @@
   /* image-based selection */
   ImageSelect = FALSE;
-  if (N = get_argument (argc, argv, "-image")) {
+  if ((N = get_argument (argc, argv, "-image"))) {
     remove_argument (N, &argc, argv);
     ImageFile = strcreate (argv[N]);
@@ -68,13 +68,9 @@
   /* define image type */
   base.TypeSelect = FALSE;
-  base.Type = T_NONE;
-  if (N = get_argument (argc, argv, "-type")) {
-    remove_argument (N, &argc, argv);
-    for (i = 0; (i < NTYPE) && (base.Type == T_NONE); i++) {
-      if (!strncasecmp (argv[N], typename[i], strlen(typename[i]))) {
-	base.Type = i;
-      }
-    }
-    if (base.Type == T_NONE) {
+  base.Type = T_UNDEF;
+  if ((N = get_argument (argc, argv, "-type"))) {
+    remove_argument (N, &argc, argv);
+    base.Type = get_image_type (argv[N]);
+    if (base.Type == T_UNDEF) {
       fprintf (stderr, "ERROR: invalid image type %s\n", argv[N]);
       exit (1);
@@ -87,11 +83,9 @@
   /* image mode (mef, splt, etc) */
   base.ModeSelect = FALSE;
-  base.Mode = M_NONE;
-  if (N = get_argument (argc, argv, "-mode")) {
-    remove_argument (N, &argc, argv);
-    for (i = 0; (i < NMODE) && (base.Mode == M_NONE); i++) {
-      if (!strncasecmp (argv[N], modename[i], strlen(argv[N]))) base.Mode = i;
-    }
-    if (base.Mode == M_NONE) {
+  base.Mode = M_UNDEF;
+  if ((N = get_argument (argc, argv, "-mode"))) {
+    remove_argument (N, &argc, argv);
+    base.Mode = get_image_mode (argv[N]);
+    if (base.Mode == M_UNDEF) {
       fprintf (stderr, "ERROR: invalid image mode %s\n", argv[N]);
       exit (1);
@@ -104,5 +98,5 @@
   tstart = tstop = (unsigned long *) NULL;
   base.TimeSelect = base.tstart = base.tstop = 0;
-  if (N = get_argument (argc, argv, "-time")) {
+  if ((N = get_argument (argc, argv, "-time"))) {
     remove_argument (N, &argc, argv);
     bad  = get_argument (argc, argv, "-trange");
@@ -131,5 +125,5 @@
   /* define ccd number */
   base.CCDSelect = FALSE;
-  if (N = get_argument (argc, argv, "-ccd")) {
+  if ((N = get_argument (argc, argv, "-ccd"))) {
     base.CCD = -1;
     remove_argument (N, &argc, argv);
@@ -149,5 +143,5 @@
   /* define exposure time */
   base.ExptimeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-exptime")) {
+  if ((N = get_argument (argc, argv, "-exptime"))) {
     remove_argument (N, &argc, argv);
     base.Exptime = atof (argv[N]);
@@ -158,5 +152,5 @@
   /* varients on the standard selection */
   base.EntrySelect = FALSE;
-  if (N = get_argument (argc, argv, "-entry")) {
+  if ((N = get_argument (argc, argv, "-entry"))) {
     remove_argument (N, &argc, argv);
     base.Entry = atoi (argv[N]);
@@ -165,5 +159,5 @@
   }
   base.MatchNumber = -1;
-  if (N = get_argument (argc, argv, "-match")) {
+  if ((N = get_argument (argc, argv, "-match"))) {
     remove_argument (N, &argc, argv);
     base.MatchNumber = atoi (argv[N]);
@@ -171,5 +165,5 @@
   }
   base.LabelSelect = FALSE;
-  if (N = get_argument (argc, argv, "-label")) {
+  if ((N = get_argument (argc, argv, "-label"))) {
     remove_argument (N, &argc, argv);
     base.Label = strcreate (argv[N]);
@@ -178,5 +172,5 @@
   }
   base.NameSelect = FALSE;
-  if (N = get_argument (argc, argv, "-name")) {
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     base.Name = strcreate (argv[N]);
@@ -187,5 +181,5 @@
   /* these options affect the output mode */
   output.Close = FALSE;
-  if (N = get_argument (argc, argv, "-close")) {
+  if ((N = get_argument (argc, argv, "-close"))) {
     if (!base.TimeSelect && !ImageSelect && !MosaicSelect) {       
       fprintf (stderr, "ERROR: syntax error in -close requires one of: -time -trange -image -mosaic\n");
@@ -196,24 +190,24 @@
   }
   output.TimeMode = START;
-  if (N = get_argument (argc, argv, "-tstop")) {
+  if ((N = get_argument (argc, argv, "-tstop"))) {
     remove_argument (N, &argc, argv);
     output.TimeMode = STOP;
   }
-  if (N = get_argument (argc, argv, "-treg")) {
+  if ((N = get_argument (argc, argv, "-treg"))) {
     remove_argument (N, &argc, argv);
     output.TimeMode = REG;
   }
   output.ElixirSmart = FALSE;
-  if (N = get_argument (argc, argv, "-ve")) {
+  if ((N = get_argument (argc, argv, "-ve"))) {
     remove_argument (N, &argc, argv);
     output.ElixirSmart = TRUE;
   }
   output.verbose = TRUE;
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     remove_argument (N, &argc, argv);
     output.verbose = FALSE;
   }
   output.table = (char *) NULL;
-  if (N = get_argument (argc, argv, "-fits")) {
+  if ((N = get_argument (argc, argv, "-fits"))) {
     remove_argument (N, &argc, argv);
     output.table = strcreate (argv[N]);
@@ -221,5 +215,5 @@
   }
   output.bintable = (char *) NULL;
-  if (N = get_argument (argc, argv, "-binfits")) {
+  if ((N = get_argument (argc, argv, "-binfits"))) {
     remove_argument (N, &argc, argv);
     output.bintable = strcreate (argv[N]);
@@ -227,10 +221,10 @@
   }
   output.Criteria = FALSE;
-  if (N = get_argument (argc, argv, "-criteria")) {
+  if ((N = get_argument (argc, argv, "-criteria"))) {
     output.Criteria = TRUE;
     remove_argument (N, &argc, argv);
   }
   output.Chipname = FALSE;
-  if (N = get_argument (argc, argv, "-chipname")) {
+  if ((N = get_argument (argc, argv, "-chipname"))) {
     output.Chipname = TRUE;
     remove_argument (N, &argc, argv);
@@ -239,5 +233,5 @@
   /* these options modify behavior */
   output.Select = FALSE;
-  if (N = get_argument (argc, argv, "-select")) {
+  if ((N = get_argument (argc, argv, "-select"))) {
     remove_argument (N, &argc, argv);
     output.Select = TRUE;
@@ -246,8 +240,8 @@
   /* these options modify behavior */
   Recipe = FALSE;
-  if (N = get_argument (argc, argv, "-recipe")) {
+  if ((N = get_argument (argc, argv, "-recipe"))) {
     remove_argument (N, &argc, argv);
     Recipe = TRUE;
-    if (base.Type != T_NONE) {
+    if (base.Type != T_UNDEF) {
       fprintf (stderr, "-recipe and -type cannot be combined\n");
       exit (1);
@@ -257,9 +251,9 @@
   /* options which alter the database */
   output.Delete = FALSE;
-  if (N = get_argument (argc, argv, "-del")) {
+  if ((N = get_argument (argc, argv, "-del"))) {
     remove_argument (N, &argc, argv);
     output.Delete = TRUE;
   }
-  if (N = get_argument (argc, argv, "-delete")) {
+  if ((N = get_argument (argc, argv, "-delete"))) {
     remove_argument (N, &argc, argv);
     output.Delete = TRUE;
@@ -267,5 +261,5 @@
  
   output.Altpath = NONE;
-  if (N = get_argument (argc, argv, "-altpath")) {
+  if ((N = get_argument (argc, argv, "-altpath"))) {
     if (output.Delete) {
       fprintf (stderr, "can't combine -delete and -altpath flags\n");
@@ -284,5 +278,5 @@
 
   output.Modify = FALSE;
-  if (N = get_argument (argc, argv, "-modify")) {
+  if ((N = get_argument (argc, argv, "-modify"))) {
     if (output.Delete) {
       fprintf (stderr, "can't combine -delete and -modify flags\n");
@@ -318,5 +312,5 @@
   if ((base.Type == T_DARK) || (base.Type == T_BIAS) || (base.Type == T_MASK)) {
     if (base.FilterSelect) {
-      fprintf (stderr, "ERROR: filter invalid with type %s\n", typename[base.Type]);
+      fprintf (stderr, "ERROR: filter invalid with type %s\n", get_type_name(base.Type));
       exit (1);
     }
@@ -324,5 +318,5 @@
   /*
   if ((base.Type != T_DARK) && base.ExptimeSelect) {
-    fprintf (stderr, "ERROR: exptime invalid with type %s\n", typename[base.Type]);
+    fprintf (stderr, "ERROR: exptime invalid with type %s\n", get_type_name(base.Type));
     exit (1);
   }
@@ -340,4 +334,5 @@
 
   /* set up criteria based on image, mosaic, or base (all mutually exclusive) */
+  crit = NULL;
   if (ImageSelect)  
     crit = ImageCriteria (base, ImageFile, ImageExtend, ImageMode, &Ncrit);
Index: /trunk/Ohana/src/imregister/detrend/criteria.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/criteria.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/criteria.c	(revision 2803)
@@ -11,4 +11,5 @@
   match.image = -1;
 
+  crit = 0;
   close = FALSE;
   for (i = 0; (i < Ncriteria) && (match.state == MATCH_NONE); i++) {
Index: /trunk/Ohana/src/imregister/detrend/db.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/db.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/db.c	(revision 2803)
@@ -181,5 +181,5 @@
 
   ConvertStruct ((char *) new, sizeof (DetReg), Nnew, "detreg");
-  fits_vadd_rows (&vtable, new, Nnew, sizeof(DetReg));
+  fits_vadd_rows (&vtable, (char *) new, Nnew, sizeof(DetReg));
 
   /* write subset to file */
@@ -209,4 +209,5 @@
 int close_db () {
   if (dbstate == LCK_UNLOCK) return (TRUE);
+  if (dbstate == LCK_EMPTY) return (TRUE);
   fclearlockfile (dBFile, f, lockstate, &dbstate);
   return (TRUE);
Index: /trunk/Ohana/src/imregister/detrend/delete.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/delete.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/delete.c	(revision 2803)
@@ -4,5 +4,5 @@
 int DeleteSubset (Match *match, int Nmatch) {
 
-  int i, j, status;
+  int i, j;
   int *keep, Ndel, Nimage, Nsubset;
   DetReg *image, *subset;
Index: /trunk/Ohana/src/imregister/detrend/entry.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/entry.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/entry.c	(revision 2803)
@@ -35,12 +35,11 @@
   struct stat statbuf;
 
-
   filter_basename = filterhash[newdata[0].filter];
   dBPath = get_dBPath ();
 
   if (newdata[0].type == T_FLAT) {
-    sprintf (path, "%s/%s", typename[newdata[0].type], filter_basename);
+    sprintf (path, "%s/%s", get_type_name(newdata[0].type), filter_basename);
   } else {
-    sprintf (path, "%s", typename[newdata[0].type]);
+    sprintf (path, "%s", get_type_name(newdata[0].type));
   }    
   sprintf (fullpath, "%s/%s", dBPath, path);
@@ -64,8 +63,8 @@
   case T_BIAS:
   case T_MASK:
-    sprintf (rootname, "%s.%s.%d.%02d", ID, typename[newdata[0].type], (int)newdata[0].exptime, newdata[0].ccd);
+    sprintf (rootname, "%s.%s.%d.%02d", ID, get_type_name(newdata[0].type), (int)newdata[0].exptime, newdata[0].ccd);
     break;
   default:
-    sprintf (rootname, "%s.%s.%s.%02d", ID, typename[newdata[0].type], filter_basename, newdata[0].ccd);
+    sprintf (rootname, "%s.%s.%s.%02d", ID, get_type_name(newdata[0].type), filter_basename, newdata[0].ccd);
   }
 
Index: /trunk/Ohana/src/imregister/detrend/imdef.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/imdef.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/imdef.c	(revision 2803)
@@ -15,15 +15,11 @@
 
   /* first decide on image TYPE */
-  if (descriptor[0].type == T_NONE) {
+  if (descriptor[0].type == T_UNDEF) {
     if (!fits_scan (&header, ImagetypeKeyword, "%s", 1, line)) {
       fprintf (stderr, "ERROR: failure to read %s from header\n", ImagetypeKeyword);
       exit (1);
     }
-    for (i = 0; i < NTYPE; i++) {
-      if (!strcasecmp (line, typename[i])) {
-	descriptor[0].type = i;
-      }
-    }
-    if (descriptor[0].type == T_NONE) {
+    descriptor[0].type = get_image_type (line);
+    if (descriptor[0].type == T_UNDEF) {
       fprintf (stderr, "ERROR: invalid image type %s\n", line);
       exit (1);
@@ -129,5 +125,5 @@
   /* set the exposure time, if needed */
   if (descriptor[0].ExptimeSelect && (descriptor[0].type != T_DARK)) {
-    fprintf (stderr, "exposure time is not allowed for type %s\n", typename[descriptor[0].type]);
+    fprintf (stderr, "exposure time is not allowed for type %s\n", get_type_name(descriptor[0].type));
     exit (1);
   }
Index: /trunk/Ohana/src/imregister/detrend/modify.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/modify.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/modify.c	(revision 2803)
@@ -8,20 +8,18 @@
   DetReg *image;
   
+  value = M_UNDEF;
   image = get_images (&Nimage);
+
   ALLOCATE (list, int, Nimage);
   if (!strcasecmp (output.ModifyEntry, "mode")) {
-    for (i = 0; i < NMODE; i++) {
-      if (!strncasecmp (output.ModifyValue, modename[i], strlen(modename[i]))) {
-	value = i;
-	goto valid_mode;
-      }
+    value = get_image_mode (output.ModifyValue);
+    if (value == M_UNDEF) {
+      fprintf (stderr, "ERROR: invalid image mode %s\n", output.ModifyValue);
+      exit (1);
     }
-    fprintf (stderr, "ERROR: invalid image mode %s\n", output.ModifyValue);
-    exit (1);
   }
   if (!strcasecmp (output.ModifyEntry, "order")) {
     value = atoi (output.ModifyValue);
   }
- valid_mode:
 
   /* list matched images */
Index: /trunk/Ohana/src/imregister/detrend/output.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/output.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/output.c	(revision 2803)
@@ -27,5 +27,5 @@
 int DumpFitsBintable (char *filename, DetReg *image, Match *match, int Nmatch) {
 
-  int i, j, Nx;
+  int i, j;
   Header header, theader;
   Matrix matrix;
@@ -42,5 +42,5 @@
   }
   ConvertStruct ((char *) subset, sizeof (DetReg), Nmatch, "detreg");
-  fits_add_rows (&table, subset, Nmatch, sizeof (DetReg));
+  fits_add_rows (&table, (char *) subset, Nmatch, sizeof (DetReg));
 
   fits_write_header  (filename, &header);
@@ -144,6 +144,6 @@
     stopstr  = sec_to_date (newdata[0].tstop);
     regstr   = sec_to_date (newdata[0].treg);
-    typestr  = typename[newdata[0].type];
-    modestr  = modename[newdata[0].mode];
+    typestr  = get_type_name(newdata[0].type);
+    modestr  = get_mode_name(newdata[0].mode);
     filtstr  = filterhash[newdata[0].filter];
 
@@ -215,6 +215,6 @@
     }
 
-    typestr = typename[MIN (MAX (detdata[i].type, 0), NTYPE - 1)];
-    modestr = modename[MIN (MAX (detdata[i].mode, 0), NMODE - 1)];
+    typestr = get_type_name(detdata[i].type);
+    modestr = get_mode_name(detdata[i].mode);
     filtstr = filterhash[MIN (MAX (detdata[i].filter, 0), NFILTER - 1)];
 
@@ -269,5 +269,5 @@
     
     fprintf (stdout, "%19s %19s %7s %6s %s %6.1f\n", 
-	     start, stop, typename[criteria[i].Type], filterhash[criteria[i].Filter], 
+	     start, stop, get_type_name(criteria[i].Type), filterhash[criteria[i].Filter], 
 	     ccds[criteria[i].CCD], criteria[i].Exptime);
 
Index: /trunk/Ohana/src/imregister/detrend/recipe.c
===================================================================
--- /trunk/Ohana/src/imregister/detrend/recipe.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/detrend/recipe.c	(revision 2803)
@@ -4,10 +4,10 @@
 Criteria *ExpandRecipe (Criteria *base, int *Ncrit) {
 
-  int i, j, N, Ns, NS;
+  int i, N, Ns, NS;
   Criteria *crit;
   int Nbase;
   
   Nbase = *Ncrit;
-  Ns = 0;
+  NS = Ns = 0;
   ALLOCATE (crit, Criteria, 1);
 
@@ -22,12 +22,6 @@
       crit[Ns] = base[N];
       crit[Ns].TypeSelect = TRUE;
-      crit[Ns].Type = T_NONE;
-      
-      for (j = 0; j < NTYPE; j++) {
-	if (!strcasecmp (typename[j], RecipeType[i])) {
-	  crit[Ns].Type = j;
-	}
-      }
-      if (crit[Ns].Type == T_NONE) { 
+      crit[Ns].Type = get_image_type (RecipeType[i]);
+      if (crit[Ns].Type == T_UNDEF) { 
 	fprintf (stderr, "ERROR: invalid image type %s\n", RecipeType[i]);
 	exit (1);
Index: /trunk/Ohana/src/imregister/imreg/ConfigPID.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/ConfigPID.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/ConfigPID.c	(revision 2803)
@@ -4,5 +4,5 @@
 static char *PIDMaster = (char *) NULL;
 
-ConfigPID (char *pidfile) {
+int ConfigPID (char *pidfile) {
 
   pid_t pid;
@@ -50,4 +50,5 @@
   fprintf (stderr, "  remove %s if elixir has died unexpectedly\n", pidfile);
   Shutdown (1);
+  return (FALSE); 
 }
 
Index: /trunk/Ohana/src/imregister/imreg/args.imregister.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/args.imregister.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/args.imregister.c	(revision 2803)
@@ -11,5 +11,5 @@
 
   SingleIsSplit = FALSE;
-  if (N = get_argument (argc, argv, "-split")) {
+  if ((N = get_argument (argc, argv, "-split"))) {
     remove_argument (N, &argc, argv);
     SingleIsSplit = TRUE;
@@ -17,5 +17,5 @@
 
   NoReg = FALSE;
-  if (N = get_argument (argc, argv, "-noreg")) {
+  if ((N = get_argument (argc, argv, "-noreg"))) {
     remove_argument (N, &argc, argv);
     NoReg = TRUE;
@@ -23,5 +23,5 @@
 
   output.verbose = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     output.verbose = TRUE;
@@ -29,5 +29,5 @@
 
   NeedType = FALSE;
-  if (N = get_argument (argc, argv, "-needtype")) {
+  if ((N = get_argument (argc, argv, "-needtype"))) {
     remove_argument (N, &argc, argv);
     NeedType = TRUE;
@@ -73,5 +73,5 @@
 
     /* check for daemon mode */
-    if (N = get_argument (argc, argv, "-daemon")) {
+    if ((N = get_argument (argc, argv, "-daemon"))) {
       remove_argument (N, &argc, argv);
       CLIENT = FALSE;
@@ -82,5 +82,5 @@
 
       LOOP_DELAY = 60;
-      if (N = get_argument (argc, argv, "-delay")) {
+      if ((N = get_argument (argc, argv, "-delay"))) {
 	remove_argument (N, &argc, argv);
 	LOOP_DELAY = atof(argv[N]);
Index: /trunk/Ohana/src/imregister/imreg/args.imsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/args.imsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/args.imsearch.c	(revision 2803)
@@ -13,5 +13,5 @@
 
   /* set timezone (set static in misc.c) */
-  if (N = get_argument (argc, argv, "-tz")) {
+  if ((N = get_argument (argc, argv, "-tz"))) {
     remove_argument (N, &argc, argv);
     dt = atof (argv[N]);
@@ -30,9 +30,7 @@
   criteria.TypeSelect = FALSE;
   criteria.Type = T_UNDEF;
-  if (N = get_argument (argc, argv, "-type")) {
-    remove_argument (N, &argc, argv);
-    for (i = 0; (i < NTYPE) && (criteria.Type == T_UNDEF); i++) {
-      if (!strncasecmp (argv[N], typename[i], strlen(argv[N]))) criteria.Type = i;
-    }
+  if ((N = get_argument (argc, argv, "-type"))) {
+    remove_argument (N, &argc, argv);
+    criteria.Type = get_image_type (argv[N]);
     if (criteria.Type == T_UNDEF) {
       fprintf (stderr, "ERROR: invalid image type %s\n", argv[N]);
@@ -41,24 +39,13 @@
     remove_argument (N, &argc, argv);
     criteria.TypeSelect = TRUE;
-  }
- 
-  /* exposure time */
-  criteria.ExptimeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-etime")) {
-    remove_argument (N, &argc, argv);
-    criteria.Exptime = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-    criteria.ExptimeSelect = TRUE;
   }
  
   /* image mode (split, mef, single) */
   criteria.ModeSelect = FALSE;
-  criteria.Mode = M_NONE;
-  if (N = get_argument (argc, argv, "-mode")) {
-    remove_argument (N, &argc, argv);
-    for (i = 0; (i < NMODE) && (criteria.Mode == M_NONE); i++) {
-      if (!strncasecmp (argv[N], modename[i], strlen(argv[N]))) criteria.Mode = i;
-    }
-    if (criteria.Mode == M_NONE) {
+  criteria.Mode = M_UNDEF;
+  if ((N = get_argument (argc, argv, "-mode"))) {
+    remove_argument (N, &argc, argv);
+    criteria.Mode = get_image_mode (argv[N]);
+    if (criteria.Mode == M_UNDEF) {
       fprintf (stderr, "ERROR: invalid image mode %s\n", argv[N]);
       exit (1);
@@ -68,7 +55,16 @@
   }
 
+  /* exposure time */
+  criteria.ExptimeSelect = FALSE;
+  if ((N = get_argument (argc, argv, "-etime"))) {
+    remove_argument (N, &argc, argv);
+    criteria.Exptime = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+    criteria.ExptimeSelect = TRUE;
+  }
+ 
   /* ccd number */
   criteria.CCDSelect = FALSE;
-  if (N = get_argument (argc, argv, "-ccd")) {
+  if ((N = get_argument (argc, argv, "-ccd"))) {
     remove_argument (N, &argc, argv);
     criteria.CCD = -1;
@@ -87,5 +83,5 @@
   }
   /* select CCD seq number */
-  if (N = get_argument (argc, argv, "-ccdn")) {
+  if ((N = get_argument (argc, argv, "-ccdn"))) {
     remove_argument (N, &argc, argv);
     criteria.CCD = atoi (argv[N]);
@@ -96,5 +92,5 @@
   /* filter name */
   criteria.FilterSelect = FALSE;
-  if (N = get_argument (argc, argv, "-filter")) {
+  if ((N = get_argument (argc, argv, "-filter"))) {
     remove_argument (N, &argc, argv);
     criteria.Filter = strcreate (argv[N]);
@@ -108,5 +104,5 @@
   /* string in image name */
   criteria.NameSelect = FALSE;
-  if (N = get_argument (argc, argv, "-name")) {
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     criteria.Name = strcreate (argv[N]);
@@ -117,5 +113,5 @@
   /* processed state */
   criteria.ProcSelect = FALSE;
-  if (N = get_argument (argc, argv, "-proc")) {
+  if ((N = get_argument (argc, argv, "-proc"))) {
     criteria.ProcSelect = TRUE;
     remove_argument (N, &argc, argv);
@@ -132,5 +128,5 @@
 
   criteria.DistSelect = FALSE;
-  if (N = get_argument (argc, argv, "-dist")) {
+  if ((N = get_argument (argc, argv, "-dist"))) {
     criteria.DistSelect = TRUE;
     remove_argument (N, &argc, argv);
@@ -147,18 +143,18 @@
 
   /*** command-line options which modify the output list */
-  if (N = get_argument (argc, argv, "-treg")) {
+  if ((N = get_argument (argc, argv, "-treg"))) {
     remove_argument (N, &argc, argv);
     SetOutputMode ("RegTimeMode");
   }
-  if (N = get_argument (argc, argv, "-seq")) {
+  if ((N = get_argument (argc, argv, "-seq"))) {
     remove_argument (N, &argc, argv);
     SetOutputMode ("CCDSeq");
   }
-  if (N = get_argument (argc, argv, "-pt")) {
+  if ((N = get_argument (argc, argv, "-pt"))) {
     remove_argument (N, &argc, argv);
     SetOutputMode ("PTstyle");
   }
   output.table = (char *) NULL;
-  if (N = get_argument (argc, argv, "-table")) {
+  if ((N = get_argument (argc, argv, "-table"))) {
     remove_argument (N, &argc, argv);
     output.table = strcreate (argv[N]);
@@ -166,5 +162,5 @@
   }
   output.cadctable = (char *) NULL;
-  if (N = get_argument (argc, argv, "-cadctable")) {
+  if ((N = get_argument (argc, argv, "-cadctable"))) {
     remove_argument (N, &argc, argv);
     output.cadctable = strcreate (argv[N]);
@@ -172,5 +168,5 @@
   }
   output.bintable = (char *) NULL;
-  if (N = get_argument (argc, argv, "-bintable")) {
+  if ((N = get_argument (argc, argv, "-bintable"))) {
     remove_argument (N, &argc, argv);
     output.bintable = strcreate (argv[N]);
@@ -187,15 +183,15 @@
   output.unique = FALSE;
 
-  if (N = get_argument (argc, argv, "-delete")) {
+  if ((N = get_argument (argc, argv, "-delete"))) {
     remove_argument (N, &argc, argv);
     output.delete = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "-unique")) {
+  if ((N = get_argument (argc, argv, "-unique"))) {
     remove_argument (N, &argc, argv);
     output.unique = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "-modify")) {
+  if ((N = get_argument (argc, argv, "-modify"))) {
     if (output.delete) { 
       fprintf (stderr, "can't specify more than one modifier at a time\n");
@@ -251,8 +247,5 @@
       output.modify_type = TRUE;
       remove_argument (N, &argc, argv);
-      output.type == T_UNDEF;
-      for (i = 0; (i < NTYPE) && (output.type == T_UNDEF); i++) {
-	if (!strncasecmp (argv[N], typename[i], strlen(argv[N]))) output.type = i;
-      }
+      output.type = get_image_type (argv[N]);
       if (output.type == T_UNDEF) {
 	fprintf (stderr, "ERROR: invalid image type %s\n", argv[N]);
Index: /trunk/Ohana/src/imregister/imreg/cadc.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/cadc.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/cadc.c	(revision 2803)
@@ -18,5 +18,4 @@
   double left, right, center, outer, top, bottom;
   double iqx, iqy, iqr, iqf, iqo;
-  FILE *p;
 
   /* set REFCCD for use in GetREFIQ */
@@ -155,5 +154,5 @@
 int *GetUniqueObsID (RegImage *image, int *index, int *entry, int Nindex, int *Nmatch) {
   
-  int i, j, k, m, N, NMATCH, REFCCD;
+  int i, j, N, NMATCH;
   int *match;
 
@@ -185,5 +184,5 @@
 int GetREFCCD (RegImage *image, int *index, int *entry, int Nindex, int start) {
   
-  int i, j, k, m, N, NMATCH;
+  int i, N, NMATCH;
   int *match;
 
Index: /trunk/Ohana/src/imregister/imreg/db.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/db.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/db.c	(revision 2803)
@@ -29,4 +29,5 @@
 
   int Nbytes;
+  char *data;
 
   /* assign pointers to new data block */
@@ -41,5 +42,8 @@
 
   /* add padding space to buffer */
-  REALLOCATE ((char *) image, char, Nbytes);
+  data = (char *) image;
+  REALLOCATE (data, char, Nbytes);
+  image = (RegImage *) data;
+
   table.buffer = (char *) image;
   table.size = Nbytes;
@@ -163,5 +167,5 @@
 
   ConvertStruct ((char *) new, sizeof (RegImage), Nnew, "regimage");
-  fits_vadd_rows (&vtable, new, Nnew, sizeof(RegImage));
+  fits_vadd_rows (&vtable, (char *) new, Nnew, sizeof(RegImage));
 
   /* write subset to file */
@@ -197,4 +201,6 @@
 int close_db () {
 
+  if (dbstate == LCK_EMPTY) return (TRUE);
+
   fits_free_header (&header);
   fits_free_matrix (&matrix);
@@ -208,4 +214,6 @@
 
 int close_lock_db () {
+
+  if (dbstate == LCK_EMPTY) return (TRUE);
 
   fits_free_header (&header);
Index: /trunk/Ohana/src/imregister/imreg/iminfo.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/iminfo.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/iminfo.c	(revision 2803)
@@ -64,23 +64,11 @@
   fits_scan (&header, ImagetypeKeyword,  "%s", 1, &Imagetype);
 
-  image[0].type = T_NONE;
-  if (!strcasecmp (Imagetype, "OBJECT")) {
-    image[0].type = T_OBJECT;
-  }
-  if (!strcasecmp (Imagetype, "DARK")) {
-    image[0].type = T_DARK;
-  }
-  if (!strcasecmp (Imagetype, "BIAS")) {
-    image[0].type = T_BIAS;
-  }
-  if (!strcasecmp (Imagetype, "FLAT")) {
-    image[0].type = T_FLAT;
-  }
-  if (!strcasecmp (Imagetype, "SKYFLAT")) {
-    image[0].type = T_FLAT;
-  }
-  if (NeedType && (image[0].type == T_NONE)) {
+  /* grab the image type : if not defined, set to 'none' */
+  image[0].type = get_image_type (Imagetype);
+  if (NeedType && (image[0].type == T_UNDEF)) {
     fprintf (stderr, "ERROR: skipping unknown image type\n");
     exit (1);
+  } else {
+    image[0].type = T_NONE;
   }
 
Index: /trunk/Ohana/src/imregister/imreg/imregclient.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/imregclient.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/imregclient.c	(revision 2803)
@@ -7,5 +7,5 @@
   RegImage *image;
   char *TempDB;
-  int i, Nentry, Nslice, status;
+  int i, Nentry, Nslice, status, tmpint;
   float *dtime;
 
@@ -13,4 +13,5 @@
   sprintf (TempDB, "%s.bfr", ImageDB);
 
+  Nentry = 0;
   image = iminfo (fitsfile);
   
@@ -36,5 +37,6 @@
       exit (1);
     }
-    status = fscanf (f, "%d %f %f", &image[0].ccd, &image[0].sky, &image[0].fwhm);
+    status = fscanf (f, "%d %f %f", &tmpint, &image[0].sky, &image[0].fwhm);
+    image[0].ccd = tmpint;
     fclose (f);
     Nentry = 1;
@@ -53,5 +55,6 @@
     for (i = 0; i < Nentry; i++) {
       image[i] = image[0];
-      status = fscanf (f, "%d %f %f", &image[i].ccd, &image[i].sky, &image[i].fwhm);
+      status = fscanf (f, "%d %f %f", &tmpint, &image[i].sky, &image[i].fwhm);
+      image[i].ccd = tmpint;
       if (image[i].ccd == Nslice) continue;
       image[i].obstime += *dtime*image[i].ccd;
Index: /trunk/Ohana/src/imregister/imreg/match.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/match.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/match.c	(revision 2803)
@@ -15,4 +15,5 @@
   ALLOCATE (match, int, NMATCH);
 
+  Nname = 0;
   if (criteria.NameSelect) Nname = strlen (criteria.Name);
   
Index: /trunk/Ohana/src/imregister/imreg/modify.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/modify.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/modify.c	(revision 2803)
@@ -9,4 +9,7 @@
   int Nimage;
   RegImage *image;
+
+  Nold = 0;
+  tmppath = NULL;
 
   image = get_images (&Nimage);
Index: /trunk/Ohana/src/imregister/imreg/output.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/output.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/output.c	(revision 2803)
@@ -143,6 +143,6 @@
     obsstr   = sec_to_date (subset[0].obstime);
     regstr   = sec_to_date (subset[0].regtime);
-    typestr  = typename[(int)subset[0].type];
-    modestr  = modename[(int)subset[0].mode];
+    typestr  = get_type_name(subset[0].type);
+    modestr  = get_mode_name(subset[0].mode);
     ccdstr   = ccds[(int)subset[0].ccd];
 
@@ -185,6 +185,6 @@
     i = match[j];
 
-    modestr = ((image[i].mode < 0) || (image[i].mode >= NMODE)) ? modename[0] : modename[(int)image[i].mode];
-    typestr = ((image[i].type < 0) || (image[i].type >= NTYPE)) ? typename[0] : typename[(int)image[i].type];
+    modestr = get_mode_name (image[i].mode);
+    typestr = get_type_name (image[i].type);
     timestr = RegTimeMode ? sec_to_date (image[i].regtime) : sec_to_date (image[i].obstime);
 
Index: /trunk/Ohana/src/imregister/imreg/unique.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/unique.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/imreg/unique.c	(revision 2803)
@@ -8,5 +8,4 @@
   int N, NMATCH;
   int *match, *entry;
-  int reject;
   RegImage *image;
   char idxline[128];
Index: /trunk/Ohana/src/imregister/include/detrend.h
===================================================================
--- /trunk/Ohana/src/imregister/include/detrend.h	(revision 2802)
+++ /trunk/Ohana/src/imregister/include/detrend.h	(revision 2803)
@@ -109,2 +109,10 @@
 Criteria *ExpandRecipe (Criteria *base, int *Ncrit);
 
+int escape (int mode, char *message);
+int DumpFitsBintable (char *filename, DetReg *image, Match *match, int Nmatch);
+int cmp_crit (Criteria *crit, DetReg *image);
+int set_crit (Criteria *crit, DetReg *image);
+int ckpathname (char *newpath);
+int PrintCriteria ();
+int SetAltpath (Match *match, int Nmatch);
+
Index: /trunk/Ohana/src/imregister/include/imreg.h
===================================================================
--- /trunk/Ohana/src/imregister/include/imreg.h	(revision 2802)
+++ /trunk/Ohana/src/imregister/include/imreg.h	(revision 2803)
@@ -106,2 +106,28 @@
 MosaicLayout *CreateMegaCam ();
 int GetREFCCD (RegImage *image, int *index, int *entry, int Nindex, int start);
+
+int imregclient (char *fitsfile, char *statfile, char *datfile);
+void SIG_DIE (int sig);
+void SIG_PIPE (int sig);
+void SetSignals ();
+void KillProcess (char *pidfile);
+void StatusProcess (char *pidfile);
+int close_lock_db ();
+int ConfigPID (char *pidfile);
+int print_db_status (char *message);
+int escape (int mode, char *message);
+
+int LoadPID (char *file, pid_t *pid, char *username, char *machine);
+int Shutdown (int status);
+void RemovePID ();
+int rconnect (char *hostname, char *command, int *rsock, int *wsock);
+
+int InitFifo (Fifo *fifo, int Nalloc, int Nextra);
+int FlushFifo (Fifo *fifo);
+int ShiftFifo (Fifo *fifo);
+int ReadtoFifo (Fifo *fifo, int sock);
+void FreeFifo (Fifo *fifo);
+int SockScan (char *string, Fifo *fifo, int sock);
+int memstr (char *m1, char *m2, int n);
+
+int *unique_entries (int *subset, int *Nmatch);
Index: /trunk/Ohana/src/imregister/include/imregister.h
===================================================================
--- /trunk/Ohana/src/imregister/include/imregister.h	(revision 2802)
+++ /trunk/Ohana/src/imregister/include/imregister.h	(revision 2803)
@@ -4,4 +4,5 @@
 # include <time.h>
 # include <ctype.h>
+# include <stdlib.h>
 
 /* config variables from very old versions - remove?
@@ -85,4 +86,6 @@
 void sort (float *value, int N);
 void dsort (double *value, int N);
+void sortstr (char **S, int *X, int N);
+void sortpair (int *X, int *Y, int N);
 
 void ConfigCamera ();
@@ -96,19 +99,10 @@
 double get_fwhm (char *filename);
 
-int get_version (int argc, char **argv, char *version);
+void get_version (int argc, char **argv, char *version);
 int set_db (char *filename);
+void warn_scan (Header *header, char *field, char *format, int N, void *var);
 
+void clean_spaces (char *line);
 
 /* where is this defined ?? */
 char *basename (char *);
-
-# define T_UNDEF -1
-# define NTYPE 11
-enum {T_NONE, T_OBJECT, T_DARK, T_BIAS, T_FLAT, T_MASK, T_FRINGE, T_SCATTER, T_MODES, T_FRINGEPTS, T_ANY};
-static char typename[NTYPE][32] = {"none", "object", "dark", "bias", "flat", "mask", "fringe", "scatter", "modes", "frpts", "any"};
-static char typecode[NTYPE]     = {'x',    'o',      'd',    'b',    'f',    'm',    'r',      's',       'M',     'F'};
-
-# define M_UNDEF -1
-# define NMODE 7
-enum {M_NONE, M_MEF, M_SPLIT, M_SINGLE, M_CUBE, M_SLICE, M_MODES};
-static char modename[NMODE][32] = {"none", "MEF", "SPLIT", "SINGLE", "CUBE", "SLICE", "MODES"};
Index: /trunk/Ohana/src/imregister/include/photreg.h
===================================================================
--- /trunk/Ohana/src/imregister/include/photreg.h	(revision 2802)
+++ /trunk/Ohana/src/imregister/include/photreg.h	(revision 2803)
@@ -46,2 +46,7 @@
 void set_timezone (double dt);
 void DumpCADCTable (char *filename, PhotPars *image, int *match, int Nmatch);
+void getImageData (char *Image, char *ImageCCD, char *ImageMode);
+void set_Binary_name (char *name);
+void set_ASCII_name (char *string);
+int load_old_db ();
+int escape (int mode, char *message);
Index: /trunk/Ohana/src/imregister/include/spreg.h
===================================================================
--- /trunk/Ohana/src/imregister/include/spreg.h	(revision 2802)
+++ /trunk/Ohana/src/imregister/include/spreg.h	(revision 2803)
@@ -141,2 +141,12 @@
 MosaicLayout *CreateMegaCam ();
 int GetREFCCD (Spectrum *spectrum, int *index, int *entry, int Nindex, int start);
+
+void showinfo (Spectrum *spec);
+int escape (int mode, char *message);
+int set_spectra (Spectrum *new, int Nnew);
+Spectrum *get_spectra (int *N);
+
+int fits_scan_nchar (Header *header, int size, char *field, int N,...);
+void warn_scan_nchar (Header *header, int size, char *field, int N, void *var);
+
+int *unique_entries (int *subset, int *Nmatch);
Index: /trunk/Ohana/src/imregister/photreg/args.photreg.c
===================================================================
--- /trunk/Ohana/src/imregister/photreg/args.photreg.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/photreg/args.photreg.c	(revision 2803)
@@ -8,5 +8,4 @@
   int *list, Nlist;
   int N, required, Ntimes;
-  double dtime;
   unsigned long *tstart, *tstop;
   PhotCode *photcode, *depcode;
@@ -14,4 +13,5 @@
   ConfigInit (&argc, argv);
 
+  photcode = NULL;
   output.modify = TRUE;
   required = 0x0;
@@ -29,5 +29,5 @@
   /* set the required database */
   output.db = strcreate ("phot");
-  if (N = get_argument (argc, argv, "-trans")) {
+  if ((N = get_argument (argc, argv, "-trans"))) {
     remove_argument (N, &argc, argv);
     output.db = strcreate ("trans");
@@ -36,5 +36,5 @@
   /*** optional fields ***/
   strcpy (newdata[0].label, "elixir");
-  if (N = get_argument (argc, argv, "-label")) {
+  if ((N = get_argument (argc, argv, "-label"))) {
     remove_argument (N, &argc, argv);
     strcpy (newdata[0].label, argv[N]);
@@ -43,5 +43,5 @@
 
   newdata[0].Nmeas = 1;
-  if (N = get_argument (argc, argv, "-Nmeas")) {
+  if ((N = get_argument (argc, argv, "-Nmeas"))) {
     remove_argument (N, &argc, argv);
     newdata[0].Nmeas = atoi (argv[N]);
@@ -50,5 +50,5 @@
 
   newdata[0].Ntime = 1;
-  if (N = get_argument (argc, argv, "-Ntime")) {
+  if ((N = get_argument (argc, argv, "-Ntime"))) {
     remove_argument (N, &argc, argv);
     newdata[0].Ntime = atoi (argv[N]);
@@ -57,5 +57,5 @@
 
   output.offset = FALSE;
-  if (N = get_argument (argc, argv, "-offset")) {
+  if ((N = get_argument (argc, argv, "-offset"))) {
     remove_argument (N, &argc, argv);
     output.offset = TRUE;
@@ -70,5 +70,5 @@
 
   /* observed zero point */
-  if (N = get_argument (argc, argv, "-zp")) {
+  if ((N = get_argument (argc, argv, "-zp"))) {
     remove_argument (N, &argc, argv);
     newdata[0].ZP = atof (argv[N]);
@@ -78,5 +78,5 @@
 
   /* error on observed zero point */
-  if (N = get_argument (argc, argv, "-dzp")) {
+  if ((N = get_argument (argc, argv, "-dzp"))) {
     remove_argument (N, &argc, argv);
     newdata[0].dZP = atof (argv[N]);
@@ -86,5 +86,5 @@
 
   /* photcode system */
-  if (N = get_argument (argc, argv, "-photcode")) {
+  if ((N = get_argument (argc, argv, "-photcode"))) {
     remove_argument (N, &argc, argv);
     if ((photcode = GetPhotcodebyName (argv[N])) == NULL) {
@@ -120,4 +120,5 @@
   newdata[0].ZPo      = 0.001*photcode[0].C + 0.001*depcode[0].C;
   if (output.offset) newdata[0].ZP += newdata[0].ZPo;
+  return (TRUE);
 }
 
Index: /trunk/Ohana/src/imregister/photreg/args.photsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/photreg/args.photsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/photreg/args.photsearch.c	(revision 2803)
@@ -23,7 +23,7 @@
 
   criteria.PhotCodeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-photcode")) {
+  if ((N = get_argument (argc, argv, "-photcode"))) {
     remove_argument (N, &argc, argv);
-    if ((criteria.photcode = GetPhotcodeCodebyName (argv[N])) == NULL) {
+    if ((criteria.photcode = GetPhotcodeCodebyName (argv[N])) == 0) {
       fprintf (stderr, "ERROR: photcode not found in table\n");
       exit (1);
@@ -34,5 +34,5 @@
 
   criteria.LabelSelect = FALSE;
-  if (N = get_argument (argc, argv, "-label")) {
+  if ((N = get_argument (argc, argv, "-label"))) {
     remove_argument (N, &argc, argv);
     criteria.Label = strcreate (argv[N]);
@@ -42,5 +42,5 @@
 
   output.delete = FALSE;
-  if (N = get_argument (argc, argv, "-delete")) {
+  if ((N = get_argument (argc, argv, "-delete"))) {
     remove_argument (N, &argc, argv);
     output.delete = TRUE;
@@ -48,5 +48,5 @@
 
   output.equiv = FALSE;
-  if (N = get_argument (argc, argv, "-equiv")) {
+  if ((N = get_argument (argc, argv, "-equiv"))) {
     remove_argument (N, &argc, argv);
     output.equiv = TRUE;
@@ -54,5 +54,5 @@
 
   output.offset = FALSE;
-  if (N = get_argument (argc, argv, "-offset")) {
+  if ((N = get_argument (argc, argv, "-offset"))) {
     remove_argument (N, &argc, argv);
     output.offset = TRUE;
@@ -60,5 +60,5 @@
 
   output.table = (char *) NULL;
-  if (N = get_argument (argc, argv, "-table")) {
+  if ((N = get_argument (argc, argv, "-table"))) {
     remove_argument (N, &argc, argv);
     output.table = strcreate (argv[N]);
@@ -67,5 +67,5 @@
 
   output.bintable = (char *) NULL;
-  if (N = get_argument (argc, argv, "-bintable")) {
+  if ((N = get_argument (argc, argv, "-bintable"))) {
     remove_argument (N, &argc, argv);
     output.bintable = strcreate (argv[N]);
@@ -74,5 +74,5 @@
 
   output.verbose = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     output.verbose = TRUE;
@@ -80,5 +80,5 @@
 
   output.convert = FALSE;
-  if (N = get_argument (argc, argv, "-convert")) {
+  if ((N = get_argument (argc, argv, "-convert"))) {
     remove_argument (N, &argc, argv);
     output.convert = TRUE;
@@ -89,5 +89,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-image")) {
+  if ((N = get_argument (argc, argv, "-image"))) {
     remove_argument (N, &argc, argv);
     if (argc < N + 3) {
@@ -102,5 +102,5 @@
 
   output.db = strcreate ("phot");
-  if (N = get_argument (argc, argv, "-trans")) {
+  if ((N = get_argument (argc, argv, "-trans"))) {
     remove_argument (N, &argc, argv);
     output.db = strcreate ("trans");
@@ -123,3 +123,4 @@
     criteria.photcode = equiv;
   }
+  return (TRUE);
 }
Index: /trunk/Ohana/src/imregister/photreg/db.c
===================================================================
--- /trunk/Ohana/src/imregister/photreg/db.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/photreg/db.c	(revision 2803)
@@ -70,6 +70,7 @@
 
   /* add padding space to buffer */
-  REALLOCATE ((char *) image, char, Nbytes);
   table.buffer = (char *) image;
+  REALLOCATE (table.buffer, char, Nbytes);
+  image = (PhotPars *) table.buffer;
   table.size = Nbytes;
 
@@ -245,5 +246,5 @@
 
   ConvertStruct ((char *) new, sizeof (PhotPars), Nnew, "photpars");
-  fits_vadd_rows (&vtable, new, Nnew, sizeof(PhotPars));
+  fits_vadd_rows (&vtable, (char *) new, Nnew, sizeof(PhotPars));
 
   /* write subset to file */
@@ -290,4 +291,5 @@
   fd = fileno (f);
   fprintf (stderr, "db: %s, fd: %d\n", dBFile, fd);
+  return (TRUE);
 }
 
Index: /trunk/Ohana/src/imregister/photreg/define.c
===================================================================
--- /trunk/Ohana/src/imregister/photreg/define.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/photreg/define.c	(revision 2803)
@@ -4,5 +4,5 @@
 static char *BinaryName = (char *) NULL;
 
-int set_Binary_name (char *name) {
+void set_Binary_name (char *name) {
   BinaryName = name;
 }
Index: /trunk/Ohana/src/imregister/photreg/getImageData.c
===================================================================
--- /trunk/Ohana/src/imregister/photreg/getImageData.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/photreg/getImageData.c	(revision 2803)
@@ -2,5 +2,5 @@
 # include "photreg.h"
 
-getImageData (char *Image, char *ImageCCD, char *ImageMode) {
+void getImageData (char *Image, char *ImageCCD, char *ImageMode) {
 
   Header header;
@@ -66,4 +66,4 @@
   }
   criteria.PhotCodeSelect = TRUE;
-
+  return;
 }
Index: /trunk/Ohana/src/imregister/photreg/output.c
===================================================================
--- /trunk/Ohana/src/imregister/photreg/output.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/photreg/output.c	(revision 2803)
@@ -6,5 +6,5 @@
 static char *ASCIIName = (char *) NULL;
 
-set_ASCII_name (char *string) {
+void set_ASCII_name (char *string) {
   ASCIIName = string;
 }
@@ -50,5 +50,5 @@
   }
   ConvertStruct ((char *) subset, sizeof (PhotPars), Nmatch, "photpars");
-  fits_add_rows (&table, subset, Nmatch, sizeof (PhotPars));
+  fits_add_rows (&table, (char *) subset, Nmatch, sizeof (PhotPars));
 
   fits_write_header  (filename, &header);
@@ -155,5 +155,5 @@
 	      newdata[0].K, newdata[0].X, startstr, stopstr,
 	      c1, c2, newdata[0].Nmeas, newdata[0].Ntime, code, photsys, newdata[0].label);
-    if (!fits_add_rows (&table, line, 1, strlen(line))) escape (IGNORE, (FILE *) NULL, (char *) NULL, NULL, "error writing dataline");
+    if (!fits_add_rows (&table, line, 1, strlen(line))) escape (IGNORE, "error writing dataline");
 
     free (line);
Index: /trunk/Ohana/src/imregister/spreg/ConfigInit.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/ConfigInit.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/ConfigInit.c	(revision 2803)
@@ -6,6 +6,5 @@
 void ConfigInit (int *argc, char **argv) {
 
-  int i, NDB;
-  char *config, *file, ElixirBase[80];
+  char *config, *file;
 
   /*** load configuration info ***/
Index: /trunk/Ohana/src/imregister/spreg/args.spregister.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/args.spregister.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/args.spregister.c	(revision 2803)
@@ -9,5 +9,5 @@
 
   NoReg = FALSE;
-  if (N = get_argument (argc, argv, "-noreg")) {
+  if ((N = get_argument (argc, argv, "-noreg"))) {
     remove_argument (N, &argc, argv);
     NoReg = TRUE;
@@ -15,5 +15,5 @@
 
   DUMP = FALSE;
-  if (N = get_argument (argc, argv, "-dump")) {
+  if ((N = get_argument (argc, argv, "-dump"))) {
     remove_argument (N, &argc, argv);
     DUMP = TRUE;
@@ -21,5 +21,5 @@
 
   output.verbose = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     output.verbose = TRUE;
@@ -27,5 +27,5 @@
 
   NeedType = FALSE;
-  if (N = get_argument (argc, argv, "-needtype")) {
+  if ((N = get_argument (argc, argv, "-needtype"))) {
     remove_argument (N, &argc, argv);
     NeedType = TRUE;
Index: /trunk/Ohana/src/imregister/spreg/args.spsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/args.spsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/args.spsearch.c	(revision 2803)
@@ -6,10 +6,10 @@
 
   double dt;
-  int N, i;
+  int N;
 
   ConfigInit (&argc, argv); /* load elixir config data */
 
   /* set timezone (set static in misc.c) */
-  if (N = get_argument (argc, argv, "-tz")) {
+  if ((N = get_argument (argc, argv, "-tz"))) {
     remove_argument (N, &argc, argv);
     dt = atof (argv[N]);
@@ -27,5 +27,5 @@
   /* exposure time */
   criteria.ExptimeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-etime")) {
+  if ((N = get_argument (argc, argv, "-etime"))) {
     remove_argument (N, &argc, argv);
     criteria.Exptime = atof (argv[N]);
@@ -41,11 +41,9 @@
   criteria.ModeSelect = FALSE;
   /*
-  criteria.Mode = M_NONE;
-  if (N = get_argument (argc, argv, "-mode")) {
+  criteria.Mode = M_UNDEF;
+  if ((N = get_argument (argc, argv, "-mode"))) {
     remove_argument (N, &argc, argv);
-    for (i = 0; (i < NMODE) && (criteria.Mode == M_NONE); i++) {
-      if (!strncasecmp (argv[N], modename[i], strlen(argv[N]))) criteria.Mode = i;
-    }
-    if (criteria.Mode == M_NONE) {
+    criteria.Mode = get_image_mode (argv[N]);
+    if (criteria.Mode == M_UNDEF) {
       fprintf (stderr, "ERROR: invalid image mode %s\n", argv[N]);
       exit (1);
@@ -58,5 +56,5 @@
   /* string in image name */
   criteria.FilenameSelect = FALSE;
-  if (N = get_argument (argc, argv, "-filename")) {
+  if ((N = get_argument (argc, argv, "-filename"))) {
     remove_argument (N, &argc, argv);
     criteria.Filename = strcreate (argv[N]);
@@ -67,5 +65,5 @@
   /* string in image name */
   criteria.ObjectSelect = FALSE;
-  if (N = get_argument (argc, argv, "-object")) {
+  if ((N = get_argument (argc, argv, "-object"))) {
     remove_argument (N, &argc, argv);
     criteria.Object = strcreate (argv[N]);
@@ -76,5 +74,5 @@
   /* string in image name */
   criteria.TelescopeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-tel")) {
+  if ((N = get_argument (argc, argv, "-tel"))) {
     remove_argument (N, &argc, argv);
     criteria.Telescope = strcreate (argv[N]);
@@ -85,5 +83,5 @@
   /* string in image name */
   criteria.InstrumentSelect = FALSE;
-  if (N = get_argument (argc, argv, "-inst")) {
+  if ((N = get_argument (argc, argv, "-inst"))) {
     remove_argument (N, &argc, argv);
     criteria.Instrument = strcreate (argv[N]);
@@ -93,10 +91,10 @@
 
   /*** command-line options which modify the output list */
-  if (N = get_argument (argc, argv, "-treg")) {
+  if ((N = get_argument (argc, argv, "-treg"))) {
     remove_argument (N, &argc, argv);
     SetOutputMode ("RegTimeMode");
   }
   output.table = (char *) NULL;
-  if (N = get_argument (argc, argv, "-table")) {
+  if ((N = get_argument (argc, argv, "-table"))) {
     remove_argument (N, &argc, argv);
     output.table = strcreate (argv[N]);
@@ -104,5 +102,5 @@
   }
   output.bintable = (char *) NULL;
-  if (N = get_argument (argc, argv, "-bintable")) {
+  if ((N = get_argument (argc, argv, "-bintable"))) {
     remove_argument (N, &argc, argv);
     output.bintable = strcreate (argv[N]);
@@ -116,15 +114,15 @@
   output.unique = FALSE;
 
-  if (N = get_argument (argc, argv, "-delete")) {
+  if ((N = get_argument (argc, argv, "-delete"))) {
     remove_argument (N, &argc, argv);
     output.delete = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "-unique")) {
+  if ((N = get_argument (argc, argv, "-unique"))) {
     remove_argument (N, &argc, argv);
     output.unique = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "-modify")) {
+  if ((N = get_argument (argc, argv, "-modify"))) {
     if (output.delete) { 
       fprintf (stderr, "can't specify more than one modifier at a time\n");
Index: /trunk/Ohana/src/imregister/spreg/db.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/db.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/db.c	(revision 2803)
@@ -242,6 +242,7 @@
 
   /* add padding space to buffer */
-  REALLOCATE ((char *) spectrum, char, Nbytes);
   table.buffer = (char *) spectrum;
+  REALLOCATE (table.buffer, char, Nbytes);
+  spectrum = (Spectrum *) table.buffer;
   table.size = Nbytes;
 
Index: /trunk/Ohana/src/imregister/spreg/match.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/match.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/match.c	(revision 2803)
@@ -15,4 +15,6 @@
   NMATCH = 1000;
   ALLOCATE (match, int, NMATCH);
+
+  Nfilename = Nobject = Ntelescope = Ninstrument = 0;
 
   if (criteria.FilenameSelect) Nfilename     = strlen (criteria.Filename);
Index: /trunk/Ohana/src/imregister/spreg/modify.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/modify.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/modify.c	(revision 2803)
@@ -6,7 +6,9 @@
   int i, j, Nold;
   char *tmppath;
-  char *ext, *root, *path;
   int Nspectrum;
   Spectrum *spectrum;
+
+  Nold = 0;
+  tmppath = NULL;
 
   spectrum = get_spectra (&Nspectrum);
Index: /trunk/Ohana/src/imregister/spreg/output.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/output.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/output.c	(revision 2803)
@@ -41,5 +41,5 @@
 void DumpFitsBintable (char *filename, Spectrum *spectrum, int *match, int Nmatch) {
 
-  int i, j, Nx;
+  int i, j;
   Header header, theader;
   Matrix matrix;
@@ -56,5 +56,5 @@
   }
   ConvertStruct ((char *) subset, sizeof (Spectrum), Nmatch, "spectrum");
-  fits_add_rows (&table, subset, Nmatch, sizeof (Spectrum));
+  fits_add_rows (&table, (char *) subset, Nmatch, sizeof (Spectrum));
 
   fits_write_header  (filename, &header);
@@ -68,6 +68,5 @@
   
   int i;
-  char *obsstr, *regstr, *line, dummy[64];
-  char *modestr, *typestr, *ccdstr, *datestr;
+  char *obsstr, *regstr, *line, dummy[64], *datestr;
   unsigned long tsecond;
   Header header, theader;
Index: /trunk/Ohana/src/imregister/spreg/spinfo.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/spinfo.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/spinfo.c	(revision 2803)
@@ -6,10 +6,8 @@
   Spectrum *spectrum;
   Header header;
-  int Naxes, Nextend;
-  char Imagetype[80], line[80];
+  char line[80];
   struct timeval now;
   char *name, *cwd, *tempname;
   double tmp;
-  float *dtime;
 
   ALLOCATE (spectrum, Spectrum, 1);
@@ -59,7 +57,7 @@
   warn_scan_nchar (&header, 16, TelescopeKeyword, 1, spectrum[0].telescope);
 
-  clean_spaces (&spectrum[0].objname);
-  clean_spaces (&spectrum[0].instrument);
-  clean_spaces (&spectrum[0].telescope);
+  clean_spaces (spectrum[0].objname);
+  clean_spaces (spectrum[0].instrument);
+  clean_spaces (spectrum[0].telescope);
 
   warn_scan (&header, ExptimeKeyword,    "%f", 1, &spectrum[0].exptime);
Index: /trunk/Ohana/src/imregister/spreg/unique.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/unique.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/spreg/unique.c	(revision 2803)
@@ -5,8 +5,7 @@
 int *unique_entries (int *subset, int *Nmatch) {
 
-  int i, j, k, m, Nspectrum, Nsubset;
+  int i, j, m, Nspectrum, Nsubset;
   int N, NMATCH;
   int *match, *entry;
-  int reject;
   Spectrum *spectrum;
   char idxline[128];
Index: /trunk/Ohana/src/imregister/src/cameraconfig.c
===================================================================
--- /trunk/Ohana/src/imregister/src/cameraconfig.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/cameraconfig.c	(revision 2803)
@@ -1,6 +1,8 @@
-# include <ohana.h>
-static char *version = "cameraconfig $Revision: 1.1 $";
-
-main (int argc, char **argv) {
+# include "imregister.h"
+static char *version = "cameraconfig $Revision: 1.2 $";
+
+void usage ();
+
+int main (int argc, char **argv) {
 
   int i, Nccd, Nx, Ny, mosaic_x, mosaic_y, N, use_biassec;
@@ -8,5 +10,5 @@
   char *config, *file;
   char CameraConfig[256];
-  char field[64], name[64], line[256], keyword[64];
+  char field[64], line[256], keyword[64];
   char ID[64], *IDsel;
   double x, y, Xo, Yo, theta;
@@ -16,4 +18,5 @@
   char datasec[64], biassec[64];
 
+  bzero (ID, 64);
   get_version (argc, argv, version);
 
@@ -47,9 +50,9 @@
 
   /* command line options */
-  if (N = get_argument (argc, argv, "-h")) usage ();
+  if ((N = get_argument (argc, argv, "-h"))) usage ();
 
   /* command line options */
   NCCD = FALSE;
-  if (N = get_argument (argc, argv, "-Nccd")) {
+  if ((N = get_argument (argc, argv, "-Nccd"))) {
     remove_argument (N, &argc, argv);
     NCCD = TRUE;
@@ -57,5 +60,5 @@
 
   AXES = FALSE;
-  if (N = get_argument (argc, argv, "-axes")) {
+  if ((N = get_argument (argc, argv, "-axes"))) {
     remove_argument (N, &argc, argv);
     AXES = TRUE;
@@ -63,5 +66,5 @@
 
   AXIS0 = FALSE;
-  if (N = get_argument (argc, argv, "-axis0")) {
+  if ((N = get_argument (argc, argv, "-axis0"))) {
     remove_argument (N, &argc, argv);
     AXIS0 = TRUE;
@@ -69,5 +72,5 @@
 
   AXIS1 = FALSE;
-  if (N = get_argument (argc, argv, "-axis1")) {
+  if ((N = get_argument (argc, argv, "-axis1"))) {
     remove_argument (N, &argc, argv);
     AXIS1 = TRUE;
@@ -75,10 +78,10 @@
 
   MOSAIC_X = FALSE;
-  if (N = get_argument (argc, argv, "-mosaicx")) {
+  if ((N = get_argument (argc, argv, "-mosaicx"))) {
     remove_argument (N, &argc, argv);
     MOSAIC_X = TRUE;
   }
   MOSAIC_Y = FALSE;
-  if (N = get_argument (argc, argv, "-mosaicy")) {
+  if ((N = get_argument (argc, argv, "-mosaicy"))) {
     remove_argument (N, &argc, argv);
     MOSAIC_Y = TRUE;
@@ -86,5 +89,5 @@
 
   CCDS = FALSE;
-  if (N = get_argument (argc, argv, "-ccds")) {
+  if ((N = get_argument (argc, argv, "-ccds"))) {
     remove_argument (N, &argc, argv);
     CCDS = TRUE;
@@ -92,5 +95,5 @@
 
   CCDN = FALSE;
-  if (N = get_argument (argc, argv, "-ccdn")) {
+  if ((N = get_argument (argc, argv, "-ccdn"))) {
     remove_argument (N, &argc, argv);
     CCDN = TRUE;
@@ -98,5 +101,5 @@
 
   SEQ = FALSE;
-  if (N = get_argument (argc, argv, "-seq")) {
+  if ((N = get_argument (argc, argv, "-seq"))) {
     remove_argument (N, &argc, argv);
     SEQ = TRUE;
@@ -104,5 +107,5 @@
 
   XOFF = FALSE;
-  if (N = get_argument (argc, argv, "-xoff")) {
+  if ((N = get_argument (argc, argv, "-xoff"))) {
     remove_argument (N, &argc, argv);
     XOFF = TRUE;
@@ -110,5 +113,5 @@
 
   YOFF = FALSE;
-  if (N = get_argument (argc, argv, "-yoff")) {
+  if ((N = get_argument (argc, argv, "-yoff"))) {
     remove_argument (N, &argc, argv);
     YOFF = TRUE;
@@ -116,5 +119,5 @@
 
   XO = FALSE;
-  if (N = get_argument (argc, argv, "-Xo")) {
+  if ((N = get_argument (argc, argv, "-Xo"))) {
     remove_argument (N, &argc, argv);
     XO = TRUE;
@@ -122,5 +125,5 @@
 
   YO = FALSE;
-  if (N = get_argument (argc, argv, "-Yo")) {
+  if ((N = get_argument (argc, argv, "-Yo"))) {
     remove_argument (N, &argc, argv);
     YO = TRUE;
@@ -128,5 +131,5 @@
 
   THETA = FALSE;
-  if (N = get_argument (argc, argv, "-theta")) {
+  if ((N = get_argument (argc, argv, "-theta"))) {
     remove_argument (N, &argc, argv);
     THETA = TRUE;
@@ -134,5 +137,5 @@
 
   XFLIP = FALSE;
-  if (N = get_argument (argc, argv, "-xflip")) {
+  if ((N = get_argument (argc, argv, "-xflip"))) {
     remove_argument (N, &argc, argv);
     XFLIP = TRUE;
@@ -140,5 +143,5 @@
 
   YFLIP = FALSE;
-  if (N = get_argument (argc, argv, "-yflip")) {
+  if ((N = get_argument (argc, argv, "-yflip"))) {
     remove_argument (N, &argc, argv);
     YFLIP = TRUE;
@@ -146,15 +149,15 @@
 
   DATASEC = FALSE;
-  if (N = get_argument (argc, argv, "-datasec")) {
+  if ((N = get_argument (argc, argv, "-datasec"))) {
     remove_argument (N, &argc, argv);
     DATASEC = TRUE;
   }
   BIASSEC = FALSE;
-  if (N = get_argument (argc, argv, "-biassec")) {
+  if ((N = get_argument (argc, argv, "-biassec"))) {
     remove_argument (N, &argc, argv);
     BIASSEC = TRUE;
   }
   USE_BIASSEC = FALSE;
-  if (N = get_argument (argc, argv, "-usebiassec")) {
+  if ((N = get_argument (argc, argv, "-usebiassec"))) {
     remove_argument (N, &argc, argv);
     USE_BIASSEC = TRUE;
@@ -162,16 +165,18 @@
 
   GetID = FALSE;
-  if (N = get_argument (argc, argv, "-ID")) {
+  IDsel = 0;
+  if ((N = get_argument (argc, argv, "-ID"))) {
     GetID = TRUE;
     remove_argument (N, &argc, argv);
+    IDsel = strcreate (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+
+  GetN = FALSE;
+  Nsel = 0;
+  if ((N = get_argument (argc, argv, "-N"))) {
+    GetN = TRUE;
+    remove_argument (N, &argc, argv);
     Nsel = atoi (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-
-  GetN = FALSE;
-  if (N = get_argument (argc, argv, "-N")) {
-    GetN = TRUE;
-    remove_argument (N, &argc, argv);
-    IDsel = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
@@ -208,6 +213,6 @@
 	    ID, &x, &y, &dx, &dy, datasec, biassec, &Xo, &Yo, &theta);
 
-    if (GetID && (Nsel == i)) fprintf (stdout, "%s\n", ID);
-    if (GetN  && strnumcmp (IDsel, ID)) fprintf (stdout, "%d\n", i);
+    if (GetN  && (Nsel == i)) fprintf (stdout, "%d\n", i);
+    if (GetID && strnumcmp (IDsel, ID)) fprintf (stdout, "%s\n", ID);
     if (SEQ)     fprintf (stdout, "%d ", i);
     if (CCDS)    fprintf (stdout, "%s ", ID);
@@ -231,5 +236,5 @@
 }
 
-usage () {
+void usage () {
 
   fprintf (stderr, "cameraconfig [option] : lookup camera parameters\n");
Index: /trunk/Ohana/src/imregister/src/convertimreg.c
===================================================================
--- /trunk/Ohana/src/imregister/src/convertimreg.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/convertimreg.c	(revision 2803)
@@ -1,5 +1,5 @@
 # include "imregister.h"
 # include "imreg.h"
-static char *version = "convertimreg $Revision: 3.0 $";
+static char *version = "convertimreg $Revision: 3.1 $";
 
 int main (int argc, char **argv) {
@@ -22,7 +22,8 @@
   
   /* load old-style pseudo-FITS table db */
+  lockstate = LCK_SOFT;
 
   /* lock database (soft) */
-  f = fsetlockfile (argv[1], 300.0, LCK_SOFT, &dbstate);
+  f = fsetlockfile (argv[1], 300.0, lockstate, &dbstate);
   if (f == (FILE *) NULL) {
     fprintf (stderr, "ERROR: can't open db\n");
@@ -54,3 +55,4 @@
 
   DumpFitsBintable (argv[2], pimage, match, Nimage);
+  exit (0);
 }
Index: /trunk/Ohana/src/imregister/src/detsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/src/detsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/detsearch.c	(revision 2803)
@@ -1,5 +1,5 @@
 # include "imregister.h"
 # include "detrend.h"
-static char *version = "detsearch $Revision: 3.1 $";
+static char *version = "detsearch $Revision: 3.2 $";
 
 int main (int argc, char **argv) {
@@ -18,4 +18,5 @@
   if (!status) {
     close_db ();
+    fprintf (stderr, "database missing or empty\n");
     exit (0);
   }
@@ -29,5 +30,5 @@
     match = UniqueSubset (match, &Nmatch);
     if (Nmatch == 0) {
-      if (output.verbose) fprintf (stderr, "ERROR: can't find any valid detrend files (%s %s %d)\n", typename[criteria[0].Type], filtername[criteria[0].Filter], criteria[0].CCD);
+      if (output.verbose) fprintf (stderr, "ERROR: can't find any valid detrend files (%s %s %d)\n", get_type_name(criteria[0].Type), filtername[criteria[0].Filter], criteria[0].CCD);
       close_db ();
       exit (1);
Index: /trunk/Ohana/src/imregister/src/filtnames.c
===================================================================
--- /trunk/Ohana/src/imregister/src/filtnames.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/filtnames.c	(revision 2803)
@@ -1,4 +1,4 @@
-# include <ohana.h>
-static char *version = "filtnames $Revision: 1.1 $";
+# include "imregister.h"
+static char *version = "filtnames $Revision: 1.2 $";
 
 typedef struct {
@@ -7,5 +7,5 @@
 } FiltCode;
 
-main (int argc, char **argv) {
+int main (int argc, char **argv) {
 
   int i, code, Ncode, Nmatch, Nfield, N, Select, CalibrationData;
@@ -36,5 +36,5 @@
   /* image type (dark, flat, bias, etc) */
   Select = TRUE;
-  if (N = get_argument (argc, argv, "-all")) {
+  if ((N = get_argument (argc, argv, "-all"))) {
     remove_argument (N, &argc, argv);
     Select = FALSE;
@@ -43,5 +43,5 @@
   /* image type (dark, flat, bias, etc) */
   CalibrationData = FALSE;
-  if (N = get_argument (argc, argv, "-cal")) {
+  if ((N = get_argument (argc, argv, "-cal"))) {
     remove_argument (N, &argc, argv);
     CalibrationData = TRUE;
Index: /trunk/Ohana/src/imregister/src/imphotmerge.c
===================================================================
--- /trunk/Ohana/src/imregister/src/imphotmerge.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/imphotmerge.c	(revision 2803)
@@ -2,7 +2,7 @@
 
 Image *LoadImageTable (FILE *f, Header *header, int *nimage);
-static char *version = "imphotcopy $Revision: 1.1 $";
+static char *version = "imphotcopy $Revision: 1.2 $";
 
-main (int argc, char **argv) {
+int main (int argc, char **argv) {
  
   Header header, theader;
@@ -35,5 +35,6 @@
   /* select by image photcode */
   PhotCodeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-photcode")) {
+  PHOTCODE = 0;
+  if ((N = get_argument (argc, argv, "-photcode"))) {
     remove_argument (N, &argc, argv);
     if (!(PHOTCODE = GetPhotcodeCodebyName (argv[N]))) {
@@ -47,5 +48,6 @@
   /* string in image name */
   NameSelect = (char *) NULL;
-  if (N = get_argument (argc, argv, "-name")) {
+  NameSelectLength = 0;
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     NameSelect = strcreate (argv[N]);
@@ -55,5 +57,5 @@
 
   FitsOutput = (char *) NULL;
-  if (N = get_argument (argc, argv, "-fits")) {
+  if ((N = get_argument (argc, argv, "-fits"))) {
     remove_argument (N, &argc, argv);
     FitsOutput = strcreate (argv[N]);
@@ -62,5 +64,5 @@
 
   VERBOSE = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     VERBOSE = TRUE;
Index: /trunk/Ohana/src/imregister/src/imphotsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/src/imphotsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/imphotsearch.c	(revision 2803)
@@ -2,7 +2,9 @@
 
 static char PhotError[] = "unknown";
-static char *version = "imphotsearch $Revision: 1.3 $";
-
-main (int argc, char **argv) {
+static char *version = "imphotsearch $Revision: 1.4 $";
+
+int DumpFitsTable (char *filename, Image *image, int Nentry, int *index, int Nkeep);
+
+int main (int argc, char **argv) {
  
   FILE *f;
@@ -12,5 +14,5 @@
   int Nimage, nimage, *index, Ntimes;
   unsigned long *tstart, *tstop;
-  int VERBOSE, FORCE_READ, PHOTCODE, dbstate, lockstate;
+  int VERBOSE, FORCE_READ, PHOTCODE, dbstate;
   Image *image;
   int PhotCodeSelect, Nin;
@@ -38,5 +40,6 @@
   /* select by image photcode */
   PhotCodeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-photcode")) {
+  PHOTCODE = 0;
+  if ((N = get_argument (argc, argv, "-photcode"))) {
     remove_argument (N, &argc, argv);
     if (!(PHOTCODE = GetPhotcodeCodebyName (argv[N]))) {
@@ -50,5 +53,6 @@
   /* string in image name */
   NameSelect = (char *) NULL;
-  if (N = get_argument (argc, argv, "-name")) {
+  NameSelectLength = 0;
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     NameSelect = strcreate (argv[N]);
@@ -59,5 +63,6 @@
   /* string in image name */
   CodeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-code")) {
+  Code = 0;
+  if ((N = get_argument (argc, argv, "-code"))) {
     CodeSelect = TRUE;
     remove_argument (N, &argc, argv);
@@ -67,5 +72,5 @@
 
   FitsOutput = (char *) NULL;
-  if (N = get_argument (argc, argv, "-fits")) {
+  if ((N = get_argument (argc, argv, "-fits"))) {
     remove_argument (N, &argc, argv);
     FitsOutput = strcreate (argv[N]);
@@ -74,5 +79,5 @@
 
   VERBOSE = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     VERBOSE = TRUE;
@@ -80,5 +85,5 @@
 
   FORCE_READ = FALSE;
-  if (N = get_argument (argc, argv, "-force")) {
+  if ((N = get_argument (argc, argv, "-force"))) {
     remove_argument (N, &argc, argv);
     FORCE_READ = TRUE;
@@ -131,5 +136,5 @@
     exit (1);
   } 
-  fclearlockfile (dBFile, f, lockstate, &dbstate);
+  fclearlockfile (dBFile, f, LCK_SOFT, &dbstate);
 
   /* allocate space for reference lists */
@@ -176,5 +181,5 @@
 }
 
-DumpFitsTable (char *filename, Image *image, int Nentry, int *index, int Nkeep) {
+int DumpFitsTable (char *filename, Image *image, int Nentry, int *index, int Nkeep) {
   
   Header header, theader;
Index: /trunk/Ohana/src/imregister/src/imphotset.c
===================================================================
--- /trunk/Ohana/src/imregister/src/imphotset.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/imphotset.c	(revision 2803)
@@ -2,9 +2,9 @@
 
 static char PhotError[] = "unknown";
-static char *version = "imphotset $Revision: 1.1 $";
+static char *version = "imphotset $Revision: 1.2 $";
 
 Image *LoadImageTable (FILE *f, Header *header, int *nimage);
 
-main (int argc, char **argv) {
+int main (int argc, char **argv) {
  
   Header header;
@@ -42,5 +42,6 @@
   /* select by image photcode */
   PhotCodeSelect = FALSE;
-  if (N = get_argument (argc, argv, "-photcode")) {
+  photcode = NULL;
+  if ((N = get_argument (argc, argv, "-photcode"))) {
     remove_argument (N, &argc, argv);
     if ((photcode = GetPhotcodebyName (argv[N])) == NULL) {
@@ -54,5 +55,6 @@
   /* select by image name */
   NameSelect = (char *) NULL;
-  if (N = get_argument (argc, argv, "-name")) {
+  NameSelectLength = 0;
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     NameSelect = strcreate (argv[N]);
@@ -63,5 +65,6 @@
   /* desired action */
   ModifyFlag = FALSE;
-  if (N = get_argument (argc, argv, "-flag")) {
+  ModifyValue = ModifyEntry = NULL;
+  if ((N = get_argument (argc, argv, "-flag"))) {
     remove_argument (N, &argc, argv);
     ModifyEntry = strcreate (argv[N]);
@@ -73,5 +76,5 @@
 
   VERBOSE = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     VERBOSE = TRUE;
Index: /trunk/Ohana/src/imregister/src/imregister.c
===================================================================
--- /trunk/Ohana/src/imregister/src/imregister.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/imregister.c	(revision 2803)
@@ -1,5 +1,5 @@
 # include "imregister.h"
 # include "imreg.h"
-static char *version = "imregister $Revision: 3.2 $";
+static char *version = "imregister $Revision: 3.3 $";
 
 int main (int argc, char **argv) {
@@ -12,4 +12,7 @@
   args (argc, argv);
   image = iminfo (argv[1]);
+
+  Nnew = 0;
+  pimage = NULL;
 
   /* define new entries (pimage, Nnew) */
Index: /trunk/Ohana/src/imregister/src/imsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/src/imsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/imsearch.c	(revision 2803)
@@ -1,5 +1,5 @@
 # include "imregister.h"
 # include "imreg.h"
-static char *version = "imsearch $Revision: 3.1 $";
+static char *version = "imsearch $Revision: 3.2 $";
 
 int main (int argc, char **argv) {
@@ -16,4 +16,5 @@
   if (!status) {
     close_db ();
+    fprintf (stderr, "database missing or empty\n");
     exit (0);
   }
Index: /trunk/Ohana/src/imregister/src/imstatreg.c
===================================================================
--- /trunk/Ohana/src/imregister/src/imstatreg.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/imstatreg.c	(revision 2803)
@@ -1,12 +1,11 @@
 # include "imregister.h"
 # include "imreg.h"
-static char *version = "imstatreg $Revision: 3.6 $";
+static char *version = "imstatreg $Revision: 3.7 $";
 
 int main (int argc, char **argv) {
  
   RegImage *image;
-  float *dtime;
-  int i, *match, Nmatch, status, child, Nentry;
-  char *TempDB, *LogFile, *ccdname;
+  int *match, Nmatch, status, child, Nentry;
+  char *TempDB, *LogFile;
   FILE *f;
 
@@ -25,5 +24,5 @@
 
   /* fork in background */
-  if (child = fork ()) {
+  if ((child = fork ())) {
     if (child == -1) {
       fprintf (stderr, "error forking imstatreg -daemon \n");
Index: /trunk/Ohana/src/imregister/src/photcode.c
===================================================================
--- /trunk/Ohana/src/imregister/src/photcode.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/photcode.c	(revision 2803)
@@ -1,11 +1,10 @@
 # include "imregister.h"
-static char *version = "photcode $Revision: 3.0 $";
+static char *version = "photcode $Revision: 3.1 $";
 
 int main (int argc, char **argv) {
 
   Header header;
-  char detector[80], filter[80], FilterList[256], *ID;
+  char detector[80], filter[80], *ID;
   int i, ccd, VERBOSE, N, Nfilter;
-  char *photname;
 
   get_version (argc, argv, version);
@@ -15,5 +14,5 @@
 
   VERBOSE = TRUE;
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     remove_argument (N, &argc, argv);
     VERBOSE = FALSE;
Index: /trunk/Ohana/src/imregister/src/photreg.c
===================================================================
--- /trunk/Ohana/src/imregister/src/photreg.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/photreg.c	(revision 2803)
@@ -1,7 +1,7 @@
 # include "imregister.h"
 # include "photreg.h"
-static char *version = "photreg $Revision: 1.1 $";
+static char *version = "photreg $Revision: 1.2 $";
 
-main (int argc, char **argv) {
+int main (int argc, char **argv) {
  
   int status;
Index: /trunk/Ohana/src/imregister/src/photsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/src/photsearch.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/photsearch.c	(revision 2803)
@@ -1,7 +1,7 @@
 # include "imregister.h"
 # include "photreg.h"
-static char *version = "photsearch $Revision: 1.1 $";
+static char *version = "photsearch $Revision: 1.2 $";
 
-main (int argc, char **argv) {
+int main (int argc, char **argv) {
 
   int status, Nmatch;
@@ -24,3 +24,4 @@
 
   OutputSubset (match, Nmatch);
+  exit (0);
 }
Index: /trunk/Ohana/src/imregister/src/spregister.c
===================================================================
--- /trunk/Ohana/src/imregister/src/spregister.c	(revision 2802)
+++ /trunk/Ohana/src/imregister/src/spregister.c	(revision 2803)
@@ -1,11 +1,10 @@
 # include "imregister.h"
 # include "spreg.h"
-static char *version = "spregister $Revision: 1.2 $";
+static char *version = "spregister $Revision: 1.3 $";
 
 int main (int argc, char **argv) {
  
   Spectrum *spectrum, *pspectrum;
-  int i, status, Nnew;
-  float *dtime;
+  int status, Nnew;
 
   get_version (argc, argv, version);
@@ -26,4 +25,5 @@
   }
   append_db (pspectrum, Nnew);
+  exit (0);
 }
 
