Index: /trunk/psLib/src/fits/psFitsHeader.c
===================================================================
--- /trunk/psLib/src/fits/psFitsHeader.c	(revision 7712)
+++ /trunk/psLib/src/fits/psFitsHeader.c	(revision 7713)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-06-13 22:28:02 $
+ *  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-06-28 01:56:58 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -40,4 +40,6 @@
 // List of the start of FITS header keys not to write (handled by cfitsio); NULL-terminated
 static char *noWriteFitsKeyStarts[] = {"NAXIS", "TTYPE", "TFORM", NULL};
+
+// List of FITS header keys to be written with fits_write_comment
 
 psMetadata* psFitsReadHeader(psMetadata* out,
@@ -308,67 +310,74 @@
         }
 
-        switch (item->type) {
-        case PS_DATA_BOOL: {
-                int value = item->data.B;
-                fits_update_key(fits->fd, TLOGICAL, item->name, &value, item->comment, &status);
-                break;
-            }
-        case PS_DATA_S8:
-            fits_update_key(fits->fd, TBYTE, item->name, &item->data.S8, item->comment, &status);
-            break;
-        case PS_DATA_S16:
-            fits_update_key(fits->fd, TSHORT, item->name, &item->data.S16, item->comment, &status);
-            break;
-        case PS_DATA_S32:
-            fits_update_key(fits->fd, TINT, item->name, &item->data.S32, item->comment, &status);
-            break;
-        case PS_DATA_U8: {
-                unsigned short int temp = item->data.U8;
-                fits_update_key(fits->fd, TUSHORT, item->name, &temp, item->comment, &status);
-            }
-            break;
-        case PS_DATA_U16:
-            fits_update_key(fits->fd, TUSHORT, item->name, &item->data.U16, item->comment, &status);
-            break;
-        case PS_DATA_U32:
-            fits_update_key(fits->fd, TUINT, item->name, &item->data.U32, item->comment, &status);
-            break;
-        case PS_DATA_F32: {
-                int infCheck = 0;         // Result of isinf()
-                if (isnan(item->data.F32)) {
-                    fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status);
-                } else if ((infCheck = isinf(item->data.F32)) != 0) {
-                    if (infCheck == 1) {
-                        fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status);
+        if (strcmp(item->name, "COMMENT") == 0) {
+            fits_write_comment(fits->fd, item->comment, &status);
+        } else if (strcmp(item->name,  "HISTORY") == 0) {
+            fits_write_history(fits->fd, item->comment, &status);
+        } else {
+            // A regular FITS header
+            switch (item->type) {
+            case PS_DATA_BOOL: {
+                    int value = item->data.B;
+                    fits_update_key(fits->fd, TLOGICAL, item->name, &value, item->comment, &status);
+                    break;
+                }
+            case PS_DATA_S8:
+                fits_update_key(fits->fd, TBYTE, item->name, &item->data.S8, item->comment, &status);
+                break;
+            case PS_DATA_S16:
+                fits_update_key(fits->fd, TSHORT, item->name, &item->data.S16, item->comment, &status);
+                break;
+            case PS_DATA_S32:
+                fits_update_key(fits->fd, TINT, item->name, &item->data.S32, item->comment, &status);
+                break;
+            case PS_DATA_U8: {
+                    unsigned short int temp = item->data.U8;
+                    fits_update_key(fits->fd, TUSHORT, item->name, &temp, item->comment, &status);
+                }
+                break;
+            case PS_DATA_U16:
+                fits_update_key(fits->fd, TUSHORT, item->name, &item->data.U16, item->comment, &status);
+                break;
+            case PS_DATA_U32:
+                fits_update_key(fits->fd, TUINT, item->name, &item->data.U32, item->comment, &status);
+                break;
+            case PS_DATA_F32: {
+                    int infCheck = 0;         // Result of isinf()
+                    if (isnan(item->data.F32)) {
+                        fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status);
+                    } else if ((infCheck = isinf(item->data.F32)) != 0) {
+                        if (infCheck == 1) {
+                            fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status);
+                        } else {
+                            fits_update_key(fits->fd, TSTRING, item->name, "-Inf", item->comment, &status);
+                        }
                     } else {
-                        fits_update_key(fits->fd, TSTRING, item->name, "-Inf", item->comment, &status);
+                        fits_update_key(fits->fd, TFLOAT, item->name, &item->data.F32, item->comment, &status);
                     }
-                } else {
-                    fits_update_key(fits->fd, TFLOAT, item->name, &item->data.F32, item->comment, &status);
-                }
-                break;
-            }
-        case PS_DATA_F64: {
-                int infCheck = 0;         // Result of isinf()
-                if (isnan(item->data.F64)) {
-                    fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status);
-                } else if ((infCheck = isinf(item->data.F64)) != 0) {
-                    if (infCheck == 1) {
-                        fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status);
+                    break;
+                }
+            case PS_DATA_F64: {
+                    int infCheck = 0;         // Result of isinf()
+                    if (isnan(item->data.F64)) {
+                        fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status);
+                    } else if ((infCheck = isinf(item->data.F64)) != 0) {
+                        if (infCheck == 1) {
+                            fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status);
+                        } else {
+                            fits_update_key(fits->fd, TSTRING, item->name, "-Inf", item->comment, &status);
+                        }
                     } else {
-                        fits_update_key(fits->fd, TSTRING, item->name, "-Inf", item->comment, &status);
+                        fits_update_key(fits->fd, TDOUBLE, item->name, &item->data.F64, item->comment, &status);
                     }
-                } else {
-                    fits_update_key(fits->fd, TDOUBLE, item->name, &item->data.F64, item->comment, &status);
-                }
-                break;
-            }
-        case PS_DATA_STRING:
-            fits_update_key(fits->fd, TSTRING, item->name, item->data.V, item->comment, &status);
-            break;
-        default:  // all other META types are ignored
-            psLogMsg(__func__, PS_LOG_WARN, "Attempt to write metadata type %x to FITS header ignored.\n",
-                     item->type);
-            break;
+                    break;
+                }
+            case PS_DATA_STRING:
+                fits_update_key(fits->fd, TSTRING, item->name, item->data.V, item->comment, &status);
+                break;
+            default:  // all other META types are ignored
+                psLogMsg(__func__, PS_LOG_WARN, "Attempt to write metadata type %x to FITS header ignored.\n",
+                         item->type);
+                break;
+            }
         }
 
