summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Long <ryan.long@oarcorp.com>2021-06-04 14:10:05 -0400
committerJoel Sherrill <joel@rtems.org>2021-06-09 11:01:02 -0500
commit74cf39bcfc76030d0236afcdc3fc6d2a35c3be04 (patch)
tree80fd18fbb6928619135da796f03b17973d8eb764
parentcovoar: Fix single-byte uncovered ranges (diff)
downloadrtems-tools-74cf39bcfc76030d0236afcdc3fc6d2a35c3be04.tar.bz2
Explanations.cc: Convert to c++ file handling
-rw-r--r--tester/covoar/Explanations.cc45
1 files changed, 17 insertions, 28 deletions
diff --git a/tester/covoar/Explanations.cc b/tester/covoar/Explanations.cc
index d94cd2e..1449fb2 100644
--- a/tester/covoar/Explanations.cc
+++ b/tester/covoar/Explanations.cc
@@ -10,6 +10,8 @@
#include <string.h>
#include <unistd.h>
+#include <fstream>
+
#include <rld.h>
#include "Explanations.h"
@@ -30,15 +32,14 @@ namespace Coverage {
)
{
#define MAX_LINE_LENGTH 512
- FILE *explain;
- char *cStatus;
- Explanation e;
- int line = 1;
+ std::ifstream explain;
+ Explanation e;
+ int line = 1;
if (!explanations)
return;
- explain = ::fopen( explanations, "r" );
+ explain.open( explanations );
if (!explain) {
std::ostringstream what;
what << "Unable to open " << explanations;
@@ -50,9 +51,9 @@ namespace Coverage {
// skip blank lines between
do {
inputBuffer[0] = '\0';
- cStatus = fgets( inputBuffer, MAX_LINE_LENGTH, explain );
- if (cStatus == NULL) {
- goto done;
+ explain.getline( inputBuffer, MAX_LINE_LENGTH );
+ if (explain.fail()) {
+ return;
}
inputBuffer[ strlen(inputBuffer) - 1] = '\0';
line++;
@@ -64,7 +65,6 @@ namespace Coverage {
what << "line " << line
<< "contains a duplicate explanation ("
<< inputBuffer << ")";
- fclose( explain );
throw rld::error( what, "Explanations::load" );
}
@@ -73,12 +73,11 @@ namespace Coverage {
e.found = false;
// Get the classification
- cStatus = fgets( inputBuffer, MAX_LINE_LENGTH, explain );
- if (cStatus == NULL) {
+ explain.getline( inputBuffer, MAX_LINE_LENGTH );
+ if (explain.fail()) {
std::ostringstream what;
what << "line " << line
<< "out of sync at the classification";
- fclose( explain );
throw rld::error( what, "Explanations::load" );
}
inputBuffer[ strlen(inputBuffer) - 1] = '\0';
@@ -87,13 +86,12 @@ namespace Coverage {
// Get the explanation
while (1) {
- cStatus = fgets( inputBuffer, MAX_LINE_LENGTH, explain );
+ explain.getline( inputBuffer, MAX_LINE_LENGTH );
// fprintf( stderr, "%d - %s\n", line, inputBuffer );
- if (cStatus == NULL) {
+ if (explain.fail()) {
std::ostringstream what;
what << "line " << line
<< "out of sync at the explanation";
- fclose( explain );
throw rld::error( what, "Explanations::load" );
}
inputBuffer[ strlen(inputBuffer) - 1] = '\0';
@@ -110,10 +108,6 @@ namespace Coverage {
// Add this to the set of Explanations
set[ e.startingPoint ] = e;
}
-done:
- ;
-
- fclose( explain );
#undef MAX_LINE_LENGTH
}
@@ -137,14 +131,14 @@ done:
const char* const fileName
)
{
- FILE* notFoundFile;
+ std::ofstream notFoundFile;
bool notFoundOccurred = false;
if (!fileName)
return;
- notFoundFile = fopen( fileName, "w" );
- if (notFoundFile == nullptr) {
+ notFoundFile.open( fileName );
+ if (!notFoundFile) {
std::ostringstream what;
what << "Unable to open " << fileName
<< " out of sync at the explanation";
@@ -159,14 +153,9 @@ done:
if (!e.found) {
notFoundOccurred = true;
- fprintf(
- notFoundFile,
- "%s\n",
- e.startingPoint.c_str()
- );
+ notFoundFile << e.startingPoint << std::endl;
}
}
- fclose( notFoundFile );
if (!notFoundOccurred) {
if (!unlink( fileName )) {