Skip to content

Commit

Permalink
Merge pull request #6995 from lioncash/cd
Browse files Browse the repository at this point in the history
CDUtils: Namespace code under the Common namespace
  • Loading branch information
leoetlino committed May 27, 2018
2 parents 5fdf171 + c056708 commit 686e29f
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 18 deletions.
25 changes: 14 additions & 11 deletions Source/Core/Common/CDUtils.cpp
Expand Up @@ -34,15 +34,17 @@
#include <linux/cdrom.h> #include <linux/cdrom.h>
#endif #endif


namespace Common
{
#ifdef _WIN32 #ifdef _WIN32
// takes a root drive path, returns true if it is a cdrom drive // 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)); return (DRIVE_CDROM == GetDriveType(drive));
} }


// Returns a vector with the device names // Returns a vector with the device names
std::vector<std::string> cdio_get_devices() std::vector<std::string> GetCDDevices()
{ {
std::vector<std::string> drives; std::vector<std::string> drives;


Expand All @@ -53,7 +55,7 @@ std::vector<std::string> cdio_get_devices()
auto drive = buff.data(); auto drive = buff.data();
while (*drive) while (*drive)
{ {
if (is_cdrom(drive)) if (IsCDROM(drive))
{ {
std::string str(TStrToUTF8(drive)); std::string str(TStrToUTF8(drive));
str.pop_back(); // we don't want the final backslash str.pop_back(); // we don't want the final backslash
Expand All @@ -70,7 +72,7 @@ std::vector<std::string> cdio_get_devices()
} }
#elif defined __APPLE__ #elif defined __APPLE__
// Returns a pointer to an array of strings with the device names // 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; io_object_t next_media;
mach_port_t master_port; mach_port_t master_port;
Expand Down Expand Up @@ -148,7 +150,7 @@ static struct
{nullptr, 0, 0}}; {nullptr, 0, 0}};


// Returns true if a device is a block or char device and not a symbolic link // 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; struct stat buf;
if (0 != lstat(source_name.c_str(), &buf)) if (0 != lstat(source_name.c_str(), &buf))
Expand All @@ -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 // 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 // Check if the device exists
if (!is_device(drive)) if (!IsDevice(drive))
return false; return false;


bool is_cd = false; bool is_cd = false;
Expand All @@ -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 // 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; std::vector<std::string> drives;
// Scan the system for DVD/CD-ROM drives. // Scan the system for DVD/CD-ROM drives.
Expand All @@ -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) for (unsigned int j = checklist[i].num_min; j <= checklist[i].num_max; ++j)
{ {
std::string drive = StringFromFormat(checklist[i].format, j); std::string drive = StringFromFormat(checklist[i].format, j);
if (is_cdrom(drive, nullptr)) if (IsCDROM(drive))
{ {
drives.push_back(std::move(drive)); drives.push_back(std::move(drive));
} }
Expand All @@ -199,7 +201,7 @@ std::vector<std::string> cdio_get_devices()
#endif #endif


// Returns true if device is a cdrom/dvd drive // Returns true if device is a cdrom/dvd drive
bool cdio_is_cdrom(std::string device) bool IsCDROMDevice(std::string device)
{ {
#ifndef _WIN32 #ifndef _WIN32
// Resolve symbolic links. This allows symbolic links to valid // Resolve symbolic links. This allows symbolic links to valid
Expand All @@ -211,11 +213,12 @@ bool cdio_is_cdrom(std::string device)
device = devname; device = devname;
#endif #endif


std::vector<std::string> devices = cdio_get_devices(); std::vector<std::string> devices = GetCDDevices();
for (const std::string& d : devices) for (const std::string& d : devices)
{ {
if (d == device) if (d == device)
return true; return true;
} }
return false; return false;
} }
} // namespace Common
7 changes: 5 additions & 2 deletions Source/Core/Common/CDUtils.h
Expand Up @@ -7,8 +7,11 @@
#include <string> #include <string>
#include <vector> #include <vector>


namespace Common
{
// Returns a pointer to an array of strings with the device names // 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 // Returns true if device is cdrom/dvd
bool cdio_is_cdrom(std::string device); bool IsCDROMDevice(std::string device);
} // namespace Common
2 changes: 1 addition & 1 deletion Source/Core/Core/Boot/Boot.cpp
Expand Up @@ -62,7 +62,7 @@ std::unique_ptr<BootParameters>
BootParameters::GenerateFromFile(const std::string& path, BootParameters::GenerateFromFile(const std::string& path,
const std::optional<std::string>& savestate_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 // Check if the file exist, we may have gotten it from a --elf command line
// that gave an incorrect file name // that gave an incorrect file name
if (!is_drive && !File::Exists(path)) if (!is_drive && !File::Exists(path))
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/DiscIO/Blob.cpp
Expand Up @@ -176,7 +176,7 @@ u32 SectorReader::ReadChunk(u8* buffer, u64 chunk_num)


std::unique_ptr<BlobReader> CreateBlobReader(const std::string& filename) std::unique_ptr<BlobReader> CreateBlobReader(const std::string& filename)
{ {
if (cdio_is_cdrom(filename)) if (Common::IsCDROMDevice(filename))
return DriveReader::Create(filename); return DriveReader::Create(filename);


File::IOFile file(filename, "rb"); File::IOFile file(filename, "rb");
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/DolphinQt2/MenuBar.cpp
Expand Up @@ -166,7 +166,7 @@ void MenuBar::AddDVDBackupMenu(QMenu* file_menu)
{ {
m_backup_menu = file_menu->addMenu(tr("&Boot from DVD Backup")); 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 // Windows Limitation of 24 character drives
for (size_t i = 0; i < drives.size() && i < 24; i++) for (size_t i = 0; i < drives.size() && i < 24; i++)
{ {
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/DolphinWX/GameListCtrl.cpp
Expand Up @@ -397,7 +397,7 @@ void GameListCtrl::RefreshList()
if (SConfig::GetInstance().m_ListDrives) if (SConfig::GetInstance().m_ListDrives)
{ {
std::unique_lock<std::mutex> lk(m_title_database_mutex); 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); auto file = std::make_shared<UICommon::GameFile>(drive);
if (file->IsValid()) if (file->IsValid())
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/DolphinWX/MainMenuBar.cpp
Expand Up @@ -72,7 +72,7 @@ wxMenu* MainMenuBar::CreateFileMenu() const
{ {
auto* const external_drive_menu = new wxMenu; 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 // Windows Limitation of 24 character drives
for (size_t i = 0; i < drives.size() && i < 24; i++) for (size_t i = 0; i < drives.size() && i < 24; i++)
{ {
Expand Down

0 comments on commit 686e29f

Please sign in to comment.