ENH: open standard file streams with ios_base::binary

- this improves overall consistency and is independent of higher level
  tagging as ASCII or BINARY for IFstream, OFstream etc.
This commit is contained in:
Mark Olesen
2019-04-02 22:05:13 +02:00
committed by Andrew Heather
parent 567fced30b
commit 36fae9fd98
3 changed files with 12 additions and 13 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
| Copyright (C) 2011-2017 OpenFOAM Foundation | Copyright (C) 2011-2017 OpenFOAM Foundation
@ -34,14 +34,11 @@ Description
#include "OSspecific.H" #include "OSspecific.H"
#include "POSIX.H" #include "POSIX.H"
#include "foamVersion.H"
#include "fileName.H" #include "fileName.H"
#include "fileStat.H" #include "fileStat.H"
#include "timer.H" #include "timer.H"
#include "IFstream.H"
#include "DynamicList.H" #include "DynamicList.H"
#include "CStringList.H" #include "CStringList.H"
#include "SubList.H"
#include "IOstreams.H" #include "IOstreams.H"
#include "Pstream.H" #include "Pstream.H"
@ -49,7 +46,7 @@ Description
#include <cstdlib> #include <cstdlib>
#include <cctype> #include <cctype>
#include <stdio.h> #include <cstdio>
#include <unistd.h> #include <unistd.h>
#include <dirent.h> #include <dirent.h>
#include <pwd.h> #include <pwd.h>
@ -896,14 +893,14 @@ bool Foam::cp(const fileName& src, const fileName& dest, const bool followLink)
return false; return false;
} }
// Open and check streams. // Open and check streams. Enforce binary for extra safety
std::ifstream srcStream(src); std::ifstream srcStream(src, ios_base::in | ios_base::binary);
if (!srcStream) if (!srcStream)
{ {
return false; return false;
} }
std::ofstream destStream(destFile); std::ofstream destStream(destFile, ios_base::out | ios_base::binary);
if (!destStream) if (!destStream)
{ {
return false; return false;

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2017 OpenCFD Ltd. \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
| Copyright (C) 2011-2016 OpenFOAM Foundation | Copyright (C) 2011-2016 OpenFOAM Foundation
@ -52,7 +52,9 @@ Foam::Detail::IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
} }
} }
allocatedPtr_ = new std::ifstream(pathname); const std::ios_base::openmode mode(std::ios_base::in|std::ios_base::binary);
allocatedPtr_ = new std::ifstream(pathname, mode);
// If the file is compressed, decompress it before reading. // If the file is compressed, decompress it before reading.
if (!allocatedPtr_->good() && isFile(pathname + ".gz", false)) if (!allocatedPtr_->good() && isFile(pathname + ".gz", false))
@ -63,7 +65,7 @@ Foam::Detail::IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
} }
delete allocatedPtr_; delete allocatedPtr_;
allocatedPtr_ = new igzstream((pathname + ".gz").c_str()); allocatedPtr_ = new igzstream((pathname + ".gz").c_str(), mode);
if (allocatedPtr_->good()) if (allocatedPtr_->good())
{ {

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2017-2018 OpenCFD Ltd. \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
| Copyright (C) 2011-2017 OpenFOAM Foundation | Copyright (C) 2011-2017 OpenFOAM Foundation
@ -55,7 +55,7 @@ Foam::Detail::OFstreamAllocator::OFstreamAllocator
} }
} }
std::ios_base::openmode mode(std::ios_base::out); std::ios_base::openmode mode(std::ios_base::out|std::ios_base::binary);
if (append) if (append)
{ {
mode |= std::ios_base::app; mode |= std::ios_base::app;