Index: trunk/psLib/src/astronomy/psMetadata.c
===================================================================
--- trunk/psLib/src/astronomy/psMetadata.c	(revision 1546)
+++ trunk/psLib/src/astronomy/psMetadata.c	(revision 1621)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.24 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-08-14 02:55:46 $
+*  @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-08-25 20:21:25 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -39,8 +39,14 @@
 /******************************************************************************/
 
-#define FITS_ERROR(STRING,PS_ERROR)                  \
-fits_get_errstatus(status, fitsErr);             \
-psError( __func__, STRING, PS_ERROR, fitsErr);   \
-status = 0;                                      \
+#define FITS_ERROR(STRING,PS_ERROR)                                                                          \
+fits_get_errstatus(status, fitsErr);                                                                     \
+psError(__func__, STRING, PS_ERROR, fitsErr);                                                            \
+status = 0;                                                                                              \
+fits_close_file(fd, &status);                                                                            \
+if(status){                                                                                              \
+    fits_get_errstatus(status, fitsErr);                                                                  \
+    psError(__func__, "Couldn't close FITS file. FITS error: %s", fitsErr);                               \
+}                                                                                                        \
+status = 0;                                                                                              \
 return output;
 
@@ -657,5 +663,5 @@
 }
 
-psMetadata* psMetadataFReadHeader(psMetadata* output, char *extName, int extNum, fitsfile * fd)
+psMetadata* psMetadataReadHeader(psMetadata* output, char *extName, int extNum, char *fileName)
 {
     bool tempBool;
@@ -672,7 +678,14 @@
     int keyNum = 0;
     psMetadataType metadataItemType;
-
-    if (fd == NULL) {
-        psError(__func__, "Null FITS file descriptor not allowed");
+    fitsfile *fd = NULL;
+
+    if(fileName == NULL) {
+        psError(__func__, "Null fileName not allowed");
+        return NULL;
+    }
+
+    fits_open_file(&fd, fileName, READONLY, &status);
+    if(fd == NULL || status != 0) {
+        FITS_ERROR("FITS error while opening file: %s %s", fileName);
         return NULL;
     }
@@ -685,8 +698,10 @@
         return NULL;
     }
+
     // Allocate metadata if user didn't
     if (output == NULL) {
         output = psMetadataAlloc();
     }
+
     // Move to user designated HDU number or HDU name in FITS file. HDU numbers starts at one.
     if (extName != NULL) {
@@ -704,4 +719,5 @@
         FITS_ERROR("FITS error while reading key %d: %s", keyNum);
     }
+
     // Get each key name. Keywords start at one.
     for (i = 1; i <= numKeys; i++) {
@@ -714,6 +730,5 @@
                 FITS_ERROR("FITS error while determining key %d type: %s", keyNum);
             } else {
-                // Some keywords are still valid even though they don't have a type, like COMMENTS and
-                // HISTORY
+                // Some keywords are still valid if they don't have a type (like COMMENTS and HISTORY)
                 keyType = 'C';
                 status = 0;
