From 21b77025ea533c1d3858c3dd7b88287069900ed9 Mon Sep 17 00:00:00 2001
From: Chia Aik Song <crscas@nus.edu.sg>
Date: Thu, 24 Sep 2009 16:47:13 +0800
Subject: [PATCH] TEST: Fix reading of ALOS data file header

---
 .../ossim/AlosPalsar/AlosSarData.cpp          |  4 +++
 .../AlosPalsar/AlosSarDataFileDescriptor.cpp  | 30 ++++++++++++++-----
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
index 63f122b307..e8032ea011 100644
--- a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
@@ -70,6 +70,7 @@ std::istream& operator>>(std::istream& is, AlosSarData& data)
       {
         record->Read(is);
         data._records[header.get_rec_seq()] = record;
+        eof = true;
       }
       else
       {
@@ -141,6 +142,9 @@ bool AlosSarData::saveState(ossimKeywordlist& kwl,
   {
     kwl.add(prefix, "num_lines", datafiledesc->get_num_lines(),true);
     kwl.add(prefix, "num_pix_in_line", datafiledesc->get_num_pix_in_line(),true);
+    // FIXME debug
+    std::cout << std::endl << "num_lines = " << datafiledesc->get_num_lines() << std::endl;
+    std::cout << std::endl << "num_pix_in_line = " << datafiledesc->get_num_pix_in_line() << std::endl;
   }
   else
   {
diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
index babdd25a99..ea310045b5 100644
--- a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
@@ -36,21 +36,35 @@ std::istream& operator>>(std::istream& is, AlosSarDataFileDescriptor& data)
   char buf6[7];
   buf6[6] = '\0';
 
-  char buf180[181];
-  buf180[180] = '\0';
+  char buf168[169];
+  buf168[168] = '\0';
 
-  is.read(buf180,180);
+  char buf94[95];
+  buf94[94] = '\0';
+
+  char buf8[9];
+  buf8[8] = '\0';
+
+  is.read(buf168,168);
 
   is.read(buf6,6);
   data._num_lines = atoi(buf6);
+  // FIXME debug
+  std::cout << std::endl << "buf6: {" << buf6 << "}" << std::endl;
 
-  is.read(buf6,6);
-  data._num_pix_in_line = atoi(buf6);
+  is.read(buf94,94);
+
+  int tmpval;
+  is.read(buf8,8);
+  tmpval = atoi(buf8);
+  data._num_pix_in_line = tmpval/8; // Assume data always in 8-byte complex format
+  // FIXME debug
+  std::cout << std::endl << "buf8: {" << buf8 << "}" << std::endl;
 
-  char buf528[528];
-  buf528[528] = '\0';
+  char buf432[433];
+  buf432[432] = '\0';
 
-  is.read(buf528,528);
+  is.read(buf432,432);
   return is;
 }
 
-- 
GitLab