Index: /trunk/SophyaExt/FitsIOServer/fiosinit.cc
===================================================================
--- /trunk/SophyaExt/FitsIOServer/fiosinit.cc	(revision 2931)
+++ /trunk/SophyaExt/FitsIOServer/fiosinit.cc	(revision 2932)
@@ -32,5 +32,5 @@
 //   Enregistrement des classes FitsHandler
   //DBG   cout << " ---- FitsIOServerInitiator / DEBUG ---- debut RegisterHandler " << endl;
-  FitsManager::RegisterHandler(new FitsArrayHandler<int_2> , "TArray<int_2>");
+  FitsManager::RegisterHandler(new FitsArrayHandler<int_2> , 1, "TArray<int_2>");
   FitsManager::RegisterHandler(new FitsArrayHandler<int_4> , 1, "TArray<int_4> ");
   FitsManager::RegisterHandler(new FitsArrayHandler<r_4> , 1, "TArray<r_4>");
Index: /trunk/SophyaExt/FitsIOServer/fitshandler.h
===================================================================
--- /trunk/SophyaExt/FitsIOServer/fitshandler.h	(revision 2931)
+++ /trunk/SophyaExt/FitsIOServer/fitshandler.h	(revision 2932)
@@ -20,10 +20,30 @@
   //! Return the real data object
   virtual AnyDataObj* DataObj() = 0;       // Retourne l'objet reel 
-  //! Return a positive value if I/O for object \b o can be handled
+
+  /*! 
+    \brief Return a positive value if I/O for object \b o can be handled
+
+    - Rc= 0 -> Can NOT handle fits I/O operations for the object \b o 
+    - Rc= 1 -> Can handle fits I/O operations for the object \b o 
+    - Rc= 2 -> This is a specific handler for object \b o
+    - Rc > 2 -> Higher Rc values can be returned if needed 
+      (for subclasses with specific handlers)
+
+  */
   virtual int         CheckHandling(AnyDataObj & o) = 0;
   //! Read/write operation will use the object o
   virtual void        SetDataObj(AnyDataObj & o) = 0;
 
-  //! Return a positive value if current HDU can be read by the handler
+  //! 
+  /*! 
+    \brief Return a positive value if current HDU can be read by the handler
+
+    - Rc= 0 -> Can NOT read the current HDU 
+    - Rc= 1 -> Can read the current HDU (generic reader)
+    - Rc= 2 -> Can read the current HDU, as a specific reader
+    - Rc > 2 -> Higher Rc values can be returned if needed 
+      (when multiple specific handlers are registered) 
+
+  */
   virtual int         CheckReadability(FitsInOutFile& is) = 0;
   
Index: /trunk/SophyaExt/FitsIOServer/fitsinoutfile.cc
===================================================================
--- /trunk/SophyaExt/FitsIOServer/fitsinoutfile.cc	(revision 2931)
+++ /trunk/SophyaExt/FitsIOServer/fitsinoutfile.cc	(revision 2932)
@@ -3,4 +3,5 @@
 #include "segdatablock.h"
 #include "fitsinoutfile.h"
+#include "strutil.h"
 #include <stdio.h>
 #include <string.h>
@@ -514,5 +515,12 @@
 
 /*-- Methode --*/
-int FitsInOutFile::GetHeaderRecords(DVList& dvl)
+/*!
+  Read the current fits header information as pairs of '(keyword,value)' appended
+  to the DVList object \b dvl.
+  \param dvl : DVList object containing filled with (keyword,value) pairs.
+  \param stripkw : if true (default), remove leading and trailing spaces from keyword
+  \param keepstkey : if true (default), keep keys of type TYP_STRUC_KEY 
+*/
+int FitsInOutFile::GetHeaderRecords(DVList& dvl, bool stripkw, bool keepstkey)
 {
   int status = 0;
@@ -529,9 +537,11 @@
     FitsCheckStatus(status, "FitsInOutFile::GetHeaderRecords() Error(2): ");
     int kclas = fits_get_keyclass(record);
-    if ( (kclas ==  TYP_STRUC_KEY) || (kclas == TYP_NULL_KEY) ) continue;
+    if ( (!keepstkey && (kclas ==  TYP_STRUC_KEY))
+	 || (kclas == TYP_NULL_KEY) ) continue;
     int len = 0;
     status = 0;
     fits_get_keyname(record, value, &len, &status);
     if (status) continue;
+    if (stripkw) strip(value, 'B', ' ');
     string keyname = value;
     status = 0;
@@ -551,5 +561,5 @@
     case 'L' :   // Il faudra traiter le cas des nb complexes
     case 'X' :   // idem pour les valeurs logiques
-     dvl.SetS(keyname, value);
+      dvl.SetS(keyname, value);
       break;
     case 'I' :
Index: /trunk/SophyaExt/FitsIOServer/fitsinoutfile.h
===================================================================
--- /trunk/SophyaExt/FitsIOServer/fitsinoutfile.h	(revision 2931)
+++ /trunk/SophyaExt/FitsIOServer/fitsinoutfile.h	(revision 2932)
@@ -179,5 +179,6 @@
   string           KeyValue(string const & key, bool& nosk);
  //! Read header records and appends the information to dvl
- int               GetHeaderRecords(DVList& dvl);
+ int               GetHeaderRecords(DVList& dvl, 
+				    bool stripkw= true, bool keepstkey=true);
  //! Appends a keyword to FITS header
  void	           WriteKey(const char * kname, MuTyV const & val, 
Index: /trunk/SophyaExt/FitsIOServer/fitsmanager.cc
===================================================================
--- /trunk/SophyaExt/FitsIOServer/fitsmanager.cc	(revision 2931)
+++ /trunk/SophyaExt/FitsIOServer/fitsmanager.cc	(revision 2932)
@@ -25,4 +25,7 @@
 }
 /*!
+  Generic handlers (ImageHDU, TableHDU) will have a higher global priority level
+  than specific handlers. Use glev=0 for specific handlers and glev=1 for generic
+  handlers.  
   \param fhi : handler object pointer (created by new) which will be kept in the 
   handler list
