Index: trunk/Ohana/src/opihi/cmd.astro/cgrid.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/cgrid.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/cgrid.c	(revision 7080)
@@ -16,13 +16,12 @@
   int NorthPole, SouthPole, N, OnPic, LOnPic, status, NELEMENTS, First;
   Graphdata graphmode;
-  int Ngraph;
-
-  Ngraph = 0;
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
 
   if (argc != 1) {
-    fprintf (stderr, "USAGE: cgrid\n");
+    fprintf (stderr, "USAGE: cgrid [style]\n");
     return (FALSE);
   }
+  SetGraph (graphmode);
 
   /* are we plotting one of the poles? */
Index: trunk/Ohana/src/opihi/cmd.astro/cplot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/cplot.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/cplot.c	(revision 7080)
@@ -3,16 +3,16 @@
 int cplot (int argc, char **argv) {
   
-  int i, Npts, Ngraph;
+  int i, Npts;
   float *x, *y, *r, *d, Rmin, Rmax;
   Vector Xvec, Yvec, *xvec, *yvec;
   Graphdata graphmode;
 
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
+
   if (argc != 3) {
-    fprintf (stderr, "USAGE: cplot <ra> <dec>\n");
+    fprintf (stderr, "USAGE: cplot <ra> <dec> [style]\n");
     return (FALSE);
   }
-  
-  Ngraph = 0;
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+  SetGraph (graphmode);
 
   Rmin = graphmode.coords.crval1 - 182.0;
@@ -45,5 +45,4 @@
   }
   
-  
   Npts = Xvec.Nelements;
   graphmode.etype = 0;
@@ -56,5 +55,4 @@
     
   return (TRUE);
-
 }
 
Index: trunk/Ohana/src/opihi/cmd.astro/czplot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/czplot.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/czplot.c	(revision 7080)
@@ -3,5 +3,5 @@
 int czplot (int argc, char **argv) {
   
-  int i, N, Npts, Ngraph;
+  int i, Npts;
   double min, range, Rmin, Rmax;
   float *in, *out, *r, *d, *x, *y;
@@ -9,11 +9,5 @@
   Graphdata graphmode;
 
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
 
   if (argc != 6) {
@@ -21,4 +15,5 @@
     return (FALSE);
   }
+  SetGraph (graphmode);
 
   min = atof(argv[4]);
Index: trunk/Ohana/src/opihi/cmd.astro/getvel.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/getvel.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/getvel.c	(revision 7080)
@@ -33,11 +33,11 @@
 
   /* we expect the input image to have units of velocity, lattitude, and longitude */
-  fits_scan (&buf[0].header, "CRVAL1", "%lf", 1, &Vo);
-  fits_scan (&buf[0].header, "CDELT1", "%lf", 1, &dV);
-  fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &xo);
-  fits_scan (&buf[0].header, "CRVAL2", "%lf", 1, &Bo);
-  fits_scan (&buf[0].header, "CDELT2", "%lf", 1, &dB);
-  fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &yo);
-  fits_scan (&buf[0].header, "CRVAL3", "%lf", 1, &L);
+  gfits_scan (&buf[0].header, "CRVAL1", "%lf", 1, &Vo);
+  gfits_scan (&buf[0].header, "CDELT1", "%lf", 1, &dV);
+  gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &xo);
+  gfits_scan (&buf[0].header, "CRVAL2", "%lf", 1, &Bo);
+  gfits_scan (&buf[0].header, "CDELT2", "%lf", 1, &dB);
+  gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &yo);
+  gfits_scan (&buf[0].header, "CRVAL3", "%lf", 1, &L);
   Vo *= 0.001;
   dV *= 0.001;
Index: trunk/Ohana/src/opihi/cmd.astro/medianmap.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/medianmap.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/medianmap.c	(revision 7080)
@@ -47,16 +47,16 @@
   /* duplicate the (in) buffer to the (out), with different size */
   /* this should probably be a function in misc */
-  fits_free_matrix (&out[0].matrix);
-  fits_free_header (&out[0].header);
+  gfits_free_matrix (&out[0].matrix);
+  gfits_free_header (&out[0].header);
   out[0].bitpix = in[0].bitpix;
   out[0].unsign = in[0].unsign;
   out[0].bscale = in[0].bscale;
   out[0].bzero  = in[0].bzero;
-  fits_copy_header (&in[0].header, &out[0].header);
-  fits_modify (&out[0].header, "NAXIS1", "%d", 1, Nx);
-  fits_modify (&out[0].header, "NAXIS2", "%d", 1, Ny);
+  gfits_copy_header (&in[0].header, &out[0].header);
+  gfits_modify (&out[0].header, "NAXIS1", "%d", 1, Nx);
+  gfits_modify (&out[0].header, "NAXIS2", "%d", 1, Ny);
   out[0].header.Naxis[0] = Nx;
   out[0].header.Naxis[1] = Ny;
-  fits_create_matrix (&out[0].header, &out[0].matrix);
+  gfits_create_matrix (&out[0].header, &out[0].matrix);
 
   In = (float *) in[0].matrix.buffer;
Index: trunk/Ohana/src/opihi/cmd.astro/polar.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/polar.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/polar.c	(revision 7080)
@@ -32,18 +32,18 @@
 
   /* we expect the output image to have units of longitude and distance */
-  fits_scan (&in[0].header, "CRVAL1", "%lf", 1, &Lo);
-  fits_scan (&in[0].header, "CDELT1", "%lf", 1, &dL);
-  fits_scan (&in[0].header, "CRPIX1", "%lf", 1, &xo);
-  fits_scan (&in[0].header, "CRVAL2", "%lf", 1, &Do);
-  fits_scan (&in[0].header, "CDELT2", "%lf", 1, &dD);
-  fits_scan (&in[0].header, "CRPIX2", "%lf", 1, &yo);
+  gfits_scan (&in[0].header, "CRVAL1", "%lf", 1, &Lo);
+  gfits_scan (&in[0].header, "CDELT1", "%lf", 1, &dL);
+  gfits_scan (&in[0].header, "CRPIX1", "%lf", 1, &xo);
+  gfits_scan (&in[0].header, "CRVAL2", "%lf", 1, &Do);
+  gfits_scan (&in[0].header, "CDELT2", "%lf", 1, &dD);
+  gfits_scan (&in[0].header, "CRPIX2", "%lf", 1, &yo);
 
   /* we expect the input image to have units of distance X and Y */
-  fits_scan (&out[0].header, "CRVAL1", "%lf", 1, &Mo);
-  fits_scan (&out[0].header, "CDELT1", "%lf", 1, &dM);
-  fits_scan (&out[0].header, "CRPIX1", "%lf", 1, &Xo);
-  fits_scan (&out[0].header, "CRVAL2", "%lf", 1, &No);
-  fits_scan (&out[0].header, "CDELT2", "%lf", 1, &dN);
-  fits_scan (&out[0].header, "CRPIX2", "%lf", 1, &Yo);
+  gfits_scan (&out[0].header, "CRVAL1", "%lf", 1, &Mo);
+  gfits_scan (&out[0].header, "CDELT1", "%lf", 1, &dM);
+  gfits_scan (&out[0].header, "CRPIX1", "%lf", 1, &Xo);
+  gfits_scan (&out[0].header, "CRVAL2", "%lf", 1, &No);
+  gfits_scan (&out[0].header, "CDELT2", "%lf", 1, &dN);
+  gfits_scan (&out[0].header, "CRPIX2", "%lf", 1, &Yo);
 
   Vin  = (float *)in[0].matrix.buffer;
Index: trunk/Ohana/src/opihi/cmd.astro/rotcurve.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/rotcurve.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.astro/rotcurve.c	(revision 7080)
@@ -52,21 +52,21 @@
 
   /* we expect the input image to have units of velocity, lattitude, and longitude */
-  fits_scan (&in[0].header, "CRVAL1", "%lf", 1, &Vo);
-  fits_scan (&in[0].header, "CDELT1", "%lf", 1, &dV);
-  fits_scan (&in[0].header, "CRPIX1", "%lf", 1, &xo);
-  fits_scan (&in[0].header, "CRVAL2", "%lf", 1, &Bo);
-  fits_scan (&in[0].header, "CDELT2", "%lf", 1, &dB);
-  fits_scan (&in[0].header, "CRPIX2", "%lf", 1, &yo);
-  fits_scan (&in[0].header, "CRVAL3", "%lf", 1, &L);
+  gfits_scan (&in[0].header, "CRVAL1", "%lf", 1, &Vo);
+  gfits_scan (&in[0].header, "CDELT1", "%lf", 1, &dV);
+  gfits_scan (&in[0].header, "CRPIX1", "%lf", 1, &xo);
+  gfits_scan (&in[0].header, "CRVAL2", "%lf", 1, &Bo);
+  gfits_scan (&in[0].header, "CDELT2", "%lf", 1, &dB);
+  gfits_scan (&in[0].header, "CRPIX2", "%lf", 1, &yo);
+  gfits_scan (&in[0].header, "CRVAL3", "%lf", 1, &L);
   Vo *= 0.001;
   dV *= 0.001;
 
   /* we expect the output image to have units of longitude and distance */
-  fits_scan (&out[0].header, "CRVAL1", "%lf", 1, &Lo);
-  fits_scan (&out[0].header, "CDELT1", "%lf", 1, &dL);
-  fits_scan (&out[0].header, "CRPIX1", "%lf", 1, &Xo);
-  fits_scan (&out[0].header, "CRVAL2", "%lf", 1, &Do);
-  fits_scan (&out[0].header, "CDELT2", "%lf", 1, &dD);
-  fits_scan (&out[0].header, "CRPIX2", "%lf", 1, &Yo);
+  gfits_scan (&out[0].header, "CRVAL1", "%lf", 1, &Lo);
+  gfits_scan (&out[0].header, "CDELT1", "%lf", 1, &dL);
+  gfits_scan (&out[0].header, "CRPIX1", "%lf", 1, &Xo);
+  gfits_scan (&out[0].header, "CRVAL2", "%lf", 1, &Do);
+  gfits_scan (&out[0].header, "CDELT2", "%lf", 1, &dD);
+  gfits_scan (&out[0].header, "CRPIX2", "%lf", 1, &Yo);
 
   while (L >= 360) {L -= 360.0;}
Index: trunk/Ohana/src/opihi/cmd.data/create.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/create.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/create.c	(revision 7080)
@@ -55,6 +55,6 @@
 
   if ((buf = SelectBuffer (argv[1], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
 
   buf[0].bitpix = 16;
@@ -72,6 +72,6 @@
   buf[0].header.Naxis[1] = atoi (argv[3]);
 
-  fits_create_header (&buf[0].header);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_create_header (&buf[0].header);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
 
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/cursor.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/cursor.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/cursor.c	(revision 7080)
@@ -58,5 +58,5 @@
     if (IsImage) {
       if (buf != NULL) { 
-	Z = fits_get_matrix_value (&buf[0].matrix, (int) X, (int) Y);
+	Z = gfits_get_matrix_value (&buf[0].matrix, (int) X, (int) Y);
       }
       fprintf (GetOutfile(), "%s %f %f  %f\n", key, X, Y, Z);
Index: trunk/Ohana/src/opihi/cmd.data/dimenup.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/dimenup.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/dimenup.c	(revision 7080)
@@ -28,6 +28,6 @@
 
   /* I should encapsulate this in a create_default_buffer */
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
   buf[0].header.bitpix = buf[0].bitpix = -32;
   buf[0].header.unsign = buf[0].unsign = FALSE;
@@ -37,6 +37,6 @@
   buf[0].header.Naxis[0] = Nx;
   buf[0].header.Naxis[1] = Ny;
-  fits_create_header (&buf[0].header);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_create_header (&buf[0].header);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
 
   out = (float *) buf[0].matrix.buffer;
Index: trunk/Ohana/src/opihi/cmd.data/dot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/dot.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/dot.c	(revision 7080)
@@ -3,53 +3,8 @@
 int dot (int argc, char **argv) {
   
-  int N, Ngraph;
   Graphdata graphmode;
   float x, y;
 
-  /* choose the appropriate graphing window */
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
-
-  /* evaluate various plotting options */
-  if ((N = get_argument (argc, argv, "-lt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ltype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-lw"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.lweight = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-pt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ptype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "+eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = TRUE;
-  }
-  if ((N = get_argument (argc, argv, "-eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = FALSE;
-  }
-  if ((N = get_argument (argc, argv, "-sz"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.size = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-c"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.color = KapaColorByName (argv[N]);
-    if (graphmode.color == -1) return (FALSE);
-    remove_argument (N, &argc, argv);
-  }
-  graphmode.style = 2;
+  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
 
   if (argc != 3) {
@@ -63,5 +18,6 @@
   SetGraph (graphmode);
 
-  /* set errorbar mode (these are NOT sticky) */
+  /* set point style and errorbar mode (these are NOT sticky) */
+  graphmode.style = 2;
   graphmode.etype = 0;
 
Index: trunk/Ohana/src/opihi/cmd.data/extract.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/extract.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/extract.c	(revision 7080)
@@ -53,6 +53,6 @@
   if ((out = SelectBuffer (argv[2], OLDBUFFER, FALSE)) == NULL) {
     if ((out = SelectBuffer (argv[2], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-    fits_free_matrix (&out[0].matrix);
-    fits_free_header (&out[0].header);
+    gfits_free_matrix (&out[0].matrix);
+    gfits_free_header (&out[0].header);
 
     out[0].bitpix = in[0].bitpix;
@@ -60,10 +60,10 @@
     out[0].bscale = in[0].bscale;
     out[0].bzero  = in[0].bzero;
-    fits_copy_header (&in[0].header, &out[0].header);
-    fits_modify (&out[0].header, "NAXIS1", "%d", 1, Nx);
-    fits_modify (&out[0].header, "NAXIS2", "%d", 1, Ny);
+    gfits_copy_header (&in[0].header, &out[0].header);
+    gfits_modify (&out[0].header, "NAXIS1", "%d", 1, Nx);
+    gfits_modify (&out[0].header, "NAXIS2", "%d", 1, Ny);
     out[0].header.Naxis[0] = Nx;
     out[0].header.Naxis[1] = Ny;
-    fits_create_matrix (&out[0].header, &out[0].matrix);
+    gfits_create_matrix (&out[0].header, &out[0].matrix);
   } else {
     if ((out[0].header.Naxis[1] != Ny) || (out[0].header.Naxis[0] != Nx)) {
Index: trunk/Ohana/src/opihi/cmd.data/fft2d.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/fft2d.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/fft2d.c	(revision 7080)
@@ -32,8 +32,8 @@
 
   /* free up output space */
-  fits_free_matrix (&Ore[0].matrix);
-  fits_free_header (&Ore[0].header);
-  fits_free_matrix (&Oim[0].matrix);
-  fits_free_header (&Oim[0].header);
+  gfits_free_matrix (&Ore[0].matrix);
+  gfits_free_header (&Ore[0].header);
+  gfits_free_matrix (&Oim[0].matrix);
+  gfits_free_header (&Oim[0].header);
 
   /* get image dimensions, check value */
@@ -74,7 +74,7 @@
 
   /* fix up output headers (real) */
-  fits_copy_header (&Ire[0].header, &Ore[0].header);
-  fits_modify (&Ore[0].header, "NAXIS1", "%d", 1, Nx);
-  fits_modify (&Ore[0].header, "NAXIS2", "%d", 1, Ny);
+  gfits_copy_header (&Ire[0].header, &Ore[0].header);
+  gfits_modify (&Ore[0].header, "NAXIS1", "%d", 1, Nx);
+  gfits_modify (&Ore[0].header, "NAXIS2", "%d", 1, Ny);
   Ore[0].header.Naxis[0] = Nx;
   Ore[0].header.Naxis[1] = Ny;
@@ -83,10 +83,10 @@
   Ore[0].bscale = Ire[0].bscale;
   Ore[0].bzero  = Ire[0].bzero;
-  fits_create_matrix (&Ore[0].header, &Ore[0].matrix);
+  gfits_create_matrix (&Ore[0].header, &Ore[0].matrix);
 
   /* fix up output headers (imaginary) */
-  fits_copy_header (&Ire[0].header, &Oim[0].header);
-  fits_modify (&Oim[0].header, "NAXIS1", "%d", 1, Nx);
-  fits_modify (&Oim[0].header, "NAXIS2", "%d", 1, Ny);
+  gfits_copy_header (&Ire[0].header, &Oim[0].header);
+  gfits_modify (&Oim[0].header, "NAXIS1", "%d", 1, Nx);
+  gfits_modify (&Oim[0].header, "NAXIS2", "%d", 1, Ny);
   Oim[0].header.Naxis[0] = Nx;
   Oim[0].header.Naxis[1] = Ny;
@@ -95,5 +95,5 @@
   Oim[0].bscale = Ire[0].bscale;
   Oim[0].bzero  = Ire[0].bzero;
-  fits_create_matrix (&Oim[0].header, &Oim[0].matrix);
+  gfits_create_matrix (&Oim[0].header, &Oim[0].matrix);
 
   /* move data from working space to output buffers */
Index: trunk/Ohana/src/opihi/cmd.data/gridify.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 7080)
@@ -56,6 +56,6 @@
   free (bf[0].header.buffer);  /* ALLOCATEd in SelectBuffer */
   free (bf[0].matrix.buffer);  /* ALLOCATEd in SelectBuffer */
-  fits_create_header (&bf[0].header);
-  fits_create_matrix (&bf[0].header, &bf[0].matrix);
+  gfits_create_header (&bf[0].header);
+  gfits_create_matrix (&bf[0].header, &bf[0].matrix);
 
   ALLOCATE (val, float, Nx*Ny);
Index: trunk/Ohana/src/opihi/cmd.data/keyword.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/keyword.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/keyword.c	(revision 7080)
@@ -92,12 +92,12 @@
     switch (Wmode) {
     case STRING:
-      fits_modify (&buf[0].header, argv[2], "%s", 1, line);
+      gfits_modify (&buf[0].header, argv[2], "%s", 1, line);
       return (TRUE);
     case FLOAT:
       value = atof(line);
-      fits_modify (&buf[0].header, argv[2], "%lf", 1, value);
+      gfits_modify (&buf[0].header, argv[2], "%lf", 1, value);
       return (TRUE);
     case INT:
-      fits_modify (&buf[0].header, argv[2], "%d", 1, atoi(line));
+      gfits_modify (&buf[0].header, argv[2], "%d", 1, atoi(line));
       return (TRUE);
     case BOOLEAN:
@@ -107,11 +107,11 @@
       }
       ivalue = !strcasecmp (line, "T");
-      fits_modify (&buf[0].header, argv[2], "%t", 1, ivalue);
+      gfits_modify (&buf[0].header, argv[2], "%t", 1, ivalue);
       return (TRUE);
     case KEYCOMMENT:
-      fits_modify (&buf[0].header, argv[2], "%C", 1, line);
+      gfits_modify (&buf[0].header, argv[2], "%C", 1, line);
       return (TRUE);
     case COMMENT:
-      fits_modify (&buf[0].header, argv[2], "%S", 0, line);
+      gfits_modify (&buf[0].header, argv[2], "%S", 0, line);
       return (TRUE);
     }
@@ -119,5 +119,5 @@
   
   if (delete) {
-    fits_delete (&buf[0].header, argv[2], -1);
+    gfits_delete (&buf[0].header, argv[2], -1);
     return (TRUE);
   }
@@ -125,5 +125,5 @@
   /* grab the value in the given format, either a string or a digit */
   if (asfloat) {
-    status = fits_scan (&buf[0].header, argv[2], "%lf", 1, &value);
+    status = gfits_scan (&buf[0].header, argv[2], "%lf", 1, &value);
     if (!status) goto failure;
     if (argc == 4) 
@@ -135,5 +135,5 @@
 
   if (ascomment) {
-    status = fits_scan (&buf[0].header, argv[2], "%C", 1, line);
+    status = gfits_scan (&buf[0].header, argv[2], "%C", 1, line);
     if (!status) goto failure;
     if (argc == 4) 
@@ -145,5 +145,5 @@
 
   /* not-specified */
-  status = fits_scan (&buf[0].header, argv[2], "%s", 1, line);
+  status = gfits_scan (&buf[0].header, argv[2], "%s", 1, line);
   if (!status) goto failure;
   if (argc == 4) 
Index: trunk/Ohana/src/opihi/cmd.data/line.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/line.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/line.c	(revision 7080)
@@ -3,57 +3,9 @@
 int line (int argc, char **argv) {
   
-  int N, Npts, Ngraph;
+  int N, Npts;
   Graphdata graphmode;
   Vector *vecx, *vecy, *dxm, *dxp, *dym, *dyp;
 
-  /* choose the appropriate graphing window */
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
-
-  /* evaluate various plotting options */
-  if ((N = get_argument (argc, argv, "-lt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ltype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-lw"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.lweight = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-pt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ptype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "+eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = TRUE;
-  }
-  if ((N = get_argument (argc, argv, "-eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = FALSE;
-  }
-  if ((N = get_argument (argc, argv, "-sz"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.size = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-c"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.color = KapaColorByName (argv[N]);
-    if (graphmode.color == -1) return (FALSE);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-x"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.style = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
+  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
 
   /* decide on error bars */
@@ -84,6 +36,4 @@
     return (FALSE);
   }
-
-  /* set plotting options (these are sticky) */
   SetGraph (graphmode);
 
Index: trunk/Ohana/src/opihi/cmd.data/list_header.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/list_header.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/list_header.c	(revision 7080)
@@ -36,18 +36,18 @@
     bscale = buf[0].header.bscale;
     unsign = buf[0].header.unsign;
-    fits_free_header (&buf[0].header);
+    gfits_free_header (&buf[0].header);
     
     strcpy (filename, buf[0].file);
     strcpy (buf[0].file, "*");
     strcat (buf[0].file, filename);
-    status = fits_read_header (argv[2], &buf[0].header);
+    status = gfits_read_header (argv[2], &buf[0].header);
     buf[0].header.bitpix = bitpix;     
     buf[0].header.bzero  = bzero;      
     buf[0].header.bscale = bscale;     
     buf[0].header.unsign = unsign;     
-    fits_modify (&buf[0].header, "BITPIX", "%d",  1, bitpix);
-    fits_modify (&buf[0].header, "BSCALE", "%lf", 1, bscale);
-    fits_modify (&buf[0].header, "BZERO",  "%lf", 1, bzero);
-    fits_modify (&buf[0].header, "UNSIGN", "%t",  1, unsign);
+    gfits_modify (&buf[0].header, "BITPIX", "%d",  1, bitpix);
+    gfits_modify (&buf[0].header, "BSCALE", "%lf", 1, bscale);
+    gfits_modify (&buf[0].header, "BZERO",  "%lf", 1, bzero);
+    gfits_modify (&buf[0].header, "UNSIGN", "%t",  1, unsign);
     
   } else {
@@ -55,5 +55,5 @@
     f = popen ("more", "w");
     
-    p = fits_header_field (&buf[0].header, "END", 1);
+    p = gfits_header_field (&buf[0].header, "END", 1);
     nlines = (p - buf[0].header.buffer) / 80;
     nbytes = 81*nlines;
Index: trunk/Ohana/src/opihi/cmd.data/mcreate.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/mcreate.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/mcreate.c	(revision 7080)
@@ -19,6 +19,6 @@
 
   /* I should encapsulate this in a create_default_buffer */
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
   buf[0].header.bitpix = buf[0].bitpix = -32;
   buf[0].header.unsign = buf[0].unsign = FALSE;
@@ -28,6 +28,6 @@
   buf[0].header.Naxis[0] = Nx;
   buf[0].header.Naxis[1] = Ny;
-  fits_create_header (&buf[0].header);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_create_header (&buf[0].header);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
   return (TRUE);
 
Index: trunk/Ohana/src/opihi/cmd.data/minterpolate.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/minterpolate.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/minterpolate.c	(revision 7080)
@@ -26,6 +26,6 @@
   if ((out = SelectBuffer (argv[2], ANYBUFFER, TRUE)) == NULL) return (FALSE);
 
-  fits_free_matrix (&out[0].matrix);
-  fits_free_header (&out[0].header);
+  gfits_free_matrix (&out[0].matrix);
+  gfits_free_header (&out[0].header);
 
   scale  = atof (argv[3]);
@@ -41,28 +41,28 @@
   out[0].bscale = in[0].bscale;
   out[0].bzero  = in[0].bzero;
-  fits_copy_header (&in[0].header, &out[0].header);
+  gfits_copy_header (&in[0].header, &out[0].header);
 
-  fits_modify (&out[0].header, "NAXIS1", "%d", 1, nx);
-  fits_modify (&out[0].header, "NAXIS2", "%d", 1, ny);
+  gfits_modify (&out[0].header, "NAXIS1", "%d", 1, nx);
+  gfits_modify (&out[0].header, "NAXIS2", "%d", 1, ny);
   out[0].header.Naxis[0] = nx;
   out[0].header.Naxis[1] = ny;
-  fits_create_matrix (&out[0].header, &out[0].matrix);
+  gfits_create_matrix (&out[0].header, &out[0].matrix);
 
   /* fix astrometric terms */
-  status =  fits_scan (&out[0].header, "CDELT1", "%lf", 1, &dX);
-  status &= fits_scan (&out[0].header, "CDELT2", "%lf", 1, &dY);
+  status =  gfits_scan (&out[0].header, "CDELT1", "%lf", 1, &dX);
+  status &= gfits_scan (&out[0].header, "CDELT2", "%lf", 1, &dY);
   dX /= scale;
   dY /= scale;
   if (status) {
-    fits_modify (&out[0].header, "CDELT1", "%lf", 1, dX);
-    fits_modify (&out[0].header, "CDELT2", "%lf", 1, dY);
+    gfits_modify (&out[0].header, "CDELT1", "%lf", 1, dX);
+    gfits_modify (&out[0].header, "CDELT2", "%lf", 1, dY);
   }
-  status =  fits_scan (&out[0].header, "CRPIX1", "%lf", 1, &dX);
-  status &= fits_scan (&out[0].header, "CRPIX2", "%lf", 1, &dY);
+  status =  gfits_scan (&out[0].header, "CRPIX1", "%lf", 1, &dX);
+  status &= gfits_scan (&out[0].header, "CRPIX2", "%lf", 1, &dY);
   dX *= scale;
   dY *= scale;
   if (status) {
-    fits_modify (&out[0].header, "CRPIX1", "%lf", 1, dX);
-    fits_modify (&out[0].header, "CRPIX2", "%lf", 1, dY);
+    gfits_modify (&out[0].header, "CRPIX1", "%lf", 1, dX);
+    gfits_modify (&out[0].header, "CRPIX2", "%lf", 1, dY);
   }
 
Index: trunk/Ohana/src/opihi/cmd.data/plot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/plot.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/plot.c	(revision 7080)
@@ -3,57 +3,9 @@
 int plot (int argc, char **argv) {
   
-  int N, Npts, Ngraph;
+  int N, Npts;
   Graphdata graphmode;
   Vector *xvec, *yvec, *dxmvec, *dxpvec, *dymvec, *dypvec;
 
-  /* choose the appropriate graphing window */
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
-
-  /* evaluate various plotting options */
-  if ((N = get_argument (argc, argv, "-lt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ltype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-lw"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.lweight = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-pt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ptype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "+eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = TRUE;
-  }
-  if ((N = get_argument (argc, argv, "-eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = FALSE;
-  }
-  if ((N = get_argument (argc, argv, "-sz"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.size = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-c"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.color = KapaColorByName (argv[N]);
-    if (graphmode.color == -1) return (FALSE);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-x"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.style = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
+  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
 
   /* decide on error bars */
@@ -81,9 +33,7 @@
 
   if (argc != 3) {
-    fprintf (stderr, "USAGE: plot <x> <y>\n");
+    fprintf (stderr, "USAGE: plot <x> <y> [style]\n");
     return (FALSE);
   }
-
-  /* set plotting options (these are sticky) */
   SetGraph (graphmode);
 
@@ -92,8 +42,8 @@
   if ((dymvec != NULL) && (dypvec == NULL)) dypvec = dymvec;
   if ((dypvec != NULL) && (dymvec == NULL)) dymvec = dypvec;
-  if (dypvec != NULL) graphmode.etype |= 0x01;
+  if ((dypvec != NULL) || (dymvec != NULL)) graphmode.etype |= 0x01;
   if ((dxmvec != NULL) && (dxpvec == NULL)) dxpvec = dxmvec;
   if ((dxpvec != NULL) && (dxmvec == NULL)) dxmvec = dxpvec;
-  if (dxpvec != NULL) graphmode.etype |= 0x02;
+  if ((dxpvec != NULL) || (dxmvec != NULL)) graphmode.etype |= 0x02;
   
   /* find vectors */
Index: trunk/Ohana/src/opihi/cmd.data/rd.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/rd.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/rd.c	(revision 7080)
@@ -61,6 +61,6 @@
   /* find matrix, free old data */
   if ((buf = SelectBuffer (argv[1], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
 
   /* save file name */
@@ -73,5 +73,5 @@
   if (extend) {
     /* load in appropriate header */
-    Nskip = fits_read_Xheader (argv[2], &buf[0].header, Nextend);
+    Nskip = gfits_read_Xheader (argv[2], &buf[0].header, Nextend);
     if (!Nskip) {
       fprintf (stderr, "entry in %s not found\n", argv[2]);
@@ -113,5 +113,5 @@
     }
     fseek (f, Nskip, SEEK_SET);
-    status = fits_load_matrix (f, &buf[0].matrix, &buf[0].header);
+    status = gfits_load_matrix (f, &buf[0].matrix, &buf[0].header);
     fclose (f);
   } 
@@ -128,5 +128,5 @@
     done = FALSE;
     for (i = 0; !done; i++) {
-      Nskip = fits_read_Xheader (argv[2], &buf[0].header, i);
+      Nskip = gfits_read_Xheader (argv[2], &buf[0].header, i);
       if (!Nskip) {
 	fprintf (stderr, "extension %s in %s not found\n", ccdid, argv[2]);
@@ -135,5 +135,5 @@
 	return (FALSE);
       }
-      if (!fits_scan (&buf[0].header, CCDKeyword, "%s", 1, ID)) {
+      if (!gfits_scan (&buf[0].header, CCDKeyword, "%s", 1, ID)) {
 	fprintf (stderr, "%s not in header\n", CCDKeyword);
 	DeleteBuffer (buf);
@@ -145,5 +145,5 @@
       done = strnumcmp (ccdid, ID);
 
-      if (!done) fits_free_header (&buf[0].header);
+      if (!done) gfits_free_header (&buf[0].header);
     }
     free (CCDKeyword);
@@ -182,10 +182,10 @@
     }
     fseek (f, Nskip, SEEK_SET);
-    status = fits_load_matrix (f, &buf[0].matrix, &buf[0].header);
+    status = gfits_load_matrix (f, &buf[0].matrix, &buf[0].header);
     fclose (f);
   }
 
   if (!ccdsel && !extend) {
-    status = fits_read_header (argv[2], &buf[0].header);
+    status = gfits_read_header (argv[2], &buf[0].header);
     if (JustHead) {
       buf[0].header.Naxes = 0;
@@ -209,9 +209,9 @@
       buf[0].header.Naxis[2] = 0;
       buf[0].header.Naxes = 2;
-      fits_modify (&buf[0].header, "NAXIS", "%d", 1, 2);
-      fits_delete (&buf[0].header, "NAXIS3", 1);
+      gfits_modify (&buf[0].header, "NAXIS", "%d", 1, 2);
+      gfits_delete (&buf[0].header, "NAXIS3", 1);
     }
     sprintf (region, "-1 -1 -1 -1 %d %d", (plane - 1), plane);
-    status = fits_read_segment (argv[2], &buf[0].matrix, region);
+    status = gfits_read_segment (argv[2], &buf[0].matrix, region);
   }
 
@@ -236,5 +236,5 @@
 
   /** now - convert the matrix values to floats for internal use **/
-  fits_convert_format (&buf[0].header, &buf[0].matrix, -32, 1.0, 0.0, FT_UNSIGN_MODE);
+  gfits_convert_format (&buf[0].header, &buf[0].matrix, -32, 1.0, 0.0, FT_UNSIGN_MODE);
   
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/rdseg.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/rdseg.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/rdseg.c	(revision 7080)
@@ -28,6 +28,6 @@
   /* find matrix, free old data */
   if ((buf = SelectBuffer (argv[1], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
 
   /* save file name */
@@ -36,9 +36,9 @@
   free (filename);
 
-  status = fits_read_header (argv[2], &buf[0].header);
+  status = gfits_read_header (argv[2], &buf[0].header);
   sprintf (region, "%d %d %d %d 0 1", x, nx + x, y, ny + y);
-  status = fits_read_segment (argv[2], &buf[0].matrix, region);
-  fits_modify (&buf[0].header, "NAXIS1", "%d", 1, nx);
-  fits_modify (&buf[0].header, "NAXIS2", "%d", 1, ny);
+  status = gfits_read_segment (argv[2], &buf[0].matrix, region);
+  gfits_modify (&buf[0].header, "NAXIS1", "%d", 1, nx);
+  gfits_modify (&buf[0].header, "NAXIS2", "%d", 1, ny);
   buf[0].header.Naxis[0] = nx;
   buf[0].header.Naxis[1] = ny;
@@ -66,5 +66,5 @@
 
   /** now - convert the matrix values to floats for internal use **/
-  fits_convert_format (&buf[0].header, &buf[0].matrix, -32, 1.0, 0.0, FT_UNSIGN_MODE);
+  gfits_convert_format (&buf[0].header, &buf[0].matrix, -32, 1.0, 0.0, FT_UNSIGN_MODE);
   
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/read_vectors.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 7080)
@@ -171,10 +171,10 @@
 
     for (i = 0; i <= Nextend; i++) {
-      if (!fits_load_header (f, &header)) return (FALSE);
-      Nbytes = fits_matrix_size (&header);
+      if (!gfits_load_header (f, &header)) return (FALSE);
+      Nbytes = gfits_matrix_size (&header);
       /* skip the prior data buffers */
       if (i < Nextend) { 
 	fseek (f, Nbytes, SEEK_CUR);
-	fits_free_header (&header);
+	gfits_free_header (&header);
 	continue;
       }
@@ -183,6 +183,6 @@
       Nread = fread (table.buffer, sizeof (char), Nbytes, f);
       if (Nread != Nbytes) {
-	fits_free_table  (&table);
-	fits_free_header (&header);
+	gfits_free_table  (&table);
+	gfits_free_header (&header);
 	return (FALSE);
       }
@@ -190,10 +190,10 @@
     }
   } else {
-    if (!fits_fread_ftable (f, &table, extname)) return (FALSE);
+    if (!gfits_fread_ftable (f, &table, extname)) return (FALSE);
   }
 
   /* identify table type (ascii / binary) */
   Binary = FALSE;
-  fits_scan (&header, "XTENSION", "%s", 1, type);
+  gfits_scan (&header, "XTENSION", "%s", 1, type);
   if (!strcmp (type, "BINTABLE")) {
     Binary = TRUE;
@@ -214,9 +214,9 @@
     Nval = 0;
     if (Binary) {
-      if (!fits_get_bintable_column_type (&header, argv[i], type, &Nval)) return (FALSE);
-      if (!fits_get_bintable_column (&header, &table, argv[i], &data)) return (FALSE);
+      if (!gfits_get_bintable_column_type (&header, argv[i], type, &Nval)) return (FALSE);
+      if (!gfits_get_bintable_column (&header, &table, argv[i], &data)) return (FALSE);
     } else {
-      if (!fits_get_table_column_type (&header, argv[i], type)) return (FALSE);
-      if (!fits_get_table_column (&header, &table, argv[i], &data)) return (FALSE);
+      if (!gfits_get_table_column_type (&header, argv[i], type)) return (FALSE);
+      if (!gfits_get_table_column (&header, &table, argv[i], &data)) return (FALSE);
     }
     if (Nval == 0) return (FALSE);
@@ -276,6 +276,6 @@
     free (vec);
   }
-  fits_free_table (&table);
-  fits_free_header (&header);
+  gfits_free_table (&table);
+  gfits_free_header (&header);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/rebin.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/rebin.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/rebin.c	(revision 7080)
@@ -40,6 +40,6 @@
   if ((in  = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) return (FALSE);
   if ((out = SelectBuffer (argv[2], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-  fits_free_matrix (&out[0].matrix);
-  fits_free_header (&out[0].header);
+  gfits_free_matrix (&out[0].matrix);
+  gfits_free_header (&out[0].header);
 
   scale  = atof (argv[3]);
@@ -71,10 +71,10 @@
   out[0].bscale = in[0].bscale;
   out[0].bzero  = in[0].bzero;
-  fits_copy_header (&in[0].header, &out[0].header);
-  fits_modify (&out[0].header, "NAXIS1", "%d", 1, nx);
-  fits_modify (&out[0].header, "NAXIS2", "%d", 1, ny);
-
-  status =  fits_scan (&out[0].header, "CDELT1", "%lf", 1, &dX);
-  status &= fits_scan (&out[0].header, "CDELT2", "%lf", 1, &dY);
+  gfits_copy_header (&in[0].header, &out[0].header);
+  gfits_modify (&out[0].header, "NAXIS1", "%d", 1, nx);
+  gfits_modify (&out[0].header, "NAXIS2", "%d", 1, ny);
+
+  status =  gfits_scan (&out[0].header, "CDELT1", "%lf", 1, &dX);
+  status &= gfits_scan (&out[0].header, "CDELT2", "%lf", 1, &dY);
   if (scale > 0) {
     dX *= scale;
@@ -85,10 +85,10 @@
   }    
   if (status) {
-    fits_modify (&out[0].header, "CDELT1", "%lf", 1, dX);
-    fits_modify (&out[0].header, "CDELT2", "%lf", 1, dY);
-  }
-
-  status =  fits_scan (&out[0].header, "CRPIX1", "%lf", 1, &dX);
-  status &= fits_scan (&out[0].header, "CRPIX2", "%lf", 1, &dY);
+    gfits_modify (&out[0].header, "CDELT1", "%lf", 1, dX);
+    gfits_modify (&out[0].header, "CDELT2", "%lf", 1, dY);
+  }
+
+  status =  gfits_scan (&out[0].header, "CRPIX1", "%lf", 1, &dX);
+  status &= gfits_scan (&out[0].header, "CRPIX2", "%lf", 1, &dY);
   if (scale > 0) {
     dX /= scale;
@@ -99,11 +99,11 @@
   }    
   if (status) {
-    fits_modify (&out[0].header, "CRPIX1", "%lf", 1, dX);
-    fits_modify (&out[0].header, "CRPIX2", "%lf", 1, dY);
+    gfits_modify (&out[0].header, "CRPIX1", "%lf", 1, dX);
+    gfits_modify (&out[0].header, "CRPIX2", "%lf", 1, dY);
   }
 
   out[0].header.Naxis[0] = nx;
   out[0].header.Naxis[1] = ny;
-  fits_create_matrix (&out[0].header, &out[0].matrix);
+  gfits_create_matrix (&out[0].header, &out[0].matrix);
   temp[0] = 0;
   if ((in[0].file[0] != '*') && (in[0].file[0] != '(')) {
Index: trunk/Ohana/src/opihi/cmd.data/rotate.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/rotate.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/rotate.c	(revision 7080)
@@ -41,8 +41,8 @@
     buf[0].header.Naxis[0] = NY;
     buf[0].header.Naxis[1] = NX;
-    fits_modify (&buf[0].header, "NAXIS1", "%d", 1, NY);
-    fits_modify (&buf[0].header, "NAXIS2", "%d", 1, NX);
-    fits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
-    fits_create_matrix (&buf[0].header, &buf[0].matrix);
+    gfits_modify (&buf[0].header, "NAXIS1", "%d", 1, NY);
+    gfits_modify (&buf[0].header, "NAXIS2", "%d", 1, NX);
+    gfits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
+    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
     out_buff = (float *)buf[0].matrix.buffer;
     for (i = NX - 1; i > -1; i--) {
@@ -52,24 +52,24 @@
     }
     /* fix reference pixel */
-    fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
-    fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
+    gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
+    gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
     X1 = Yo;
     Y1 = NX - Xo;
-    fits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
-    fits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
-    
-    /* fix rotate matrix */
-    fits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
-    fits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
-    fits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
-    fits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
+    gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
+    gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
+    
+    /* fix rotate matrix */
+    gfits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
+    gfits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
+    gfits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
+    gfits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
     PC11 = pc21;
     PC12 = pc22;
     PC21 = -pc11;
     PC22 = -pc12;
-    fits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
-    fits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
-    fits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
-    fits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
+    gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
+    gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
+    gfits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
+    gfits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
 
     free (in_buff);
@@ -80,8 +80,8 @@
     buf[0].header.Naxis[0] = NY;
     buf[0].header.Naxis[1] = NX;
-    fits_modify (&buf[0].header, "NAXIS1", "%d", 1, NY);
-    fits_modify (&buf[0].header, "NAXIS2", "%d", 1, NX);
-    fits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
-    fits_create_matrix (&buf[0].header, &buf[0].matrix);
+    gfits_modify (&buf[0].header, "NAXIS1", "%d", 1, NY);
+    gfits_modify (&buf[0].header, "NAXIS2", "%d", 1, NX);
+    gfits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
+    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
     out_buff = (float *)buf[0].matrix.buffer;
     for (i = 0; i < NX; i++) {
@@ -91,17 +91,17 @@
     }
     /* fix reference pixel */
-    fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
-    fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
+    gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
+    gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
     X1 = NY - Yo;
     Y1 = Xo;
     fprintf (stderr, "%f %f -> %f %f\n", Xo, Yo, X1, Y1);
-    fits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
-    fits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
-    
-    /* fix rotate matrix */
-    fits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
-    fits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
-    fits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
-    fits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
+    gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
+    gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
+    
+    /* fix rotate matrix */
+    gfits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
+    gfits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
+    gfits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
+    gfits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
     PC11 = -pc21;
     PC12 = -pc22;
@@ -110,8 +110,8 @@
     fprintf (stderr, "%f %f  ->  %f %f\n", pc11, pc12, PC11, PC12);
     fprintf (stderr, "%f %f  ->  %f %f\n", pc21, pc22, PC21, PC22);
-    fits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
-    fits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
-    fits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
-    fits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
+    gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
+    gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
+    gfits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
+    gfits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
 
     free (in_buff);
@@ -120,6 +120,6 @@
 
   if (!strcasecmp (argv[2], "UPSIDE") || (atof (argv[2]) == -180) || (atof (argv[2]) == 180)) {
-    fits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
-    fits_create_matrix (&buf[0].header, &buf[0].matrix);
+    gfits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
+    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
     out_buff = (float *)buf[0].matrix.buffer;
     for (j = NY - 1; j > -1; j--) {
@@ -129,24 +129,24 @@
     }
     /* fix reference pixel */
-    fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
-    fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
+    gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
+    gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
     X1 = NX - Xo;
     Y1 = NY - Yo;
-    fits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
-    fits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
-    
-    /* fix rotate matrix */
-    fits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
-    fits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
-    fits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
-    fits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
+    gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
+    gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
+    
+    /* fix rotate matrix */
+    gfits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
+    gfits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
+    gfits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
+    gfits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
     PC11 = -pc11;
     PC12 = -pc12;
     PC21 = -pc21;
     PC22 = -pc22;
-    fits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
-    fits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
-    fits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
-    fits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
+    gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
+    gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
+    gfits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
+    gfits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
 
     free (in_buff);
@@ -155,6 +155,6 @@
 
   if (!strcasecmp (argv[2], "FLIPY")) {
-    fits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
-    fits_create_matrix (&buf[0].header, &buf[0].matrix);
+    gfits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
+    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
     out_buff = (float *)buf[0].matrix.buffer;
     for (j = NY - 1; j > -1; j--) {
@@ -164,24 +164,24 @@
     }
     /* fix reference pixel */
-    fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
-    fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
+    gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
+    gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
     X1 = Xo;
     Y1 = NY - Yo;
-    fits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
-    fits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
-    
-    /* fix rotate matrix */
-    fits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
-    fits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
-    fits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
-    fits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
+    gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
+    gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
+    
+    /* fix rotate matrix */
+    gfits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
+    gfits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
+    gfits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
+    gfits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
     PC11 = pc11;
     PC12 = -pc12;
     PC21 = pc21;
     PC22 = -pc22;
-    fits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
-    fits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
-    fits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
-    fits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
+    gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
+    gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
+    gfits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
+    gfits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
 
     free (in_buff);
@@ -190,6 +190,6 @@
 
   if (!strcasecmp (argv[2], "FLIPX")) {
-    fits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
-    fits_create_matrix (&buf[0].header, &buf[0].matrix);
+    gfits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
+    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
     out_buff = (float *)buf[0].matrix.buffer;
     for (j = 0; j < NY; j++) {
@@ -199,24 +199,24 @@
     }
     /* fix reference pixel */
-    fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
-    fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
+    gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
+    gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
     X1 = NX - Xo;
     Y1 = Yo;
-    fits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
-    fits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
-    
-    /* fix rotate matrix */
-    fits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
-    fits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
-    fits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
-    fits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
+    gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
+    gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
+    
+    /* fix rotate matrix */
+    gfits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
+    gfits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
+    gfits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
+    gfits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
     PC11 = -pc11;
     PC12 = pc12;
     PC21 = -pc21;
     PC22 = pc22;
-    fits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
-    fits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
-    fits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
-    fits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
+    gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
+    gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
+    gfits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
+    gfits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
 
     free (in_buff);
@@ -242,6 +242,6 @@
 
   /* fix reference pixel */
-  fits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
-  fits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
+  gfits_scan (&buf[0].header, "CRPIX1", "%lf", 1, &Xo);
+  gfits_scan (&buf[0].header, "CRPIX2", "%lf", 1, &Yo);
   /*
   X1 = (Xo - dX)*CosAngle - (Yo - dY)*SinAngle;
@@ -250,27 +250,27 @@
   X1 = Xo*CosAngle - Yo*SinAngle + dX;
   Y1 =  Xo*SinAngle + Yo*CosAngle + dY;
-  fits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
-  fits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
+  gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
+  gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
 
   /* fix rotate matrix */
-  fits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
-  fits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
-  fits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
-  fits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
+  gfits_scan (&buf[0].header, "PC001001", "%lf", 1, &pc11);
+  gfits_scan (&buf[0].header, "PC001002", "%lf", 1, &pc12);
+  gfits_scan (&buf[0].header, "PC002001", "%lf", 1, &pc21);
+  gfits_scan (&buf[0].header, "PC002002", "%lf", 1, &pc22);
   PC11 = pc11*CosAngle - pc21*SinAngle;
   PC12 = pc12*CosAngle - pc22*SinAngle;
   PC21 = pc21*CosAngle + pc11*SinAngle;
   PC22 = pc22*CosAngle + pc12*SinAngle;
-  fits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
-  fits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
-  fits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
-  fits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
+  gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
+  gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
+  gfits_modify (&buf[0].header, "PC002001", "%le", 1, PC21);
+  gfits_modify (&buf[0].header, "PC002002", "%le", 1, PC22);
 
   buf[0].header.Naxis[0] = Lx;
   buf[0].header.Naxis[1] = Ly;
-  fits_modify (&buf[0].header, "NAXIS1", "%d", 1, Lx);
-  fits_modify (&buf[0].header, "NAXIS2", "%d", 1, Ly);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
-  fits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
+  gfits_modify (&buf[0].header, "NAXIS1", "%d", 1, Lx);
+  gfits_modify (&buf[0].header, "NAXIS2", "%d", 1, Ly);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_print  (&buf[0].header, "HISTORY", "%S", 1, "WARNING: rotated image!");
   out_buff = (float *)buf[0].matrix.buffer;
   for (j = 0; j < Ly; j++) {
Index: trunk/Ohana/src/opihi/cmd.data/spline_apply.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/spline_apply.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/spline_apply.c	(revision 7080)
@@ -34,6 +34,6 @@
 
   /* create an output matrix buffer with desired nx, ny */
-  fits_free_matrix (&out[0].matrix);
-  fits_free_header (&out[0].header);
+  gfits_free_matrix (&out[0].matrix);
+  gfits_free_header (&out[0].header);
 
   out[0].bitpix = y1[0].bitpix;
@@ -41,11 +41,11 @@
   out[0].bscale = y1[0].bscale;
   out[0].bzero  = y1[0].bzero;
-  fits_copy_header (&y1[0].header, &out[0].header);
-  fits_modify (&out[0].header, "NAXIS1", "%d", 1, nx);
-  fits_modify (&out[0].header, "NAXIS2", "%d", 1, ny);
+  gfits_copy_header (&y1[0].header, &out[0].header);
+  gfits_modify (&out[0].header, "NAXIS1", "%d", 1, nx);
+  gfits_modify (&out[0].header, "NAXIS2", "%d", 1, ny);
 
   out[0].header.Naxis[0] = nx;
   out[0].header.Naxis[1] = ny;
-  fits_create_matrix (&out[0].header, &out[0].matrix);
+  gfits_create_matrix (&out[0].header, &out[0].matrix);
   if ((y1[0].file[0] != '*') && (y1[0].file[0] != '(')) {
     sprintf (out[0].file, "*%s", y1[0].file);
Index: trunk/Ohana/src/opihi/cmd.data/spline_construct.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/spline_construct.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/spline_construct.c	(revision 7080)
@@ -26,7 +26,7 @@
   out[0].bscale = in[0].bscale;
   out[0].bzero  = in[0].bzero;
-  fits_copy_matrix_info (&in[0].matrix, &out[0].matrix);
-  fits_copy_header (&in[0].header, &out[0].header);
-  fits_create_matrix (&out[0].header, &out[0].matrix);
+  gfits_copy_matrix_info (&in[0].matrix, &out[0].matrix);
+  gfits_copy_header (&in[0].header, &out[0].header);
+  gfits_create_matrix (&out[0].header, &out[0].matrix);
 
   xdir = FALSE;
Index: trunk/Ohana/src/opihi/cmd.data/style.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/style.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/style.c	(revision 7080)
@@ -1,68 +1,9 @@
 # include "data.h"
-# define NCOLORS 9
-static char colors[9][10] = {"black", "white", "red", "orange", "yellow", "green", "blue", "indigo", "violet"};
 
 int style (int argc, char **argv) {
   
-  int N, Ngraph;
   Graphdata graphmode;
 
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
-
-  if (argc == 1) {
-    fprintf (stderr, "current style (%d): -x %d -c %s -pt %d -lt %d -lw %f -sz %f\n", Ngraph,
-	     graphmode.style, colors[graphmode.color], graphmode.ptype, 
-	     graphmode.ltype, graphmode.lweight,
-	     graphmode.size);
-    return (TRUE);
-  }
-
-  if ((N = get_argument (argc, argv, "-lt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ltype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-lw"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.lweight = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-pt"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ptype = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "+eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = TRUE;
-  }
-  if ((N = get_argument (argc, argv, "-eb"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.ebar = FALSE;
-  }
-  if ((N = get_argument (argc, argv, "-sz"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.size = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-c"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.color = KapaColorByName (argv[N]);
-    if (graphmode.color == -1) return (FALSE);
-    remove_argument (N, &argc, argv);
-  }
-  if ((N = get_argument (argc, argv, "-x"))) {
-    remove_argument (N, &argc, argv);
-    graphmode.style = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-
-  SetGraph (graphmode);
+  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
 
   if (argc > 1) {
@@ -70,7 +11,6 @@
     return (FALSE);
   }
+  SetGraph (graphmode);
 
   return (TRUE);
-
 }
-
Index: trunk/Ohana/src/opihi/cmd.data/subraster.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/subraster.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/subraster.c	(revision 7080)
@@ -53,6 +53,6 @@
 
   if ((obuf = SelectBuffer (argv[2], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-  fits_free_matrix (&obuf[0].matrix);
-  fits_free_header (&obuf[0].header);
+  gfits_free_matrix (&obuf[0].matrix);
+  gfits_free_header (&obuf[0].header);
 
   obuf[0].bitpix = ibuf[0].bitpix;
@@ -62,10 +62,10 @@
   /* strcpy (obuf[0].name, ibuf[0].name); */
   strcpy (obuf[0].file, ibuf[0].file);
-  fits_copy_header (&ibuf[0].header, &obuf[0].header);
-  fits_modify (&obuf[0].header, "NAXIS1", "%d", 1, Nx);
-  fits_modify (&obuf[0].header, "NAXIS2", "%d", 1, Ny);
+  gfits_copy_header (&ibuf[0].header, &obuf[0].header);
+  gfits_modify (&obuf[0].header, "NAXIS1", "%d", 1, Nx);
+  gfits_modify (&obuf[0].header, "NAXIS2", "%d", 1, Ny);
   obuf[0].header.Naxis[0] = Nx;
   obuf[0].header.Naxis[1] = Ny;
-  fits_create_matrix (&obuf[0].header, &obuf[0].matrix);
+  gfits_create_matrix (&obuf[0].header, &obuf[0].matrix);
 
   for (j = 0; j < ny; j++) {
Index: trunk/Ohana/src/opihi/cmd.data/svd.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/svd.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/svd.c	(revision 7080)
@@ -20,24 +20,24 @@
 
   /* U is Nx, Ny */
-  fits_free_matrix (&Mu[0].matrix);
-  fits_free_header (&Mu[0].header);
+  gfits_free_matrix (&Mu[0].matrix);
+  gfits_free_header (&Mu[0].header);
   Mu[0].bitpix = Ma[0].bitpix;
   Mu[0].unsign = Ma[0].unsign;
   Mu[0].bscale = Ma[0].bscale;
   Mu[0].bzero  = Ma[0].bzero;
-  fits_copy_header (&Ma[0].header, &Mu[0].header);
-  fits_create_matrix (&Mu[0].header, &Mu[0].matrix);
+  gfits_copy_header (&Ma[0].header, &Mu[0].header);
+  gfits_create_matrix (&Mu[0].header, &Mu[0].matrix);
   
   /* V is Nx, Nx */
-  fits_free_matrix (&Mv[0].matrix);
-  fits_free_header (&Mv[0].header);
+  gfits_free_matrix (&Mv[0].matrix);
+  gfits_free_header (&Mv[0].header);
   Mv[0].bitpix = Ma[0].bitpix;
   Mv[0].unsign = Ma[0].unsign;
   Mv[0].bscale = Ma[0].bscale;
   Mv[0].bzero  = Ma[0].bzero;
-  fits_copy_header (&Ma[0].header, &Mv[0].header);
-  fits_modify (&Mv[0].header, "NAXIS2", "%d", 1, Nx);
+  gfits_copy_header (&Ma[0].header, &Mv[0].header);
+  gfits_modify (&Mv[0].header, "NAXIS2", "%d", 1, Nx);
   Mv[0].header.Naxis[1] = Nx;
-  fits_create_matrix (&Mv[0].header, &Mv[0].matrix);
+  gfits_create_matrix (&Mv[0].header, &Mv[0].matrix);
 
   /* w is Nx */
Index: trunk/Ohana/src/opihi/cmd.data/vgrid.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/vgrid.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/vgrid.c	(revision 7080)
@@ -50,6 +50,6 @@
   free (bf[0].header.buffer);  /* ALLOCATEd in SelectBuffer */
   free (bf[0].matrix.buffer);  /* ALLOCATEd in SelectBuffer */
-  fits_create_header (&bf[0].header);
-  fits_create_matrix (&bf[0].header, &bf[0].matrix);
+  gfits_create_header (&bf[0].header);
+  gfits_create_matrix (&bf[0].header, &bf[0].matrix);
 
   ALLOCATE (val, float, Nx*Ny);
Index: trunk/Ohana/src/opihi/cmd.data/wd.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/wd.c	(revision 7039)
+++ trunk/Ohana/src/opihi/cmd.data/wd.c	(revision 7080)
@@ -80,5 +80,5 @@
   memcpy (temp_header.buffer, buf[0].header.buffer, temp_header.size);
 
-  if (temp_header.Naxes) fits_convert_format (&temp_header, &temp_matrix, outBitpix, outScale, outZero, outUnsign);
+  if (temp_header.Naxes) gfits_convert_format (&temp_header, &temp_matrix, outBitpix, outScale, outZero, outUnsign);
 
   if (Extend) {
@@ -88,5 +88,5 @@
 
     /* assume failure means non-existent file */
-    if (!fits_read_header (argv[2], &Xhead)) {
+    if (!gfits_read_header (argv[2], &Xhead)) {
 
       Xhead.simple = TRUE;
@@ -99,16 +99,16 @@
       Xhead.unsign = FALSE;
       
-      fits_create_header (&Xhead);
-      fits_modify (&Xhead, "NEXTEND", "%d", 1, 0);
+      gfits_create_header (&Xhead);
+      gfits_modify (&Xhead, "NEXTEND", "%d", 1, 0);
       f = fopen (argv[2], "w");
       fclose (f);
     }
 
-    fits_modify (&Xhead, "EXTEND", "%t", 1, TRUE);
+    gfits_modify (&Xhead, "EXTEND", "%t", 1, TRUE);
 
     Nextend = 0;
-    fits_scan (&Xhead, "NEXTEND", "%d", 1, &Nextend);
+    gfits_scan (&Xhead, "NEXTEND", "%d", 1, &Nextend);
     Nextend ++;
-    fits_modify (&Xhead, "NEXTEND", "%d", 1, Nextend);
+    gfits_modify (&Xhead, "NEXTEND", "%d", 1, Nextend);
 
     /* write the main header to the start of the file */
@@ -149,5 +149,5 @@
     }
     /* write the matrix buffer (automatically goes to end of file */
-    if (!fits_write_matrix (argv[2], &temp_matrix)) {
+    if (!gfits_write_matrix (argv[2], &temp_matrix)) {
       fprintf (stderr, "failed to write file\n");
       status = FALSE;
@@ -156,27 +156,27 @@
     status = TRUE;
   done1:
-    fits_free_header (&Xhead);
-    fits_free_header (&temp_header);
-    fits_free_matrix (&temp_matrix);
+    gfits_free_header (&Xhead);
+    gfits_free_header (&temp_header);
+    gfits_free_matrix (&temp_matrix);
     return (status);
   }
   
   /* the actual write-to-disk goes here */
-  if (!fits_write_header (argv[2], &temp_header)) {
+  if (!gfits_write_header (argv[2], &temp_header)) {
     fprintf (stderr, "failed to write header\n");
-    fits_free_header (&temp_header);
-    fits_free_matrix (&temp_matrix);
+    gfits_free_header (&temp_header);
+    gfits_free_matrix (&temp_matrix);
     return (FALSE);
   }
   
-  if (!fits_write_matrix (argv[2], &temp_matrix)) {
+  if (!gfits_write_matrix (argv[2], &temp_matrix)) {
     fprintf (stderr, "failed to write matrix\n");
-    fits_free_header (&temp_header);
-    fits_free_matrix (&temp_matrix);
+    gfits_free_header (&temp_header);
+    gfits_free_matrix (&temp_matrix);
     return (FALSE);
   }
 
-  fits_free_header (&temp_header);
-  fits_free_matrix (&temp_matrix);
+  gfits_free_header (&temp_header);
+  gfits_free_matrix (&temp_matrix);
   
   return (TRUE);
Index: trunk/Ohana/src/opihi/dimm/Image.c
===================================================================
--- trunk/Ohana/src/opihi/dimm/Image.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dimm/Image.c	(revision 7080)
@@ -62,6 +62,6 @@
   header.bscale = 1;
 
-  fits_create_header (&header);
-  fits_create_matrix (&header, &matrix);
+  gfits_create_header (&header);
+  gfits_create_matrix (&header, &matrix);
   free (matrix.buffer);
 
@@ -69,15 +69,15 @@
   
   /* write meta-data to header */
-  fits_print (&header, "RA", "%lf", 1, image[0].ra);
-  fits_print (&header, "DEC", "%lf", 1, image[0].dec);
-  fits_print (&header, "EQUINOX", "%lf", 1, 2000.0);
+  gfits_print (&header, "RA", "%lf", 1, image[0].ra);
+  gfits_print (&header, "DEC", "%lf", 1, image[0].dec);
+  gfits_print (&header, "EQUINOX", "%lf", 1, 2000.0);
 
-  fits_print (&header, "AIRMASS", "%lf", 1, image[0].airmass);
-  fits_print (&header, "CCDTEMP", "%lf", 1, image[0].ccdtemp);
-  fits_print (&header, "AIRTEMP", "%lf", 1, image[0].airtemp);
-  fits_print (&header, "EXPTIME", "%lf", 1, image[0].exptime);
+  gfits_print (&header, "AIRMASS", "%lf", 1, image[0].airmass);
+  gfits_print (&header, "CCDTEMP", "%lf", 1, image[0].ccdtemp);
+  gfits_print (&header, "AIRTEMP", "%lf", 1, image[0].airtemp);
+  gfits_print (&header, "EXPTIME", "%lf", 1, image[0].exptime);
 
-  fits_write_header (filename, &header);
-  fits_write_matrix (filename, &matrix);
+  gfits_write_header (filename, &header);
+  gfits_write_matrix (filename, &matrix);
   
   return (TRUE);
Index: trunk/Ohana/src/opihi/dimm/camera.c
===================================================================
--- trunk/Ohana/src/opihi/dimm/camera.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dimm/camera.c	(revision 7080)
@@ -105,6 +105,6 @@
 
     /* generate a buffer to store the image */
-    fits_free_matrix (&buf[0].matrix);
-    fits_free_header (&buf[0].header);
+    gfits_free_matrix (&buf[0].matrix);
+    gfits_free_header (&buf[0].header);
     buf[0].header.bitpix = buf[0].bitpix = 16;
     buf[0].header.unsign = buf[0].unsign = FALSE;
@@ -114,10 +114,10 @@
     buf[0].header.Naxis[0] = dx;
     buf[0].header.Naxis[1] = dy;
-    fits_create_header (&buf[0].header);
-    fits_create_matrix (&buf[0].header, &buf[0].matrix);
+    gfits_create_header (&buf[0].header);
+    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
 
     ReadOut (x, y, dx, dy, 1, buf[0].matrix.buffer);
 
-    fits_convert_format (&buf[0].header, &buf[0].matrix, -32, 1.0, 0.0, FT_UNSIGN_MODE);
+    gfits_convert_format (&buf[0].header, &buf[0].matrix, -32, 1.0, 0.0, FT_UNSIGN_MODE);
 
     EXIT_STATUS (TRUE);
Index: trunk/Ohana/src/opihi/dimm/version.c
===================================================================
--- trunk/Ohana/src/opihi/dimm/version.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dimm/version.c	(revision 7080)
@@ -8,5 +8,5 @@
   fprintf (stderr, "%s\n", opihi_version());
   fprintf (stderr, "%s\n", ohana_version());
-  fprintf (stderr, "%s\n", fits_version());
+  fprintf (stderr, "%s\n", gfits_version());
 
   fprintf (stderr, "compiled on %s %s\n", __DATE__, __TIME__);
Index: trunk/Ohana/src/opihi/doc/ChangeLog.txt
===================================================================
--- trunk/Ohana/src/opihi/doc/ChangeLog.txt	(revision 7039)
+++ trunk/Ohana/src/opihi/doc/ChangeLog.txt	(revision 7080)
@@ -1,2 +1,17 @@
+
+2006.05.03:
+
+  opihi-2-7 : converted to gfits APIs (forces libfits 1.6)
+	      consolidated style argument parsing
+	      added style arguments to astro plotting
+
+  mana-1-5  : converted to gfits APIs (forces libfits 1.6)
+  dvo-0-5   : converted to gfits APIs (forces libfits 1.6)
+      	      consolidated style argument parsing
+  pantasks-0-5 converted to gfits APIs (forces libfits 1.6)
+  pcontrol-0-5 converted to gfits APIs (forces libfits 1.6)
+  pclient-0-5  converted to gfits APIs (forces libfits 1.6)
+  dimm-0-4     converted to gfits APIs (forces libfits 1.6)
+
 
 2006.03.26:
Index: trunk/Ohana/src/opihi/dvo/LoadImages.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/LoadImages.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/LoadImages.c	(revision 7080)
@@ -12,9 +12,9 @@
   sprintf (filename, "%s/Images.dat", catdir);
 
-  fits_db_init (&db);
+  gfits_db_init (&db);
   db.lockstate = LCK_SOFT;
   db.timeout   = 120.0;
 
-  if (!fits_db_lock (&db, filename)) {
+  if (!gfits_db_lock (&db, filename)) {
     fprintf (stderr, "error opening image catalog %s (1)\n", filename);
     return (NULL);
@@ -29,7 +29,7 @@
 
   dvo_image_load (&db, TRUE, FALSE);
-  fits_db_close (&db);
+  gfits_db_close (&db);
 
-  image = fits_table_get_Image (&db.ftable, nimage, &db.swapped);
+  image = gfits_table_get_Image (&db.ftable, nimage, &db.swapped);
   return (image);
 }
Index: trunk/Ohana/src/opihi/dvo/cmpRead.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/cmpRead.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/cmpRead.c	(revision 7080)
@@ -17,7 +17,7 @@
   /* init & load in table data */
   table.header   = &theader;
-  if (!fits_fread_ftable (f, &table, "SMPFILE")) goto escape;
+  if (!gfits_fread_ftable (f, &table, "SMPFILE")) goto escape;
 
-  smpdata = fits_table_get_SMPData (&table, &Nstars, NULL);
+  smpdata = gfits_table_get_SMPData (&table, &Nstars, NULL);
 
   ALLOCATE (stars, CMPstars, Nstars);
Index: trunk/Ohana/src/opihi/dvo/cmpload.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/cmpload.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/cmpload.c	(revision 7080)
@@ -36,5 +36,5 @@
   }
 
-  if (!fits_read_header (argv[2], &header)) {
+  if (!gfits_read_header (argv[2], &header)) {
     fprintf (stderr, "ERROR: can't read header for %s\n", argv[2]);
     return (FALSE);
@@ -42,8 +42,8 @@
 
   /* find expected number of stars */
-  fits_scan (&header, "NSTARS", "%d", 1, &Nstar);
+  gfits_scan (&header, "NSTARS", "%d", 1, &Nstar);
   if (Nstar == 0) {
     fprintf (stderr, "ERROR: can't get NSTARS from header\n");
-    fits_free_header (&header);
+    gfits_free_header (&header);
     return (FALSE);
   }
@@ -52,5 +52,5 @@
   if (f == NULL) {
     fprintf (stderr, "ERROR: can't read data from %s\n", argv[2]);
-    fits_free_header (&header);
+    gfits_free_header (&header);
     return (FALSE);
   }
@@ -134,5 +134,5 @@
   free (overlay);
 
-  fits_free_header (&header);
+  gfits_free_header (&header);
   free (buffer);
 
Index: trunk/Ohana/src/opihi/dvo/cmpread.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/cmpread.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/cmpread.c	(revision 7080)
@@ -41,5 +41,5 @@
 
   /* load FITS header */
-  if (!fits_read_header (argv[2], &header)) {
+  if (!gfits_read_header (argv[2], &header)) {
     fprintf (stderr, "ERROR: can't read header for %s\n", argv[2]);
     return (FALSE);
@@ -49,5 +49,5 @@
     if (!GetCoords (&coords, &header)) {
       fprintf (stderr, "can't get WCS info from header\n");
-      fits_free_header (&header);
+      gfits_free_header (&header);
       return (FALSE);
     }
@@ -58,5 +58,5 @@
   if (f == NULL) {
     fprintf (stderr, "ERROR: can't read data from %s\n", argv[2]);
-    fits_free_header (&header);
+    gfits_free_header (&header);
     return (FALSE);
   }
@@ -64,7 +64,7 @@
 
   /* find expected number of stars */
-  if (!fits_scan (&header, "NSTARS", "%d", 1, &Nstars)) {
+  if (!gfits_scan (&header, "NSTARS", "%d", 1, &Nstars)) {
     fprintf (stderr, "ERROR: can't get NSTARS from header\n");
-    fits_free_header (&header);
+    gfits_free_header (&header);
     return (FALSE);
   }
@@ -72,8 +72,8 @@
   /* read from FITS table or from text table */
   extend = FALSE;
-  fits_scan (&header, "EXTEND",  "%t", 1, &extend);
+  gfits_scan (&header, "EXTEND",  "%t", 1, &extend);
   if (extend) {
     fprintf (stderr, "reading from FITS cmp file %s\n", argv[2]);
-    Nbytes = fits_matrix_size (&header);
+    Nbytes = gfits_matrix_size (&header);
     fseek (f, Nbytes, SEEK_CUR); 
     stars = cmpReadFits (f, &Nstars);
@@ -81,5 +81,5 @@
     /* allocate space for stars */
     fprintf (stderr, "reading from TEXT cmp file %s\n", argv[2]);
-    if (!fits_scan (&header, "NSTARS", "%d", 1, &Nstars)) {
+    if (!gfits_scan (&header, "NSTARS", "%d", 1, &Nstars)) {
       fprintf (stderr, "ERROR: failed to find NSTARS\n");
       exit (1);
@@ -138,5 +138,5 @@
   }      
   free (stars);
-  fits_free_header (&header);
+  gfits_free_header (&header);
   fprintf (stderr, "loaded %d objects\n", Nstars);
   return (TRUE);
Index: trunk/Ohana/src/opihi/dvo/ddmags.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/ddmags.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/ddmags.c	(revision 7080)
@@ -20,4 +20,5 @@
   RegionName = NULL;
   RegionList = NULL;
+  skylist = NULL;
 
   /* load photcode information */
@@ -66,9 +67,11 @@
     }
     catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
-    if (!load_catalog (&catalog, FALSE)) {
+    if (!load_catalog (&catalog, TRUE)) {
       unlock_catalog (&catalog);
       continue;
     }
     unlock_catalog (&catalog);
+    // fprintf (stderr, "seaching %s with %d stars\n", catalog.filename, catalog.Naverage);
+    // ListPhotSelections ();
 
     /* get correct mags, convert to X,Y */
@@ -109,4 +112,6 @@
       if (M2 != NULL) free (M2);
     }
+    // fprintf (stderr, "selected %d stars\n", Npts);
+
     if (catalog.average != NULL) free (catalog.average);
     if (catalog.secfilt != NULL) free (catalog.secfilt);
Index: trunk/Ohana/src/opihi/dvo/detrend.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/detrend.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/detrend.c	(revision 7080)
@@ -122,5 +122,5 @@
 
   /* load in database header */
-  if (!fits_read_header (DataBase, &header)) {
+  if (!gfits_read_header (DataBase, &header)) {
     fprintf (stderr, "ERROR: trouble reading database header\n");
     return (FALSE);
@@ -136,5 +136,5 @@
 
   /* load existing data from database */
-  fits_scan (&header, "NIMAGES", "%d", 1, &Nimage);
+  gfits_scan (&header, "NIMAGES", "%d", 1, &Nimage);
   ALLOCATE (pimage, RegImage, Nimage);
   status = fread (pimage, sizeof(RegImage), Nimage, f);
@@ -143,9 +143,9 @@
   if (status != Nimage) {
     fprintf (stderr, "ERROR: header and data in dB don't match (%d vs %d)\n", Nimage, status);
-    fits_free_header (&header);
+    gfits_free_header (&header);
     free (pimage);
     return (FALSE);
   }
-  fits_convert_RegImage (pimage, sizeof (RegImage), Nimage);
+  gfits_convert_RegImage (pimage, sizeof (RegImage), Nimage);
 
   N = 0;
@@ -202,5 +202,5 @@
 
   free (pimage);
-  fits_free_header (&header);
+  gfits_free_header (&header);
   return (TRUE);
 
Index: trunk/Ohana/src/opihi/dvo/dmags.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dmags.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/dmags.c	(revision 7080)
@@ -20,4 +20,5 @@
   RegionName = NULL;
   RegionList = NULL;
+  skylist = NULL;
 
   /* load photcode information */
Index: trunk/Ohana/src/opihi/dvo/fitcolors.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 7080)
@@ -11,11 +11,13 @@
   
   int *list, Nlist;
-  int i, k, m, NP1, NP2, NP, Np, Npts, NPTS;
+  int i, k, m, N, NP1, NP2, NP, Np, Npts, NPTS;
   int N1, N2, i1, i2, mode[4];
   int Nsec, status;
+  void *oldsignal;
   char *RegionName, *RegionList;
   char *cmd, *outcmd, *camera;
   double *M1, *M2;
   float *out;
+  float minDelta, maxDelta, minColor, maxColor;
 
   Catalog *catalog;
@@ -27,6 +29,10 @@
   /* defaults */
   catalog  = NULL;
+  skylist  = NULL;
   codelist = NULL;
   xvec = yvec = NULL;
+
+  oldsignal = signal (SIGINT, handle_interrupt);
+  interrupt = FALSE;
 
   /* load photcode information */
@@ -36,5 +42,25 @@
   /* interpret command-line options */
   if (!SetRegionSelection (&argc, argv, &RegionName, &RegionList)) goto escape;
-  if (!SetPhotSelections (&argc, argv, 1)) goto usage;
+  if (!SetPhotSelections (&argc, argv, 4)) goto usage;
+
+  // range for valid data points (exclude extreme outliers)
+  minDelta = -0.2;
+  maxDelta = +0.2;
+  minColor = -1.0;
+  maxColor = +3.0;
+  if ((N = get_argument (argc, argv, "-color-range"))) {
+    remove_argument (N, &argc, argv);
+    minColor = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+    maxColor = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-delta-range"))) {
+    remove_argument (N, &argc, argv);
+    minDelta = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+    maxDelta = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
 
   /* interpret command-line options */
@@ -44,5 +70,5 @@
   if (!(Np = GetPhotcodeCodebyName (argv[2]))) {
     fprintf (stderr, "ERROR: photcode not found in photcode table\n");
-    return (FALSE);
+    goto usage;
   }
   camera = argv[3];
@@ -59,7 +85,10 @@
   mode[0] = mode[1] = MAG_REL;  /* we should be applying any relative photometry corrections here */
   mode[2] = mode[3] = MAG_AVE;
+
   /* set the reference colors */
   code[2] = GetPhotcodebyCode (codelist[0][0].c1);
   code[3] = GetPhotcodebyCode (codelist[0][0].c2);
+  if ((code[2] == NULL) || (code[3] == NULL)) goto color_missing;
+
   /* all codes must have the same colors (validate) */
   for (i = 0; i < NP; i++) {
@@ -70,11 +99,11 @@
 
   /* output is a named buffer */
-  if ((buf = SelectBuffer (argv[1], ANYVECTOR, TRUE)) == NULL) return (FALSE);
+  if ((buf = SelectBuffer (argv[1], ANYVECTOR, TRUE)) == NULL) goto usage;
   buf[0].matrix.Naxis[0] = NP;
   buf[0].matrix.Naxis[1] = NP;
 
   /* I should encapsulate this in a create_default_buffer */
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
   buf[0].header.bitpix = buf[0].bitpix = -32;
   buf[0].header.unsign = buf[0].unsign = FALSE;
@@ -84,6 +113,6 @@
   buf[0].header.Naxis[0] = NP;
   buf[0].header.Naxis[1] = NP;
-  fits_create_header (&buf[0].header);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_create_header (&buf[0].header);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
   out = (float *) buf[0].matrix.buffer;
   /* we set a default flag value of -1 */
@@ -114,6 +143,8 @@
     }
     unlock_catalog (&catalog[k]);
-  }
-  fprintf (stderr, "using %d regions\n", skylist[0].Nregions);
+    // XXX make a subset catalog consisting of only Average and Measure values which meet
+    // the selection criteria
+  }
+  fprintf (stderr, "using %d possible regions\n", skylist[0].Nregions);
 
   /* vectors to save data */
@@ -124,4 +155,6 @@
 
   /*** generate the color-color vectors for the pairs ***/
+  // XXXX this function also needs to check for interrupts
+  // XXX exclude obvious outliers (eg, fabs(dM) > 0.2)
   /* loop over chip photcode pairs */
   for (NP1 = 0; NP1 < NP; NP1++) {
@@ -135,12 +168,19 @@
 	if (catalog[k].Naverage == 0) continue;
 
+	// fprintf (stderr, "seaching %s with %d stars\n", catalog[k].filename, catalog[k].Naverage);
+	// ListPhotSelections ();
+
 	/* get correct mags, convert to X,Y */
 	for (i = 0; i < catalog[k].Naverage; i++) {
+	  if (interrupt) goto escape;
+
 	  M1 = M2 = NULL;
 	  m = catalog[k].average[i].offset;
 
+	  SetSelectionParam (0);
 	  M1 = ExtractDMag (&code[0], &mode[0], &catalog[k].average[i], &catalog[k].secfilt[i*Nsec], &catalog[k].measure[m], &N1);
 	  if (N1 == 0) goto skip_star;
 
+	  SetSelectionParam (2);
 	  M2 = ExtractDMag (&code[2], &mode[2], &catalog[k].average[i], &catalog[k].secfilt[i*Nsec], &catalog[k].measure[m], &N2);
 	  if (N2 == 0) goto skip_star;
@@ -148,4 +188,8 @@
 	  for (i1 = 0; i1 < N1; i1++) {
 	    for (i2 = 0; i2 < N2; i2++) {
+	      if (M1[i1] < minDelta) continue;
+	      if (M1[i1] > maxDelta) continue;
+	      if (M2[i2] < minColor) continue;
+	      if (M2[i2] > maxColor) continue;
 	      yvec[0].elements[Npts] = M1[i1];
 	      xvec[0].elements[Npts] = M2[i2];
@@ -162,4 +206,5 @@
 	  if (M2 != NULL) free (M2);
 	}
+	// fprintf (stderr, "selected %d stars\n", Npts);
       }
 
@@ -184,4 +229,5 @@
   if (RegionName != NULL) free (RegionName);
   if (RegionList != NULL) free (RegionList);
+  signal (SIGINT, oldsignal);
   return (TRUE);
 
@@ -190,10 +236,15 @@
   goto escape;
 
+color_missing:
+  fprintf (stderr, "error: chips are missing a color reference\n");
+  goto escape;
+
 color_mismatch:
   fprintf (stderr, "error: all chips must have the same colors\n");
+  goto escape;
 
 escape:
-  free_catalog (catalog, skylist[0].Nregions);
-  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
+  if (skylist != NULL) free_catalog (catalog, skylist[0].Nregions);
+  if (skylist != NULL) SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
   if (RegionName != NULL) free (RegionName);
   if (RegionList != NULL) free (RegionList);
@@ -201,4 +252,5 @@
   DeleteVector (xvec);
   DeleteVector (yvec);
+  signal (SIGINT, oldsignal);
   return (FALSE);
 }
Index: trunk/Ohana/src/opihi/dvo/gstar.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/gstar.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/gstar.c	(revision 7080)
@@ -2,4 +2,7 @@
 
 void print_value (FILE *f, double value, short int ival);
+void initPhotcodeSequence (int Nsec);
+void freePhotcodeSequence ();
+void printPhotcodeSequence (Average *average, SecFilt *secfilt, int entry, int type);
 
 int gstar (int argc, char **argv) {
@@ -16,5 +19,4 @@
   SkyList *skylist;
   Catalog catalog;
-  PhotCode *code;
   int TimeFormat;
   time_t TimeReference;
@@ -128,4 +130,6 @@
     ALLOCATE (vec4[0].elements, float, NPTS);
   }
+
+  initPhotcodeSequence (Nsec);
 
   for (i = Nlo; (i < catalog.Naverage) && !found; i++) {
@@ -143,24 +147,18 @@
 		 0.01*catalog.average[k].Xp, catalog.average[k].code);
       
-	/* filter names -- primary code is 0 in this function */
-	for (j = 0; j < Nsec + 1; j++) {
-	  code = GetPhotcodebyNsec (j);
-	  fprintf (GetOutfile (), "%s ", code[0].name);
-	}
+	/* filter names */
+	for (j = 0; j < Nsec + 1; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsec*k], j, 3);
 	fprintf (GetOutfile (), "\n");
 
 	/* average mags */
-	print_value (GetOutfile(), catalog.average[k].M, catalog.average[k].M);
-	for (j = 0; j < Nsec; j++) print_value (GetOutfile(), catalog.secfilt[j + Nsec*k].M_PS, catalog.secfilt[j + Nsec*k].M_PS);
+	for (j = 0; j < Nsec + 1; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsec*k], j, 0);
 	fprintf (GetOutfile(), "\n");
 
 	/* average mag errors */
-	print_value (GetOutfile(), catalog.average[k].dM, catalog.average[k].dM);
-	for (j = 0; j < Nsec; j++) print_value (GetOutfile(), catalog.secfilt[j + Nsec*k].dM_PS, catalog.secfilt[j + Nsec*k].dM_PS);
+	for (j = 0; j < Nsec + 1; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsec*k], j, 1);
 	fprintf (GetOutfile(), "\n");
 
 	/* average mag chisq */
-	print_value (GetOutfile(), pow (10.0, 0.01*catalog.average[k].Xm), catalog.average[k].Xm);
-	for (j = 0; j < Nsec; j++) print_value (GetOutfile(), pow (10.0, 0.01*catalog.secfilt[j + Nsec*k].Xm), catalog.secfilt[j + Nsec*k].Xm);
+	for (j = 0; j < Nsec + 1; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsec*k], j, 2);
 	fprintf (GetOutfile(), "\n");
       }
@@ -216,8 +214,8 @@
   if (catalog.secfilt != 0) free (catalog.secfilt);
 
+  freePhotcodeSequence ();
   return (TRUE);
 
 }
-
 
 void print_value (FILE *f, double value, short int ival) {
@@ -227,2 +225,70 @@
     fprintf (f, "%6.3f ", value);
 }
+
+// XXX fix printing to be in photcode numerical order for PRI/SEC data
+static int *sequence = NULL;
+
+void initPhotcodeSequence (int Nsec) {
+
+  int j;
+  int *codeNumber;
+  PhotCode *code;
+
+  // sequence contains, in desired order, secfilt number (0 == pri)
+  ALLOCATE (sequence, int, Nsec + 1);
+  ALLOCATE (codeNumber, int, Nsec + 1);
+  
+  /* filter names -- primary code is 0 in this function */
+  for (j = 0; j < Nsec + 1; j++) {
+    code = GetPhotcodebyNsec (j);
+    codeNumber[j] = code[0].code;
+    sequence[j] = j;
+  }
+
+  isort_pair (codeNumber, sequence, Nsec + 1);
+  free (codeNumber);
+}
+
+void freePhotcodeSequence () {
+  free (sequence);
+}
+
+
+void printPhotcodeSequence (Average *average, SecFilt *secfilt, int entry, int type) {
+
+  int seq;
+  PhotCode *code;
+
+  seq = sequence[entry] - 1;
+
+  switch (type) {
+    case 0: /* average mags */
+      if (seq == -1) {
+	print_value (GetOutfile(), average[0].M, average[0].M);
+      } else {
+	print_value (GetOutfile(), secfilt[seq].M_PS, secfilt[seq].M_PS);
+      }
+      break;
+
+    case 1: /* average mags errors */
+      if (seq == -1) {
+	print_value (GetOutfile(), average[0].dM, average[0].dM);
+      } else {
+	print_value (GetOutfile(), secfilt[seq].dM_PS, secfilt[seq].dM_PS);
+      }
+      break;
+
+    case 2: /* average mag chisq */
+      if (seq == -1) {
+	print_value (GetOutfile(), pow (10.0, 0.01*average[0].Xm), average[0].Xm);
+      } else {
+	print_value (GetOutfile(), pow (10.0, 0.01*secfilt[seq].Xm), secfilt[seq].Xm);
+      }
+      break;
+
+    case 3: /* filter names */
+      code = GetPhotcodebyNsec (seq + 1);
+      fprintf (GetOutfile (), "%6s ", code[0].name);
+      break;
+  }
+}
Index: trunk/Ohana/src/opihi/dvo/images.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/images.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/images.c	(revision 7080)
@@ -11,8 +11,6 @@
   Graphdata graphmode;
   char name[256];
-  int Ngraph;
 
-  Ngraph = 0;
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
 
   ByName = FALSE;
@@ -67,4 +65,5 @@
     return (FALSE);
   }
+  SetGraph (graphmode);
   
   if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
Index: trunk/Ohana/src/opihi/dvo/imbox.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/imbox.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/imbox.c	(revision 7080)
@@ -9,5 +9,6 @@
   Coords coords;
   Graphdata graphmode;
-  int Ngraph;
+
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
 
   if (argc != 2) {
@@ -15,8 +16,7 @@
     return (FALSE);
   }
-  Ngraph = 0;
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+  SetGraph (graphmode);
 
-  if (!fits_read_header (argv[1], &header)) {
+  if (!gfits_read_header (argv[1], &header)) {
     fprintf (stderr, "file not found\n");
     return (FALSE);
@@ -25,5 +25,5 @@
   Nextend = 0;
   if (header.Naxes == 0) {
-    fits_scan (&header, "NEXTEND", "%d", 1, &Nextend);
+    gfits_scan (&header, "NEXTEND", "%d", 1, &Nextend);
   }
   
@@ -38,5 +38,5 @@
   for (i = Nextend ? 0 : -1; i < Nextend; i++) {
     if (Nextend) {
-      fits_read_Xheader (argv[1], &header, i);
+      gfits_read_Xheader (argv[1], &header, i);
     }
     if (!GetCoords (&coords, &header)) {
@@ -86,5 +86,5 @@
   }
 
-  fits_free_header (&header);
+  gfits_free_header (&header);
   free (Xvec.elements);
   free (Yvec.elements);
Index: trunk/Ohana/src/opihi/dvo/imrough.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/imrough.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/imrough.c	(revision 7080)
@@ -249,7 +249,7 @@
 
   /* load in database header */
-  if (!fits_fread_header (f, &header)) {
+  if (!gfits_fread_header (f, &header)) {
     fclose (f);
-    fits_free_header (&header);
+    gfits_free_header (&header);
     fprintf (stderr, "ERROR: trouble reading database header\n");
     return ((RegImage *) NULL);
@@ -257,5 +257,5 @@
 
   /* check for database v1, v2 */
-  fits_scan (&header, "ORIGIN", "%s", 1, line);
+  gfits_scan (&header, "ORIGIN", "%s", 1, line);
   if (!strcmp (line, "MDM Observatory")) {
 
@@ -263,5 +263,5 @@
     
     /* load existing data from database */
-    fits_scan (&header, "NIMAGES", "%d", 1, &Nimage);
+    gfits_scan (&header, "NIMAGES", "%d", 1, &Nimage);
     ALLOCATE (image, RegImage, Nimage);
     status = fread (image, sizeof(RegImage), Nimage, f);
@@ -270,9 +270,9 @@
     if (status != Nimage) {
       fprintf (stderr, "ERROR: header and data in dB don't match (%d vs %d)\n", Nimage, status);
-      fits_free_header (&header);
+      gfits_free_header (&header);
       free (image);
       return ((RegImage *) NULL);
     }
-    fits_convert_RegImage (image, sizeof (RegImage), Nimage);
+    gfits_convert_RegImage (image, sizeof (RegImage), Nimage);
 
     *nimage = Nimage;
@@ -281,8 +281,8 @@
 
   /* we probably have v3 */
-  if (!fits_fread_matrix (f, &matrix, &header)) {
+  if (!gfits_fread_matrix (f, &matrix, &header)) {
     fclose (f);
-    fits_free_header (&header);
-    fits_free_matrix (&matrix);
+    gfits_free_header (&header);
+    gfits_free_matrix (&matrix);
     fprintf (stderr, "ERROR: trouble reading database matrix\n");
     return ((RegImage *) NULL);
@@ -290,8 +290,8 @@
 
   table.header = &theader;
-  if (!fits_fread_ftable  (f, &table, "IMAGE_DATABASE")) {
+  if (!gfits_fread_ftable  (f, &table, "IMAGE_DATABASE")) {
     fclose (f);
-    fits_free_header (&header);
-    fits_free_matrix (&matrix);
+    gfits_free_header (&header);
+    gfits_free_matrix (&matrix);
     fprintf (stderr, "ERROR: trouble reading database table\n");
     return ((RegImage *) NULL);
@@ -300,9 +300,9 @@
   /* convert to internal format */
   image = (RegImage *) table.buffer;
-  fits_scan (table.header, "NAXIS2", "%d", 1, &Nimage);
-  fits_convert_RegImage (image, sizeof (RegImage), Nimage);
-
-  fits_free_header (&header);
-  fits_free_matrix (&matrix);
+  gfits_scan (table.header, "NAXIS2", "%d", 1, &Nimage);
+  gfits_convert_RegImage (image, sizeof (RegImage), Nimage);
+
+  gfits_free_header (&header);
+  gfits_free_matrix (&matrix);
 
   *nimage = Nimage;
Index: trunk/Ohana/src/opihi/dvo/imsearch.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/imsearch.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/imsearch.c	(revision 7080)
@@ -91,5 +91,5 @@
 
   /* load in database header */
-  if (!fits_read_header (DataBase, &header)) {
+  if (!gfits_read_header (DataBase, &header)) {
     fprintf (stderr, "ERROR: trouble reading database header\n");
     return (FALSE);
@@ -105,5 +105,5 @@
 
   /* load existing data from database */
-  fits_scan (&header, "NIMAGES", "%d", 1, &Nimage);
+  gfits_scan (&header, "NIMAGES", "%d", 1, &Nimage);
   ALLOCATE (pimage, RegImage, Nimage);
   status = fread (pimage, sizeof(RegImage), Nimage, f);
@@ -111,9 +111,9 @@
   if (status != Nimage) {
     fprintf (stderr, "ERROR: header and data in dB don't match (%d vs %d)\n", Nimage, status);
-    fits_free_header (&header);
+    gfits_free_header (&header);
     free (pimage);
     return (FALSE);
   }
-  fits_convert_RegImage (pimage, sizeof (RegImage), Nimage);
+  gfits_convert_RegImage (pimage, sizeof (RegImage), Nimage);
 
   /* print out all data */
@@ -149,5 +149,5 @@
 
   free (pimage);
-  fits_free_header (&header);
+  gfits_free_header (&header);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/photometry.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/photometry.c	(revision 7080)
@@ -49,5 +49,6 @@
 static double MagMax, MagMin;
 static int TypeSelect, TypeValue;
-static int ErrSelect, ErrValue;
+static int ErrSelect;
+static double ErrValue;
 static int iMagSelect;
 static double iMagMin;
@@ -334,4 +335,25 @@
 }
 
+int ListPhotSelections () {
+
+  fprintf (stderr, "TimeSelect: %d, %d - %d\n",      TimeSelect, tzero, tend);
+  fprintf (stderr, "MagSelect: %d, %f - %f\n",       MagSelect, MagMax, MagMin);
+  fprintf (stderr, "TypeSelect: %d, %d\n",           TypeSelect, TypeValue);
+  fprintf (stderr, "ErrSelect: %d, %f\n",            ErrSelect, ErrValue);
+  fprintf (stderr, "iMagSelect: %d, %f\n",           iMagSelect, iMagMin);
+  fprintf (stderr, "FlagSelect: %d, %x\n",           FlagSelect, FlagValue);
+  fprintf (stderr, "TypefracSelect: %d, %d %d %f\n", TypefracSelect, TypefracType, TypefracSign, TypefracValue);
+  fprintf (stderr, "ApplySelections: %d,%d,%d,%d : %d\n", ApplySelections[0], ApplySelections[1], ApplySelections[2], ApplySelections[3], SelectionParam);
+  if (PhotcodeSelect) {
+    fprintf (stderr, "PhotcodeSelect: %d, %s\n",       PhotcodeSelect, PhotcodeValue[0].name);
+  } else {
+    fprintf (stderr, "PhotcodeSelect: %d, none\n",       PhotcodeSelect);
+  }
+  fprintf (stderr, "ChiSelect: %d, %f\n",            ChiSelect, ChiLimit);
+  fprintf (stderr, "NphotSelect: %d, %d - %d\n",     NphotSelect, NphotSign, NphotValue);
+  fprintf (stderr, "NcodeSelect: %d, %d - %d\n",     NcodeSelect, NcodeSign, NcodeValue);
+  fprintf (stderr, "FWHMSelect: %d, %d %f %f\n",     FWHMSelect, FWHMsign, FWHMvalue, FWHMfrac);
+}
+
 /* remove standard photometry filtering options, set selections */
 /* not all functions respect all selections... */
@@ -386,4 +408,5 @@
 
   /* select on value of Chisq (AVERAGE ONLY) */
+  SelectionParam = 0;
   for (i = 0; i < 4; i++) ApplySelections[i] = TRUE;
   if ((N = get_argument (*argc, argv, "-apply"))) {
Index: trunk/Ohana/src/opihi/dvo/pmeasure.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 7080)
@@ -5,5 +5,4 @@
   FILE *f;
   int i, j, k, m, N;
-  int Ngraph;
   double Mz, Mr, mag;
   double Radius, Rmin, Rmax;
@@ -18,7 +17,6 @@
   Vector Xvec, Yvec, Zvec;
 
-  Ngraph = -1;
   if (!InitPhotcodes ()) return (FALSE);
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
 
   f = (FILE *) NULL;
@@ -70,5 +68,6 @@
     return (FALSE);
   }
-  
+  SetGraph (graphmode);
+
   Radius = MAX (fabs(graphmode.xmax), fabs(graphmode.ymax));
 
Index: trunk/Ohana/src/opihi/dvo/simage.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/simage.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/simage.c	(revision 7080)
@@ -39,5 +39,5 @@
   
   /* read header */
-  if (!fits_read_header (argv[1], &header)) {
+  if (!gfits_read_header (argv[1], &header)) {
     fprintf (stderr, "ERROR: can't find image file %s\n", argv[1]);
     return (FALSE);
@@ -45,39 +45,39 @@
   /* get astrometry information */
   strcpy (coords.ctype, "NONE");
-  fits_scan (&header, "CTYPE1",   "%s",  1, coords.ctype);
+  gfits_scan (&header, "CTYPE1",   "%s",  1, coords.ctype);
   if (strcmp (coords.ctype, "RA---PLY")) {
     fprintf (stderr, "ERROR: wrong astrometric info in header\n");
     return (FALSE);
   }
-  fits_scan (&header, "CDELT1",   "%f", 1, &coords.cdelt1); 
-  fits_scan (&header, "CDELT2",   "%f", 1, &coords.cdelt2);
-  fits_scan (&header, "CRVAL1",   "%lf", 1, &coords.crval1);
-  fits_scan (&header, "CRVAL2",   "%lf", 1, &coords.crval2);  
-  fits_scan (&header, "CRPIX1",   "%f", 1, &coords.crpix1);
-  fits_scan (&header, "CRPIX2",   "%f", 1, &coords.crpix2);
-  fits_scan (&header, "PC001001", "%f", 1, &coords.pc1_1);
-  fits_scan (&header, "PC001002", "%f", 1, &coords.pc1_2);
-  fits_scan (&header, "PC002001", "%f", 1, &coords.pc2_1);
-  fits_scan (&header, "PC002002", "%f", 1, &coords.pc2_2);
+  gfits_scan (&header, "CDELT1",   "%f", 1, &coords.cdelt1); 
+  gfits_scan (&header, "CDELT2",   "%f", 1, &coords.cdelt2);
+  gfits_scan (&header, "CRVAL1",   "%lf", 1, &coords.crval1);
+  gfits_scan (&header, "CRVAL2",   "%lf", 1, &coords.crval2);  
+  gfits_scan (&header, "CRPIX1",   "%f", 1, &coords.crpix1);
+  gfits_scan (&header, "CRPIX2",   "%f", 1, &coords.crpix2);
+  gfits_scan (&header, "PC001001", "%f", 1, &coords.pc1_1);
+  gfits_scan (&header, "PC001002", "%f", 1, &coords.pc1_2);
+  gfits_scan (&header, "PC002001", "%f", 1, &coords.pc2_1);
+  gfits_scan (&header, "PC002002", "%f", 1, &coords.pc2_2);
   /* RA Terms */
-  fits_scan (&header, "PCA1X2Y0", "%f", 1, &coords.polyterms[0][0]);
-  fits_scan (&header, "PCA1X1Y1", "%f", 1, &coords.polyterms[1][0]);
-  fits_scan (&header, "PCA1X0Y2", "%f", 1, &coords.polyterms[2][0]);
-  fits_scan (&header, "PCA1X3Y0", "%f", 1, &coords.polyterms[3][0]);
-  fits_scan (&header, "PCA1X2Y1", "%f", 1, &coords.polyterms[4][0]);
-  fits_scan (&header, "PCA1X1Y2", "%f", 1, &coords.polyterms[5][0]);
-  fits_scan (&header, "PCA1X0Y3", "%f", 1, &coords.polyterms[6][0]);
+  gfits_scan (&header, "PCA1X2Y0", "%f", 1, &coords.polyterms[0][0]);
+  gfits_scan (&header, "PCA1X1Y1", "%f", 1, &coords.polyterms[1][0]);
+  gfits_scan (&header, "PCA1X0Y2", "%f", 1, &coords.polyterms[2][0]);
+  gfits_scan (&header, "PCA1X3Y0", "%f", 1, &coords.polyterms[3][0]);
+  gfits_scan (&header, "PCA1X2Y1", "%f", 1, &coords.polyterms[4][0]);
+  gfits_scan (&header, "PCA1X1Y2", "%f", 1, &coords.polyterms[5][0]);
+  gfits_scan (&header, "PCA1X0Y3", "%f", 1, &coords.polyterms[6][0]);
   /* Dec Terms */			    
-  fits_scan (&header, "PCA2X2Y0", "%f", 1, &coords.polyterms[0][1]);
-  fits_scan (&header, "PCA2X1Y1", "%f", 1, &coords.polyterms[1][1]);
-  fits_scan (&header, "PCA2X0Y2", "%f", 1, &coords.polyterms[2][1]);
-  fits_scan (&header, "PCA2X3Y0", "%f", 1, &coords.polyterms[3][1]);
-  fits_scan (&header, "PCA2X2Y1", "%f", 1, &coords.polyterms[4][1]);
-  fits_scan (&header, "PCA2X1Y2", "%f", 1, &coords.polyterms[5][1]);
-  fits_scan (&header, "PCA2X0Y3", "%f", 1, &coords.polyterms[6][1]);
+  gfits_scan (&header, "PCA2X2Y0", "%f", 1, &coords.polyterms[0][1]);
+  gfits_scan (&header, "PCA2X1Y1", "%f", 1, &coords.polyterms[1][1]);
+  gfits_scan (&header, "PCA2X0Y2", "%f", 1, &coords.polyterms[2][1]);
+  gfits_scan (&header, "PCA2X3Y0", "%f", 1, &coords.polyterms[3][1]);
+  gfits_scan (&header, "PCA2X2Y1", "%f", 1, &coords.polyterms[4][1]);
+  gfits_scan (&header, "PCA2X1Y2", "%f", 1, &coords.polyterms[5][1]);
+  gfits_scan (&header, "PCA2X0Y3", "%f", 1, &coords.polyterms[6][1]);
   coords.Npolyterms = 2; /* how many do we use? */
 
   /* find number of stars */
-  fits_scan (&header, "NSTARS", "%d", 1, &Nstars);
+  gfits_scan (&header, "NSTARS", "%d", 1, &Nstars);
   if (Nstars == 0) {
     fprintf (stderr, "no stars in file\n");
Index: trunk/Ohana/src/opihi/dvo/skycat.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/skycat.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/skycat.c	(revision 7080)
@@ -6,10 +6,9 @@
   
   double Radius;
-  int i, j, N, Nregions, ShowAll, NPTS, Npts, leftside, Depth, TableDepth;
+  int i, j, N, Nregions, ShowAll, NPTS, Npts, leftside, Depth, TableDepth, VERBOSE;
   struct stat filestat;
   Vector Xvec, Yvec;
   Graphdata graphmode;
   double X[4], Y[4], Rmin, Rmax, Rmid;
-  int Ngraph, VERBOSE;
   SkyTable *sky;
   SkyList *skylist;
@@ -33,11 +32,13 @@
   }
 
+  if (!style_args (&graphmode, &argc, argv, 0)) return FALSE;
+
   if (argc != 1) {
     fprintf (stderr, "USAGE: skycat [-all]\n");
     return (FALSE);
   }
+  SetGraph (graphmode);
+
   TableDepth = (Depth == 3) ? 3 : 2;
-  Ngraph = 0;
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
 
   Radius = MAX (fabs(graphmode.xmax), fabs(graphmode.ymax));
Index: trunk/Ohana/src/opihi/dvo/skycoverage.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/skycoverage.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/skycoverage.c	(revision 7080)
@@ -79,6 +79,6 @@
 
   /* I should encapsulate this in a create_default_buffer */
-  fits_free_matrix (&buf[0].matrix);
-  fits_free_header (&buf[0].header);
+  gfits_free_matrix (&buf[0].matrix);
+  gfits_free_header (&buf[0].header);
   buf[0].header.bitpix = buf[0].bitpix = -32;
   buf[0].header.unsign = buf[0].unsign = FALSE;
@@ -88,6 +88,6 @@
   buf[0].header.Naxis[0] = Nx;
   buf[0].header.Naxis[1] = Ny;
-  fits_create_header (&buf[0].header);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_create_header (&buf[0].header);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
 
   coords.crval1 = 180;
Index: trunk/Ohana/src/opihi/dvo/version.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/version.c	(revision 7039)
+++ trunk/Ohana/src/opihi/dvo/version.c	(revision 7080)
@@ -8,5 +8,5 @@
   fprintf (stderr, "%s\n", opihi_version());
   fprintf (stderr, "%s\n", ohana_version());
-  fprintf (stderr, "%s\n", fits_version());
+  fprintf (stderr, "%s\n", gfits_version());
 
   fprintf (stderr, "compiled on %s %s\n", __DATE__, __TIME__);
Index: trunk/Ohana/src/opihi/include/data.h
===================================================================
--- trunk/Ohana/src/opihi/include/data.h	(revision 7039)
+++ trunk/Ohana/src/opihi/include/data.h	(revision 7080)
@@ -41,4 +41,5 @@
 void sort_lists (float *X, float *Y, int *S, int N);
 void dsort_lists (double *X, double *Y, int *S, int N);
+void isort_pair (int *X, int *Y, int N);
 
 /* in fft.c */
@@ -120,4 +121,5 @@
 void          SetLimits             PROTO((Vector *xvec, Vector *yvec, Graphdata *graphmode));
 void          ApplyLimits           PROTO((int Xgraph, Graphdata *graphmode, int apply));
+int           style_args            PROTO((Graphdata *graphmode, int *argc, char **argv, int Nforce));
 
 int read_table_vectors (int argc, char **argv, char *extname);
Index: trunk/Ohana/src/opihi/include/dvomath.h
===================================================================
--- trunk/Ohana/src/opihi/include/dvomath.h	(revision 7039)
+++ trunk/Ohana/src/opihi/include/dvomath.h	(revision 7080)
@@ -110,5 +110,5 @@
 
 /* why are these in here? */
-int           fits_copy_matrix_info (Matrix *matrix1, Matrix *matrix2);
+int           gfits_copy_matrix_info (Matrix *matrix1, Matrix *matrix2);
 int           GetTimeFormat         PROTO((time_t *TimeReference, int *TimeFormat));
 
Index: trunk/Ohana/src/opihi/lib.data/Makefile
===================================================================
--- trunk/Ohana/src/opihi/lib.data/Makefile	(revision 7039)
+++ trunk/Ohana/src/opihi/lib.data/Makefile	(revision 7080)
@@ -34,5 +34,6 @@
 $(SDIR)/open_image.$(ARCH).o            \
 $(SDIR)/queues.$(ARCH).o		\
-$(SDIR)/PlotVectors.$(ARCH).o
+$(SDIR)/PlotVectors.$(ARCH).o		\
+$(SDIR)/style_args.$(ARCH).o
 
 # dependancy rules for include files ########################
Index: trunk/Ohana/src/opihi/lib.data/sort.c
===================================================================
--- trunk/Ohana/src/opihi/lib.data/sort.c	(revision 7039)
+++ trunk/Ohana/src/opihi/lib.data/sort.c	(revision 7080)
@@ -291,2 +291,44 @@
   }
 }
+
+// sort two int vectors by first vector
+void isort_pair (int *X, int *Y, int N) {
+
+  int l,j,ir,i;
+  int tX, tY;
+  
+  if (N < 2) return;
+  l = N >> 1;
+  ir = N - 1;
+  for (;;) {
+    if (l > 0) {
+      l--;
+      tX = X[l];
+      tY = Y[l];
+    }
+    else {
+      tX = X[ir];
+      X[ir] = X[0];
+      tY = Y[ir];
+      Y[ir] = Y[0];
+      if (--ir == 0) {
+	X[0] = tX;
+	Y[0] = tY;
+	return;
+      }
+    }
+    i = l;
+    j = (l << 1) + 1;
+    while (j <= ir) {
+      if (j < ir && X[j] < X[j+1]) j++;
+      if (tX < X[j]) {
+	X[i] = X[j];
+	Y[i] = Y[j];
+	j += (i=j) + 1;
+      }
+      else j = ir + 1;
+    }
+    X[i] = tX;
+    Y[i] = tY;
+  }
+}
Index: trunk/Ohana/src/opihi/lib.data/starfuncs.c
===================================================================
--- trunk/Ohana/src/opihi/lib.data/starfuncs.c	(revision 7039)
+++ trunk/Ohana/src/opihi/lib.data/starfuncs.c	(revision 7080)
@@ -28,10 +28,10 @@
   for (j = 0; j < Nborder; j++) {
     for (i = X - Npix2 - Nborder; i < X + Npix2 + Nborder + 1; i++, n+=2) {
-      ring[n]   = fits_get_matrix_value (matrix, i, (int)(Y - Npix2 - j));
-      ring[n+1] = fits_get_matrix_value (matrix, i, (int)(Y + Npix2 + j));
+      ring[n]   = gfits_get_matrix_value (matrix, i, (int)(Y - Npix2 - j));
+      ring[n+1] = gfits_get_matrix_value (matrix, i, (int)(Y + Npix2 + j));
     }
     for (i = Y - Npix2; i < Y + Npix2 + 1; i++, n+=2) {
-      ring[n]   = fits_get_matrix_value (matrix, (int)(X - Npix2 - j), i);
-      ring[n+1] = fits_get_matrix_value (matrix, (int)(X + Npix2 + j), i);
+      ring[n]   = gfits_get_matrix_value (matrix, (int)(X - Npix2 - j), i);
+      ring[n+1] = gfits_get_matrix_value (matrix, (int)(X + Npix2 + j), i);
     }
   }
@@ -50,5 +50,5 @@
   for (i = X - Npix2; i < X + Npix2 + 1; i++) {
     for (j = Y - Npix2; j < Y + Npix2 + 1; j++) {
-      value = fits_get_matrix_value (matrix, i, j);
+      value = gfits_get_matrix_value (matrix, i, j);
       offset = value - sky;
       x  += i*offset;
Index: trunk/Ohana/src/opihi/lib.shell/BufferOps.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 7039)
+++ trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 7080)
@@ -86,6 +86,6 @@
 
   /* create the appropriate header and matrix */
-  fits_create_header (&buf[0].header);
-  fits_create_matrix (&buf[0].header, &buf[0].matrix);
+  gfits_create_header (&buf[0].header);
+  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
 
   return (TRUE);
@@ -109,6 +109,6 @@
   out[0].bzero  = in[0].bzero;
   strcpy (out[0].file, in[0].file);
-  fits_copy_matrix (&in[0].matrix, &out[0].matrix);
-  fits_copy_header (&in[0].header, &out[0].header);
+  gfits_copy_matrix (&in[0].matrix, &out[0].matrix);
+  gfits_copy_header (&in[0].header, &out[0].header);
   return (TRUE);
 }
@@ -158,6 +158,6 @@
   if (i == Nbuffers) return (FALSE);
 
-  fits_free_header (&buffers[i][0].header);
-  fits_free_matrix (&buffers[i][0].matrix);
+  gfits_free_header (&buffers[i][0].header);
+  gfits_free_matrix (&buffers[i][0].matrix);
   free (buffers[i]);
 
@@ -178,6 +178,6 @@
   if (i == Nbuffers) return (FALSE);
 
-  fits_free_header (&buffers[i][0].header);
-  fits_free_matrix (&buffers[i][0].matrix);
+  gfits_free_header (&buffers[i][0].header);
+  gfits_free_matrix (&buffers[i][0].matrix);
   free (buffers[i]);
 
Index: trunk/Ohana/src/opihi/lib.shell/stack_math.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/stack_math.c	(revision 7039)
+++ trunk/Ohana/src/opihi/lib.shell/stack_math.c	(revision 7080)
@@ -1385,5 +1385,5 @@
 
 /*********************** fits copy header ***********************************/
-int fits_copy_matrix_info (Matrix *matrix1, Matrix *matrix2) {
+int gfits_copy_matrix_info (Matrix *matrix1, Matrix *matrix2) {
 
   int i;
Index: trunk/Ohana/src/opihi/mana/version.c
===================================================================
--- trunk/Ohana/src/opihi/mana/version.c	(revision 7039)
+++ trunk/Ohana/src/opihi/mana/version.c	(revision 7080)
@@ -8,5 +8,5 @@
   fprintf (stderr, "%s\n", opihi_version());
   fprintf (stderr, "%s\n", ohana_version());
-  fprintf (stderr, "%s\n", fits_version());
+  fprintf (stderr, "%s\n", gfits_version());
 
   fprintf (stderr, "compiled on %s %s\n", __DATE__, __TIME__);
Index: trunk/Ohana/src/opihi/pantasks/version.c
===================================================================
--- trunk/Ohana/src/opihi/pantasks/version.c	(revision 7039)
+++ trunk/Ohana/src/opihi/pantasks/version.c	(revision 7080)
@@ -8,5 +8,5 @@
   fprintf (stderr, "%s\n", opihi_version());
   fprintf (stderr, "%s\n", ohana_version());
-  fprintf (stderr, "%s\n", fits_version());
+  fprintf (stderr, "%s\n", gfits_version());
 
   fprintf (stderr, "compiled on %s %s\n", __DATE__, __TIME__);
Index: trunk/Ohana/src/opihi/pclient/version.c
===================================================================
--- trunk/Ohana/src/opihi/pclient/version.c	(revision 7039)
+++ trunk/Ohana/src/opihi/pclient/version.c	(revision 7080)
@@ -8,5 +8,5 @@
   fprintf (stderr, "%s\n", opihi_version());
   fprintf (stderr, "%s\n", ohana_version());
-  fprintf (stderr, "%s\n", fits_version());
+  fprintf (stderr, "%s\n", gfits_version());
 
   fprintf (stderr, "compiled on %s %s\n", __DATE__, __TIME__);
Index: trunk/Ohana/src/opihi/pcontrol/version.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/version.c	(revision 7039)
+++ trunk/Ohana/src/opihi/pcontrol/version.c	(revision 7080)
@@ -8,5 +8,5 @@
   fprintf (stderr, "%s\n", opihi_version());
   fprintf (stderr, "%s\n", ohana_version());
-  fprintf (stderr, "%s\n", fits_version());
+  fprintf (stderr, "%s\n", gfits_version());
 
   fprintf (stderr, "compiled on %s %s\n", __DATE__, __TIME__);
