[PATCH v1] Explanations.cc: Convert to c++ file handling
Chris Johns
chrisj at rtems.org
Sat Jun 5 05:24:36 UTC 2021
Ok
On 5/6/21 4:17 am, Ryan Long wrote:
> ---
> tester/covoar/Explanations.cc | 45 ++++++++++++++++---------------------------
> 1 file 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 )) {
>
More information about the devel
mailing list