mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: add fileName::isBackup() method
- previously part of POSIX.C
This commit is contained in:
@ -79,36 +79,7 @@ namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * Static Functions * * * * * * * * * * * * * * //
|
||||
|
||||
//
|
||||
//! \cond fileScope
|
||||
//
|
||||
// Return true if filename appears to be a backup file
|
||||
//
|
||||
static inline bool isBackupName(const Foam::fileName& name)
|
||||
{
|
||||
if (name.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (name.back() == '~')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Now check the extension
|
||||
const Foam::word ext = name.ext();
|
||||
if (ext.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return
|
||||
(
|
||||
ext == "bak" || ext == "BAK"
|
||||
|| ext == "old" || ext == "save"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Like fileName "/" global operator, but retain any invalid characters
|
||||
static inline Foam::fileName fileNameConcat
|
||||
@ -793,7 +764,7 @@ Foam::fileNameList Foam::readDir
|
||||
else if
|
||||
(
|
||||
(type == fileName::DIRECTORY)
|
||||
|| (type == fileName::FILE && !isBackupName(name))
|
||||
|| (type == fileName::FILE && !fileName::isBackup(name))
|
||||
)
|
||||
{
|
||||
if ((directory/name).type(followLink) == type)
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -122,6 +122,40 @@ bool Foam::fileName::equals(const std::string& s1, const std::string& s2)
|
||||
}
|
||||
|
||||
|
||||
bool Foam::fileName::isBackup(const std::string& str)
|
||||
{
|
||||
if (str.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (str.back() == '~')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Now check the extension
|
||||
const auto dot = find_ext(str);
|
||||
|
||||
if (dot == npos)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const std::string ending = str.substr(dot+1, npos);
|
||||
|
||||
if (ending.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return
|
||||
(
|
||||
ending == "bak" || ending == "BAK"
|
||||
|| ending == "old" || ending == "save"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::fileName::fileName(const UList<word>& lst)
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -83,10 +83,10 @@ public:
|
||||
//- Enumerations to handle file types and modes.
|
||||
enum Type
|
||||
{
|
||||
UNDEFINED,
|
||||
FILE,
|
||||
DIRECTORY,
|
||||
LINK
|
||||
UNDEFINED, //!< Undefined file type.
|
||||
FILE, //!< A file
|
||||
DIRECTORY, //!< A directory
|
||||
LINK //!< A symlink
|
||||
};
|
||||
|
||||
|
||||
@ -190,8 +190,8 @@ public:
|
||||
|
||||
// Interrogation
|
||||
|
||||
//- Return the file type: FILE, DIRECTORY, UNDEFINED or
|
||||
// LINK (only if followLink=false)
|
||||
//- Return the file type: FILE, DIRECTORY, LINK or UNDEFINED.
|
||||
// LINK is only returned if followLink=false
|
||||
Type type(const bool followLink = true) const;
|
||||
|
||||
//- Return true if string starts with a '/'
|
||||
@ -203,6 +203,12 @@ public:
|
||||
//- Convert from relative to absolute
|
||||
fileName& toAbsolute();
|
||||
|
||||
//- Return true if string ends with "~", ".bak", ".old", ".save"
|
||||
static bool isBackup(const std::string& str);
|
||||
|
||||
//- Return true if file name ends with "~", ".bak", ".old", ".save"
|
||||
inline bool isBackup() const;
|
||||
|
||||
|
||||
// Decomposition
|
||||
|
||||
|
||||
@ -128,6 +128,12 @@ inline bool Foam::fileName::isAbsolute() const
|
||||
}
|
||||
|
||||
|
||||
inline bool Foam::fileName::isBackup() const
|
||||
{
|
||||
return isBackup(*this);
|
||||
}
|
||||
|
||||
|
||||
inline bool Foam::fileName::hasExt() const
|
||||
{
|
||||
return string::hasExt();
|
||||
|
||||
@ -39,16 +39,14 @@ const Foam::string Foam::string::null;
|
||||
|
||||
Foam::word Foam::string::ext() const
|
||||
{
|
||||
const size_type i = find_ext();
|
||||
const auto i = find_ext();
|
||||
|
||||
if (i == npos)
|
||||
{
|
||||
return word::null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return substr(i+1, npos);
|
||||
}
|
||||
|
||||
return substr(i+1, npos);
|
||||
}
|
||||
|
||||
|
||||
@ -68,7 +66,7 @@ bool Foam::string::ext(const Foam::word& ending)
|
||||
|
||||
bool Foam::string::hasExt(const word& ending) const
|
||||
{
|
||||
size_type i = find_ext();
|
||||
auto i = find_ext();
|
||||
if (i == npos)
|
||||
{
|
||||
return false;
|
||||
@ -86,7 +84,7 @@ bool Foam::string::hasExt(const word& ending) const
|
||||
|
||||
bool Foam::string::hasExt(const wordRe& ending) const
|
||||
{
|
||||
const size_type i = find_ext();
|
||||
const auto i = find_ext();
|
||||
if (i == npos)
|
||||
{
|
||||
return false;
|
||||
|
||||
@ -84,7 +84,11 @@ protected:
|
||||
|
||||
//- Find position of a file extension dot, return npos on failure.
|
||||
// A wrapped version of find_last_of("./") with additional logic.
|
||||
inline size_type find_ext() const;
|
||||
inline static std::string::size_type find_ext(const std::string& str);
|
||||
|
||||
//- Find position of a file extension dot, return npos on failure.
|
||||
// A wrapped version of find_last_of("./") with additional logic.
|
||||
inline std::string::size_type find_ext() const;
|
||||
|
||||
//- Return file name extension (part after last .)
|
||||
word ext() const;
|
||||
|
||||
@ -26,18 +26,22 @@ License
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
inline std::string::size_type Foam::string::find_ext() const
|
||||
inline std::string::size_type Foam::string::find_ext(const std::string& str)
|
||||
{
|
||||
const size_type i = find_last_of("./");
|
||||
const auto i = str.find_last_of("./");
|
||||
|
||||
if (i == npos || i == 0 || operator[](i) == '/')
|
||||
if (i == npos || i == 0 || str[i] == '/')
|
||||
{
|
||||
return npos;
|
||||
}
|
||||
else
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
inline std::string::size_type Foam::string::find_ext() const
|
||||
{
|
||||
return find_ext(*this);
|
||||
}
|
||||
|
||||
|
||||
@ -49,17 +53,15 @@ inline bool Foam::string::hasExt() const
|
||||
|
||||
inline bool Foam::string::removeExt()
|
||||
{
|
||||
const size_type i = find_ext();
|
||||
const auto i = find_ext();
|
||||
|
||||
if (i == npos)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->resize(i);
|
||||
return true;
|
||||
}
|
||||
|
||||
this->resize(i);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user