Made use of smart pointers :)
Former-commit-id: 5380752e0da3f4b958a944e41fcde38722e3c4c2
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <Nazara/Core/Win32/DirectoryImpl.hpp>
|
||||
#include <Nazara/Core/Error.hpp>
|
||||
#include <memory>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
NzDirectoryImpl::NzDirectoryImpl(const NzDirectory* parent)
|
||||
@@ -60,9 +61,9 @@ bool NzDirectoryImpl::NextResult()
|
||||
bool NzDirectoryImpl::Open(const NzString& dirPath)
|
||||
{
|
||||
NzString searchPath = dirPath + "\\*";
|
||||
wchar_t* path = searchPath.GetWideBuffer();
|
||||
m_handle = FindFirstFileW(path, &m_result);
|
||||
delete[] path;
|
||||
|
||||
std::unique_ptr<wchar_t[]> wPath(searchPath.GetWideBuffer());
|
||||
m_handle = FindFirstFileW(wPath.get(), &m_result);
|
||||
|
||||
if (m_handle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
@@ -77,18 +78,15 @@ bool NzDirectoryImpl::Open(const NzString& dirPath)
|
||||
|
||||
bool NzDirectoryImpl::Create(const NzString& dirPath)
|
||||
{
|
||||
wchar_t* path = dirPath.GetWideBuffer();
|
||||
bool success = CreateDirectoryW(path, nullptr) != 0;
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> wPath(dirPath.GetWideBuffer());
|
||||
|
||||
return success || GetLastError() == ERROR_ALREADY_EXISTS;
|
||||
return (CreateDirectoryW(wPath.get(), nullptr) != 0) || GetLastError() == ERROR_ALREADY_EXISTS;
|
||||
}
|
||||
|
||||
bool NzDirectoryImpl::Exists(const NzString& dirPath)
|
||||
{
|
||||
wchar_t* path = dirPath.GetWideBuffer();
|
||||
DWORD attributes = GetFileAttributesW(path);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> wPath(dirPath.GetWideBuffer());
|
||||
DWORD attributes = GetFileAttributesW(wPath.get());
|
||||
|
||||
if (attributes != INVALID_FILE_ATTRIBUTES)
|
||||
return (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
||||
@@ -99,34 +97,29 @@ bool NzDirectoryImpl::Exists(const NzString& dirPath)
|
||||
NzString NzDirectoryImpl::GetCurrent()
|
||||
{
|
||||
NzString currentPath;
|
||||
wchar_t* path = new wchar_t[MAX_PATH];
|
||||
std::unique_ptr<wchar_t[]> path(new wchar_t[MAX_PATH]);
|
||||
|
||||
unsigned int size = GetCurrentDirectoryW(MAX_PATH, path);
|
||||
unsigned int size = GetCurrentDirectoryW(MAX_PATH, path.get());
|
||||
if (size > MAX_PATH) // La taille prends en compte le caractère nul
|
||||
{
|
||||
delete[] path;
|
||||
|
||||
path = new wchar_t[size];
|
||||
if (GetCurrentDirectoryW(size, path) == 0)
|
||||
NazaraError("Unable to get current directory: " + NzGetLastSystemError());
|
||||
path.reset(new wchar_t[size]);
|
||||
if (GetCurrentDirectoryW(size, path.get()) != 0)
|
||||
currentPath = NzString::Unicode(path.get());
|
||||
else
|
||||
currentPath = NzString::Unicode(path);
|
||||
NazaraError("Unable to get current directory: " + NzGetLastSystemError());
|
||||
}
|
||||
else if (size == 0)
|
||||
NazaraError("Unable to get current directory: " + NzGetLastSystemError());
|
||||
else
|
||||
currentPath = NzString::Unicode(path);
|
||||
|
||||
delete[] path;
|
||||
currentPath = NzString::Unicode(path.get());
|
||||
|
||||
return currentPath;
|
||||
}
|
||||
|
||||
bool NzDirectoryImpl::Remove(const NzString& dirPath)
|
||||
{
|
||||
wchar_t* path = dirPath.GetWideBuffer();
|
||||
bool success = RemoveDirectoryW(path) != 0;
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(dirPath.GetWideBuffer());
|
||||
bool success = RemoveDirectoryW(path.get()) != 0;
|
||||
|
||||
DWORD error = GetLastError();
|
||||
return success || error == ERROR_FILE_NOT_FOUND || error == ERROR_PATH_NOT_FOUND;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <Nazara/Core/DynLib.hpp>
|
||||
#include <Nazara/Core/Error.hpp>
|
||||
#include <Nazara/Core/String.hpp>
|
||||
#include <memory>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
NzDynLibImpl::NzDynLibImpl(NzDynLib* parent) :
|
||||
@@ -28,9 +29,8 @@ bool NzDynLibImpl::Load(const NzString& libraryPath)
|
||||
if (!path.EndsWith(".dll"))
|
||||
path += ".dll";
|
||||
|
||||
wchar_t* pathW = path.GetWideBuffer();
|
||||
m_handle = LoadLibraryExW(pathW, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
delete[] pathW;
|
||||
std::unique_ptr<wchar_t[]> wPath(path.GetWideBuffer());
|
||||
m_handle = LoadLibraryExW(wPath.get(), nullptr, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||
|
||||
if (m_handle)
|
||||
return true;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <Nazara/Core/Win32/FileImpl.hpp>
|
||||
#include <Nazara/Core/Error.hpp>
|
||||
#include <Nazara/Core/Win32/Time.hpp>
|
||||
#include <memory>
|
||||
#include <Nazara/Core/Debug.hpp>
|
||||
|
||||
NzFileImpl::NzFileImpl(const NzFile* parent) :
|
||||
@@ -91,9 +92,8 @@ bool NzFileImpl::Open(const NzString& filePath, unsigned int mode)
|
||||
if ((mode & NzFile::Lock) == 0)
|
||||
shareMode |= FILE_SHARE_WRITE;
|
||||
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
m_handle = CreateFileW(path, access, shareMode, nullptr, openMode, 0, nullptr);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
m_handle = CreateFileW(path.get(), access, shareMode, nullptr, openMode, 0, nullptr);
|
||||
|
||||
return m_handle != INVALID_HANDLE_VALUE;
|
||||
}
|
||||
@@ -184,13 +184,10 @@ std::size_t NzFileImpl::Write(const void* buffer, std::size_t size)
|
||||
|
||||
bool NzFileImpl::Copy(const NzString& sourcePath, const NzString& targetPath)
|
||||
{
|
||||
wchar_t* path = sourcePath.GetWideBuffer();
|
||||
wchar_t* newPath = targetPath.GetWideBuffer();
|
||||
bool success = CopyFileW(path, newPath, false);
|
||||
delete[] path;
|
||||
delete[] newPath;
|
||||
std::unique_ptr<wchar_t[]> srcPath(sourcePath.GetWideBuffer());
|
||||
std::unique_ptr<wchar_t[]> dstPath(targetPath.GetWideBuffer());
|
||||
|
||||
if (success)
|
||||
if (CopyFileW(srcPath.get(), dstPath.get(), false))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
@@ -202,11 +199,9 @@ bool NzFileImpl::Copy(const NzString& sourcePath, const NzString& targetPath)
|
||||
|
||||
bool NzFileImpl::Delete(const NzString& filePath)
|
||||
{
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
bool success = DeleteFileW(path);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
|
||||
if (success)
|
||||
if (DeleteFileW(path.get()))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
@@ -218,9 +213,8 @@ bool NzFileImpl::Delete(const NzString& filePath)
|
||||
|
||||
bool NzFileImpl::Exists(const NzString& filePath)
|
||||
{
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
HANDLE handle = CreateFileW(path, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
HANDLE handle = CreateFileW(path.get(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
return false;
|
||||
@@ -232,9 +226,8 @@ bool NzFileImpl::Exists(const NzString& filePath)
|
||||
|
||||
time_t NzFileImpl::GetCreationTime(const NzString& filePath)
|
||||
{
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
HANDLE handle = CreateFileW(path, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
HANDLE handle = CreateFileW(path.get(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
return 0;
|
||||
@@ -255,9 +248,8 @@ time_t NzFileImpl::GetCreationTime(const NzString& filePath)
|
||||
|
||||
time_t NzFileImpl::GetLastAccessTime(const NzString& filePath)
|
||||
{
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
HANDLE handle = CreateFileW(path, 0, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
HANDLE handle = CreateFileW(path.get(), 0, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
return 0;
|
||||
@@ -278,9 +270,8 @@ time_t NzFileImpl::GetLastAccessTime(const NzString& filePath)
|
||||
|
||||
time_t NzFileImpl::GetLastWriteTime(const NzString& filePath)
|
||||
{
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
HANDLE handle = CreateFileW(path, 0, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
HANDLE handle = CreateFileW(path.get(), 0, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
return 0;
|
||||
@@ -301,9 +292,8 @@ time_t NzFileImpl::GetLastWriteTime(const NzString& filePath)
|
||||
|
||||
nzUInt64 NzFileImpl::GetSize(const NzString& filePath)
|
||||
{
|
||||
wchar_t* path = filePath.GetWideBuffer();
|
||||
HANDLE handle = CreateFileW(path, 0, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
delete[] path;
|
||||
std::unique_ptr<wchar_t[]> path(filePath.GetWideBuffer());
|
||||
HANDLE handle = CreateFileW(path.get(), 0, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
return 0;
|
||||
@@ -319,15 +309,10 @@ nzUInt64 NzFileImpl::GetSize(const NzString& filePath)
|
||||
|
||||
bool NzFileImpl::Rename(const NzString& sourcePath, const NzString& targetPath)
|
||||
{
|
||||
wchar_t* path = sourcePath.GetWideBuffer();
|
||||
wchar_t* newPath = targetPath.GetWideBuffer();
|
||||
std::unique_ptr<wchar_t[]> srcPath(sourcePath.GetWideBuffer());
|
||||
std::unique_ptr<wchar_t[]> dstPath(targetPath.GetWideBuffer());
|
||||
|
||||
bool success = MoveFileExW(path, newPath, MOVEFILE_COPY_ALLOWED) != 0;
|
||||
|
||||
delete[] path;
|
||||
delete[] newPath;
|
||||
|
||||
if (success)
|
||||
if (MoveFileExW(srcPath.get(), dstPath.get(), MOVEFILE_COPY_ALLOWED))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user