mirror of https://github.com/PCSX2/pcsx2.git
Changes to work for windows + linux
This commit is contained in:
parent
e9ce1d99fe
commit
06513d81f8
|
@ -11,7 +11,13 @@
|
||||||
#include "common/Path.h"
|
#include "common/Path.h"
|
||||||
#include "common/StringUtil.h"
|
#include "common/StringUtil.h"
|
||||||
|
|
||||||
|
// Platform-specific includes
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
MemoryCardConvertDialog::MemoryCardConvertDialog(QWidget* parent, QString selectedCard)
|
MemoryCardConvertDialog::MemoryCardConvertDialog(QWidget* parent, QString selectedCard)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
@ -260,14 +266,34 @@ void MemoryCardConvertDialog::ConvertCard()
|
||||||
QDir destinationDir(fullPath);
|
QDir destinationDir(fullPath);
|
||||||
QString absolutePath = destinationDir.absolutePath(); // Get the absolute path
|
QString absolutePath = destinationDir.absolutePath(); // Get the absolute path
|
||||||
|
|
||||||
if (access(absolutePath.toStdString().c_str(), R_OK | W_OK | X_OK) != 0)
|
// Check for read/write/execute permissions on the directory
|
||||||
|
// We only need to check the parent directory where the file will be created
|
||||||
|
QFileInfo dirInfo(destinationDir.absolutePath());
|
||||||
|
QString dirPath = dirInfo.absolutePath();
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
// Windows systems
|
||||||
|
DWORD fileAttributes = GetFileAttributes(dirPath.toStdString().c_str());
|
||||||
|
|
||||||
|
// Windows has no direct R/W/X permission model like Linux. We check for basic file existence.
|
||||||
|
bool canRead = !(fileAttributes & FILE_ATTRIBUTE_READONLY);
|
||||||
|
bool canWrite = true; // If not read-only, assume write is possible (for this basic example)
|
||||||
|
|
||||||
|
if !(canRead && canWrite)
|
||||||
{
|
{
|
||||||
QMessageBox::critical(this, tr("Cannot Convert Memory Card"),
|
PermissionError(absolutePath);
|
||||||
tr("You have insufficient permissions to convert this Memory Card. Please ensure that your user owns the directory of your Memory Cards. \n \"%1\".")
|
|
||||||
.arg(absolutePath));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
// Linux/Unix code using access() for checking R/W/X permissions
|
||||||
|
if (access(dirPath.toStdString().c_str(), R_OK | W_OK | X_OK) != 0)
|
||||||
|
{
|
||||||
|
PermissionError(absolutePath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// If a match is found, revert back to the base name, add a number and the extension, and try again.
|
// If a match is found, revert back to the base name, add a number and the extension, and try again.
|
||||||
// Keep incrementing the number until we get a unique result.
|
// Keep incrementing the number until we get a unique result.
|
||||||
while (m_srcCardInfo.type == MemoryCardType::File ? FileSystem::DirectoryExists(Path::Combine(EmuFolders::MemoryCards, destName.toStdString()).c_str()) : FileSystem::FileExists(Path::Combine(EmuFolders::MemoryCards, destName.toStdString()).c_str()))
|
while (m_srcCardInfo.type == MemoryCardType::File ? FileSystem::DirectoryExists(Path::Combine(EmuFolders::MemoryCards, destName.toStdString()).c_str()) : FileSystem::FileExists(Path::Combine(EmuFolders::MemoryCards, destName.toStdString()).c_str()))
|
||||||
|
@ -317,3 +343,8 @@ void MemoryCardConvertDialog::SetType_Folder()
|
||||||
{
|
{
|
||||||
SetType(MemoryCardType::Folder, MemoryCardFileType::Unknown, tr("Uses a folder on your PC filesystem, instead of a file. Infinite capacity, while keeping the same compatibility as an 8 MB Memory Card."));
|
SetType(MemoryCardType::Folder, MemoryCardFileType::Unknown, tr("Uses a folder on your PC filesystem, instead of a file. Infinite capacity, while keeping the same compatibility as an 8 MB Memory Card."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MemoryCardConvertDialog::PermissionError(QString absolutePath)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Cannot Convert Memory Card"),tr("You have insufficient permissions to convert this Memory Card. Please ensure that your user owns the directory of your Memory Cards. \n \"%1\".").arg(absolutePath));
|
||||||
|
}
|
|
@ -41,6 +41,7 @@ private:
|
||||||
void SetType_32();
|
void SetType_32();
|
||||||
void SetType_64();
|
void SetType_64();
|
||||||
void SetType_Folder();
|
void SetType_Folder();
|
||||||
|
void PermissionError(QString absolutePath);
|
||||||
|
|
||||||
Ui::MemoryCardConvertDialog m_ui;
|
Ui::MemoryCardConvertDialog m_ui;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue