Skip to content

Commit

Permalink
Convert to std::array and std::string. (libmythbase)
Browse files Browse the repository at this point in the history
  • Loading branch information
linuxdude42 committed Aug 28, 2020
1 parent 5baa179 commit c317574
Show file tree
Hide file tree
Showing 28 changed files with 144 additions and 153 deletions.
2 changes: 1 addition & 1 deletion mythtv/libs/libmyth/mediamonitor-unix.cpp
Expand Up @@ -698,7 +698,7 @@ bool MediaMonitorUnix::AddDevice(struct fstab * mep)
#endif
if (parts[0].isEmpty())
return false;
pDevice = MythCDROM::get(this, qPrintable(dev), is_supermount, m_allowEject);
pDevice = MythCDROM::get(this, dev, is_supermount, m_allowEject);
}

if (pDevice)
Expand Down
10 changes: 4 additions & 6 deletions mythtv/libs/libmythbase/iso639.h
Expand Up @@ -45,12 +45,10 @@ MBASE_PUBLIC QString iso639_str2_to_str3(const QString &str2);

static inline QString iso639_key_to_str3(int code)
{
char str[4];
str[0] = static_cast<char>((code>>16) & 0xFF);
str[1] = static_cast<char>((code>>8) & 0xFF);
str[2] = static_cast<char>(code & 0xFF);
str[3] = 0;
return QString(str);
std::string str { static_cast<char>((code>>16) & 0xFF),
static_cast<char>((code>>8) & 0xFF),
static_cast<char>(code & 0xFF) };
return QString::fromStdString(str);
}

/// Returns true if the key is 0, 0xFFFFFF, or 'und'
Expand Down
12 changes: 8 additions & 4 deletions mythtv/libs/libmythbase/mythbaseutil.h
Expand Up @@ -2,6 +2,7 @@
#define MYTH_BASE_UTIL_H

// POSIX
#include <array>
#include <cerrno> // for checking errno
#include <fcntl.h> // for fnctl
#include <sys/types.h> // for fnctl
Expand All @@ -12,16 +13,19 @@
// MythTV
#include "mythlogging.h"

using pipe_fd_array = std::array<int,2>;
using pipe_flag_array = std::array<long,2>;

#ifdef _WIN32
static inline void setup_pipe(int[2], long[2]) {}
static inline void setup_pipe(pipe_fd_array&, pipe_flag_array&) {}
#else
static inline void setup_pipe(int mypipe[2], long myflags[2])
static inline void setup_pipe(pipe_fd_array& mypipe, pipe_flag_array& myflags)
{
int pipe_ret = pipe(mypipe);
int pipe_ret = pipe(mypipe.data());
if (pipe_ret < 0)
{
LOG(VB_GENERAL, LOG_ERR, "Failed to open pipes" + ENO);
mypipe[0] = mypipe[1] = -1;
mypipe.fill(-1);
}
else
{
Expand Down
4 changes: 2 additions & 2 deletions mythtv/libs/libmythbase/mythcdrom-darwin.cpp
Expand Up @@ -14,14 +14,14 @@
class MythCDROMDarwin: public MythCDROM
{
public:
MythCDROMDarwin(QObject* par, const char* DevicePath,
MythCDROMDarwin(QObject* par, const QString DevicePath,
bool SuperMount, bool AllowEject):
MythCDROM(par, DevicePath, SuperMount, AllowEject) {};

void setDeviceSpeed(const char *device, int speed) override; // MythMediaDevice
};

MythCDROM *GetMythCDROMDarwin(QObject* par, const char* devicePath,
MythCDROM *GetMythCDROMDarwin(QObject* par, const QString devicePath,
bool SuperMount, bool AllowEject)
{
return new MythCDROMDarwin(par, devicePath, SuperMount, AllowEject);
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythbase/mythcdrom-darwin.h
@@ -1,7 +1,7 @@
#ifndef MYTHCDROM_DARWIN_H_
#define MYTHCDROM_DARWIN_H_

class MythCDROM *GetMythCDROMDarwin(class QObject* par, const char* devicePath,
class MythCDROM *GetMythCDROMDarwin(class QObject* par, const QString devicePath,
bool SuperMount, bool AllowEject);

#endif // MYTHCDROM_DARWIN_H_
4 changes: 2 additions & 2 deletions mythtv/libs/libmythbase/mythcdrom-freebsd.cpp
Expand Up @@ -12,7 +12,7 @@
class MythCDROMFreeBSD: public MythCDROM
{
public:
MythCDROMFreeBSD(QObject* par, const char* DevicePath, bool SuperMount,
MythCDROMFreeBSD(QObject* par, const QString DevicePath, bool SuperMount,
bool AllowEject):
MythCDROM(par, DevicePath, SuperMount, AllowEject) {
}
Expand All @@ -23,7 +23,7 @@ class MythCDROMFreeBSD: public MythCDROM
MythMediaError unlock(void) override; // MythMediaDevice
};

MythCDROM *GetMythCDROMFreeBSD(QObject* par, const char* devicePath,
MythCDROM *GetMythCDROMFreeBSD(QObject* par, const QString devicePath,
bool SuperMount, bool AllowEject)
{
return new MythCDROMFreeBSD(par, devicePath, SuperMount, AllowEject);
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythbase/mythcdrom-freebsd.h
@@ -1,7 +1,7 @@
#ifndef MYTHCDROM_FREEBSD_H_
#define MYTHCDROM_FREEBSD_H_

class MythCDROM *GetMythCDROMFreeBSD(class QObject* par, const char* devicePath,
class MythCDROM *GetMythCDROMFreeBSD(class QObject* par, const QString devicePath,
bool SuperMount, bool AllowEject);

#endif // MYTHCDROM_FREEBSD_H_
79 changes: 40 additions & 39 deletions mythtv/libs/libmythbase/mythcdrom-linux.cpp
Expand Up @@ -35,6 +35,10 @@ using CDROMgenericCmd = struct cdrom_generic_command;

// Some structures stolen from the __KERNEL__ section of linux/cdrom.h.

// Prevent clang-tidy modernize-avoid-c-arrays warnings in these
// kernel structures
extern "C" {

// This contains the result of a GPCMD_GET_EVENT_STATUS_NOTIFICATION.
// It is the joining of a struct event_header and a struct media_event_desc
struct CDROMeventStatus
Expand Down Expand Up @@ -108,6 +112,9 @@ struct CDROMdiscInfo {
uint8_t m_nOpc;
};

// end of kernel structures.
};

enum CDROMdiscStatus
{
MEDIA_IS_EMPTY = 0x0,
Expand All @@ -126,7 +133,7 @@ enum CDROMdiscStatus
class MythCDROMLinux: public MythCDROM
{
public:
MythCDROMLinux(QObject* par, const char* DevicePath, bool SuperMount,
MythCDROMLinux(QObject* par, const QString& DevicePath, bool SuperMount,
bool AllowEject):
MythCDROM(par, DevicePath, SuperMount, AllowEject) {
}
Expand All @@ -151,7 +158,7 @@ class MythCDROMLinux: public MythCDROM
int SCSIstatus(void);
};

MythCDROM *GetMythCDROMLinux(QObject* par, const char* devicePath,
MythCDROM *GetMythCDROMLinux(QObject* par, const QString& devicePath,
bool SuperMount, bool AllowEject)
{
return new MythCDROMLinux(par, devicePath, SuperMount, AllowEject);
Expand Down Expand Up @@ -187,17 +194,14 @@ int MythCDROMLinux::driveStatus()

bool MythCDROMLinux::hasWritableMedia()
{
unsigned char buffer[32];
CDROMgenericCmd cgc;

memset(buffer, 0, sizeof(buffer));
memset(&cgc, 0, sizeof(cgc));
std::array<uint8_t,32> buffer {};
CDROMgenericCmd cgc {};

cgc.cmd[0] = GPCMD_READ_DISC_INFO;
cgc.cmd[8] = sizeof(buffer);
cgc.cmd[8] = buffer.size();
cgc.quiet = 1;
cgc.buffer = buffer;
cgc.buflen = sizeof(buffer);
cgc.buffer = buffer.data();
cgc.buflen = buffer.size();
cgc.data_direction = CGC_DATA_READ;

if (ioctl(m_deviceHandle, CDROM_SEND_PACKET, &cgc) < 0)
Expand All @@ -207,7 +211,7 @@ bool MythCDROMLinux::hasWritableMedia()
return false;
}

auto *di = (CDROMdiscInfo *) buffer;
auto *di = (CDROMdiscInfo *) buffer.data();
switch (di->m_discStatus)
{
case MEDIA_IS_EMPTY:
Expand Down Expand Up @@ -237,22 +241,19 @@ bool MythCDROMLinux::hasWritableMedia()

int MythCDROMLinux::SCSIstatus()
{
unsigned char buffer[8];
CDROMgenericCmd cgc;

memset(buffer, 0, sizeof(buffer));
memset(&cgc, 0, sizeof(cgc));
std::array<uint8_t,8> buffer {};
CDROMgenericCmd cgc {};

cgc.cmd[0] = GPCMD_GET_EVENT_STATUS_NOTIFICATION;
cgc.cmd[1] = 1; // Tell us immediately
cgc.cmd[4] = 1 << 4; // notification class of media
cgc.cmd[8] = sizeof(buffer);
cgc.cmd[8] = buffer.size();
cgc.quiet = 1;
cgc.buffer = buffer;
cgc.buflen = sizeof(buffer);
cgc.buffer = buffer.data();
cgc.buflen = buffer.size();
cgc.data_direction = CGC_DATA_READ;

auto *es = (CDROMeventStatus *) buffer;
auto *es = (CDROMeventStatus *) buffer.data();

if ((ioctl(m_deviceHandle, CDROM_SEND_PACKET, &cgc) < 0)
|| es->m_nea // drive does not support request
Expand Down Expand Up @@ -337,10 +338,10 @@ MythMediaError MythCDROMLinux::ejectSCSI()
{
int k = 0;
sg_io_hdr_t io_hdr;
unsigned char allowRmBlk[6] = {ALLOW_MEDIUM_REMOVAL, 0, 0, 0, 0, 0};
unsigned char startStop1Blk[6] = {START_STOP, 0, 0, 0, 1, 0}; // start
unsigned char startStop2Blk[6] = {START_STOP, 0, 0, 0, 2, 0}; // load eject
unsigned char sense_buffer[16];
std::array<uint8_t,6> allowRmBlk {ALLOW_MEDIUM_REMOVAL, 0, 0, 0, 0, 0};
std::array<uint8_t,6> startStop1Blk {START_STOP, 0, 0, 0, 1, 0}; // start
std::array<uint8_t,6> startStop2Blk {START_STOP, 0, 0, 0, 2, 0}; // load eject
std::array<uint8_t,16> sense_buffer {};
const unsigned DID_OK = 0;
const unsigned DRIVER_OK = 0;

Expand All @@ -358,12 +359,12 @@ MythMediaError MythCDROMLinux::ejectSCSI()
memset(&io_hdr, 0, sizeof(sg_io_hdr_t));
io_hdr.interface_id = 'S';
io_hdr.cmd_len = 6;
io_hdr.mx_sb_len = sizeof(sense_buffer);
io_hdr.mx_sb_len = sense_buffer.size();
io_hdr.dxfer_direction = SG_DXFER_NONE;
io_hdr.sbp = sense_buffer;
io_hdr.sbp = sense_buffer.data();
io_hdr.timeout = 10000; // millisecs

io_hdr.cmdp = allowRmBlk;
io_hdr.cmdp = allowRmBlk.data();
if (ioctl(fd, SG_IO, &io_hdr) < 0)
{
LOG(VB_MEDIA, LOG_DEBUG, "SG_IO allowRmBlk ioctl failed" + ENO);
Expand All @@ -375,7 +376,7 @@ MythMediaError MythCDROMLinux::ejectSCSI()
return MEDIAERR_FAILED;
}

io_hdr.cmdp = startStop1Blk;
io_hdr.cmdp = startStop1Blk.data();
if (ioctl(fd, SG_IO, &io_hdr) < 0)
{
LOG(VB_MEDIA, LOG_DEBUG, "SG_IO START_STOP(start) ioctl failed" + ENO);
Expand All @@ -387,7 +388,7 @@ MythMediaError MythCDROMLinux::ejectSCSI()
return MEDIAERR_FAILED;
}

io_hdr.cmdp = startStop2Blk;
io_hdr.cmdp = startStop2Blk.data();
if (ioctl(fd, SG_IO, &io_hdr) < 0)
{
LOG(VB_MEDIA, LOG_DEBUG, "SG_IO START_STOP(eject) ioctl failed" + ENO);
Expand Down Expand Up @@ -756,9 +757,9 @@ bool MythCDROMLinux::isSameDevice(const QString &path)
*/
void MythCDROMLinux::setDeviceSpeed(const char *device, int speed)
{
unsigned char buffer[28] {};
unsigned char cmd[16] {};
unsigned char sense[16] {};
std::array<uint8_t,28> buffer {};
std::array<uint8_t,16> cmd {};
std::array<uint8_t,16> sense {};
struct sg_io_hdr sghdr {};
struct stat st {};
int rate = 0;
Expand Down Expand Up @@ -821,15 +822,15 @@ void MythCDROMLinux::setDeviceSpeed(const char *device, int speed)
sghdr.interface_id = 'S';
sghdr.timeout = 5000;
sghdr.dxfer_direction = SG_DXFER_TO_DEV;
sghdr.mx_sb_len = sizeof(sense);
sghdr.dxfer_len = sizeof(buffer);
sghdr.cmd_len = sizeof(cmd);
sghdr.sbp = sense;
sghdr.dxferp = buffer;
sghdr.cmdp = cmd;
sghdr.mx_sb_len = sense.size();
sghdr.dxfer_len = buffer.size();
sghdr.cmd_len = cmd.size();
sghdr.sbp = sense.data();
sghdr.dxferp = buffer.data();
sghdr.cmdp = cmd.data();

cmd[0] = GPCMD_SET_STREAMING;
cmd[10] = sizeof(buffer);
cmd[10] = buffer.size();

buffer[8] = 0xff;
buffer[9] = 0xff;
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythbase/mythcdrom-linux.h
@@ -1,7 +1,7 @@
#ifndef MYTHCDROM_LINUX_H
#define MYTHCDROM_LINUX_H

class MythCDROM *GetMythCDROMLinux(class QObject* par, const char* devicePath,
class MythCDROM *GetMythCDROMLinux(class QObject* par, const QString& devicePath,
bool SuperMount, bool AllowEject);

#endif // MYTHCDROM_LINUX_H
4 changes: 2 additions & 2 deletions mythtv/libs/libmythbase/mythcdrom.cpp
Expand Up @@ -32,7 +32,7 @@
#define PATHTO_AUDIO_DETECT "/.TOC.plist"


MythCDROM* MythCDROM::get(QObject* par, const char* devicePath,
MythCDROM* MythCDROM::get(QObject* par, const QString& devicePath,
bool SuperMount, bool AllowEject)
{
#if defined(linux) && !defined(Q_OS_ANDROID)
Expand All @@ -46,7 +46,7 @@ MythCDROM* MythCDROM::get(QObject* par, const char* devicePath,
#endif
}

MythCDROM::MythCDROM(QObject* par, const char* DevicePath, bool SuperMount,
MythCDROM::MythCDROM(QObject* par, const QString& DevicePath, bool SuperMount,
bool AllowEject)
: MythMediaDevice(par, DevicePath, SuperMount, AllowEject)
{
Expand Down
4 changes: 2 additions & 2 deletions mythtv/libs/libmythbase/mythcdrom.h
Expand Up @@ -7,7 +7,7 @@ class MBASE_PUBLIC MythCDROM : public MythMediaDevice
{
Q_OBJECT
protected:
MythCDROM(QObject* par, const char* DevicePath, bool SuperMount,
MythCDROM(QObject* par, const QString& DevicePath, bool SuperMount,
bool AllowEject);
public:
~MythCDROM() override = default;
Expand All @@ -20,7 +20,7 @@ class MBASE_PUBLIC MythCDROM : public MythMediaDevice
}
void setDeviceSpeed(const char *devicePath, int speed) override; // MythMediaDevice

static MythCDROM* get(QObject* par, const char* devicePath,
static MythCDROM* get(QObject* par, const QString& devicePath,
bool SuperMount, bool AllowEject);

enum ImageType
Expand Down
11 changes: 3 additions & 8 deletions mythtv/libs/libmythbase/mythcommandlineparser.cpp
Expand Up @@ -1876,13 +1876,9 @@ QMap<QString,QString> MythCommandLineParser::GetSettingsOverride(void)
QFile f(filename);
if (f.open(QIODevice::ReadOnly))
{
char buf[1024];
int64_t len = f.readLine(buf, sizeof(buf) - 1);
while (len != -1)
{
if (len >= 1 && buf[len-1]=='\n')
buf[len-1] = 0;
QString line(buf);
QTextStream in(&f);
while (!in.atEnd()) {
QString line = in.readLine().trimmed();
#if QT_VERSION < QT_VERSION_CHECK(5,14,0)
QStringList tokens = line.split("=",
QString::SkipEmptyParts);
Expand All @@ -1899,7 +1895,6 @@ QMap<QString,QString> MythCommandLineParser::GetSettingsOverride(void)
if (!tokens[0].isEmpty())
smap[tokens[0]] = tokens[1];
}
len = f.readLine(buf, sizeof(buf) - 1);
}
}
else
Expand Down

0 comments on commit c317574

Please sign in to comment.