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 * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Functions * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
//
|
|
||||||
//! \cond fileScope
|
//! \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
|
// Like fileName "/" global operator, but retain any invalid characters
|
||||||
static inline Foam::fileName fileNameConcat
|
static inline Foam::fileName fileNameConcat
|
||||||
@ -793,7 +764,7 @@ Foam::fileNameList Foam::readDir
|
|||||||
else if
|
else if
|
||||||
(
|
(
|
||||||
(type == fileName::DIRECTORY)
|
(type == fileName::DIRECTORY)
|
||||||
|| (type == fileName::FILE && !isBackupName(name))
|
|| (type == fileName::FILE && !fileName::isBackup(name))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ((directory/name).type(followLink) == type)
|
if ((directory/name).type(followLink) == type)
|
||||||
|
|||||||
@ -3,7 +3,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) 2011-2017 OpenFOAM Foundation
|
\\ / 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
|
License
|
||||||
This file is part of OpenFOAM.
|
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 * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::fileName::fileName(const UList<word>& lst)
|
Foam::fileName::fileName(const UList<word>& lst)
|
||||||
|
|||||||
@ -3,7 +3,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) 2011-2017 OpenFOAM Foundation
|
\\ / 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
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -83,10 +83,10 @@ public:
|
|||||||
//- Enumerations to handle file types and modes.
|
//- Enumerations to handle file types and modes.
|
||||||
enum Type
|
enum Type
|
||||||
{
|
{
|
||||||
UNDEFINED,
|
UNDEFINED, //!< Undefined file type.
|
||||||
FILE,
|
FILE, //!< A file
|
||||||
DIRECTORY,
|
DIRECTORY, //!< A directory
|
||||||
LINK
|
LINK //!< A symlink
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -190,8 +190,8 @@ public:
|
|||||||
|
|
||||||
// Interrogation
|
// Interrogation
|
||||||
|
|
||||||
//- Return the file type: FILE, DIRECTORY, UNDEFINED or
|
//- Return the file type: FILE, DIRECTORY, LINK or UNDEFINED.
|
||||||
// LINK (only if followLink=false)
|
// LINK is only returned if followLink=false
|
||||||
Type type(const bool followLink = true) const;
|
Type type(const bool followLink = true) const;
|
||||||
|
|
||||||
//- Return true if string starts with a '/'
|
//- Return true if string starts with a '/'
|
||||||
@ -203,6 +203,12 @@ public:
|
|||||||
//- Convert from relative to absolute
|
//- Convert from relative to absolute
|
||||||
fileName& toAbsolute();
|
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
|
// 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
|
inline bool Foam::fileName::hasExt() const
|
||||||
{
|
{
|
||||||
return string::hasExt();
|
return string::hasExt();
|
||||||
|
|||||||
@ -39,16 +39,14 @@ const Foam::string Foam::string::null;
|
|||||||
|
|
||||||
Foam::word Foam::string::ext() const
|
Foam::word Foam::string::ext() const
|
||||||
{
|
{
|
||||||
const size_type i = find_ext();
|
const auto i = find_ext();
|
||||||
|
|
||||||
if (i == npos)
|
if (i == npos)
|
||||||
{
|
{
|
||||||
return word::null;
|
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
|
bool Foam::string::hasExt(const word& ending) const
|
||||||
{
|
{
|
||||||
size_type i = find_ext();
|
auto i = find_ext();
|
||||||
if (i == npos)
|
if (i == npos)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -86,7 +84,7 @@ bool Foam::string::hasExt(const word& ending) const
|
|||||||
|
|
||||||
bool Foam::string::hasExt(const wordRe& ending) const
|
bool Foam::string::hasExt(const wordRe& ending) const
|
||||||
{
|
{
|
||||||
const size_type i = find_ext();
|
const auto i = find_ext();
|
||||||
if (i == npos)
|
if (i == npos)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -84,7 +84,11 @@ protected:
|
|||||||
|
|
||||||
//- Find position of a file extension dot, return npos on failure.
|
//- Find position of a file extension dot, return npos on failure.
|
||||||
// A wrapped version of find_last_of("./") with additional logic.
|
// 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 .)
|
//- Return file name extension (part after last .)
|
||||||
word ext() const;
|
word ext() const;
|
||||||
|
|||||||
@ -26,18 +26,22 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * 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;
|
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()
|
inline bool Foam::string::removeExt()
|
||||||
{
|
{
|
||||||
const size_type i = find_ext();
|
const auto i = find_ext();
|
||||||
|
|
||||||
if (i == npos)
|
if (i == npos)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
this->resize(i);
|
||||||
this->resize(i);
|
return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user