Commit d83d479e authored by Robert Butora's avatar Robert Butora
Browse files

vlkb header: implements header print/backup and renames header->headermodif

parent 20733a0b
Loading
Loading
Loading
Loading
+34 −5
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ int vlkb_listbounds(const string& skysys_str, const string& specsys_str, const s


//---------------------------------------------------------------------
// header modif coord sys
// header backup and modif
//---------------------------------------------------------------------
/*
const string VELOLSRK{"System=VELO,StdOfRest=LSRK,Unit=km/s"};
@@ -102,6 +102,33 @@ void write_previous(string header, string filename)
}


int header_backup(const string& pathname, bool backup)
{
   LOG_trace(__func__);

   int maxHdu = 1;//FIXME INT_MAX; // read all HDU's

   std::vector<fitsfiles::Hdu> allHdus =
      fitsfiles::fname2hdrstr(pathname, maxHdu);

   for(unsigned int i=0; i<allHdus.size(); i++)
   {
      cerr << "HDU#" << i << endl;

      fitsfiles::Hdu hd = allHdus.at(i);

      if(backup)
         write_previous(hd.m_header, pathname +"hdr" + ((i>0) ? "#" + to_string(i+1)  : "") );
      else
         cout << hd.m_header << endl;

      // FIXME remove all explicit cout cerr to main.cpp and here use ostream&

   }

   return 0;
}


int header_modif_coordsys(const string& skysys_str, const string& specsys_str, const string& pathname)
{
@@ -132,6 +159,8 @@ int header_modif_coordsys(const string& skysys_str, const string& specsys_str, c
}




//---------------------------------------------------------------------
// overlap with area given in query-string form (name=value&...)
//---------------------------------------------------------------------
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@

int vlkb_skyvertices(const std::string& pathname, const std::string& skysys_str);
int vlkb_listbounds(const std::string& skysys_str, const std::string& specsys_str, const std::string& pathname);
int header_backup(const std::string& pathname, bool backup = false);
int header_modif_coordsys(const std::string& skysys_str, const std::string& specsys_str, const std::string& pathname);
int vlkb_overlap(const std::string& pathname, const std::string& region, std::vector<uint_bounds>& bnds);

+49 −8
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ namespace vlkb
         << "Usage: " << progname << " <command> [cmd-options] [cmd-args]" << endl
         << "\n where commands are:\n "
         << "\n\t cutout imcopy cutpixels multicutout mergefiles\n"
         << "\n\t listbounds header skyvertices overlap\n"
         << "\n\t listbounds header headermodif skyvertices overlap\n"
         << "\n\t nullvals dropdegen checkcard addcard modcard rawdelcard\n"
         << std::endl
         << "Version: " << VERSIONSTR << " " << BUILD << std::endl;
@@ -55,7 +55,7 @@ namespace vlkb

   enum cmd_set {
      multicutout, mergefiles, cutout, imcopy, cutpixels,
      listbounds, header, overlap, skyvertices, nullvals, dropdegen, checkcard, addcard, modcard, rawdelcard};
      listbounds, header, headermodif, overlap, skyvertices, nullvals, dropdegen, checkcard, addcard, modcard, rawdelcard};


   // from bash or interpreters usually receive params as strings
@@ -71,6 +71,7 @@ namespace vlkb
      else if(cmdstr.compare("cutpixels") == 0)    cmd = cutpixels;
      else if(cmdstr.compare("listbounds") == 0)   cmd = listbounds;
      else if(cmdstr.compare("header") == 0)       cmd = header;
      else if(cmdstr.compare("headermodif") == 0)  cmd = headermodif;
      else if(cmdstr.compare("overlap") == 0)      cmd = overlap;
      else if(cmdstr.compare("skyvertices") == 0)  cmd = skyvertices;
      else if(cmdstr.compare("nullvals") == 0)     cmd = nullvals;
@@ -327,7 +328,46 @@ int cmd_header(int argc, char * argv[])
   if (argc < 2)
   {
      std::cerr
         << "Usage:  header --sky=<SkySystem> --spec=<SpecSystem> <filename.fits>... \n"
         << "Usage:  header [--backup] <pathname.fits>...\n"
         << "\n"
         << "Prints current header or writes the header into a file with the same pathname but 'fitshdr' extension.\n"
         << "Arguments:\n"
         << "   --backup  write current header from file 'pathname.fits' to 'pathname.fitshdr#n' where n is the HDU number.\n";
      rc = EXIT_FAILURE;
   }
   else
   {
      bool backup = false;

      for(int i=1; i<argc; i++)
      {
         if(0 == (string(argv[i]).substr(0,2+6)).compare("--backup"))
         {
            backup = true;
         }
         else
         {
            string pathname(argv[i]);
            cout << to_string(i) << " : " << pathname << endl;

            rc = header_backup(pathname, backup);
            std::cout << "header_backup rc: " << rc << std::endl;
         }
      }
      rc = EXIT_SUCCESS;
   }
   return rc;
}


int cmd_header_modif(int argc, char * argv[])
{
   int rc;

   if (argc < 2)
   {
      std::cerr
         << "Usage:  headermodif --sky=<SkySystem> --spec=<SpecSystem> <filename.fits>... \n"
         << "\n"
         << "Modify header for new coord system.\n"
         << "Arguments:\n"
@@ -638,6 +678,7 @@ int main (int argc, char * argv[])
         case vlkb::nullvals:    rc = cmd_nullvals(cmd_argc, cmd_argv); break;
         case vlkb::listbounds:  rc = cmd_listbounds(cmd_argc, cmd_argv); break;
         case vlkb::header:      rc = cmd_header(cmd_argc, cmd_argv); break;
         case vlkb::headermodif: rc = cmd_header_modif(cmd_argc, cmd_argv); break;
         case vlkb::skyvertices: rc = cmd_skyvertices(cmd_argc, cmd_argv); break;
         case vlkb::overlap:     rc = cmd_overlap(cmd_argc, cmd_argv); break;