show found markers, hex::show: include last incomplete line

This commit is contained in:
Mario Fink
2020-07-29 15:33:53 +02:00
parent ebda13e738
commit 6b3aac87fe
4 changed files with 27 additions and 4 deletions

View File

@@ -43,9 +43,13 @@ namespace hex
unsigned char elcl = ( (int)el > 0x1f && (int)el < 0x7f) ? el : '.';
sschr<<std::dec<<std::setfill(' ')<<elcl;
// do actual printing
if ( (idx+1)%width == 0 )
// do actual printing (including very last potentially incomplete line)
if ( (idx+1)%width == 0 || i == breakidx-1 )
{
// fill up any hexadecimal string that is shorter than default width
while ( sshex.str().size() < 3*width+10 ) sshex<<" ";
// print hexadecimal and ascii representation
std::cout<<sshex.str()<<" "<<sschr.str();
std::cout<<"\n";

View File

@@ -106,6 +106,9 @@ public:
// proceed only, if markers suggest data is valid *.raw format
if ( valid_ )
{
// show detected markers
if ( showlog ) display_markers();
// split data corresponding to markers into segments
split_segments();
@@ -221,6 +224,22 @@ public:
if ( totalmarksize < 100 ) valid_ = false;
}
// display content of found markers
void display_markers()
{
for (std::pair<std::string,std::vector<unsigned char>> mrk : markers_ )
{
// extract data of marker
std::vector<unsigned char> mrkdat = this->datasec_[mrk.first];
// show name of marker and its data
std::cout<<mrk.first<<" : "<<mrkdat.size()
<<"\n------------------------------------\n";
hex::show(mrkdat,32,0,0);
}
std::cout<<"\n";
}
// get all predefined markers
std::map<std::string,std::vector<unsigned char>> get_markers()
{