Index: trunk/psLib/src/astro/psTime.c
===================================================================
--- trunk/psLib/src/astro/psTime.c	(revision 2181)
+++ trunk/psLib/src/astro/psTime.c	(revision 2196)
@@ -11,6 +11,6 @@
  *  @author Ross Harman, MHPCC
  *
- *  @version $Revision: 1.36 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-10-20 21:21:58 $
+ *  @version $Revision: 1.37 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-10-26 00:37:44 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -29,4 +29,6 @@
 #include "psCoord.h"
 #include "psString.h"
+#include "psMetadata.h"
+#include "psMetadataIO.h"
 
 #include "psAstronomyErrors.h"
@@ -42,4 +44,5 @@
 #endif
 
+
 /** Sidereal angular conversion from seconds to radians for GMST in seconds (i.e. pi/(180*240)) */
 #define S2R (7.272205216643039903848711535369e-5)
@@ -72,13 +75,18 @@
                 #define LINESIZE 1024
 
-                /** Read TAI/UTC data file.
-                 *
-                 *  Reads TAI/UTC data file.
-                 *
-                 *  @return  psImage*: Two-dimensional array with table data.
-                 */
-                static psImage* readTaiUtcFile(
-                    const char *fileName                      ///< Name of file to read.
-                );
+
+                /** Time metadata read from config file */
+                static psMetadata *timeMetadata = NULL;
+
+
+/** Read TAI/UTC data file.
+ *
+ *  Reads TAI/UTC data file.
+ *
+ *  @return  psImage*: Two-dimensional array with table data.
+ */
+static psImage* readTaiUtcFile(
+    const char *fileName                      ///< Name of file to read.
+);
 
 
@@ -125,5 +133,5 @@
  */
 static double lookupTaiUtcTable(
-    const psTime *time                        ///< time to lookup.
+    const psTime *time                  ///< time to lookup.
 );
 
@@ -135,6 +143,6 @@
  */
 static double lookupSer7Table(
-    const psTime *time,                        ///< time to lookup.
-    int col                              ///< Column to lookup.
+    const psTime *time,                 ///< time to lookup.
+    int col                             ///< Column to lookup.
 );
 
@@ -457,5 +465,5 @@
         denom = table->data.F64[hiIdx][3] - table->data.F64[loIdx][3];
         if(fabs(denom) < FLT_EPSILON) {
-            psError(__func__, " : Line %d - Dividie by zero error during interpolation", __LINE__);
+            psError(__func__, " : Line %d - Divide by zero error during interpolation", __LINE__);
         } else {
             out = table->data.F64[loIdx][col]+(table->data.F64[hiIdx][col]-table->data.F64[loIdx][col])
@@ -465,4 +473,47 @@
 
     return out;
+}
+
+void psTimeInit(char *fileName)
+{
+    char *tableDir = NULL;
+    char *tableNames = NULL;
+    psU8 numTables = 0;
+    psVector *tablesFrom = NULL;
+    psVector *tablesTo = NULL;
+    psF64 beforeXp = 0.0;
+    psF64 beforeYp = 0.0;
+    psF64 beforeDut = 0.0;
+    psMetadataItem *metadataItem = NULL;
+
+
+    // Read time config file
+    psMetadataParseConfig(&timeMetadata, fileName, true);
+
+    // Get path to time data files
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.tables.dir");
+    tableDir = (char*)metadataItem->data.V;
+
+    // Get number of tables
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.tables.n");
+    numTables = (psU8)metadataItem->data.S32;
+
+    // Get table names
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.tables.files");
+    tableNames = (char*)metadataItem->data.V;
+
+    // Get ranges of tables
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.tables.from");
+    tablesFrom = (psVector*)metadataItem->data.V;
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.tables.to");
+    tablesTo = (psVector*)metadataItem->data.V;
+
+    // Out of range values
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.before.xp");
+    beforeXp =(psF64)metadataItem->data.F64;
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.before.yp");
+    beforeYp =(psF64)metadataItem->data.F64;
+    metadataItem = psMetadataLookup(timeMetadata, "psLib.time.before.dut");
+    beforeDut = (psF64)metadataItem->data.F64;
 }
 
