Merge pull request #6995 from lioncash/cd

CDUtils: Namespace code under the Common namespace
This commit is contained in:
Léo Lam 2018-05-28 01:05:03 +02:00 committed by GitHub
commit 686e29f2d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 24 additions and 18 deletions

View File

@ -34,15 +34,17 @@
#include <linux/cdrom.h>
#endif
namespace Common
{
#ifdef _WIN32
// takes a root drive path, returns true if it is a cdrom drive
bool is_cdrom(const TCHAR* drive)
static bool IsCDROM(const TCHAR* drive)
{
return (DRIVE_CDROM == GetDriveType(drive));
}
// Returns a vector with the device names
std::vector<std::string> cdio_get_devices()
std::vector<std::string> GetCDDevices()
{
std::vector<std::string> drives;
@ -53,7 +55,7 @@ std::vector<std::string> cdio_get_devices()
auto drive = buff.data();
while (*drive)
{
if (is_cdrom(drive))
if (IsCDROM(drive))
{
std::string str(TStrToUTF8(drive));
str.pop_back(); // we don't want the final backslash
@ -70,7 +72,7 @@ std::vector<std::string> cdio_get_devices()
}
#elif defined __APPLE__
// Returns a pointer to an array of strings with the device names
std::vector<std::string> cdio_get_devices()
std::vector<std::string> GetCDDevices()
{
io_object_t next_media;
mach_port_t master_port;
@ -148,7 +150,7 @@ static struct
{nullptr, 0, 0}};
// Returns true if a device is a block or char device and not a symbolic link
static bool is_device(const std::string& source_name)
static bool IsDevice(const std::string& source_name)
{
struct stat buf;
if (0 != lstat(source_name.c_str(), &buf))
@ -158,10 +160,10 @@ static bool is_device(const std::string& source_name)
}
// Check a device to see if it is a DVD/CD-ROM drive
static bool is_cdrom(const std::string& drive, char* mnttype)
static bool IsCDROM(const std::string& drive)
{
// Check if the device exists
if (!is_device(drive))
if (!IsDevice(drive))
return false;
bool is_cd = false;
@ -179,7 +181,7 @@ static bool is_cdrom(const std::string& drive, char* mnttype)
}
// Returns a pointer to an array of strings with the device names
std::vector<std::string> cdio_get_devices()
std::vector<std::string> GetCDDevices()
{
std::vector<std::string> drives;
// Scan the system for DVD/CD-ROM drives.
@ -188,7 +190,7 @@ std::vector<std::string> cdio_get_devices()
for (unsigned int j = checklist[i].num_min; j <= checklist[i].num_max; ++j)
{
std::string drive = StringFromFormat(checklist[i].format, j);
if (is_cdrom(drive, nullptr))
if (IsCDROM(drive))
{
drives.push_back(std::move(drive));
}
@ -199,7 +201,7 @@ std::vector<std::string> cdio_get_devices()
#endif
// Returns true if device is a cdrom/dvd drive
bool cdio_is_cdrom(std::string device)
bool IsCDROMDevice(std::string device)
{
#ifndef _WIN32
// Resolve symbolic links. This allows symbolic links to valid
@ -211,7 +213,7 @@ bool cdio_is_cdrom(std::string device)
device = devname;
#endif
std::vector<std::string> devices = cdio_get_devices();
std::vector<std::string> devices = GetCDDevices();
for (const std::string& d : devices)
{
if (d == device)
@ -219,3 +221,4 @@ bool cdio_is_cdrom(std::string device)
}
return false;
}
} // namespace Common

View File

@ -7,8 +7,11 @@
#include <string>
#include <vector>
namespace Common
{
// Returns a pointer to an array of strings with the device names
std::vector<std::string> cdio_get_devices();
std::vector<std::string> GetCDDevices();
// Returns true if device is cdrom/dvd
bool cdio_is_cdrom(std::string device);
bool IsCDROMDevice(std::string device);
} // namespace Common

View File

@ -62,7 +62,7 @@ std::unique_ptr<BootParameters>
BootParameters::GenerateFromFile(const std::string& path,
const std::optional<std::string>& savestate_path)
{
const bool is_drive = cdio_is_cdrom(path);
const bool is_drive = Common::IsCDROMDevice(path);
// Check if the file exist, we may have gotten it from a --elf command line
// that gave an incorrect file name
if (!is_drive && !File::Exists(path))

View File

@ -176,7 +176,7 @@ u32 SectorReader::ReadChunk(u8* buffer, u64 chunk_num)
std::unique_ptr<BlobReader> CreateBlobReader(const std::string& filename)
{
if (cdio_is_cdrom(filename))
if (Common::IsCDROMDevice(filename))
return DriveReader::Create(filename);
File::IOFile file(filename, "rb");

View File

@ -166,7 +166,7 @@ void MenuBar::AddDVDBackupMenu(QMenu* file_menu)
{
m_backup_menu = file_menu->addMenu(tr("&Boot from DVD Backup"));
const std::vector<std::string> drives = cdio_get_devices();
const std::vector<std::string> drives = Common::GetCDDevices();
// Windows Limitation of 24 character drives
for (size_t i = 0; i < drives.size() && i < 24; i++)
{

View File

@ -397,7 +397,7 @@ void GameListCtrl::RefreshList()
if (SConfig::GetInstance().m_ListDrives)
{
std::unique_lock<std::mutex> lk(m_title_database_mutex);
for (const auto& drive : cdio_get_devices())
for (const auto& drive : Common::GetCDDevices())
{
auto file = std::make_shared<UICommon::GameFile>(drive);
if (file->IsValid())

View File

@ -72,7 +72,7 @@ wxMenu* MainMenuBar::CreateFileMenu() const
{
auto* const external_drive_menu = new wxMenu;
const std::vector<std::string> drives = cdio_get_devices();
const std::vector<std::string> drives = Common::GetCDDevices();
// Windows Limitation of 24 character drives
for (size_t i = 0; i < drives.size() && i < 24; i++)
{