Skip to content
Snippets Groups Projects
Commit 939c2fa5 authored by Robert Butora's avatar Robert Butora
Browse files

fitsfiles: adds read-header with appending extra cards

parent 14c13f71
No related branches found
No related tags found
No related merge requests found
......@@ -39,9 +39,12 @@ namespace fitsfiles
key_values_by_type key_values;
};
std::vector<Hdu> fname2hdrstr(std::string filename, const std::vector<std::string> extra_cards, unsigned int maxHduPos, unsigned int minHduPos = 1, const keys_by_type *keys = nullptr);
std::vector<Hdu> fname2hdrstr(std::string filename, unsigned int maxHduPos, unsigned int minHduPos = 1, const keys_by_type *keys = nullptr);
// for services
std::string read_header(std::string pathname, unsigned int hdunum);
......
......@@ -362,8 +362,28 @@ string fitsfiles::append_card_if_not_in_header(string header, const vector<fits_
// deprecated
void append_cards(string& hdr, vector<string> cards)
{
LOG_trace(__func__);
static const string end_card{"END "};
size_t hdr_len = hdr.length();
if(hdr_len > 80)
{
if(end_card.compare(hdr.substr(hdr_len-80 ,80)) == 0) hdr.erase(hdr_len-80,80);
for(long unsigned int i=0; i<cards.size(); i++) hdr += cards[i];
hdr += end_card;
}
}
vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
string filename, unsigned int maxHduPos, unsigned int minHduPos,
string filename, const vector<string> extra_cards,
unsigned int maxHduPos, unsigned int minHduPos,
const keys_by_type* keys)
{
LOG_trace(__func__);
......@@ -384,6 +404,14 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
const bool apply_fixes = true;
string header_str{hdr.get_header(apply_fixes)};
// append extra cards
bool extra_cards_given = (extra_cards.size() > 0);
if(extra_cards_given)
{
// FIXME check for duplicates before appending
append_cards(header_str, extra_cards);
}
key_values_by_type key_values;
if(keys != nullptr)
......@@ -397,3 +425,13 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
return vec_hdrs;
}
vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
string filename, unsigned int maxHduPos, unsigned int minHduPos,
const keys_by_type* keys)
{
LOG_trace(__func__);
const vector<string> extra_cards; //no cards
return fitsfiles::fname2hdrstr(filename, extra_cards, maxHduPos, minHduPos, keys);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment