Index: /trunk/psLib/src/dataIO/psFits.c
===================================================================
--- /trunk/psLib/src/dataIO/psFits.c	(revision 2993)
+++ /trunk/psLib/src/dataIO/psFits.c	(revision 2994)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-01-13 21:09:39 $
+ *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-01-14 19:40:33 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -587,5 +587,6 @@
         psError(PS_ERR_BAD_PARAMETER_NULL, true,
                 PS_ERRORTEXT_psFits_NULL);
-        return out;
+        psFree(out);
+        return NULL;
     }
 
@@ -602,20 +603,31 @@
     int size = psFitsGetSize(fits);
 
+    int origPosition = psFitsGetExtNum(fits);
+
     for (int lcv=0; lcv < size; lcv++) {
-        if (psFitsMoveExtNum(fits, lcv, false)) {
-            char* name = psFitsGetExtName(fits);
-            psMetadata* header = psFitsReadHeader(NULL, fits);
-            if (name != NULL || header != NULL) {
-                psHashAdd(out, name, header);
-            } else { // XXX: is this a warning or error?
-                psLogMsg(__func__, PS_LOG_WARN,
-                         "Failed to read HDU#%d header data.",
-                         lcv);
-            }
-
-            psFree(name);
-            psFree(header);
-        }
-    }
+        psFitsMoveExtNum(fits, lcv, false);
+
+        char* name = NULL;
+        if (lcv == 0) {
+            name = psStringCopy("PHU");
+        } else {
+            name = psFitsGetExtName(fits);
+        }
+
+        psMetadata* header = psFitsReadHeader(NULL, fits);
+        if (name != NULL && header != NULL) {
+            psHashAdd(out, name, header);
+        } else { // XXX: is this a warning or error?
+            psLogMsg(__func__, PS_LOG_WARN,
+                     "Failed to read HDU#%d header data.",
+                     lcv);
+        }
+
+        psFree(name);
+        psFree(header);
+    }
+
+    // reposition to the original position
+    psFitsMoveExtNum(fits, origPosition, false);
 
     return out;
Index: /trunk/psLib/src/fileUtils/psFits.c
===================================================================
--- /trunk/psLib/src/fileUtils/psFits.c	(revision 2993)
+++ /trunk/psLib/src/fileUtils/psFits.c	(revision 2994)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-01-13 21:09:39 $
+ *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-01-14 19:40:33 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -587,5 +587,6 @@
         psError(PS_ERR_BAD_PARAMETER_NULL, true,
                 PS_ERRORTEXT_psFits_NULL);
-        return out;
+        psFree(out);
+        return NULL;
     }
 
@@ -602,20 +603,31 @@
     int size = psFitsGetSize(fits);
 
+    int origPosition = psFitsGetExtNum(fits);
+
     for (int lcv=0; lcv < size; lcv++) {
-        if (psFitsMoveExtNum(fits, lcv, false)) {
-            char* name = psFitsGetExtName(fits);
-            psMetadata* header = psFitsReadHeader(NULL, fits);
-            if (name != NULL || header != NULL) {
-                psHashAdd(out, name, header);
-            } else { // XXX: is this a warning or error?
-                psLogMsg(__func__, PS_LOG_WARN,
-                         "Failed to read HDU#%d header data.",
-                         lcv);
-            }
-
-            psFree(name);
-            psFree(header);
-        }
-    }
+        psFitsMoveExtNum(fits, lcv, false);
+
+        char* name = NULL;
+        if (lcv == 0) {
+            name = psStringCopy("PHU");
+        } else {
+            name = psFitsGetExtName(fits);
+        }
+
+        psMetadata* header = psFitsReadHeader(NULL, fits);
+        if (name != NULL && header != NULL) {
+            psHashAdd(out, name, header);
+        } else { // XXX: is this a warning or error?
+            psLogMsg(__func__, PS_LOG_WARN,
+                     "Failed to read HDU#%d header data.",
+                     lcv);
+        }
+
+        psFree(name);
+        psFree(header);
+    }
+
+    // reposition to the original position
+    psFitsMoveExtNum(fits, origPosition, false);
 
     return out;
Index: /trunk/psLib/src/fits/psFits.c
===================================================================
--- /trunk/psLib/src/fits/psFits.c	(revision 2993)
+++ /trunk/psLib/src/fits/psFits.c	(revision 2994)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-01-13 21:09:39 $
+ *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-01-14 19:40:33 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -587,5 +587,6 @@
         psError(PS_ERR_BAD_PARAMETER_NULL, true,
                 PS_ERRORTEXT_psFits_NULL);
-        return out;
+        psFree(out);
+        return NULL;
     }
 
@@ -602,20 +603,31 @@
     int size = psFitsGetSize(fits);
 
+    int origPosition = psFitsGetExtNum(fits);
+
     for (int lcv=0; lcv < size; lcv++) {
-        if (psFitsMoveExtNum(fits, lcv, false)) {
-            char* name = psFitsGetExtName(fits);
-            psMetadata* header = psFitsReadHeader(NULL, fits);
-            if (name != NULL || header != NULL) {
-                psHashAdd(out, name, header);
-            } else { // XXX: is this a warning or error?
-                psLogMsg(__func__, PS_LOG_WARN,
-                         "Failed to read HDU#%d header data.",
-                         lcv);
-            }
-
-            psFree(name);
-            psFree(header);
-        }
-    }
+        psFitsMoveExtNum(fits, lcv, false);
+
+        char* name = NULL;
+        if (lcv == 0) {
+            name = psStringCopy("PHU");
+        } else {
+            name = psFitsGetExtName(fits);
+        }
+
+        psMetadata* header = psFitsReadHeader(NULL, fits);
+        if (name != NULL && header != NULL) {
+            psHashAdd(out, name, header);
+        } else { // XXX: is this a warning or error?
+            psLogMsg(__func__, PS_LOG_WARN,
+                     "Failed to read HDU#%d header data.",
+                     lcv);
+        }
+
+        psFree(name);
+        psFree(header);
+    }
+
+    // reposition to the original position
+    psFitsMoveExtNum(fits, origPosition, false);
 
     return out;
