Index: /trunk/Ohana/src/addstar/Makefile
===================================================================
--- /trunk/Ohana/src/addstar/Makefile	(revision 4804)
+++ /trunk/Ohana/src/addstar/Makefile	(revision 4805)
@@ -28,5 +28,4 @@
 $(SRC)/check_permissions.$(ARCH).o \
 $(SRC)/ConfigInit.$(ARCH).o \
-$(SRC)/conversions.$(ARCH).o \
 $(SRC)/dump.$(ARCH).o \
 $(SRC)/edge_check.$(ARCH).o \
Index: /trunk/Ohana/src/addstar/include/addstar.h
===================================================================
--- /trunk/Ohana/src/addstar/include/addstar.h	(revision 4804)
+++ /trunk/Ohana/src/addstar/include/addstar.h	(revision 4805)
@@ -106,56 +106,75 @@
 time_t TIMEREF;
 
-int main (int argc, char **argv);
-int Shutdown (char *message, ...);  
-void TrapSignal (int sig);
-int SetSignals ();
-void help ();
-int args (int argc, char **argv);
-void SetProtect (int mode);
+/*** addstar prototypes ***/
+void       AddToCalibration       PROTO((Average *average, Measure *measure, Measure *new, int Nstar));
+void       ConfigInit             PROTO((int *argc, char **argv));
+void       FindCalibration        PROTO((Image *image));
+int        FindDecBand            PROTO((double dec, double *DEC0, double *DEC1));
+int        FindRegionByPoint      PROTO((GSCRegion *regions, double ra, double dec, GSCRegion *gsc, int Ngsc));
+int        FindRegionDecBandStart PROTO((GSCRegion *region, int Nregion, double dec));
+int        FindRegionDecBandStop  PROTO((GSCRegion *region, int Nregion, double dec));
+FILE      *GetDB                  PROTO((int *state));
+void       InitCalibration        PROTO(());
+GSCRegion *LoadRegions            PROTO((int *nregions));
+void       SaveCalibration        PROTO((float M, float dM, float Mr, float dMr, float Mc, float A, int N));
+void       SetProtect             PROTO((int mode));
+int        SetSignals             PROTO(());
+int        Shutdown               PROTO((char *message, ...); ) 
+void       TrapSignal             PROTO((int sig));
+short      airmass                PROTO((short secz_image, double ra, double dec, double st, double latitude));
+void       aregion                PROTO((GSCRegion *region, FILE *f, double ra, double dec));
+int        args                   PROTO((int argc, char **argv));
+void       check_permissions      PROTO((char *basefile));
+int        dump_rawstars          PROTO((Stars *stars, int Nstars));
+int        edge_check             PROTO((double *x1, double *y1, double *x2, double *y2));
+void       find_matches           PROTO((GSCRegion *region, Stars *stars, int Nstars, Catalog *catalog, Image *image, Image *overlap, int Noverlap));
+void       find_matches_refstars  PROTO((GSCRegion *region, Stars **stars, int Nstars, Catalog *catalog));
+Stars    **find_subset            PROTO((GSCRegion *region, Stars *stars, int Nstars, int *NSTARS));
+int        gcatalog               PROTO((Catalog *catalog));
+Stars     *get2mass               PROTO((GSCRegion *patch, int *NSTARS, int mode));
+double     get_subpix             PROTO((double x, double y));
+Stars     *getgsc                 PROTO((GSCRegion *patch, int *NSTARS));
+Stars     *getusno                PROTO((GSCRegion *catstats, int *Nstars));
+Image     *gimages                PROTO((Image *image, int *Npimage));
+Stars     *grefcat                PROTO((char *Refcat, GSCRegion *catstats, int *nstars));
+Stars     *grefstars              PROTO((char *file, int *Nstars));
+GSCRegion *gregion_image          PROTO((Image *image, int *Nregions));
+GSCRegion *gregion_match          PROTO((GSCRegion *regions, int *nregions));
+GSCRegion *gregion_patch          PROTO((GSCRegion *patch, int *nregions));
+void       gregion_star           PROTO((Stars *star, GSCRegion *region));
+GSCRegion *gregion_stars          PROTO((Stars *stars, int Nstars, int *Nregion));
+GSCRegion *gregions               PROTO((Image *image, int *Nregions));
+Stars     *gstars                 PROTO((char *file, int *NSTARS, Image *image));
+void       help                   PROTO(());
+int        hms_to_deg             PROTO((double *h0, double *h1, double *d0, double *d1, char *string));
+int        in_image               PROTO((double r, double d, Image *image));
+int        load_pt_catalog        PROTO((Catalog *catalog, GSCRegion *region));  /*** choose new name ***/
+void       load_subpix            PROTO(());
+void       lock_image_db          PROTO(());
+int        main                   PROTO((int argc, char **argv));
+void       make_backup            PROTO((char *filename));
+int        match_refstars         PROTO((Stars *stars, int Nstars));
+void       mkcatalog              PROTO((GSCRegion *region, Catalog *catalog));
+double     opening_angle          PROTO((double x1, double y1, double x2, double y2, double x3, double y3));
+int        parse_time             PROTO((Header *header));
+Stars     *rd_gsc                 PROTO((char *filename, int *nstars));
+int        replace_match          PROTO((Average *average, Measure *measure, Stars *star));
+Stars     *rfits                  PROTO((FILE *f, int *nstars));
+Stars     *rtext                  PROTO((FILE *f, int *nstars));
+void       save_pt_catalog        PROTO((Catalog *catalog));  /*** choose new name ***/
+double     scat_subpix            PROTO((double x, double y));
+time_t     short_date_to_sec      PROTO((char *date));
+void       sort_lists             PROTO((float *X, float *Y, int *S, int N));
+void       sort_regions           PROTO((GSCRegion *region, int N));
+void       sort_stars             PROTO((Stars *stars, int N));
+int        str_to_radec           PROTO((double *ra, double *dec, char *str1, char *str2));
+void       unlock_image_db        PROTO((Image *image));
+void       update_coords          PROTO((Average *average, Measure *measure, int *next));
+void       wcatalog               PROTO((Catalog *catalog));
+void       wimage                 PROTO((Image *image));
 
-int gcatalog (Catalog *catalog);
-void gregion_star (Stars *star, GSCRegion *region);
-GSCRegion *gregion_image (Image *image, int *Nregions);
-int edge_check (double *x1, double *y1, double *x2, double *y2);
-double opening_angle (double x1, double y1, double x2, double y2, double x3, double y3);
-Stars *gstars (char *file, int *NSTARS, Image *image);
-int in_image (double r, double d, Image *image);
-void wcatalog (Catalog *catalog);
-void ConfigInit (int *argc, char **argv);
-void aregion (GSCRegion *region, FILE *f, double ra, double dec);
-short airmass (short secz_image, double ra, double dec, double st, double latitude);
-void InitCalibration ();
-void FindCalibration (Image *image);
-double get_subpix (double x, double y);
-void load_subpix ();
-double scat_subpix (double x, double y);
-void mkcatalog (GSCRegion *region, Catalog *catalog);
-Stars *grefstars (char *file, int *Nstars);
-Stars **find_subset (GSCRegion *region, Stars *stars, int Nstars, int *NSTARS);
-int match_refstars (Stars *stars, int Nstars);
-int parse_time (Header *header);
-
-void check_permissions (char *basefile);
-void make_backup (char *filename);
-void uppercase (char *string);
-
-void sort_lists (float *X, float *Y, int *S, int N);
-void fsort (float *X, int N);
-void fsort2 (float *X, float *Y, int N);
-void sort_stars (Stars *stars, int N);
-void sort_regions (GSCRegion *region, int N);
-
-char *sec_to_date (time_t second);
-double sec_to_jd (time_t second);
-int chk_time (char *line);
-int dms_to_ddd (double *Value, char *string);
-int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string);
-int str_to_dtime (char *line, double *second);
-int str_to_radec (double *ra, double *dec, char *str1, char *str2);
-int str_to_time (char *line, time_t *second);
-time_t jd_to_sec (double jd);
-time_t date_to_sec (char *date);
-time_t short_date_to_sec (char *date);
-
+void       uppercase              PROTO((char *string));
+void       fsort                  PROTO((float *X, int N));
+void       fsort2                 PROTO((float *X, float *Y, int N));
 
 /** 
@@ -168,49 +187,2 @@
 **/
 
-Stars *get2mass (GSCRegion *patch, int *NSTARS, int mode);
-GSCRegion *gregion_stars (Stars *stars, int Nstars, int *Nregion);
-Stars *grefstars (char *file, int *Nstars);
-GSCRegion *LoadRegions (int *nregions);
-int FindRegionByPoint (GSCRegion *regions, double ra, double dec, GSCRegion *gsc, int Ngsc);
-int FindRegionDecBandStart (GSCRegion *region, int Nregion, double dec);
-int FindRegionDecBandStop (GSCRegion *region, int Nregion, double dec);
-int FindDecBand (double dec, double *DEC0, double *DEC1);
-
-int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string);
-void find_matches_refstars (GSCRegion *region, Stars **stars, int Nstars, Catalog *catalog);
-Stars *gstars (char *file, int *NSTARS, Image *image);
-void find_matches (GSCRegion *region, Stars *stars, int Nstars, Catalog *catalog, Image *image, Image *overlap, int Noverlap);
-Stars *getusno (GSCRegion *catstats, int *Nstars);
-Stars *rd_gsc (char *filename, int *nstars);
-Stars *getgsc (GSCRegion *patch, int *NSTARS);
-Stars *grefcat (char *Refcat, GSCRegion *catstats, int *nstars);
-void load_subpix ();
-double get_subpix (double x, double y);
-double scat_subpix (double x, double y);
-void help ();
-int args (int argc, char **argv);
-void InitCalibration ();
-void SaveCalibration (float M, float dM, float Mr, float dMr, float Mc, float A, int N);
-void AddToCalibration (Average *average, Measure *measure, Measure *new, int Nstar);
-void FindCalibration (Image *image);
-int load_pt_catalog (Catalog *catalog, GSCRegion *region);  /*** choose new name ***/
-void save_pt_catalog (Catalog *catalog);  /*** choose new name ***/
-void wcatalog (Catalog *catalog);
-GSCRegion *gregions (Image *image, int *Nregions);
-int gcatalog (Catalog *catalog);
-GSCRegion *gregion_image (Image *image, int *Nregions);
-void update_coords (Average *average, Measure *measure, int *next);
-int replace_match (Average *average, Measure *measure, Stars *star);
-FILE *GetDB (int *state);
-void lock_image_db ();
-void unlock_image_db (Image *image);
-void wimage (Image *image);
-Image *gimages (Image *image, int *Npimage);
-double opening_angle (double x1, double y1, double x2, double y2, double x3, double y3);
-int edge_check (double *x1, double *y1, double *x2, double *y2);
-GSCRegion *gregion_match (GSCRegion *regions, int *nregions);
-GSCRegion *gregion_patch (GSCRegion *patch, int *nregions);
-int dump_rawstars (Stars *stars, int Nstars);
-Stars *rfits (FILE *f, int *nstars);
-Stars *rtext (FILE *f, int *nstars);
-
Index: /trunk/Ohana/src/addstar/src/conversions.c
===================================================================
--- /trunk/Ohana/src/addstar/src/conversions.c	(revision 4804)
+++ /trunk/Ohana/src/addstar/src/conversions.c	(revision 4805)
@@ -1,4 +1,12 @@
 # include "addstar.h"
+
 enum {TIME_NONE, TIME_DATE, TIME_HOURS, TIME_DAYS, TIME_JD, TIME_MJD, TIME_SEC};
+
+# define FORMAT_DAYS    1
+# define FORMAT_HOURS   2
+# define FORMAT_MINUTES 3
+# define FORMAT_SECONDS 4
+# define FORMAT_JD      5
+# define FORMAT_DATE    6
 
 /***** convert [-]00:00:00 to 0.0000 ****/
@@ -86,11 +94,4 @@
   return (TRUE);
 }
-
-# define FORMAT_DAYS    1
-# define FORMAT_HOURS   2
-# define FORMAT_MINUTES 3
-# define FORMAT_SECONDS 4
-# define FORMAT_JD      5
-# define FORMAT_DATE    6
 
 /**********/
Index: /trunk/Ohana/src/delstar/Makefile
===================================================================
--- /trunk/Ohana/src/delstar/Makefile	(revision 4804)
+++ /trunk/Ohana/src/delstar/Makefile	(revision 4805)
@@ -38,5 +38,4 @@
 $(SRC)/find_matches.$(ARCH).o 	  \
 $(SRC)/parse_time.$(ARCH).o       \
-$(SRC)/convert.$(ARCH).o \
 $(SRC)/sort_lists.$(ARCH).o \
 $(SRC)/check_permissions.$(ARCH).o \
Index: /trunk/Ohana/src/delstar/include/delstar.h
===================================================================
--- /trunk/Ohana/src/delstar/include/delstar.h	(revision 4804)
+++ /trunk/Ohana/src/delstar/include/delstar.h	(revision 4805)
@@ -30,61 +30,47 @@
 enum {MODE_IMAGENAME, MODE_IMAGEFILE, MODE_TIME, MODE_ORPHAN, MODE_MISSED};
 
-enum {TIME_NONE, TIME_JD, TIME_MJD, TIME_DATE, TIME_DAYS, TIME_HOURS, TIME_MINUTES, TIME_SECONDS};
-
 char DateKeyword[64], DateMode[64], UTKeyword[64], MJDKeyword[64], JDKeyword[64];
 
-/*** conversion functions ***/
-FILE 	  *GetDB		  PROTO((int *state));
-Image 	  *GetImages		  PROTO((int *nimage));
-GSCRegion *LoadRegions		  PROTO((int *nregions));
-Image 	  *find_images		  PROTO((FILE *f, CatStats *catstats, int *Nimages));
-int 	  *find_images_data	  PROTO((Image *timage, int *nlist));
-int 	  *find_images_name	  PROTO((char *filename, int *nlist));
-int 	  *find_images_time	  PROTO((time_t start, time_t end, PhotCode *code, int *nlist));
-Image 	  *gimages		  PROTO((char *filename));
-GSCRegion *gregion_image	  PROTO((Image *image, int *Nregions));
-GSCRegion *gregion_patch	  PROTO((GSCRegion *patch, int *nregions));
-Image 	  *gtimes		  PROTO((int *NIMAGE));
-char      *sec_to_date            PROTO((time_t second));
-void	   ConfigInit		  PROTO((int *argc, char **argv));
-int	   FindDecBand		  PROTO((double dec, double *DEC0, double *DEC1));
-int	   FindRegionByPoint	  PROTO((GSCRegion *region, double ra, double dec, GSCRegion *gsc, int Ngsc));
-int	   FindRegionDecBandStart PROTO((GSCRegion *region, int Nregion, double dec));
-int	   FindRegionDecBandStop  PROTO((GSCRegion *region, int Nregion, double dec));
-int 	   SetImages		  PROTO((Image *new, int Nnew));
-void 	   SetProtect		  PROTO((int mode));
-int 	   SetSignals		  PROTO(());
-int 	   Shutdown		  PROTO((char *format, ...));
-void 	   TrapSignal		  PROTO((int sig));
-int 	   args			  PROTO((int *argc, char **argv));
-void	   check_permissions	  PROTO((char *basefile));
-int        chk_time               PROTO((char *line));
-time_t     date_to_sec            PROTO((char *date));
-void 	   delete_imagefile	  PROTO((char *filename));
-void 	   delete_imagename	  PROTO((char *name));
-void 	   delete_times		  PROTO(());
-int 	   dimages		  PROTO((int *imlist, int Nimlist));
-int 	   dms_to_ddd		  PROTO((double *Value, char *string));
-int 	   edge_check		  PROTO((double *x1, double *y1, double *x2, double *y2));
-void 	   find_matches		  PROTO((Catalog *catalog, int photcode, int start, int end));
-int	   gcatalog		  PROTO((Catalog *catalog));
-void 	   help			  PROTO(());
-int 	   hms_to_deg		  PROTO((double *h0, double *h1, double *d0, double *d1, char *string));
-time_t     jd_to_sec              PROTO((double jd));
-int 	   load_image_db	  PROTO(());
-void 	   lock_image_db	  PROTO(());
-void 	   match_images		  PROTO((Catalog *catalog, Image *image, int Nimage));
-time_t     mjd_to_sec             PROTO((double mjd));
-double     opening_angle	  PROTO((double x1, double y1, double x2, double y2, double x3, double y3));
-int	   parse_time		  PROTO((Header *header));
-int 	   save_image_db	  PROTO(());
-double     sec_to_jd              PROTO((time_t second));
-double     sec_to_mjd             PROTO((time_t second));
-void 	   sort_lists		  PROTO((float *X, float *Y, int *S, int N));
-void 	   sort_regions		  PROTO((GSCRegion *region, int N));
-int        str_to_dtime           PROTO((char *line, double *second));
-int        str_to_radec           PROTO((double *ra, double *dec, char *str1, char *str2));
-int        str_to_time            PROTO((char *line, time_t *second));
-void 	   unlock_image_db	  PROTO(());
-void 	   usage		  PROTO(());
-int 	   wcatalog		  PROTO((Catalog *catalog));
+/*** delstar prototypes ***/
+void       ConfigInit             PROTO((int *argc, char **argv));
+int        FindDecBand            PROTO((double dec, double *DEC0, double *DEC1));
+int        FindRegionByPoint      PROTO((GSCRegion *region, double ra, double dec, GSCRegion *gsc, int Ngsc));
+int        FindRegionDecBandStart PROTO((GSCRegion *region, int Nregion, double dec));
+int        FindRegionDecBandStop  PROTO((GSCRegion *region, int Nregion, double dec));
+FILE      *GetDB                  PROTO((int *state));
+Image     *GetImages              PROTO((int *nimage));
+GSCRegion *LoadRegions            PROTO((int *nregions));
+int        SetImages              PROTO((Image *new, int Nnew));
+void       SetProtect             PROTO((int mode));
+int        SetSignals             PROTO(());
+int        Shutdown               PROTO((char *format, ...));
+void       TrapSignal             PROTO((int sig));
+int        args                   PROTO((int *argc, char **argv));
+void       check_permissions      PROTO((char *basefile));
+void       delete_imagefile       PROTO((char *filename));
+void       delete_imagename       PROTO((char *name));
+void       delete_times           PROTO(());
+int        dimages                PROTO((int *imlist, int Nimlist));
+int        edge_check             PROTO((double *x1, double *y1, double *x2, double *y2));
+Image     *find_images            PROTO((FILE *f, CatStats *catstats, int *Nimages));
+int       *find_images_data       PROTO((Image *timage, int *nlist));
+int       *find_images_name       PROTO((char *filename, int *nlist));
+int       *find_images_time       PROTO((time_t start, time_t end, PhotCode *code, int *nlist));
+void       find_matches           PROTO((Catalog *catalog, int photcode, int start, int end));
+int        gcatalog               PROTO((Catalog *catalog));
+Image     *gimages                PROTO((char *filename));
+GSCRegion *gregion_image          PROTO((Image *image, int *Nregions));
+GSCRegion *gregion_patch          PROTO((GSCRegion *patch, int *nregions));
+Image     *gtimes                 PROTO((int *NIMAGE));
+void       help                   PROTO(());
+int        load_image_db          PROTO(());
+void       lock_image_db          PROTO(());
+void       match_images           PROTO((Catalog *catalog, Image *image, int Nimage));
+double     opening_angle          PROTO((double x1, double y1, double x2, double y2, double x3, double y3));
+int        parse_time             PROTO((Header *header));
+int        save_image_db          PROTO(());
+void       sort_lists             PROTO((float *X, float *Y, int *S, int N));
+void       sort_regions           PROTO((GSCRegion *region, int N));
+void       unlock_image_db        PROTO(());
+void       usage                  PROTO(());
+int        wcatalog               PROTO((Catalog *catalog));
Index: /trunk/Ohana/src/delstar/src/convert.c
===================================================================
--- /trunk/Ohana/src/delstar/src/convert.c	(revision 4804)
+++ /trunk/Ohana/src/delstar/src/convert.c	(revision 4805)
@@ -1,4 +1,6 @@
 # include "delstar.h"
   
+enum {TIME_NONE, TIME_DATE, TIME_DAYS, TIME_HOURS, TIME_MINUTES, TIME_SECONDS, TIME_JD, TIME_MJD};
+
 /***** convert [-]00:00:00 to 0.0000 ****/
 int dms_to_ddd (double *Value, char *string) {
@@ -95,5 +97,18 @@
   p1 = line;
   tmp = strtod (p1, &p2);
+  mode = TIME_DATE;
   if (p2 == p1 + strlen (p1) - 1) {
+    if (*p2 == 'd') {
+      mode = TIME_DAYS;
+    }
+    if (*p2 == 'h') {
+      mode = TIME_HOURS;
+    }
+    if (*p2 == 'm') {
+      mode = TIME_MINUTES;
+    }
+    if (*p2 == 's') {
+      mode = TIME_SECONDS;
+    }
     if (*p2 == 'j') {
       mode = TIME_JD;
@@ -102,18 +117,4 @@
       mode = TIME_MJD;
     }
-    if (*p2 == 'd') {
-      mode = TIME_DAYS;
-    }
-    if (*p2 == 'h') {
-      mode = TIME_HOURS;
-    }
-    if (*p2 == 'm') {
-      mode = TIME_MINUTES;
-    }
-    if (*p2 == 's') {
-      mode = TIME_SECONDS;
-    }
-  } else { 
-    mode = TIME_DATE;
   }
   return (mode);
@@ -141,6 +142,5 @@
       ALLOCATE (tmpline, char, 64);
       gmt   = gmtime (&tsec);
-      sprintf (tmpline, "%04d/%02d/%02d,%s", 
-	       1900 + gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, &line[6]);
+      sprintf (tmpline, "%04d/%02d/%02d,%s", 1900 + gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, &line[6]);
       *second = date_to_sec (tmpline);
       free (tmpline);
@@ -155,4 +155,19 @@
   case 0:
     return (FALSE);
+  case TIME_DATE:
+    *second = date_to_sec (line);
+    return (TRUE);
+  case TIME_DAYS:
+    *second = strtod (line, 0) * 86400.0;
+    return (TRUE);
+  case TIME_HOURS:
+    *second = strtod (line, 0) * 3600.0;
+    return (TRUE);
+  case TIME_MINUTES:
+    *second = strtod (line, 0) * 60.0;
+    return (TRUE);
+  case TIME_SECONDS:
+    *second = strtod (line, 0);
+    return (TRUE);
   case TIME_JD:
     jd = strtod (line, 0);
@@ -162,19 +177,4 @@
     jd = strtod (line, 0);
     *second = mjd_to_sec (jd);
-    return (TRUE);
-  case TIME_DATE:
-    *second = date_to_sec (line);
-    return (TRUE);
-  case TIME_DAYS:
-    *second = strtod (line, 0) * 86400.0;
-    return (TRUE);
-  case TIME_HOURS:
-    *second = strtod (line, 0) * 3600.0;
-    return (TRUE);
-  case TIME_MINUTES:
-    *second = strtod (line, 0) * 60.0;
-    return (TRUE);
-  case TIME_SECONDS:
-    *second = strtod (line, 0);
     return (TRUE);
   }
@@ -319,4 +319,28 @@
 }
 
+/***** short date in format yymmdd *****/
+time_t short_date_to_sec (char *date) {
+  
+  time_t second;
+  double jd;
+  struct tm now;
+  
+  bzero (&now, sizeof(now));
+
+  sscanf (date, "%2d%2d%2d", &now.tm_year, &now.tm_mon, &now.tm_mday);
+
+  if (now.tm_year >   51) now.tm_year +=   0;
+  if (now.tm_year <   50) now.tm_year += 100;
+  now.tm_mon --; /* tm_mon runs from 0 - 11 */
+
+  jd = now.tm_mday - 32075 + (int)(1461*(1900 + now.tm_year + 4800 + (int)(((now.tm_mon+1)-14)/12))/4)
+    + (int)(367*((now.tm_mon+1) - 2 - (int)(((now.tm_mon+1) - 14)/12)*12)/12)
+    - (int)(3*(int)((1900 + now.tm_year + 4900 + (int)(((now.tm_mon+1) - 14)/12))/100)/4) - 0.5;
+  
+  second = (jd - 2440587.5)*86400 + 3600.0*now.tm_hour + now.tm_min*60.0 + now.tm_sec;
+
+  return (second);
+}
+
 /**********/
 int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string) {
Index: /trunk/Ohana/src/libohana/Makefile
===================================================================
--- /trunk/Ohana/src/libohana/Makefile	(revision 4804)
+++ /trunk/Ohana/src/libohana/Makefile	(revision 4805)
@@ -34,4 +34,5 @@
 $(SRC)/version.$(ARCH).o	 \
 $(SRC)/string.$(ARCH).o		 \
+$(SRC)/time.$(ARCH).o		 \
 $(SRC)/findexec.$(ARCH).o	 \
 $(SRC)/glockfile.$(ARCH).o	 \
Index: /trunk/Ohana/src/libohana/include/ohana.h
===================================================================
--- /trunk/Ohana/src/libohana/include/ohana.h	(revision 4804)
+++ /trunk/Ohana/src/libohana/include/ohana.h	(revision 4805)
@@ -91,40 +91,54 @@
 extern double hypot();
 
-char *ohana_version ();
-
 /* in string.c */
-int   stripwhite (char *string);
-int   strnumcmp (char *str1, char *str2);
-char *strcreate (char *string);
-char *strncreate (char *string, int n);
-int   scan_line (FILE *f, char *line); 
-int   dparse (double *X, int NX, char *line);
-int   fparse (float *X, int NX, char *line);
-int   get_argument (int argc, char **argv, char *arg);
-int   remove_argument (int N, int *argc, char **argv);
-void  uppercase (char *string);
+int     stripwhite             PROTO((char *string));
+int     strnumcmp              PROTO((char *str1, char *str2));
+char   *strcreate              PROTO((char *string));
+char   *strncreate             PROTO((char *string, int n));
+int     scan_line              PROTO((FILE *f, char *line)); 
+int     dparse                 PROTO((double *X, int NX, char *line));
+int     fparse                 PROTO((float *X, int NX, char *line));
+int     get_argument           PROTO((int argc, char **argv, char *arg));
+int     remove_argument        PROTO((int N, int *argc, char **argv));
+void    uppercase              PROTO((char *string));
 
 /* in findexec.c */
-char *pathname (char *name);
-char *filebasename (char *name);
-char *filerootname (char *name);
-char *findexec (int argc, char **argv);
-int   mkdirhier (char *path);
-void  make_backup (char *filename);
+char   *pathname               PROTO((char *name));
+char   *filebasename           PROTO((char *name));
+char   *filerootname           PROTO((char *name));
+char   *findexec               PROTO((int argc, char **argv));
+int     mkdirhier              PROTO((char *path));
+void    make_backup            PROTO((char *filename));
 
 /* in glockfile.c */
-FILE *fsetlockfile (char *filename, double timeout, int type, int *state);
-int   fclearlockfile (char *filename, FILE *f, int type, int *state);
+FILE   *fsetlockfile           PROTO((char *filename, double timeout, int type, int *state));
+int     fclearlockfile         PROTO((char *filename, FILE *f, int type, int *state));
 
 /* in config.c */
-char *SelectConfigFile (int *argc, char **argv, char *progname);
-char *LoadConfigFile (char *filename);
-char *ScanConfig (char *config, char *field, char *mode, int N,...);
-char *expandline (char *line, char *config);
-char *fileextname (char *file);
-char *LoadRawConfigFile (char *, int);
+char   *SelectConfigFile       PROTO((int *argc, char **argv, char *progname));
+char   *LoadConfigFile         PROTO((char *filename));
+char   *ScanConfig             PROTO((char *config, char *field, char *mode, int N,...));
+char   *expandline             PROTO((char *line, char *config));
+char   *fileextname            PROTO((char *file));
+char   *LoadRawConfigFile      PROTO((char *, int));
 
-/* in Fseek.c */
-int   Fseek (FILE *f, long offset, int whence);
+/* others */
+int     Fseek                  PROTO((FILE *f, long offset, int whence));
+char   *ohana_version          PROTO(());
+
+/* in time.c */
+enum {TIME_NONE, TIME_DATE, TIME_DAYS, TIME_HOURS, TIME_MINUTES, TIME_SECONDS, TIME_JD, TIME_MJD};
+
+int     chk_time               PROTO((char *line));
+time_t  date_to_sec            PROTO((char *date));
+int     dms_to_ddd             PROTO((double *Value, char *string));
+time_t  jd_to_sec              PROTO((double jd));
+char   *sec_to_date            PROTO((time_t second));
+double  sec_to_jd              PROTO((time_t second));
+int     str_to_dtime           PROTO((char *line, double *second));
+int     str_to_time            PROTO((char *line, time_t *second));
+double  sec_to_mjd             PROTO((time_t second));
+time_t  mjd_to_sec             PROTO((double mjd));
+int     hms_to_deg             PROTO((double *h0, double *h1, double *d0, double *d1, char *string));
 
 /*
Index: /trunk/Ohana/src/mosastro/include/mosastro.h
===================================================================
--- /trunk/Ohana/src/mosastro/include/mosastro.h	(revision 4804)
+++ /trunk/Ohana/src/mosastro/include/mosastro.h	(revision 4805)
@@ -128,79 +128,80 @@
 char *FOCAL_PLANE;
 
-CatStats *gregions (CatStats *patch, int *nregion);
-Gradients *GetGradients ();
-Header *mkheader (int Nx, int Ny, int Nstars, Coords *coords);
-Header *mkmosaic (int Nx, int Ny, int Nstars, Coords *coords);
-StarData *getusno (CatStats *catstats, int *Nstars);
-StarData *getgsc (CatStats *catstats, int *NSTARS);
-StarData *get2mass (CatStats *catstats, int *NSTARS);
-StarData *getptolemy (CatStats *catstats, int *NSTARS);
-StarData *greference (int *Nrefcat);
-StarData *gcatalog (char *filename, int *Nstars);
-StarData *gptolemy (char *filename, int *NSTARS);
-double GetScatter (int *Nscatter, double *DL, double *DM, int bright);
-int find_dec_bands (CatStats *area);
-int load_ra_blocks (int Ndec, CatStats *area);
-int parse_GSC_line (CatStats *tregion, char *line);
-int fake_field (double RA, double DEC);
-int LoadStars (int Nfile, char **file);
-int project_refcat (StarData *refcat, int Nrefcat);
-int deproject_stars ();
-int project_stars ();
-int deproject_raw ();
-int project_ref ();
-int init_field ();
-int load_field (char *filename);
-int init_chips ();
-int load_chips (char *filename);
-int dump_stars (FILE *f, StarData *stars, int Nstars);
-int dump_grads (Gradients *grad, char *filename);
-int dump_match ();
-int dump_rawstars ();
-int dump_refcat (StarData *refcat, int Nrefcat);
-int match (StarData *refcat, int Nrefcat);
-int mkvector (int n, int m, int norder);
-int ClipOnFP (double Nsigma);
-void GetConfig (char *config, char *field, char *format, int N, void *ptr);
-void init_regions ();
-void add_to_regions (CatStats *area);
-void area_of_region (CatStats *region);
-void set_catalog (char *catdir);
-void FitChipLinear (StarData *raw, StarData *ref, int Nmatch, Coords *coords);
-void FitChipResid (StarData *raw, StarData *ref, int Nmatch, Coords *coords);
-void ConfigInit (int *argc, char **argv);
-void print_help ();
-void args (int *argc, char **argv);
-void field_stats ();
-void field_combine ();
-void fit_apply_grads (Coords *distort, Coords *project, int term);
-void fit_apply_coords (Coords *coords);
-void fit_eval ();
-void fit_add (double x1, double y1, double x2, double y2);
-void fit_init (int order);
-void fit_correct_grads (Gradients *in, Gradients *out, int term);
-void fit_free ();
-void output (char *ext, char *phu);
-void FitGradients (Gradients *grad);
-void uppercase (char *string);
-e_time parse_time (Header *header);
-int sortthree (double *X, double *Y, int *Z, int N);
-StarData *getstone (CatStats *input, int *nstars);
-void ChipToSky (StarData *stars, int Nstars, Coords *coords);
-void ChipToFP (StarData *stars, int Nstars, Coords *coords);
-void FPtoTP (StarData *stars, int Nstars, Coords *coords);
-void TPtoSky (StarData *stars, int Nstars, Coords *coords);
-void SkyToTP (StarData *stars, int Nstars, Coords *coords);
-void TPtoFP (StarData *stars, int Nstars, Coords *coords);
-void FPtoChip (StarData *stars, int Nstars, Coords *coords);
-int gaussj (double **a, int n, double **b, int m);
-void FitChips (int Norder);
-void FitChip (StarData *raw, StarData *ref, int Nmatch, Coords *coords);
-int mkpolyterm (int n, int m);
-void wchip (char *filename, Chip *data);
-void wstars (char *filename, SMPData *stars, int Nstars, Header *header);
-int rfits (Chip *mychip);
-int rtext (Chip *mychip);
-void wfits (char *filename, SMPData *stars, int Nstars, Header *header);
-int ConvertMatch (MatchData *data, int size, int nitems);
-void SaveResiduals (FILE *f, Header *header);
+/*** mosastro prototypes ***/
+void       ChipToFP           PROTO((StarData *stars, int Nstars, Coords *coords));
+void       ChipToSky          PROTO((StarData *stars, int Nstars, Coords *coords));
+int        ClipOnFP           PROTO((double Nsigma));
+void       ConfigInit         PROTO((int *argc, char **argv));
+int        ConvertMatch       PROTO((MatchData *data, int size, int nitems));
+void       FPtoChip           PROTO((StarData *stars, int Nstars, Coords *coords));
+void       FPtoTP             PROTO((StarData *stars, int Nstars, Coords *coords));
+void       FitChip            PROTO((StarData *raw, StarData *ref, int Nmatch, Coords *coords));
+void       FitChipLinear      PROTO((StarData *raw, StarData *ref, int Nmatch, Coords *coords));
+void       FitChipResid       PROTO((StarData *raw, StarData *ref, int Nmatch, Coords *coords));
+void       FitChips           PROTO((int Norder));
+void       FitGradients       PROTO((Gradients *grad));
+void       GetConfig          PROTO((char *config, char *field, char *format, int N, void *ptr));
+Gradients *GetGradients       PROTO(());
+double     GetScatter         PROTO((int *Nscatter, double *DL, double *DM, int bright));
+int        LoadStars          PROTO((int Nfile, char **file));
+void       SaveResiduals      PROTO((FILE *f, Header *header));
+void       SkyToTP            PROTO((StarData *stars, int Nstars, Coords *coords));
+void       TPtoFP             PROTO((StarData *stars, int Nstars, Coords *coords));
+void       TPtoSky            PROTO((StarData *stars, int Nstars, Coords *coords));
+void       add_to_regions     PROTO((CatStats *area));
+void       area_of_region     PROTO((CatStats *region));
+void       args               PROTO((int *argc, char **argv));
+int        deproject_raw      PROTO(());
+int        deproject_stars    PROTO(());
+int        dump_grads         PROTO((Gradients *grad, char *filename));
+int        dump_match         PROTO(());
+int        dump_rawstars      PROTO(());
+int        dump_refcat        PROTO((StarData *refcat, int Nrefcat));
+int        dump_stars         PROTO((FILE *f, StarData *stars, int Nstars));
+int        fake_field         PROTO((double RA, double DEC));
+void       field_combine      PROTO(());
+void       field_stats        PROTO(());
+int        find_dec_bands     PROTO((CatStats *area));
+void       fit_add            PROTO((double x1, double y1, double x2, double y2));
+void       fit_apply_coords   PROTO((Coords *coords));
+void       fit_apply_grads    PROTO((Coords *distort, Coords *project, int term));
+void       fit_correct_grads  PROTO((Gradients *in, Gradients *out, int term));
+void       fit_eval           PROTO(());
+void       fit_free           PROTO(());
+void       fit_init           PROTO((int order));
+int        gaussj             PROTO((double **a, int n, double **b, int m));
+StarData  *gcatalog           PROTO((char *filename, int *Nstars));
+StarData  *get2mass           PROTO((CatStats *catstats, int *NSTARS));
+StarData  *getgsc             PROTO((CatStats *catstats, int *NSTARS));
+StarData  *getptolemy         PROTO((CatStats *catstats, int *NSTARS));
+StarData  *getstone           PROTO((CatStats *input, int *nstars));
+StarData  *getusno            PROTO((CatStats *catstats, int *Nstars));
+StarData  *gptolemy           PROTO((char *filename, int *NSTARS));
+StarData  *greference         PROTO((int *Nrefcat));
+CatStats  *gregions           PROTO((CatStats *patch, int *nregion));
+int        init_chips         PROTO(());
+int        init_field         PROTO(());
+void       init_regions       PROTO(());
+int        load_chips         PROTO((char *filename));
+int        load_field         PROTO((char *filename));
+int        load_ra_blocks     PROTO((int Ndec, CatStats *area));
+int        match              PROTO((StarData *refcat, int Nrefcat));
+Header    *mkheader           PROTO((int Nx, int Ny, int Nstars, Coords *coords));
+Header    *mkmosaic           PROTO((int Nx, int Ny, int Nstars, Coords *coords));
+int        mkpolyterm         PROTO((int n, int m));
+int        mkvector           PROTO((int n, int m, int norder));
+void       output             PROTO((char *ext, char *phu));
+int        parse_GSC_line     PROTO((CatStats *tregion, char *line));
+e_time     parse_time         PROTO((Header *header));
+void       print_help         PROTO(());
+int        project_ref        PROTO(());
+int        project_refcat     PROTO((StarData *refcat, int Nrefcat));
+int        project_stars      PROTO(());
+int        rfits              PROTO((Chip *mychip));
+int        rtext              PROTO((Chip *mychip));
+void       set_catalog        PROTO((char *catdir));
+int        sortthree          PROTO((double *X, double *Y, int *Z, int N));
+void       uppercase          PROTO((char *string));
+void       wchip              PROTO((char *filename, Chip *data));
+void       wfits              PROTO((char *filename, SMPData *stars, int Nstars, Header *header));
+void       wstars             PROTO((char *filename, SMPData *stars, int Nstars, Header *header));
Index: /trunk/Ohana/src/opihi/include/convert.h
===================================================================
--- /trunk/Ohana/src/opihi/include/convert.h	(revision 4804)
+++ /trunk/Ohana/src/opihi/include/convert.h	(revision 4805)
@@ -4,21 +4,8 @@
 # define CONVERT_H
 
-/*** values for time formats */
-enum {TIME_NONE, TIME_JD, TIME_MJD, TIME_DATE, TIME_DAYS, TIME_HOURS, TIME_MINUTES, TIME_SECONDS};
-
-/*** conversion functions ***/
+/*** time/coord conversion functions not supplied by libohana ***/
 time_t        TimeRef               PROTO((double time, time_t TimeReference, int TimeFormat));
 double        TimeValue             PROTO((time_t time, time_t TimeReference, int TimeFormat));
-int           chk_time              PROTO((char *line));
-time_t        date_to_sec           PROTO((char *date));
-int           dms_to_ddd            PROTO((double *Value, char *string));
-time_t        jd_to_sec             PROTO((double jd));
-time_t        mjd_to_sec            PROTO((double mjd));
-char         *sec_to_date           PROTO((time_t second));
-double        sec_to_jd             PROTO((time_t second));
-double        sec_to_mjd            PROTO((time_t second));
-int           str_to_dtime          PROTO((char *line, double *second));
-int           str_to_radec          PROTO((double *ra, double *dec, char *str1, char *str2));
-int           str_to_time           PROTO((char *line, time_t *second));
+
 int           hh_hms                PROTO((double hh, int *hr, int *mn, double *sc));
 int           dd_dms                PROTO((double dd, int *dg, int *mn, double *sc));
@@ -33,4 +20,5 @@
 char         *meade_dec_to_str      PROTO((double deg));
 int           hstgsc_hms_to_deg     PROTO((double *h0, double *h1, double *d0, double *d1, char *string));
+char         *strptime              PROTO((const char *s, const char *format, struct tm *tm));
 
 # endif
Index: /trunk/Ohana/src/opihi/include/dvo1.h
===================================================================
--- /trunk/Ohana/src/opihi/include/dvo1.h	(revision 4804)
+++ /trunk/Ohana/src/opihi/include/dvo1.h	(revision 4805)
@@ -23,59 +23,54 @@
 } RegionFile;
 
-/* aregion, region_list, match_image, LoadImages */
-RegionFile   *find_regions	    PROTO((double Ra, double Dec, double radius, int *Nregions));
-GSCRegion    *get_regions	    PROTO((Image *image, int *Nregions));
-void	      aregion		    PROTO((GSCRegion *region, FILE *f, double ra, double dec, char *path));
-RegionFile   *region_list	    PROTO((char *filename, int *Nregions));
-int	      match_image	    PROTO((Image *image, int Nimage, unsigned int T, short int S));
-Image  	     *LoadImages	    PROTO((int *Nimage));
-void	      image_subset	    PROTO((Image *image, int Nimage, int **Subset, int *Nsubset, Graphdata *graph, int RegionSelect, unsigned long int tzero, double trange, int TimeSelect));
-void	      sort_images	    PROTO((Image *image, int N));
-void	      sortave		    PROTO((Average *ave, int N));
-void	      cprecess		    PROTO((Average *average, int Naverage, double in_epoch, double out_epoch));
-void	      compare		    PROTO((Catalog *catlog1, Catalog *catlog2, Vector *rvec,  Vector *dvec,  Vector *mvec, Vector *drvec, Vector *ddvec, Vector *dmvec, double radius));
-
-/*** photometry functions ***/
-double       *ExtractByDMag	    PROTO((PhotCode **code, int *mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist, int param));
-double       *ExtractDMag	    PROTO((PhotCode **code, int *mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist));
-double       *ExtractMagnitudes	    PROTO((PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int *n));
-double       *ExtractMeasures	    PROTO((PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist, int param));
+/*** dvo prototypes ***/
+int           DetermineTypeCode     PROTO((Average *average, Measure *measure, int code));
+double        DetermineTypefrac     PROTO((Average *average, Measure *measure, PhotCode *code));
+double        ExtractAverages       PROTO((PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int param));
+double       *ExtractByDMag         PROTO((PhotCode **code, int *mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist, int param));
+double       *ExtractDMag           PROTO((PhotCode **code, int *mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist));
+double       *ExtractMagnitudes     PROTO((PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int *n));
+double       *ExtractMeasures       PROTO((PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist, int param));
 double       *ExtractMeasuresByDMag PROTO((PhotCode **code, int *mode, int use_first, Average *average, SecFilt *secfilt, Measure *measure, int *nlist, int param));
 double       *ExtractMeasuresDMag   PROTO((PhotCode **code, int *mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist));
+void          FreeImageSelection    PROTO(());
+void          FreeImageSelection    PROTO(());
+int           GetAverageParam       PROTO((char *parname));
+void          GetAverageParamHelp   PROTO(());
+int           GetMagMode            PROTO((char *string));
+double        GetMeasure            PROTO((int param, Average *average, Measure *measure, double mag));
+int           GetMeasureParam       PROTO((char *parname));
+int           GetMeasureTypeCode    PROTO((Measure *measure));
+int           GetPhotcodeInfo       PROTO((char *string, PhotCode **Code, int *Mode));
+int           GetRegionSelection    PROTO(());
+int           GetSelectionParam     PROTO(());
+int           GetTimeSelection      PROTO((time_t *tz, time_t *te));
+void          InitDVO               PROTO(());
+int           InitPhotcodes         PROTO(());
+Image        *LoadImages            PROTO((int *Nimage));
+Image        *MatchImage            PROTO((unsigned int time, short int source));
 Image        *MatchImage            PROTO((unsigned int time, short int source));
 Coords       *MatchMosaic           PROTO((unsigned int time, short int source));
-int	      DetermineTypeCode	    PROTO((Average *average, Measure *measure, int code));
-double	      DetermineTypefrac	    PROTO((Average *average, Measure *measure, PhotCode *code));
-double	      ExtractAverages	    PROTO((PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int param));
-void	      FreeImageSelection    PROTO(());
-int	      GetAverageParam	    PROTO((char *parname));
-void	      GetAverageParamHelp   PROTO(());
-int	      GetMagMode	    PROTO((char *string));
-double 	      GetMeasure	    PROTO((int param, Average *average, Measure *measure, double mag));
-int	      GetMeasureParam	    PROTO((char *parname));
-int	      GetMeasureTypeCode    PROTO((Measure *measure));
-int	      GetPhotcodeInfo	    PROTO((char *string, PhotCode **Code, int *Mode));
-int	      GetSelectionParam	    PROTO(());
-int	      InitPhotcodes	    PROTO(());
-int	      Quality		    PROTO((Measure *measure, int IsDophot));
+int           Quality               PROTO((Measure *measure, int IsDophot));
 int           SelectMags            PROTO((int Nphot, int Tphot, int Ns, Average *average, Measure *measure, SecFilt *secfilt, int UL));
-int	      SetImageSelection	    PROTO((int mode));
-int	      SetPhotSelections	    PROTO((int *argc, char **argv, int Nparams));
-int	      SetSelectionParam	    PROTO((int param));
-int	      TestAverage	    PROTO((PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure));
-int	      TestPhotSelections    PROTO((PhotCode **code, int *mode, int param));
+RegionFile   *SelectRegions         PROTO((char *RegionName, char *RegionList, int *nregions));
+int           SetImageSelection     PROTO((int mode));
+int           SetPhotSelections     PROTO((int *argc, char **argv, int Nparams));
+int           SetRegionSelection    PROTO((int *argc, char **argv, char **RegionName, char **RegionList));
+int           SetSelectionParam     PROTO((int param));
+int           TestAverage           PROTO((PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure));
+int           TestPhotSelections    PROTO((PhotCode **code, int *mode, int param));
+void          aregion               PROTO((GSCRegion *region, FILE *f, double ra, double dec, char *path));
+void          compare               PROTO((Catalog *catlog1, Catalog *catlog2, Vector *rvec,  Vector *dvec,  Vector *mvec, Vector *drvec, Vector *ddvec, Vector *dmvec, double radius));
+void          cprecess              PROTO((Average *average, int Naverage, double in_epoch, double out_epoch));
+RegionFile   *find_regions          PROTO((double Ra, double Dec, double radius, int *Nregions));
+GSCRegion    *get_regions           PROTO((Image *image, int *Nregions));
+void          image_subset          PROTO((Image *image, int Nimage, int **Subset, int *Nsubset, Graphdata *graph, int RegionSelect, unsigned long int tzero, double trange, int TimeSelect));
+int           match_image           PROTO((Image *image, int Nimage, unsigned int T, short int S));
+int           match_image_subset    PROTO((Image *image, int *subset, int Nsubset, unsigned int T, short int S));
 void          print_value           PROTO((FILE *f, double value, short int ival));
-
-RegionFile   *SelectRegions         PROTO((char *RegionName, char *RegionList, int *nregions));
-
-void InitDVO ();
-
-void FreeImageSelection ();
-Image *MatchImage (unsigned int time, short int source);
-int GetRegionSelection ();
-int SetRegionSelection (int *argc, char **argv, char **RegionName, char **RegionList);
-void sort_image_subset (Image *image, int *subset, int N);
-int match_image_subset (Image *image, int *subset, int Nsubset, unsigned int T, short int S);
-int GetTimeSelection (time_t *tz, time_t *te);
+RegionFile   *region_list           PROTO((char *filename, int *Nregions));
+void          sort_image_subset     PROTO((Image *image, int *subset, int N));
+void          sort_images           PROTO((Image *image, int N));
+void          sortave               PROTO((Average *ave, int N));
 
 # endif
Index: /trunk/Ohana/src/opihi/lib.data/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/Makefile	(revision 4804)
+++ /trunk/Ohana/src/opihi/lib.data/Makefile	(revision 4805)
@@ -21,5 +21,4 @@
 # general numerical functions (libdata) #####################
 srcs = \
-$(SDIR)/convert.$(ARCH).o               \
 $(SDIR)/sort.$(ARCH).o                  \
 $(SDIR)/fft.$(ARCH).o			\
Index: /trunk/Ohana/src/opihi/lib.data/convert.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/convert.c	(revision 4804)
+++ /trunk/Ohana/src/opihi/lib.data/convert.c	(revision 4805)
@@ -3,7 +3,6 @@
 # include <time.h>
 
-char *strptime(const char *s, const char *format, struct tm *tm);
-
-  
+/** additional time / coordinate conversions not supplied by libohana **/
+
 int hh_hms (double hh, int *hr, int *mn, double *sc) {
 
@@ -111,60 +110,4 @@
 }
 
-/***** convert [-]00:00:00 to 0.0000 ****/
-int dms_to_ddd (double *Value, char *string) {
-  
-  int valid, neg, status;
-  double tmp, value;
-  char *p1, *p2, *px;
-
-  valid = FALSE; 
-  neg = FALSE;
-  stripwhite (string);
-  p1 = string;
-  px = string + strlen(string);
-
-  if (string[0] == '-') { 
-    valid = TRUE; 
-    neg = TRUE;
-    p1 = &string[1];
-  }
-  if (string[0] == '+') { 
-    valid = TRUE; 
-    neg = FALSE;
-    p1 = &string[1];
-  }
-  if (isdigit(string[0])) { 
-    valid = TRUE;
-    p1 = &string[0];
-  }
-  if (!valid) { return (FALSE); }
-
-  status = 1;
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) return (FALSE); /* entry not a number: +fred */
-  value = tmp;
-  if (p2 == px) goto escape;    /* entry only number: +1.0 */ 
-  p1 = p2 + 1;
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;    /* entry not a number: +1:fred */
-  status = 2;
-  value += tmp / 60.0;
-  if (p2 == px) goto escape;    /* entry only number: +1:1 */
-  p1 = p2 + 1;
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;    /* entry not a number: +1:1:fred */
-  value += tmp / 3600.0;
-
- escape:
-  if (neg) {
-    value *= -1;
-  }
-  *Value = value;
-
-  return (status);
-}
-
 /***** convert 00:00:00 or 00:00 to 0 - 86400 ****/
 int hms_to_sec (char *string, time_t *second) {
@@ -211,33 +154,4 @@
   if (*p) return (FALSE);
   *second = time.tm_wday*86400 + time.tm_hour*3600 + time.tm_min*60 + time.tm_sec;
-  return (TRUE);
-}
-
-/**********/
-int str_to_radec (double *ra, double *dec, char *str1, char *str2) {
-
-  double Ra, Dec;
-
-  *ra = *dec = 0;
-  switch (dms_to_ddd (&Ra, str1)) {
-  case 0:
-    fprintf (stderr, "syntax error in RA\n");
-    return (FALSE);
-  case 1:
-    break;
-  case 2:
-    Ra = Ra * 15;
-    break;
-  }
-  switch (dms_to_ddd (&Dec, str2)) {
-  case 0:
-    fprintf (stderr, "syntax error in DEC\n");
-    return (FALSE);
-  case 1:
-  case 2:
-    break;
-  }
-  *ra = Ra;
-  *dec = Dec;
   return (TRUE);
 }
@@ -302,236 +216,4 @@
 }
 
-/**********/
-int chk_time (char *line) {
-
-  char *p1, *p2;
-  double tmp;
-  int mode;
-
-  p1 = line;
-  tmp = strtod (p1, &p2);
-  mode = TIME_DATE;
-  if (p2 == p1 + strlen (p1) - 1) {
-    if (*p2 == 'j') {
-      mode = TIME_JD;
-    }
-    if (*p2 == 'J') {
-      mode = TIME_MJD;
-    }
-    if (*p2 == 'd') {
-      mode = TIME_DAYS;
-    }
-    if (*p2 == 'h') {
-      mode = TIME_HOURS;
-    }
-    if (*p2 == 'm') {
-      mode = TIME_MINUTES;
-    }
-    if (*p2 == 's') {
-      mode = TIME_SECONDS;
-    }
-  }
-  return (mode);
-}
-
-/**********/
-int str_to_time (char *line, time_t *second) {
-  
-  char *tmpline;
-  struct tm *gmt;
-  struct timeval now;
-  double jd;
-  time_t tsec;
-
-  if (!strcasecmp (line, "NOW")) {
-    gettimeofday (&now, (struct timezone *) NULL);
-    *second = now.tv_sec;
-    return (TRUE);
-  }
-    
-  if (!strncasecmp (line, "TODAY", 5)) {
-    gettimeofday (&now, (struct timezone *) NULL);
-    if (line[5]) { /* line has extra data (ie, hh:mm:ss) */
-      tsec = now.tv_sec;
-      ALLOCATE (tmpline, char, 64);
-      gmt   = gmtime (&tsec);
-      sprintf (tmpline, "%04d/%02d/%02d,%s", 
-	       1900 + gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, &line[6]);
-      *second = date_to_sec (tmpline);
-      free (tmpline);
-      return (TRUE);
-    } else {
-      *second = 86400 * ((int)(now.tv_sec / 86400));
-      return (TRUE); 
-    }
-  }
-    
-  switch (chk_time (line)) {
-  case 0:
-    return (FALSE);
-  case TIME_JD:
-    jd = strtod (line, 0);
-    *second = jd_to_sec (jd);
-    return (TRUE);
-  case TIME_MJD:
-    jd = strtod (line, 0);
-    *second = mjd_to_sec (jd);
-    return (TRUE);
-  case TIME_DATE:
-    *second = date_to_sec (line);
-    return (TRUE);
-  case TIME_DAYS:
-    *second = strtod (line, 0) * 86400.0;
-    return (TRUE);
-  case TIME_HOURS:
-    *second = strtod (line, 0) * 3600.0;
-    return (TRUE);
-  case TIME_MINUTES:
-    *second = strtod (line, 0) * 60.0;
-    return (TRUE);
-  case TIME_SECONDS:
-    *second = strtod (line, 0);
-    return (TRUE);
-  }
-  return (FALSE);
-}
-
-
-/**********/
-int str_to_dtime (char *line, double *second) {
-  
-  switch (chk_time (line)) {
-  case 0:
-  case TIME_JD:
-  case TIME_MJD:
-  case TIME_DATE:
-    return (FALSE);
-  case TIME_DAYS:
-    *second = strtod (line, 0) * 86400.0;
-    return (TRUE);
-  case TIME_HOURS:
-    *second = strtod (line, 0) * 3600.0;
-    return (TRUE);
-  case TIME_MINUTES:
-    *second = strtod (line, 0) * 60.0;
-    return (TRUE);
-  case TIME_SECONDS:
-    *second = strtod (line, 0);
-    return (TRUE);
-  }
-  return (FALSE);
-}
-
-/**********/
-double sec_to_jd (time_t second) {
-
-  double jd;
-  
-  jd = second/86400.0 + 2440587.5;
-  return (jd);
-}
-
-/**********/
-time_t jd_to_sec (double jd) {
-
-  time_t second;
-
-  second = (jd - 2440587.5)*86400;
-  return (second);
-}
-
-/**********/
-double sec_to_mjd (time_t second) {
-
-  double mjd;
-  
-  mjd = second/86400.0 + 40587.0;
-  return (mjd);
-}
-
-/**********/
-time_t mjd_to_sec (double mjd) {
-
-  time_t second;
-
-  second = (mjd - 40587.0)*86400;
-  return (second);
-}
-
-/**********/
-char *sec_to_date (time_t second) {
-  
-  struct tm *gmt;
-  char *line;
-  
-  ALLOCATE (line, char, 64);
-  gmt   = gmtime (&second);
-  sprintf (line, "%04d/%02d/%02d,%02d:%02d:%02d", 
-	   1900 + gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, 
-	   gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
-  return (line);
-
-}
-
-/***** date in format yyyy/mm/dd,hh:mm:ss *****/
-time_t date_to_sec (char *date) {
-  
-  time_t second;
-  double tmp, jd;
-  struct tm now;
-  char *p1, *p2, *px;
-  
-  p1 = date;
-  px = date + strlen(date);
-  bzero (&now, sizeof(now));
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;
-  now.tm_year = tmp;
-  if (now.tm_year > 1000) now.tm_year -= 1900;
-  if (now.tm_year <   50) now.tm_year += 100;
-  if (p2 == px) goto escape;  
-  p1 = p2 + 1;
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;
-  now.tm_mon = tmp - 1; /* mon runs from 0 - 11 */
-  if (p2 == px) goto escape;  
-  p1 = p2 + 1;
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;
-  now.tm_mday = tmp;
-  if (p2 == px) goto escape;  
-  p1 = p2 + 1;
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;
-  p1 = p2 + 1;
-  now.tm_hour = tmp;
-  if (p2 == px) goto escape;  
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;
-  now.tm_min = tmp;
-  if (p2 == px) goto escape;  
-  p1 = p2 + 1;
-
-  tmp = strtod (p1, &p2);
-  if (p2 == p1) goto escape;
-  now.tm_sec = tmp;
-  if (p2 == px) goto escape;  
-  p1 = p2 + 1;
-
- escape:
-  jd = now.tm_mday - 32075 + (int)(1461*(1900 + now.tm_year + 4800 + (int)(((now.tm_mon+1)-14)/12))/4)
-    + (int)(367*((now.tm_mon+1) - 2 - (int)(((now.tm_mon+1) - 14)/12)*12)/12)
-    - (int)(3*(int)((1900 + now.tm_year + 4900 + (int)(((now.tm_mon+1) - 14)/12))/100)/4) - 0.5;
-  
-  second = (jd - 2440587.5)*86400 + 3600.0*now.tm_hour + now.tm_min*60.0 + now.tm_sec;
-
-  return (second);
-}
-
 /* convert UNIX time to a value referenced to the TimeReference in the given unit */
 double TimeValue (time_t time, time_t TimeReference, int TimeFormat) {
@@ -599,9 +281,10 @@
 
 /* times may be in forms as:
-   20040200450s (N seconds since 1970.0)
-   2440900.232j (julian date)
-   99/02/23,03:22:18 (date string)
-   (separators may be anything except space, +, -)
-   99:02:15:12:23:30
-   99:02:15:12h23m30s
-   */
+ * 20040200450s (N seconds since 1970.0)
+ * 2440900.232j (julian date)
+ * 99/02/23,03:22:18 (date string)
+ * (separators may be anything except space, +, -)
+ * 99:02:15:12:23:30
+ * 99:02:15:12h23m30s
+ */
+
Index: /trunk/Ohana/src/relphot/Makefile
===================================================================
--- /trunk/Ohana/src/relphot/Makefile	(revision 4804)
+++ /trunk/Ohana/src/relphot/Makefile	(revision 4805)
@@ -41,5 +41,4 @@
 $(SRC)/plotstuff.$(ARCH).o	 \
 $(SRC)/misc.$(ARCH).o		 \
-$(SRC)/time.$(ARCH).o		 \
 $(SRC)/reload_catalogs.$(ARCH).o \
 $(SRC)/free_catalogs.$(ARCH).o   \
Index: /trunk/Ohana/src/relphot/include/relphot.h
===================================================================
--- /trunk/Ohana/src/relphot/include/relphot.h	(revision 4804)
+++ /trunk/Ohana/src/relphot/include/relphot.h	(revision 4805)
@@ -88,5 +88,5 @@
 
 int TimeSelect;
-unsigned int TSTART, TSTOP;
+time_t TSTART, TSTOP;
 
 # ifdef GRID_V1
@@ -98,115 +98,98 @@
 # endif
 
-/***** prototypes ****/
-int main (int argc, char **argv);
-Catalog *load_catalogs (GSCRegion *region, int Nregion, GSCRegion *fullregion);
-GSCRegion *load_images (char *seed, int *nregion, GSCRegion *fullregion);
-GSCRegion *name_region (char *name, int *Nregions);
-GSCRegion *find_regions (Image *image, int Nimage, int *Nregions, GSCRegion *fullregion);
-GSCRegion *get_regions (double minRa, double maxRa, double minDec, double maxDec, int *Nregions);
-Image *find_images (GSCRegion *region, int Nregion, int *Nimages, int **LineNum);
-double opening_angle (double x1, double y1, double x2, double y2, double x3, double y3);
-int edge_check (double *x1, double *y1, double *x2, double *y2);
-int corner_check (double *x1, double *y1, double *x2, double *y2);
-int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string);
-int bcatalog (Catalog *subcatalog, Catalog *catalog, GSCRegion *fullregion);
-int findMosaics (Catalog *catalog, int Ncatalog);
-int setMmos (Catalog *catalog, int Poor);
-int setMrel (Catalog *catalog, int Ncatalog);
-int setrefcode (Image *image, int Nimage); 
-int args (int argc, char **argv);
-short getMgrid (int meas, int cat);
-short getMcal (int meas, int cat);
-short getMmos (int meas, int cat);
-short getMrel (Catalog *catalog, int meas, int cat);
-void initGrid (int dX, int dY);
-void initGridBins (Catalog *catalog, int Ncatalog);
-void initMosaics (Image *image, int Nimage);
-void initMosaicGrid (Image *image, int Nimage);
-void initMosaicBins (Catalog *catalog, int Ncatalog);
-void initMrel (Catalog *catalog, int Ncatalog);
-void initialize (int argc, char **argv);
-void ConfigInit (int *argc, char **argv);
-void mark_images (Image *image, int Nimage, Image *timage, int Ntimage);
-void setMgrid (Catalog *catalog);
-void dumpGrid ();
-void initImages (Image *input, int N);
-void initImageBins (Catalog *catalog, int Ncatalog);
-void findImages (Catalog *catalog, int Ncatalog);
-void matchImage (Catalog *catalog, int meas, int cat);
-void matchMosaics (Catalog *catalog, int meas, int cat);
-void setMcal (Catalog *catalog, int Poor);
-void clean_images ();
-void clean_stars (Catalog *catalog, int Ncatalog);
-void reload_catalogs (GSCRegion *region, int Nregion, GSCRegion *fullregion);
-void free_catalogs (Catalog *catalog, int Ncatalog);
-void set_ZP (double ZERO);
-char *GetPhotnamebyCode (PhotCodeData *photcodes, int code);
-StatType statsStarS (Catalog *catalog, int Ncatalog);
-StatType statsStarX (Catalog *catalog, int Ncatalog);
-StatType statsStarN (Catalog *catalog, int Ncatalog);
-StatType statsImageN (Catalog *catalog);
-StatType statsImageX (Catalog *catalog);
-StatType statsImageM (Catalog *catalog);
-void plot_scatter (Catalog *catalog, int Ncatalog);
-void plot_defaults (Graphdata *graphdata);
-void plot_list (Graphdata *graphdata, double *xlist, double *ylist, int N, char *label, char *file);
-void plot_stars (Catalog *catalog, int Ncatalog);
-void plot_chisq (Catalog *catalog, int Ncatalog);
-void plot_star_coords (Catalog *catalog, int Ncatalog);
-void plot_grid (Catalog *catalog);
-void dump_grid (); 
-int *SelectRefMosaic (Mosaic **refmosaic, int *Nimage);
-Image *getimage (int N);
-void InterpolateGrid (float *buffer, int Nx, int Ny, Coords *ccd, Coords *gcoords);
-void plot_mosaic_fields (Catalog *catalog);
-void plot_mosaics ();
-void plot_images ();
-void wimages ();
-void clean_mosaics ();
-void freeMosaicBins (int Ncatalog);
-void freeGridBins (int Ncatalog);
-void clean_measures (Catalog *catalog, int Ncatalog, int final);
-void global_stats (Catalog *catalog, int Ncatalog);
-StatType statsImagedM (Catalog *catalog);
-StatType statsMosaicdM (Catalog *catalog);
-StatType statsMosaicM (Catalog *catalog);
-StatType statsMosaicN (Catalog *catalog);
-StatType statsMosaicX (Catalog *catalog);
-Coords *getCoords (int meas, int cat);
-int setExclusions (Catalog *catalog, int Ncatalog);
-void freeImageBins (int Ncatalog);
-void sortA (double *X, int N);
-void sortB (double *X, double *Y, int N);
-void sortC (double *X, double *Y, double *F1, double *F2, int N);
-void sortD (double *X, double *Y, double *Z, int N);
-void initstats (char *mode);
-int liststats (double *value, double *dvalue, int N, StatType *stats);
-
-int dms_to_ddd (double *Value, char *string);
-int str_to_radec (double *ra, double *dec, char *str1, char *str2);
-int chk_time (char *line);
-double sec_to_jd (unsigned long second);
-unsigned long int jd_to_sec (double jd);
-char *sec_to_date (unsigned long second);
-unsigned long date_to_sec (char *date);
-  
-int str_to_time (char *line, unsigned int *second);
-int str_to_dtime (char *line, double *second);
-int Fseek (FILE *f, long offset, int whence);
-void GetConfig (char *config, char *field, char *format, int N, void *ptr);
-void skip_measurements (Catalog *catalog, int pass);
-Image *getimages (int *N);
-
-void setMrelFinal (Catalog *catalog);
-void skip_measurements (Catalog *catalog, int pass);
-GSCRegion *get_regions (double minRa, double maxRa, double minDec, double maxDec, int *Nregions);
-int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string);
-GSCRegion *find_regions (Image *image, int Nimage, int *Nregions, GSCRegion *fullregion);
-void getfullregion (Image *image, int Nimage, GSCRegion *fullregion);
-void setMcalFinal (Image *image, int Nimage);
-int gcatalog (Catalog *catalog, int FINAL);
-void write_coords (Header *header, Coords *coords);
-void wcatalog (Catalog *catalog);
-int setMrelOutput (Catalog *catalog, int Ncatalog, int mark);
-int setMcalOutput (Catalog *catalog, int Ncatalog);
+/*** relphot prototypes ***/
+void          ConfigInit          PROTO((int *argc, char **argv));
+int           Fseek               PROTO((FILE *f, long offset, int whence));
+void          GetConfig           PROTO((char *config, char *field, char *format, int N, void *ptr));
+char         *GetPhotnamebyCode   PROTO((PhotCodeData *photcodes, int code));
+void          InterpolateGrid     PROTO((float *buffer, int Nx, int Ny, Coords *ccd, Coords *gcoords));
+int          *SelectRefMosaic     PROTO((Mosaic **refmosaic, int *Nimage));
+int           args                PROTO((int argc, char **argv));
+int           bcatalog            PROTO((Catalog *subcatalog, Catalog *catalog, GSCRegion *fullregion));
+void          clean_images        PROTO(());
+void          clean_measures      PROTO((Catalog *catalog, int Ncatalog, int final));
+void          clean_mosaics       PROTO(());
+void          clean_stars         PROTO((Catalog *catalog, int Ncatalog));
+int           corner_check        PROTO((double *x1, double *y1, double *x2, double *y2));
+void          dumpGrid            PROTO(());
+void          dump_grid           PROTO(()); 
+int           edge_check          PROTO((double *x1, double *y1, double *x2, double *y2));
+void          findImages          PROTO((Catalog *catalog, int Ncatalog));
+int           findMosaics         PROTO((Catalog *catalog, int Ncatalog));
+Image        *find_images         PROTO((GSCRegion *region, int Nregion, int *Nimages, int **LineNum));
+GSCRegion    *find_regions        PROTO((Image *image, int Nimage, int *Nregions, GSCRegion *fullregion));
+void          freeGridBins        PROTO((int Ncatalog));
+void          freeImageBins       PROTO((int Ncatalog));
+void          freeMosaicBins      PROTO((int Ncatalog));
+void          free_catalogs       PROTO((Catalog *catalog, int Ncatalog));
+int           gcatalog            PROTO((Catalog *catalog, int FINAL));
+Coords       *getCoords           PROTO((int meas, int cat));
+short         getMcal             PROTO((int meas, int cat));
+short         getMgrid            PROTO((int meas, int cat));
+short         getMmos             PROTO((int meas, int cat));
+short         getMrel             PROTO((Catalog *catalog, int meas, int cat));
+GSCRegion    *get_regions         PROTO((double minRa, double maxRa, double minDec, double maxDec, int *Nregions));
+void          getfullregion       PROTO((Image *image, int Nimage, GSCRegion *fullregion));
+Image        *getimage            PROTO((int N));
+Image        *getimages           PROTO((int *N));
+void          global_stats        PROTO((Catalog *catalog, int Ncatalog));
+void          initGrid            PROTO((int dX, int dY));
+void          initGridBins        PROTO((Catalog *catalog, int Ncatalog));
+void          initImageBins       PROTO((Catalog *catalog, int Ncatalog));
+void          initImages          PROTO((Image *input, int N));
+void          initMosaicBins      PROTO((Catalog *catalog, int Ncatalog));
+void          initMosaicGrid      PROTO((Image *image, int Nimage));
+void          initMosaics         PROTO((Image *image, int Nimage));
+void          initMrel            PROTO((Catalog *catalog, int Ncatalog));
+void          initialize          PROTO((int argc, char **argv));
+void          initstats           PROTO((char *mode));
+int           liststats           PROTO((double *value, double *dvalue, int N, StatType *stats));
+Catalog      *load_catalogs       PROTO((GSCRegion *region, int Nregion, GSCRegion *fullregion));
+GSCRegion    *load_images         PROTO((char *seed, int *nregion, GSCRegion *fullregion));
+int           main                PROTO((int argc, char **argv));
+void          mark_images         PROTO((Image *image, int Nimage, Image *timage, int Ntimage));
+void          matchImage          PROTO((Catalog *catalog, int meas, int cat));
+void          matchMosaics        PROTO((Catalog *catalog, int meas, int cat));
+GSCRegion    *name_region         PROTO((char *name, int *Nregions));
+double        opening_angle       PROTO((double x1, double y1, double x2, double y2, double x3, double y3));
+void          plot_chisq          PROTO((Catalog *catalog, int Ncatalog));
+void          plot_defaults       PROTO((Graphdata *graphdata));
+void          plot_grid           PROTO((Catalog *catalog));
+void          plot_images         PROTO(());
+void          plot_list           PROTO((Graphdata *graphdata, double *xlist, double *ylist, int N, char *label, char *file));
+void          plot_mosaic_fields  PROTO((Catalog *catalog));
+void          plot_mosaics        PROTO(());
+void          plot_scatter        PROTO((Catalog *catalog, int Ncatalog));
+void          plot_star_coords    PROTO((Catalog *catalog, int Ncatalog));
+void          plot_stars          PROTO((Catalog *catalog, int Ncatalog));
+void          reload_catalogs     PROTO((GSCRegion *region, int Nregion, GSCRegion *fullregion));
+int           setExclusions       PROTO((Catalog *catalog, int Ncatalog));
+void          setMcal             PROTO((Catalog *catalog, int Poor));
+void          setMcalFinal        PROTO((Image *image, int Nimage));
+int           setMcalOutput       PROTO((Catalog *catalog, int Ncatalog));
+void          setMgrid            PROTO((Catalog *catalog));
+int           setMmos             PROTO((Catalog *catalog, int Poor));
+int           setMrel             PROTO((Catalog *catalog, int Ncatalog));
+void          setMrelFinal        PROTO((Catalog *catalog));
+int           setMrelOutput       PROTO((Catalog *catalog, int Ncatalog, int mark));
+void          set_ZP              PROTO((double ZERO));
+int           setrefcode          PROTO((Image *image, int Nimage)); 
+void          skip_measurements   PROTO((Catalog *catalog, int pass));
+void          sortA               PROTO((double *X, int N));
+void          sortB               PROTO((double *X, double *Y, int N));
+void          sortC               PROTO((double *X, double *Y, double *F1, double *F2, int N));
+void          sortD               PROTO((double *X, double *Y, double *Z, int N));
+StatType      statsImageM         PROTO((Catalog *catalog));
+StatType      statsImageN         PROTO((Catalog *catalog));
+StatType      statsImageX         PROTO((Catalog *catalog));
+StatType      statsImagedM        PROTO((Catalog *catalog));
+StatType      statsMosaicM        PROTO((Catalog *catalog));
+StatType      statsMosaicN        PROTO((Catalog *catalog));
+StatType      statsMosaicX        PROTO((Catalog *catalog));
+StatType      statsMosaicdM       PROTO((Catalog *catalog));
+StatType      statsStarN          PROTO((Catalog *catalog, int Ncatalog));
+StatType      statsStarS          PROTO((Catalog *catalog, int Ncatalog));
+StatType      statsStarX          PROTO((Catalog *catalog, int Ncatalog));
+void          wcatalog            PROTO((Catalog *catalog));
+void          wimages             PROTO(());
+void          write_coords        PROTO((Header *header, Coords *coords));
Index: /trunk/Ohana/src/relphot/src/get_regions.c
===================================================================
--- /trunk/Ohana/src/relphot/src/get_regions.c	(revision 4804)
+++ /trunk/Ohana/src/relphot/src/get_regions.c	(revision 4805)
@@ -166,43 +166,2 @@
   
 }
-
-/**********/
-int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string) {
-  
-  int flag_d0, flag_d1, flag_h0, flag_h1;
-  double tmp;
-  
-  *d0 = *h0 = *d1 = *h1 = 0;
-
-  flag_h0 = dparse (h0, 1, string);
-  flag_h1 = dparse (h1, 4, string);
-  flag_d0 = dparse (d0, 7, string);
-  flag_d1 = dparse (d1, 9, string);
-  *h0 *= flag_h0;
-  *h1 *= flag_h1;
-  *d0 *= flag_d0;
-  *d1 *= flag_d1;
-
-  dparse (&tmp, 2, string);
-  *h0 += tmp/60.0;
-  dparse (&tmp, 3, string);
-  *h0 += tmp/3600.0;
-  
-  dparse (&tmp, 5, string);
-  *h1 += tmp/60.0;
-  dparse (&tmp, 6, string);
-  *h1 += tmp/3600.0;
-  
-  dparse (&tmp, 8, string);
-  *d0 += tmp/60.0;
-
-  dparse (&tmp, 10, string);
-  *d1 += tmp/60.0;
-
-  *h0 *= 15*flag_h0;
-  *h1 *= 15*flag_h1;
-  *d0 *= flag_d0;
-  *d1 *= flag_d1;
-
-  return (TRUE);
-}
Index: /trunk/Ohana/src/relphot/src/misc.c
===================================================================
--- /trunk/Ohana/src/relphot/src/misc.c	(revision 4804)
+++ /trunk/Ohana/src/relphot/src/misc.c	(revision 4805)
@@ -182,2 +182,20 @@
 }
 
+/* fseek with timeout - 0.5 sec */
+int Fseek (FILE *f, long offset, int whence) {
+
+  int status;
+
+  status = fseek (f, offset, whence);
+  if (status == -1) {
+    int k;
+    /* fprintf (stderr, "problem seeking position: %d\n", errno); */
+    for (k = 0; (k < 10) && ((status = fseek (f, 0, SEEK_SET)) == -1); k++) usleep (50000);
+    if (status == -1) {
+      /* fprintf (stderr, "ERROR: serious problem seeking position: %d\n", errno); */
+      /* clear lock at this point? */
+      return (0);
+    }
+  }
+  return (1);
+}
Index: /trunk/Ohana/src/relphot/src/time.c
===================================================================
--- /trunk/Ohana/src/relphot/src/time.c	(revision 4804)
+++ /trunk/Ohana/src/relphot/src/time.c	(revision 4805)
@@ -1,3 +1,5 @@
 # include "relphot.h"
+
+enum {TIME_NONE, TIME_DATE, TIME_DAYS, TIME_HOURS, TIME_MINUTES, TIME_SECONDS, TIME_JD, TIME_MJD};
 
 /***** convert [-]00:00:00 to 0.0000 ****/
@@ -86,11 +88,4 @@
 }
 
-# define FORMAT_DAYS    1
-# define FORMAT_HOURS   2
-# define FORMAT_MINUTES 3
-# define FORMAT_SECONDS 4
-# define FORMAT_JD      5
-# define FORMAT_DATE    6
-
 /**********/
 int chk_time (char *line) {
@@ -102,22 +97,24 @@
   p1 = line;
   tmp = strtod (p1, &p2);
+  mode = TIME_DATE;
   if (p2 == p1 + strlen (p1) - 1) {
     if (*p2 == 'd') {
-      mode = FORMAT_DAYS;
+      mode = TIME_DAYS;
     }
     if (*p2 == 'h') {
-      mode = FORMAT_HOURS;
+      mode = TIME_HOURS;
     }
     if (*p2 == 'm') {
-      mode = FORMAT_MINUTES;
+      mode = TIME_MINUTES;
     }
     if (*p2 == 's') {
-      mode = FORMAT_SECONDS;
+      mode = TIME_SECONDS;
     }
     if (*p2 == 'j') {
-      mode = FORMAT_JD;
-    }
-  } else { 
-    mode = FORMAT_DATE;
+      mode = TIME_JD;
+    }
+    if (*p2 == 'J') {
+      mode = TIME_MJD;
+    }
   }
   return (mode);
@@ -125,8 +122,11 @@
 
 /**********/
-int str_to_time (char *line, unsigned int *second) {
-  
+int str_to_time (char *line, time_t *second) {
+  
+  char *tmpline;
+  struct tm *gmt;
   struct timeval now;
   double jd;
+  time_t tsec;
 
   if (!strcasecmp (line, "NOW")) {
@@ -136,8 +136,18 @@
   }
     
-  if (!strcasecmp (line, "TODAY")) {
+  if (!strncasecmp (line, "TODAY", 5)) {
     gettimeofday (&now, (struct timezone *) NULL);
-    *second = 86400 * ((int)(now.tv_sec / 86400));
-    return (TRUE);
+    if (line[5]) { /* line has extra data (ie, hh:mm:ss) */
+      tsec = now.tv_sec;
+      ALLOCATE (tmpline, char, 64);
+      gmt   = gmtime (&tsec);
+      sprintf (tmpline, "%04d/%02d/%02d,%s", 1900 + gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, &line[6]);
+      *second = date_to_sec (tmpline);
+      free (tmpline);
+      return (TRUE);
+    } else {
+      *second = 86400 * ((int)(now.tv_sec / 86400));
+      return (TRUE); 
+    }
   }
     
@@ -145,26 +155,31 @@
   case 0:
     return (FALSE);
-  case FORMAT_DAYS:
+  case TIME_DATE:
+    *second = date_to_sec (line);
+    return (TRUE);
+  case TIME_DAYS:
     *second = strtod (line, 0) * 86400.0;
     return (TRUE);
-  case FORMAT_HOURS:
+  case TIME_HOURS:
     *second = strtod (line, 0) * 3600.0;
     return (TRUE);
-  case FORMAT_MINUTES:
+  case TIME_MINUTES:
     *second = strtod (line, 0) * 60.0;
     return (TRUE);
-  case FORMAT_SECONDS:
+  case TIME_SECONDS:
     *second = strtod (line, 0);
     return (TRUE);
-  case FORMAT_JD:
+  case TIME_JD:
     jd = strtod (line, 0);
     *second = jd_to_sec (jd);
     return (TRUE);
-  case FORMAT_DATE:
-    *second = date_to_sec (line);
+  case TIME_MJD:
+    jd = strtod (line, 0);
+    *second = mjd_to_sec (jd);
     return (TRUE);
   }
   return (FALSE);
 }
+
 
 /**********/
@@ -173,17 +188,18 @@
   switch (chk_time (line)) {
   case 0:
-  case FORMAT_JD:
-  case FORMAT_DATE:
+  case TIME_JD:
+  case TIME_MJD:
+  case TIME_DATE:
     return (FALSE);
-  case FORMAT_DAYS:
+  case TIME_DAYS:
     *second = strtod (line, 0) * 86400.0;
     return (TRUE);
-  case FORMAT_HOURS:
+  case TIME_HOURS:
     *second = strtod (line, 0) * 3600.0;
     return (TRUE);
-  case FORMAT_MINUTES:
+  case TIME_MINUTES:
     *second = strtod (line, 0) * 60.0;
     return (TRUE);
-  case FORMAT_SECONDS:
+  case TIME_SECONDS:
     *second = strtod (line, 0);
     return (TRUE);
@@ -193,5 +209,5 @@
 
 /**********/
-double sec_to_jd (unsigned long second) {
+double sec_to_jd (time_t second) {
 
   double jd;
@@ -202,7 +218,7 @@
 
 /**********/
-unsigned long int jd_to_sec (double jd) {
-
-  unsigned long int second;
+time_t jd_to_sec (double jd) {
+
+  time_t second;
 
   second = (jd - 2440587.5)*86400;
@@ -211,5 +227,23 @@
 
 /**********/
-char *sec_to_date (unsigned long second) {
+double sec_to_mjd (time_t second) {
+
+  double mjd;
+  
+  mjd = second/86400.0 + 40587.0;
+  return (mjd);
+}
+
+/**********/
+time_t mjd_to_sec (double mjd) {
+
+  time_t second;
+
+  second = (mjd - 40587.0)*86400;
+  return (second);
+}
+
+/**********/
+char *sec_to_date (time_t second) {
   
   struct tm *gmt;
@@ -218,5 +252,5 @@
   ALLOCATE (line, char, 64);
   gmt   = gmtime (&second);
-  sprintf (line, "%4d/%02d/%02d,%02d:%02d:%02d", 1900+gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+  sprintf (line, "%04d/%02d/%02d,%02d:%02d:%02d", 1900 + gmt[0].tm_year, gmt[0].tm_mon+1, gmt[0].tm_mday, gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
   return (line);
 
@@ -224,7 +258,7 @@
 
 /***** date in format yyyy/mm/dd,hh:mm:ss *****/
-unsigned long date_to_sec (char *date) {
-  
-  unsigned long second;
+time_t date_to_sec (char *date) {
+  
+  time_t second;
   double tmp, jd;
   struct tm now;
@@ -283,31 +317,75 @@
 }
 
+/***** short date in format yymmdd *****/
+time_t short_date_to_sec (char *date) {
+  
+  time_t second;
+  double jd;
+  struct tm now;
+  
+  bzero (&now, sizeof(now));
+
+  sscanf (date, "%2d%2d%2d", &now.tm_year, &now.tm_mon, &now.tm_mday);
+
+  if (now.tm_year >   51) now.tm_year +=   0;
+  if (now.tm_year <   50) now.tm_year += 100;
+  now.tm_mon --; /* tm_mon runs from 0 - 11 */
+
+  jd = now.tm_mday - 32075 + (int)(1461*(1900 + now.tm_year + 4800 + (int)(((now.tm_mon+1)-14)/12))/4)
+    + (int)(367*((now.tm_mon+1) - 2 - (int)(((now.tm_mon+1) - 14)/12)*12)/12)
+    - (int)(3*(int)((1900 + now.tm_year + 4900 + (int)(((now.tm_mon+1) - 14)/12))/100)/4) - 0.5;
+  
+  second = (jd - 2440587.5)*86400 + 3600.0*now.tm_hour + now.tm_min*60.0 + now.tm_sec;
+
+  return (second);
+}
+
+/**********/
+int hms_to_deg (double *h0, double *h1, double *d0, double *d1, char *string) {
+  
+  int flag_d0, flag_d1, flag_h0, flag_h1;
+  double tmp;
+  
+  *d0 = *h0 = *d1 = *h1 = 0;
+
+  flag_h0 = dparse (h0, 1, string);
+  flag_h1 = dparse (h1, 4, string);
+  flag_d0 = dparse (d0, 7, string);
+  flag_d1 = dparse (d1, 9, string);
+  *h0 *= flag_h0;
+  *h1 *= flag_h1;
+  *d0 *= flag_d0;
+  *d1 *= flag_d1;
+
+  dparse (&tmp, 2, string);
+  *h0 += tmp/60.0;
+  dparse (&tmp, 3, string);
+  *h0 += tmp/3600.0;
+  
+  dparse (&tmp, 5, string);
+  *h1 += tmp/60.0;
+  dparse (&tmp, 6, string);
+  *h1 += tmp/3600.0;
+  
+  dparse (&tmp, 8, string);
+  *d0 += tmp/60.0;
+
+  dparse (&tmp, 10, string);
+  *d1 += tmp/60.0;
+
+  *h0 *= 15*flag_h0;
+  *h1 *= 15*flag_h1;
+  *d0 *= flag_d0;
+  *d1 *= flag_d1;
+
+  return (TRUE);
+}
 
 /* times may be in forms as:
-   20040200450s (N seconds since 1970.0)
+ * 20040200450s (N seconds since 1970.0)
    2440900.232j (julian date)
-   99/02/23,03:22:18 (date string)
-   (separators may be anything except space, +, -)
-   99:02:15:12:23:30
-   99:02:15:12h23m30s
-   */
-
-
-/* fseek with timeout - 0.5 sec */
-int Fseek (FILE *f, long offset, int whence) {
-
-  int status;
-
-  status = fseek (f, offset, whence);
-  if (status == -1) {
-    int k;
-    /* fprintf (stderr, "problem seeking position: %d\n", errno); */
-    for (k = 0; (k < 10) && ((status = fseek (f, 0, SEEK_SET)) == -1); k++) usleep (50000);
-    if (status == -1) {
-      /* fprintf (stderr, "ERROR: serious problem seeking position: %d\n", errno); */
-      /* clear lock at this point? */
-      return (0);
-    }
-  }
-  return (1);
-}
+ * 99/02/23,03:22:18 (date string)
+ * (separators may be anything except space, +, -)
+ * 99:02:15:12:23:30
+ * 99:02:15:12h23m30s
+ */
