diff --git a/qmac/mac.cpp b/qmac/mac.cpp --- a/qmac/mac.cpp +++ b/qmac/mac.cpp @@ -1,187 +1,187 @@ #include "qmac.h" #include //заголовочный файл подсистемы MAC библиотеки PARSEC (мандатное разграничения доступа) #include //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- class FileMacData : public QSharedData { friend class ProcessMacData; public: FileMacData(const QString& a_fileName); ~FileMacData(); - int level() const { return _level; } + QString level() const { return _level; } QString levelText() const { return _levelText; } QString categoryText() const { return _categoryText; } QString fileName() const { return _fileName; } private: mac_t _mac; - int _level; + QString _level; QString _levelText; QString _categoryText; QString _fileName; }; FileMacData::FileMacData(const QString& a_fileName) : _fileName(a_fileName) { //получение метки файла по его имени _mac = mac_get_file(a_fileName.toLocal8Bit().constData()); //числовое представление метки файла - _level = mac_get_lev(_mac); + _level = QString::number(mac_get_lev(_mac)); //текстовое представление метки файла ssize_t size; wchar_t* wtext = mac_to_wtext(_mac, &size, MAC_FMT_TXT | MAC_FMT_LEV); _levelText = QString::fromWCharArray(wtext, size); //освободить память, выделенную функцией mac_to_wtext free(wtext); //текстовое представление списка категорий wtext = mac_to_wtext(_mac, &size, MAC_FMT_TXT | MAC_FMT_CAT); _categoryText = QString::fromWCharArray(wtext, size); //освободить память, выделенную функцией mac_to_wtext free(wtext); } FileMacData::~FileMacData() { mac_free(_mac); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- FileMac::FileMac(const QString& a_fileName) : d(new FileMacData(a_fileName)) { } FileMac::~FileMac() = default; //--------------------------------------------------------------------------- -int FileMac::level() const +QString FileMac::level() const { return d->level(); } QString FileMac::levelText() const { return d->levelText(); } QString FileMac::categoryText() const { return d->categoryText(); } QString FileMac::fileName() const { return d->fileName(); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- class ProcessMacData : public QSharedData { public: ProcessMacData(); ~ProcessMacData(); - int level() const { return _level; } + QString level() const { return _level; } QString levelText() const { return _levelText; } QString categoryText() const { return _categoryText; } bool canRead(const FileMacData& a_fileMacData); bool canWrite(const FileMacData& a_fileMacData); private: mac_t _mac; - int _level; + QString _level; QString _levelText; QString _categoryText; }; ProcessMacData::ProcessMacData() { //получение метки текущего процесса, то же, что mac_get_pid(0) или mac_get_pid(pid) _mac = mac_get_proc(); //числовое представление метки процесса - _level = mac_get_lev(_mac); + _level = QString::number(mac_get_lev(_mac)); //текстовое представление метки процесса ssize_t size; wchar_t* wtext = mac_to_wtext(_mac, &size, MAC_FMT_TXT | MAC_FMT_LEV); _levelText = QString::fromWCharArray(wtext, size); //освободить память, выделенную функцией mac_to_wtext free(wtext); //текстовое представление списка категорий wtext = mac_to_wtext(_mac, &size, MAC_FMT_TXT | MAC_FMT_CAT); _categoryText = QString::fromWCharArray(wtext, size); //освободить память, выделенную функцией mac_to_wtext free(wtext); } ProcessMacData::~ProcessMacData() { mac_free(_mac); } //--------------------------------------------------------------------------- bool ProcessMacData::canRead(const FileMacData& a_fileMacData) { return 0 == mac_file_permit(_mac, a_fileMacData._mac, R_OK); } //--------------------------------------------------------------------------- bool ProcessMacData::canWrite(const FileMacData& a_fileMacData) { return 0 == mac_file_permit(_mac, a_fileMacData._mac, W_OK); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- ProcessMac::ProcessMac() : d(new ProcessMacData) { } ProcessMac::~ProcessMac() = default; //--------------------------------------------------------------------------- -int ProcessMac::level() const +QString ProcessMac::level() const { return d->level(); } QString ProcessMac::levelText() const { return d->levelText(); } QString ProcessMac::categoryText() const { return d->categoryText(); } bool ProcessMac::canRead(const FileMac& a_fileMac) { return d->canRead(*(a_fileMac.d)); } bool ProcessMac::canWrite(const FileMac& a_fileMac) { return d->canWrite(*(a_fileMac.d)); } diff --git a/qmac/nomac.cpp b/qmac/nomac.cpp --- a/qmac/nomac.cpp +++ b/qmac/nomac.cpp @@ -1,121 +1,119 @@ #include "qmac.h" #include //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- class ProcessMacData : public QSharedData { public: ProcessMacData(); - int level() const { return _level; } + QString level() const { return _level; } QString levelText() const { return _levelText; } QString categoryText() const { return _categoryText; } private: - int _level; + QString _level; QString _levelText; QString _categoryText; }; ProcessMacData::ProcessMacData() - : _level(0) - , _levelText(QStringLiteral("Нет")) + : _levelText(QStringLiteral("Нет")) , _categoryText(QStringLiteral("Нет")) { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- ProcessMac::ProcessMac() : d(new ProcessMacData) { } ProcessMac::~ProcessMac() = default; //--------------------------------------------------------------------------- -int ProcessMac::level() const +QString ProcessMac::level() const { return d->level(); } QString ProcessMac::levelText() const { return d->levelText(); } QString ProcessMac::categoryText() const { return d->categoryText(); } bool ProcessMac::canRead(const FileMac& a_fileMac) { Q_UNUSED(a_fileMac) return true; } bool ProcessMac::canWrite(const FileMac& a_fileMac) { Q_UNUSED(a_fileMac) return true; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- class FileMacData : public QSharedData { public: FileMacData(const QString& a_fileName); - int level() const { return _level; } + QString level() const { return _level; } QString levelText() const { return _levelText; } QString categoryText() const { return _categoryText; } QString fileName() const { return _fileName; } private: - int _level; + QString _level; QString _levelText; QString _categoryText; QString _fileName; }; FileMacData::FileMacData(const QString& a_fileName) - : _level(0) - , _levelText(QStringLiteral("Нет")) + : _levelText(QStringLiteral("Нет")) , _categoryText(QStringLiteral("Нет")) , _fileName(a_fileName) { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- FileMac::FileMac(const QString& a_fileName) : d(new FileMacData(a_fileName)) { } FileMac::~FileMac() = default; //--------------------------------------------------------------------------- -int FileMac::level() const +QString FileMac::level() const { return d->level(); } QString FileMac::levelText() const { return d->levelText(); } QString FileMac::categoryText() const { return d->categoryText(); } QString FileMac::fileName() const { return d->fileName(); } diff --git a/qmac/qmac.h b/qmac/qmac.h --- a/qmac/qmac.h +++ b/qmac/qmac.h @@ -1,47 +1,47 @@ #ifndef QMAC_H #define QMAC_H #include #include #if defined(QMAC_LIBRARY) # define QMAC_EXPORT Q_DECL_EXPORT #else # define QMAC_EXPORT Q_DECL_IMPORT #endif class FileMacData; class QMAC_EXPORT FileMac { friend class ProcessMac; public: FileMac(const QString& a_fileName); ~FileMac(); - int level() const; + QString level() const; QString levelText() const; QString categoryText() const; QString fileName() const; private: QSharedDataPointer d; }; class ProcessMacData; class QMAC_EXPORT ProcessMac { public: ProcessMac(); ~ProcessMac(); - int level() const; + QString level() const; QString levelText() const; QString categoryText() const; bool canRead(const FileMac& a_fileMac); bool canWrite(const FileMac& a_fileMac); private: QSharedDataPointer d; }; #endif // QMAC_H