Index: /trunk/Mars/mcore/fits.h
===================================================================
--- /trunk/Mars/mcore/fits.h	(revision 11904)
+++ /trunk/Mars/mcore/fits.h	(revision 11905)
@@ -76,4 +76,5 @@
             size_t size;
             char   type;
+            string unit;
         };
 
@@ -224,6 +225,7 @@
                     return;
 
-                const string id  = Get<string>("TTYPE"+num.str());
-                const string fmt = Get<string>("TFORM"+num.str());
+                const string id   = Get<string>("TTYPE"+num.str());
+                const string fmt  = Get<string>("TFORM"+num.str());
+                const string unit = Get<string>("TUNIT"+num.str());
 
                 istringstream sin(fmt);
@@ -265,5 +267,5 @@
                 }
 
-                const Table::Column col = { bytes, n, size, type };
+                const Table::Column col = { bytes, n, size, type, unit };
 
                 cols[id] = col;
@@ -284,9 +286,23 @@
         }
 
-        void PrintKeys() const
+        void PrintKeys(bool display_all=false) const
         {
             for (Keys::const_iterator it=keys.begin(); it!=keys.end(); it++)
+            {
+                if (!display_all &&
+                    (it->first.substr(0, 6)!="TTYPE" ||
+                     it->first.substr(0, 6)!="TFORM" ||
+                     it->first.substr(0, 6)!="TUNIT" ||
+                     it->first!="TFIELDS"  ||
+                     it->first!="XTENSION" ||
+                     it->first!="NAXIS"    ||
+                     it->first!="BITPIX"   ||
+                     it->first!="PCOUNT"   ||
+                     it->first!="GCOUNT")
+                   )
+                    continue;
+
                 gLog << all << setw(2) << it->second.type << '|' << it->first << '=' << it->second.value << '/' << it->second.comment << '|' << endl;
-        }
+            }}
 
         void PrintColumns() const
@@ -300,5 +316,19 @@
 
             for (Sorted::const_iterator it=sorted.begin(); it!=sorted.end(); it++)
-                gLog << all << setw(6) << it->second.offset << "| " << it->first.second << " [" << it->second.type << '=' << it->second.num << 'x' << it->second.size << "byte]" << endl;
+            {
+                gLog << all << setw(6) << it->second.offset << "| ";
+                gLog << it->second.num << 'x';
+                switch (it->second.type)
+                {
+                case 'L': gLog << "bool(8)";    break;
+                case 'B': gLog << "byte(8)";    break;
+                case 'I': gLog << "short(16)";  break;
+                case 'J': gLog << "int(32)";    break;
+                case 'K': gLog << "int(64)";    break;
+                case 'E': gLog << "float(32)";  break;
+                case 'D': gLog << "double(64)"; break;
+                }
+                gLog << ": " << it->first.second << " [" << it->second.unit << "]" << endl;
+            }
         }
 
