mirror of
https://github.com/reactos/CMake.git
synced 2024-11-28 05:50:42 +00:00
cmSystemTools: Remove cmSystemToolsFileTime interface
This removes the C style cmSystemToolsFileTime interface in cmSystemTools. It was replaced by the RAII based cmFileTimes class.
This commit is contained in:
parent
9c576a88d9
commit
5b53cfda24
@ -6,7 +6,6 @@
|
||||
#include "cmDuration.h"
|
||||
#include "cmProcessOutput.h"
|
||||
#include "cmRange.h"
|
||||
#include "cm_sys_stat.h"
|
||||
#include "cm_uv.h"
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
@ -60,7 +59,6 @@
|
||||
#else
|
||||
# include <sys/time.h>
|
||||
# include <unistd.h>
|
||||
# include <utime.h>
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) && \
|
||||
@ -90,18 +88,6 @@ static bool cm_isspace(char c)
|
||||
return ((c & 0x80) == 0) && isspace(c);
|
||||
}
|
||||
|
||||
class cmSystemToolsFileTime
|
||||
{
|
||||
public:
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
FILETIME timeCreation;
|
||||
FILETIME timeLastAccess;
|
||||
FILETIME timeLastWrite;
|
||||
#else
|
||||
struct utimbuf timeBuf;
|
||||
#endif
|
||||
};
|
||||
|
||||
#if !defined(HAVE_ENVIRON_NOT_REQUIRE_PROTOTYPE)
|
||||
// For GetEnvironmentVariables
|
||||
# if defined(_WIN32)
|
||||
@ -134,29 +120,6 @@ static int cm_archive_read_open_file(struct archive* a, const char* file,
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
class cmSystemToolsWindowsHandle
|
||||
{
|
||||
public:
|
||||
cmSystemToolsWindowsHandle(HANDLE h)
|
||||
: handle_(h)
|
||||
{
|
||||
}
|
||||
~cmSystemToolsWindowsHandle()
|
||||
{
|
||||
if (this->handle_ != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(this->handle_);
|
||||
}
|
||||
}
|
||||
explicit operator bool() const
|
||||
{
|
||||
return this->handle_ != INVALID_HANDLE_VALUE;
|
||||
}
|
||||
bool operator!() const { return this->handle_ == INVALID_HANDLE_VALUE; }
|
||||
operator HANDLE() const { return this->handle_; }
|
||||
|
||||
private:
|
||||
HANDLE handle_;
|
||||
};
|
||||
#elif defined(__APPLE__)
|
||||
# include <crt_externs.h>
|
||||
|
||||
@ -2098,91 +2061,6 @@ void cmSystemTools::DoNotInheritStdPipes()
|
||||
#endif
|
||||
}
|
||||
|
||||
bool cmSystemTools::CopyFileTime(const std::string& fromFile,
|
||||
const std::string& toFile)
|
||||
{
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
cmSystemToolsWindowsHandle hFrom = CreateFileW(
|
||||
SystemTools::ConvertToWindowsExtendedPath(fromFile).c_str(), GENERIC_READ,
|
||||
FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
cmSystemToolsWindowsHandle hTo = CreateFileW(
|
||||
SystemTools::ConvertToWindowsExtendedPath(toFile).c_str(),
|
||||
FILE_WRITE_ATTRIBUTES, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if (!hFrom || !hTo) {
|
||||
return false;
|
||||
}
|
||||
FILETIME timeCreation;
|
||||
FILETIME timeLastAccess;
|
||||
FILETIME timeLastWrite;
|
||||
if (!GetFileTime(hFrom, &timeCreation, &timeLastAccess, &timeLastWrite)) {
|
||||
return false;
|
||||
}
|
||||
return SetFileTime(hTo, &timeCreation, &timeLastAccess, &timeLastWrite) != 0;
|
||||
#else
|
||||
struct stat fromStat;
|
||||
if (stat(fromFile.c_str(), &fromStat) < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
struct utimbuf buf;
|
||||
buf.actime = fromStat.st_atime;
|
||||
buf.modtime = fromStat.st_mtime;
|
||||
return utime(toFile.c_str(), &buf) >= 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
cmSystemToolsFileTime* cmSystemTools::FileTimeNew()
|
||||
{
|
||||
return new cmSystemToolsFileTime;
|
||||
}
|
||||
|
||||
void cmSystemTools::FileTimeDelete(cmSystemToolsFileTime* t)
|
||||
{
|
||||
delete t;
|
||||
}
|
||||
|
||||
bool cmSystemTools::FileTimeGet(const std::string& fname,
|
||||
cmSystemToolsFileTime* t)
|
||||
{
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
cmSystemToolsWindowsHandle h = CreateFileW(
|
||||
SystemTools::ConvertToWindowsExtendedPath(fname).c_str(), GENERIC_READ,
|
||||
FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if (!h) {
|
||||
return false;
|
||||
}
|
||||
if (!GetFileTime(h, &t->timeCreation, &t->timeLastAccess,
|
||||
&t->timeLastWrite)) {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
struct stat st;
|
||||
if (stat(fname.c_str(), &st) < 0) {
|
||||
return false;
|
||||
}
|
||||
t->timeBuf.actime = st.st_atime;
|
||||
t->timeBuf.modtime = st.st_mtime;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cmSystemTools::FileTimeSet(const std::string& fname,
|
||||
const cmSystemToolsFileTime* t)
|
||||
{
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
cmSystemToolsWindowsHandle h = CreateFileW(
|
||||
SystemTools::ConvertToWindowsExtendedPath(fname).c_str(),
|
||||
FILE_WRITE_ATTRIBUTES, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if (!h) {
|
||||
return false;
|
||||
}
|
||||
return SetFileTime(h, &t->timeCreation, &t->timeLastAccess,
|
||||
&t->timeLastWrite) != 0;
|
||||
#else
|
||||
return utime(fname.c_str(), &t->timeBuf) >= 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
# ifndef CRYPT_SILENT
|
||||
# define CRYPT_SILENT 0x40 /* Not defined by VS 6 version of header. */
|
||||
|
@ -15,8 +15,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class cmSystemToolsFileTime;
|
||||
|
||||
/** \class cmSystemTools
|
||||
* \brief A collection of useful functions for CMake.
|
||||
*
|
||||
@ -470,18 +468,6 @@ public:
|
||||
|
||||
static void EnsureStdPipes();
|
||||
|
||||
/** Copy the file create/access/modify times from the file named by
|
||||
the first argument to that named by the second. */
|
||||
static bool CopyFileTime(const std::string& fromFile,
|
||||
const std::string& toFile);
|
||||
|
||||
/** Save and restore file times. */
|
||||
static cmSystemToolsFileTime* FileTimeNew();
|
||||
static void FileTimeDelete(cmSystemToolsFileTime*);
|
||||
static bool FileTimeGet(const std::string& fname, cmSystemToolsFileTime* t);
|
||||
static bool FileTimeSet(const std::string& fname,
|
||||
const cmSystemToolsFileTime* t);
|
||||
|
||||
/** Random seed generation. */
|
||||
static unsigned int RandomSeed();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user