summaryrefslogtreecommitdiffstats
path: root/tester/covoar/CoverageWriterRTEMS.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tester/covoar/CoverageWriterRTEMS.cc')
-rw-r--r--tester/covoar/CoverageWriterRTEMS.cc26
1 files changed, 15 insertions, 11 deletions
diff --git a/tester/covoar/CoverageWriterRTEMS.cc b/tester/covoar/CoverageWriterRTEMS.cc
index 48e8fd1..fc8a241 100644
--- a/tester/covoar/CoverageWriterRTEMS.cc
+++ b/tester/covoar/CoverageWriterRTEMS.cc
@@ -10,6 +10,7 @@
#include <string.h>
#include <iostream>
+#include <fstream>
#include <iomanip>
#include <rld.h>
@@ -28,23 +29,23 @@ namespace Coverage {
}
void CoverageWriterRTEMS::writeFile(
- const char* const file,
+ const std::string& file,
CoverageMapBase* coverage,
uint32_t lowAddress,
uint32_t highAddress
)
{
- FILE* coverageFile;
+ std::ofstream coverageFile;
uint32_t a;
- int status;
uint8_t cover;
rtems_coverage_map_header_t header;
+ std::ofstream::pos_type bytes_before;
/*
* read the file and update the coverage map passed in
*/
- coverageFile = ::fopen( file, "w" );
- if ( !coverageFile ) {
+ coverageFile.open( file );
+ if ( !coverageFile.is_open() ) {
std::ostringstream what;
what << "Unable to open " << file;
throw rld::error( what, "CoverageWriterRTEMS::writeFile" );
@@ -58,9 +59,10 @@ namespace Coverage {
header.end = highAddress;
strcpy( header.desc, "RTEMS Coverage Data" );
- status = ::fwrite(&header, 1, sizeof(header), coverageFile);
- if (status != sizeof(header)) {
- ::fclose( coverageFile );
+ bytes_before = coverageFile.tellp();
+
+ coverageFile.write( (char *) &header, sizeof( header ) );
+ if ( coverageFile.tellp() - bytes_before != sizeof( header ) ) {
std::ostringstream what;
what << "Unable to write header to " << file;
throw rld::error( what, "CoverageWriterRTEMS::writeFile" );
@@ -68,8 +70,11 @@ namespace Coverage {
for ( a=lowAddress ; a < highAddress ; a++ ) {
cover = ((coverage->wasExecuted( a )) ? 0x01 : 0);
- status = fwrite(&cover, 1, sizeof(cover), coverageFile);
- if (status != sizeof(cover)) {
+
+ bytes_before = coverageFile.tellp();
+
+ coverageFile.write( (char *) &cover, sizeof( cover ) );
+ if ( coverageFile.tellp() - bytes_before != sizeof( cover ) ) {
std::cerr << "CoverageWriterRTEMS::writeFile - write to "
<< file
<< " at address 0x%"
@@ -81,6 +86,5 @@ namespace Coverage {
}
}
- ::fclose( coverageFile );
}
}