Index: /trunk/Ohana/src/imregister/spreg/args.spregister.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/args.spregister.c	(revision 2767)
+++ /trunk/Ohana/src/imregister/spreg/args.spregister.c	(revision 2768)
@@ -12,4 +12,10 @@
     remove_argument (N, &argc, argv);
     NoReg = TRUE;
+  }
+
+  DUMP = FALSE;
+  if (N = get_argument (argc, argv, "-dump")) {
+    remove_argument (N, &argc, argv);
+    DUMP = TRUE;
   }
 
@@ -30,18 +36,8 @@
   IMSORT = FALSE;
 
-  if (strstr (argv[0], "spregister") != (char *) NULL) {
-    if (argc != 2) {
-      fprintf (stderr, "ERROR: Usage: spregister (filename) [-noreg]\n");
-      exit (1);
-    }
-    return (TRUE);
+  if (argc != 2) {
+    fprintf (stderr, "ERROR: Usage: spregister (filename) [-noreg]\n");
+    exit (1);
   }
-  if (strstr (argv[0], "showspinfo") != (char *) NULL) {
-    if (argc != 2) {
-      fprintf (stderr, "ERROR: Usage: showspinfo (filename)\n");
-      exit (1);
-    }
-    return (TRUE);
-  }
-  return (FALSE);
+  return (TRUE);
 }
Index: /trunk/Ohana/src/imregister/spreg/db.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/db.c	(revision 2767)
+++ /trunk/Ohana/src/imregister/spreg/db.c	(revision 2768)
@@ -139,5 +139,5 @@
 
   ConvertStruct ((char *) new, sizeof (Spectrum), Nnew, "spectrum");
-  fits_vadd_rows (&vtable, new, Nnew, sizeof(Spectrum));
+  fits_vadd_rows (&vtable, (char *) new, Nnew, sizeof(Spectrum));
 
   /* write subset to file */
Index: /trunk/Ohana/src/imregister/spreg/define.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/define.c	(revision 2767)
+++ /trunk/Ohana/src/imregister/spreg/define.c	(revision 2768)
@@ -13,11 +13,4 @@
   /* define bintable header  layout */
   fits_create_table_header (theader, "BINTABLE", "SPECTRUM_DATABASE");
-
-  fits_define_bintable_column (theader, "32A",  "FILENAME",   "filename in db",        "",                              1.0, 0.0);
-  fits_define_bintable_column (theader, "64A",  "PATHNAME",   "fullpath in db",        "",                              1.0, 0.0);
-  fits_define_bintable_column (theader, "16A",  "INSTRUMENT", "instrument",            "",                              1.0, 0.0);
-  fits_define_bintable_column (theader, "16A",  "TELESCOPE",  "telescope",             "",                              1.0, 0.0);
-  fits_define_bintable_column (theader, "16A",  "OBJNAME",    "object name",           "",                              1.0, 0.0);
-  fits_define_bintable_column (theader, "16A",  "EXTNAME",    "extname in file",       "",                              1.0, 0.0);
 
   fits_define_bintable_column (theader, "E",    "RA",         "ra",                    "degrees",                       1.0, 0.0); 
@@ -38,4 +31,12 @@
   fits_define_bintable_column (theader, "13A",  "EXTRA",      "room for expansion",    "",                              1.0, 0.0);
 
+  fits_define_bintable_column (theader, "64A",  "PATHNAME",   "fullpath in db",        "",                              1.0, 0.0);
+  fits_define_bintable_column (theader, "32A",  "FILENAME",   "filename in db",        "",                              1.0, 0.0);
+  fits_define_bintable_column (theader, "16A",  "EXTNAME",    "extname in file",       "",                              1.0, 0.0);
+
+  fits_define_bintable_column (theader, "16A",  "INSTRUMENT", "instrument",            "",                              1.0, 0.0);
+  fits_define_bintable_column (theader, "16A",  "TELESCOPE",  "telescope",             "",                              1.0, 0.0);
+  fits_define_bintable_column (theader, "16A",  "OBJNAME",    "object name",           "",                              1.0, 0.0);
+
   /* create table, add data values */
   fits_create_table (theader, table);
Index: /trunk/Ohana/src/imregister/spreg/fits_scan_nchar.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/fits_scan_nchar.c	(revision 2767)
+++ /trunk/Ohana/src/imregister/spreg/fits_scan_nchar.c	(revision 2768)
@@ -5,5 +5,5 @@
 int fits_scan_nchar (Header *header, int size, char *field, int N,...) {
 
-  char *tmpstr, *outstr; 
+  char tmpstr[160], *outstr; 
   va_list argp;
   int status;
@@ -13,11 +13,15 @@
   va_end (argp);
 
-  ALLOCATE (tmpstr, char, size); 
   status = fits_scan (header, field, "%s", N, tmpstr); 
   strncpy (outstr, tmpstr, size - 1);
   outstr[size-1] = 0; 
 
-  free (tmpstr); 
   return (status);
 } 
      
+void warn_scan_nchar (Header *header, int size, char *field, int N, void *var) {
+  if (!fits_scan_nchar (header, size, field, N, var)) {
+    fprintf (stderr, "missing %s not found in header\n", field);
+  }
+}
+
Index: /trunk/Ohana/src/imregister/spreg/output.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/output.c	(revision 2767)
+++ /trunk/Ohana/src/imregister/spreg/output.c	(revision 2768)
@@ -96,26 +96,26 @@
 
   /* define table layout */
-  fits_define_table_column (&theader, "A32",  "FILENAME",   "filename in db",        "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "A64",  "PATHNAME",   "fullpath in db",        "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "A16",  "INSTRUMENT", "instrument",            "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "A16",  "TELESCOPE",  "telescope",             "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "A16",  "OBJNAME",    "object name",           "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "A16",  "EXTNAME",    "extname in file",       "",                              1.0, 0.0);
+  fits_define_table_column (&theader, "A32",  "FILENAME",   "filename in db",        "");
+  fits_define_table_column (&theader, "A64",  "PATHNAME",   "fullpath in db",        "");
+  fits_define_table_column (&theader, "A16",  "INSTRUMENT", "instrument",            "");
+  fits_define_table_column (&theader, "A16",  "TELESCOPE",  "telescope",             "");
+  fits_define_table_column (&theader, "A16",  "OBJNAME",    "object name",           "");
+  fits_define_table_column (&theader, "A16",  "EXTNAME",    "extname in file",       "");
 
-  fits_define_table_column (&theader, "F10.6","RA",         "ra",                    "degrees",                       1.0, 0.0); 
-  fits_define_table_column (&theader, "F10.6","DEC",        "dec",                   "degrees",                       1.0, 0.0); 
-  fits_define_table_column (&theader, "F6.1", "EXPTIME",    "exposure time",         "seconds",                       1.0, 0.0); 
-  fits_define_table_column (&theader, "F5.3", "AIRMASS",    "airmass",               "",                              1.0, 0.0); 
-  fits_define_table_column (&theader, "F7.2", "Ws",         "spectral range start",  "Angstrom",                      1.0, 0.0); 
-  fits_define_table_column (&theader, "F7.2", "We",         "spectral range end",    "Angstrom",                      1.0, 0.0); 
-  fits_define_table_column (&theader, "F7.2", "dW",         "spectral resolution",   "Angstrom / pix",                1.0, 0.0); 
+  fits_define_table_column (&theader, "F10.6","RA",         "ra",                    "degrees"); 
+  fits_define_table_column (&theader, "F10.6","DEC",        "dec",                   "degrees"); 
+  fits_define_table_column (&theader, "F6.1", "EXPTIME",    "exposure time",         "seconds"); 
+  fits_define_table_column (&theader, "F5.3", "AIRMASS",    "airmass",               ""); 
+  fits_define_table_column (&theader, "F7.2", "Ws",         "spectral range start",  "Angstrom"); 
+  fits_define_table_column (&theader, "F7.2", "We",         "spectral range end",    "Angstrom"); 
+  fits_define_table_column (&theader, "F7.2", "dW",         "spectral resolution",   "Angstrom / pix"); 
 
-  fits_define_table_column (&theader, "I3",   "NSPECTRA",   "number of spectra",     "",                              1.0, 0.0); 
+  fits_define_table_column (&theader, "I3",   "NSPECTRA",   "number of spectra",     ""); 
   fits_define_table_column (&theader, "A20",  "OBS_TIME",   "time of observation",   "yyyy/mm/dd,hh:mm:ss");
   fits_define_table_column (&theader, "A20",  "REG_TIME",   "time of registration",  "yyyy/mm/dd,hh:mm:ss");
 
-  fits_define_table_column (&theader, "I2",   "MODE",       "phu/mef/ext",           "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "I2",   "STATE",      "raw/wav/flx/etc",       "",                              1.0, 0.0);
-  fits_define_table_column (&theader, "I3",   "FLAG",       "status flags",          "",                              1.0, 0.0);
+  fits_define_table_column (&theader, "I2",   "MODE",       "phu/mef/ext",           "");
+  fits_define_table_column (&theader, "I2",   "STATE",      "raw/wav/flx/etc",       "");
+  fits_define_table_column (&theader, "I3",   "FLAG",       "status flags",          "");
 
   /* create table, add data values */
Index: /trunk/Ohana/src/imregister/spreg/showinfo.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/showinfo.c	(revision 2768)
+++ /trunk/Ohana/src/imregister/spreg/showinfo.c	(revision 2768)
@@ -0,0 +1,34 @@
+# include "imregister.h"
+# include "spreg.h"
+
+void showinfo (Spectrum *spec) {
+
+  char *obstime, *regtime;
+
+  fprintf (stderr, "\n");
+  fprintf (stderr, "filename: %s\n",   spec[0].filename);
+  fprintf (stderr, "pathname: %s\n",   spec[0].pathname);
+  fprintf (stderr, "extname:  %s\n\n",   spec[0].extname);
+
+  fprintf (stderr, "instrument: %s\n\n", spec[0].instrument);
+  fprintf (stderr, "telescope: %s\n\n", spec[0].telescope);
+
+
+  fprintf (stderr, "mode: %d, state: %d, flag: %x\n\n", spec[0].mode, spec[0].state, spec[0].flag);
+
+  fprintf (stderr, "exptime: %f, airmass: %f\n", spec[0].exptime, spec[0].airmass);
+  fprintf (stderr, "ra: %f, dec: %f\n", spec[0].ra, spec[0].dec);
+  fprintf (stderr, "objname: %s\n\n", spec[0].objname);
+
+  fprintf (stderr, "Ws: %f, We: %f, dW: %f\n", spec[0].Ws, spec[0].We, spec[0].dW);
+  fprintf (stderr, "Nspec: %d\n", spec[0].Nspec);
+
+  obstime = sec_to_date (spec[0].obstime);
+  regtime = sec_to_date (spec[0].regtime);
+
+  fprintf (stderr, "obstime: %s\n", obstime);
+  fprintf (stderr, "regtime: %s\n", regtime);
+
+  exit (0);
+
+}
Index: /trunk/Ohana/src/imregister/spreg/spinfo.c
===================================================================
--- /trunk/Ohana/src/imregister/spreg/spinfo.c	(revision 2767)
+++ /trunk/Ohana/src/imregister/spreg/spinfo.c	(revision 2768)
@@ -55,23 +55,27 @@
   spectrum[0].regtime = now.tv_sec;
 
-  fits_scan_nchar (&header, 15, ObjectKeyword,    1, spectrum[0].objname);
-  fits_scan_nchar (&header, 15, CameraKeyword,    1, spectrum[0].instrument);
-  fits_scan_nchar (&header, 15, TelescopeKeyword, 1, spectrum[0].telescope);
+  warn_scan_nchar (&header, 16, ObjectKeyword,    1, spectrum[0].objname);
+  warn_scan_nchar (&header, 16, CameraKeyword,    1, spectrum[0].instrument);
+  warn_scan_nchar (&header, 16, TelescopeKeyword, 1, spectrum[0].telescope);
 
-  fits_scan (&header, ExptimeKeyword,    "%f", 1, &spectrum[0].exptime);
-  fits_scan (&header, AirmassKeyword,    "%f", 1, &spectrum[0].airmass);
+  clean_spaces (&spectrum[0].objname);
+  clean_spaces (&spectrum[0].instrument);
+  clean_spaces (&spectrum[0].telescope);
+
+  warn_scan (&header, ExptimeKeyword,    "%f", 1, &spectrum[0].exptime);
+  warn_scan (&header, AirmassKeyword,    "%f", 1, &spectrum[0].airmass);
 
   /* grab coordinates from header */
   if (RADecDegKeyword[0] & DECDecDegKeyword[0]) {
     /* expect RA & DEC in decimal degrees */
-    fits_scan (&header, RADecDegKeyword,  "%f", 1, &spectrum[0].ra);
-    fits_scan (&header, DECDecDegKeyword, "%f", 1, &spectrum[0].dec);
+    warn_scan (&header, RADecDegKeyword,  "%f", 1, &spectrum[0].ra);
+    warn_scan (&header, DECDecDegKeyword, "%f", 1, &spectrum[0].dec);
   } else {
     if (RASexigKeyword[0] & DECSexigKeyword[0]) {
       /* expect RA & DEC in hh:mm:ss, dd:mm:ss */
-      fits_scan (&header, RASexigKeyword,  "%s", 1, line);
+      warn_scan (&header, RASexigKeyword,  "%s", 1, line);
       dms_to_ddd (&tmp, line);
       spectrum[0].ra = 15*tmp;
-      fits_scan (&header, DECSexigKeyword, "%s", 1, &line);
+      warn_scan (&header, DECSexigKeyword, "%s", 1, &line);
       dms_to_ddd (&tmp, line);
       spectrum[0].dec = tmp;
@@ -88,7 +92,19 @@
   spectrum[0].flag  = 0;
   
-  spectrum[0].Ws = 0;
-  spectrum[0].We = 0;
-  spectrum[0].dW = 0;
+  { 
+    int Nx;
+    float crpix, crval, cd11;
+
+    warn_scan (&header, "CRPIX1", "%f", 1, &crpix);
+    warn_scan (&header, "CRVAL1", "%f", 1, &crval);
+    if (!fits_scan (&header, "CDELT1", "%f", 1, &cd11))
+      warn_scan (&header, "CD1_1", "%f", 1, &cd11);
+    
+    fits_scan (&header, "NAXIS1", "%d", 1, &Nx);
+
+    spectrum[0].Ws = (1  - crpix)*cd11 + crval;
+    spectrum[0].We = (Nx - crpix)*cd11 + crval;
+    spectrum[0].dW = cd11;
+  }
   
   strcpy (spectrum[0].extname, "PHU");
