From dfdbc371b74c94550093185d4d0c78a5efb86806 Mon Sep 17 00:00:00 2001 From: matt335672 <30179339+matt335672@users.noreply.github.com> Date: Wed, 14 Jul 2021 16:12:44 +0100 Subject: [PATCH] Remove tcutils --- Makefile.am | 1 - README.md | 1 - tcutils/README.txt | 29 --- tcutils/main.cpp | 11 - tcutils/mainwindow.cpp | 234 ------------------ tcutils/mainwindow.h | 58 ----- tcutils/mainwindow.ui | 100 -------- tcutils/resources.qrc | 5 - tcutils/resources/images/tools.gif | Bin 17765 -> 0 bytes tcutils/tcutils.pro.user | 365 ----------------------------- tcutils/utils.cpp | 217 ----------------- tcutils/utils.h | 152 ------------ 12 files changed, 1173 deletions(-) delete mode 100644 tcutils/README.txt delete mode 100644 tcutils/main.cpp delete mode 100644 tcutils/mainwindow.cpp delete mode 100644 tcutils/mainwindow.h delete mode 100644 tcutils/mainwindow.ui delete mode 100644 tcutils/resources.qrc delete mode 100644 tcutils/resources/images/tools.gif delete mode 100644 tcutils/tcutils.pro.user delete mode 100644 tcutils/utils.cpp delete mode 100644 tcutils/utils.h diff --git a/Makefile.am b/Makefile.am index 0f7b5d3ee1..807ae25ea2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,7 +20,6 @@ EXTRA_DIST = \ install.txt \ m4 \ postinstall-pak \ - tcutils \ vrplayer if XRDP_NEUTRINORDP diff --git a/README.md b/README.md index 7380c40c2c..66f957fade 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,6 @@ xrdp |├── chansrv ···· channel server for xrdp |├── libscp ····· authorization library |└── tools ······ session management tools for sys admins -├── tcutils ····· QT based utility program for thin clients ├── tests ······· tests for the code ├┬─ tools ······· tools |└┬─ devel ······ development tools diff --git a/tcutils/README.txt b/tcutils/README.txt deleted file mode 100644 index 342dc8911f..0000000000 --- a/tcutils/README.txt +++ /dev/null @@ -1,29 +0,0 @@ -A QT based utility program for thin clients using xrdp and NeutrinoRDP - -This program sends commands to NeutrinoRDP to do something -useful on the client end (such as unmounting a USB drive, -or powering down the client) - -Required packages to build tcutils: ------------------------------------ -libqt4-gui -qt4-dev-tools - -to build tcutils: ------------------ -qmake -make - -To run tcutils: ---------------- -include xrdpapi/.libs in your LD_LIBRARY_PATH - -Example: --------- -export LD_LIBRARY_PATH=../xrdpapi/.libs -run tcutils inside the xfreerdp session - -this is how we run xfreerdp: ----------------------------- -./xfreerdp --sec rdp --plugin tcutils 192.168.2.149 - diff --git a/tcutils/main.cpp b/tcutils/main.cpp deleted file mode 100644 index d951345f49..0000000000 --- a/tcutils/main.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "mainwindow.h" - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - MainWindow w; - w.show(); - - return a.exec(); -} diff --git a/tcutils/mainwindow.cpp b/tcutils/mainwindow.cpp deleted file mode 100644 index 8cc0a98834..0000000000 --- a/tcutils/mainwindow.cpp +++ /dev/null @@ -1,234 +0,0 @@ -#include "mainwindow.h" -#include "ui_mainwindow.h" - -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainWindow) -{ - ui->setupUi(this); - - wtsChannel = NULL; - okToQuit = false; - savedGeometry = this->geometry(); - - /* setup tab to unmount drives */ - ui->tabWidget->setTabText(0, "Unmount drives"); - connect(ui->btnRefresh, SIGNAL(clicked()), this, SLOT(onBtnRefreshClicked())); - connect(ui->btnUnmount, SIGNAL(clicked()), this, SLOT(onBtnUnmountClicked())); - - ui->tabWidget->setTabText(1, ""); - if (initWtsChannel()) - { - okToQuit = true; - QTimer::singleShot(10, qApp, SLOT(quit())); - return; - } - setupSystemTray(); - - /* set up status bar to display messages */ - statusBar = new QStatusBar; - this->setStatusBar(statusBar); - setStatusMsg("Connected to client"); -} - -MainWindow::~MainWindow() -{ - delete ui; -} - -void MainWindow::setupSystemTray() -{ - trayMenu = new QMenu(this); - trayMenu->addAction("Launch Thinclient Utils", this, SLOT(onActionLaunch())); - trayMenu->addSeparator(); - trayMenu->addAction("Quit", this, SLOT(onActionQuit())); - - trayIcon = new QSystemTrayIcon; - trayIcon->setContextMenu(trayMenu); - trayIcon->setIcon(QIcon(":/images/resources/images/tools.gif")); - - trayIcon->show(); - - trayIcon->showMessage("TCutils", "Click on the tcutils icon to launch tcutils", - QSystemTrayIcon::Information, 3000); - - connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), - this, SLOT(onSystemTrayClicked(QSystemTrayIcon::ActivationReason))); -} - -/** - * - *****************************************************************************/ - -int MainWindow::initWtsChannel() -{ - /* init the channel just once */ - if (wtsChannel) - return 0; - - /* open a WTS channel and connect to remote client */ - wtsChannel = WTSVirtualChannelOpenEx(WTS_CURRENT_SESSION, "tcutils", 0); - if (wtsChannel == NULL) - { - QMessageBox::information(this, "Open virtual channel", "Error " - "connecting to remote client. This program " - "can only be used when connected via " - "NeutrinoRDP.\n\nClick ok to close this " - "application"); - return -1; - } - - return 0; -} - -/** - * - *****************************************************************************/ - -int MainWindow::deinitWtsChannel() -{ - if (!wtsChannel) - return -1; - - WTSVirtualChannelClose(wtsChannel); - return 0; -} - -/** - * Display a msg on the status bar - * - * @param msg message to display in status bar - *****************************************************************************/ - -void MainWindow::setStatusMsg(QString msg) -{ - statusBar->showMessage(msg, 30000); -} - -/** - * - *****************************************************************************/ - -void MainWindow::closeEvent(QCloseEvent *event) -{ - if (!okToQuit) - { - savedGeometry = this->geometry(); - this->hide(); - event->ignore(); - return; - } - - if (wtsChannel) - deinitWtsChannel(); - - event->accept(); -} - -/****************************************************************************** -** ** -** slots go here ** -** ** -******************************************************************************/ -#if 1 -void MainWindow::onBtnRefreshClicked() -{ - int i; - - /* clear drive list */ - if (itemList.count()) - { - for (i = 0; i < itemList.count(); i++) - ui->listWidget->removeItemWidget(itemList.at(i)); - - itemList.clear(); - } - ui->listWidget->clear(); - - if (Utils::getMountList(wtsChannel, &itemList)) - { - QMessageBox::information(this, "Get device list", "\nError getting " - "device list from client"); - return; - } - - if (itemList.count() == 0) - { - QMessageBox::information(this, "Get device list", - "\nNo devices found!"); - return; - } - - /* add mount point to list widget */ - for (i = 0; i < itemList.count(); i++) - ui->listWidget->insertItem(i, itemList.at(i)); -} -#else -void MainWindow::onBtnRefreshClicked() -{ - QListWidgetItem *item; - int i; - int j; - - /* clear drive list */ - if (itemList.count()) - { - for (i = 0; i < itemList.count(); i++) - ui->listWidget->removeItemWidget(itemList.at(i)); - - itemList.clear(); - } - ui->listWidget->clear(); - - QDir dir(QDir::homePath() + "/xrdp_client"); - QStringList sl = dir.entryList(); - - for (i = 0, j = 0; i < sl.count(); i++) - { - /* skip files starting with . */ - if (sl.at(i).startsWith(".")) - continue; - - /* add mount point to list widget */ - item = new QListWidgetItem; - item->setText(sl.at(i)); - ui->listWidget->insertItem(j++, item); - itemList.append(item); - } -} -#endif - -void MainWindow::onBtnUnmountClicked() -{ - QListWidgetItem *item = ui->listWidget->currentItem(); - - if (!item) - { - QMessageBox::information(this, "Unmount device", "\nNo device selected. " - "You must select a device to unmount"); - return; - } - - if (Utils::unmountDevice(wtsChannel, item->text(), statusBar) == 0) - { - delete ui->listWidget->takeItem(itemList.indexOf(item)); - itemList.removeOne(item); - } -} - -void MainWindow::onActionQuit() -{ - okToQuit = true; - this->close(); -} - -void MainWindow::onActionLaunch() -{ - this->show(); - this->setGeometry(savedGeometry); -} - -void MainWindow::onSystemTrayClicked(QSystemTrayIcon::ActivationReason) -{ - trayMenu->popup(QCursor::pos()); -} diff --git a/tcutils/mainwindow.h b/tcutils/mainwindow.h deleted file mode 100644 index 4b59df15d9..0000000000 --- a/tcutils/mainwindow.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include - -#include "utils.h" - -namespace Ui -{ - class MainWindow; -} - -class MainWindow : public QMainWindow -{ - Q_OBJECT - - public: - explicit MainWindow(QWidget *parent = 0); - ~MainWindow(); - - private: - Ui::MainWindow *ui; - void *wtsChannel; - QSystemTrayIcon *trayIcon; - QMenu *trayMenu; - bool okToQuit; - QRect savedGeometry; - QStatusBar *statusBar; - - QList itemList; - - void setupSystemTray(); - int initWtsChannel(); - int deinitWtsChannel(); - void setStatusMsg(QString msg); - void closeEvent(QCloseEvent *event); - - private slots: - void onBtnRefreshClicked(); - void onBtnUnmountClicked(); - void onActionQuit(); - void onActionLaunch(); - void onSystemTrayClicked(QSystemTrayIcon::ActivationReason); -}; - -#endif // MAINWINDOW_H diff --git a/tcutils/mainwindow.ui b/tcutils/mainwindow.ui deleted file mode 100644 index 802d01a361..0000000000 --- a/tcutils/mainwindow.ui +++ /dev/null @@ -1,100 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 541 - 355 - - - - TC Utils - - - - - - 0 - 0 - 511 - 291 - - - - 0 - - - - Tab 1 - - - - - 10 - 10 - 321 - 221 - - - - - - - 350 - 60 - 141 - 27 - - - - Unmount device - - - - - - 350 - 10 - 141 - 27 - - - - Get device list - - - - - - Tab 2 - - - - - - - - 0 - 0 - 541 - 25 - - - - - - TopToolBarArea - - - false - - - - - - - - diff --git a/tcutils/resources.qrc b/tcutils/resources.qrc deleted file mode 100644 index 76a1f852d8..0000000000 --- a/tcutils/resources.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - resources/images/tools.gif - - diff --git a/tcutils/resources/images/tools.gif b/tcutils/resources/images/tools.gif deleted file mode 100644 index c6596cc4417f7a0ad1d3a5e877fa5da6399387a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17765 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 P_o;sU6?LHi0s;U#80yS_ diff --git a/tcutils/tcutils.pro.user b/tcutils/tcutils.pro.user deleted file mode 100644 index 50311334f9..0000000000 --- a/tcutils/tcutils.pro.user +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - System - true - 4 - true - 1 - true - 2 - true - 0 - 8 - true - 1 - true - true - true - true - - - - ProjectExplorer.Project.PluginSettings - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - Qt4ProjectManager.Target.DesktopTarget - 0 - 0 - 0 - - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./usr/bin/gdb - - - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - Make - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - Make - - Qt4ProjectManager.MakeStep - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Qt 4.8.1 in PATH (System) Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/lk/projects/jtech/nlabs_xrdp_tcutils/tcutils-build-desktop-Qt_4_8_1_in_PATH__System__Release - 1 - true - - - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./usr/bin/gdb - - - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - Make - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - Make - - Qt4ProjectManager.MakeStep - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Qt 4.8.1 in PATH (System) Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/lk/projects/jtech/nlabs_xrdp_tcutils/tcutils-build-desktop-Qt_4_8_1_in_PATH__System__Debug - 1 - true - - - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./usr/bin/gdb - - - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - Make - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - Make - - Qt4ProjectManager.MakeStep - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Qt 4.8.1 (System) Release - - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/lk/projects/jtech/nlabs_xrdp_tcutils/tcutils-build-desktop-Qt_4_8_1__System__Release - 2 - true - - - ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./usr/bin/gdb - - - qmake - - QtProjectManager.QMakeBuildStep - false - true - - false - - - Make - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - Make - - Qt4ProjectManager.MakeStep - true - clean - - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Qt 4.8.1 (System) Debug - - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/lk/projects/jtech/nlabs_xrdp_tcutils/tcutils-build-desktop-Qt_4_8_1__System__Debug - 2 - true - - 4 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - No deployment - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - true - true - - - false - false - false - false - false - false - false - false - true - true - 0.01 - 0.01 - 10 - 10 - true - true - 25 - 25 - - - true - true - valgrind - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - tcutils - - Qt4ProjectManager.Qt4RunConfiguration - 2 - - tcutils.pro - false - false - - - 3768 - true - false - false - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.EnvironmentId - {9a0d9632-2baf-44e0-864a-a12692180779} - - - ProjectExplorer.Project.Updater.FileVersion - 10 - - diff --git a/tcutils/utils.cpp b/tcutils/utils.cpp deleted file mode 100644 index 34ca5614a9..0000000000 --- a/tcutils/utils.cpp +++ /dev/null @@ -1,217 +0,0 @@ -#include "utils.h" - -Utils::Utils() -{ -} - -int Utils::getMountList(void *wtsChannel, QList *itemList) -{ - QListWidgetItem *item; - - STREAM s; - quint32 bytesToSend; - quint32 bytesWritten; - quint32 bytesRead; - quint32 cmdLen; - quint32 cmd; - int rv; - int i; - int nentries; - char buf[2048]; - - if (!wtsChannel) - return -1; - - qstream_new(s, 1024 * 8); - - /* - * command format: - * 4 bytes cmd_len length of this command - * 1 byte cmd TCU_CMD_GET_MOUNT_LIST - */ - - /* setup command */ - qstream_wr_u32(&s, 1); - qstream_wr_u8(&s, TCU_CMD_GET_MOUNT_LIST); - bytesToSend = 5; - - /* send command */ - rv = WTSVirtualChannelWrite(wtsChannel, s.data, bytesToSend, &bytesWritten); - if (rv == 0) - { - QMessageBox::information(NULL, "Get device list", "\nError sending " - "command to client"); - return -1; - } - - qstream_set_pos(&s, 0); /* reuse stream */ - - /* get response */ - - /* - * response format - * 4 bytes cmd_len length of this command - * 4 bytes cmd TCU_CMD_GET_MOUNT_LIST - * 1 byte nentries number of entries in this pkt - * n bytes entry_list nentries null terminated strings - */ - - rv = WTSVirtualChannelRead(wtsChannel, 1000 * 5, s.data, 1024 * 8, &bytesRead); - if (rv == 0 || bytesRead == 0) - goto error; - - /* did we get the entire cmd? */ - qstream_rd_u32(&s, cmdLen); - if (cmdLen != bytesRead - 4) - goto error; - - /* did we get the right response? */ - qstream_rd_u32(&s, cmd); - if (cmd != TCU_CMD_GET_MOUNT_LIST) - goto error; - - qstream_rd_u8(&s, nentries); - if (nentries == 0) - goto done; - - for (i = 0; i < nentries; i++) - { - strcpy(buf, s.pos); - qstream_inc_pos(&s, strlen(buf) + 1); - item = new QListWidgetItem; - item->setText(QString(buf)); - itemList->append(item); - } - -done: - qstream_free(&s); - return 0; - -error: - qstream_free(&s); - return -1; -} - -int Utils::unmountDevice(void *wtsChannel, QString device, QStatusBar *statusBar) -{ - STREAM s; - quint32 bytesRead; - quint32 cmdLen; - quint32 cmd; - quint32 bytesWritten; - int bytesToSend; - int rv; - int seconds = 0; - char status; - char* buf; - - if (!wtsChannel) - return -1; - - qstream_new(s, 1024); - buf = device.toAscii().data(); - - /* - * command format: - * 4 bytes cmd_len length of this command - * 4 bytes cmd TCU_CMD_UNMOUNT_DEVICE - * n bytes device null terminated device name - */ - - /* setup command */ - bytesToSend = 4 + 4 + device.count() + 1; - qstream_wr_u32(&s, bytesToSend - 4); - qstream_wr_u32(&s, TCU_CMD_UNMOUNT_DEVICE); - strcpy(s.pos, buf); - - /* send command */ - rv = WTSVirtualChannelWrite(wtsChannel, s.data, bytesToSend, &bytesWritten); - if (rv == 0) - { - QMessageBox::information(NULL, "Unmount device", "\nError sending " - "command to client"); - return -1; - } - - qstream_set_pos(&s, 0); /* reuse stream */ - - /* get response */ - - /* - * command format - * 4 bytes cmd_len number of bytes in this pkt - * 4 bytes cmd TCU_CMD_UNMOUNT_DEVICE - * 1 byte status operation status code - */ - - while (1) - { - rv = WTSVirtualChannelRead(wtsChannel, 1000 * 1, s.data, 1024, &bytesRead); - if (rv == 0) - goto error; - - if (bytesRead) - break; - - statusBar->showMessage("Waiting for client to unmount device: " + - QString::number(++seconds) + " seconds", 30000); - } - - statusBar->showMessage(""); - - /* did we get the entire pkt? */ - qstream_rd_u32(&s, cmdLen); - if (cmdLen != bytesRead - 4) - goto error; - - /* did we get the right response? */ - qstream_rd_u32(&s, cmd); - if (cmd != TCU_CMD_UNMOUNT_DEVICE) - goto error; - - /* get status */ - qstream_rd_u8(&s, status); - switch(status) - { - case UMOUNT_SUCCESS: - goto done; - break; - - case UMOUNT_BUSY: - QMessageBox::information(NULL, "Unmount error", "\nCannot unmount device " - "because it is in use"); - break; - - case UMOUNT_NOT_MOUNTED: - QMessageBox::information(NULL, "Unmount error", "\nCannot unmount device " - "because it is not mounted"); - break; - - case UMOUNT_OP_NOT_PERMITTED: - QMessageBox::information(NULL, "Unmount error", "\nOperation not " - "permitted. The device may be in use"); - break; - - case UMOUNT_PERMISSION_DENIED: - QMessageBox::information(NULL, "Unmount error", "\nYou don't have " - "permission to unmount this device"); - break; - - case UMOUNT_UNKNOWN: - QMessageBox::information(NULL, "Unmount error", "Cannot unmount " - "device, an unknown error has occurred. The " - "drive may be in use or you do not have " - "permission to unmount it"); - break; - } - - goto error; - -done: - qstream_free(&s); - return 0; - -error: - qstream_free(&s); - return -1; -} diff --git a/tcutils/utils.h b/tcutils/utils.h deleted file mode 100644 index c94af7801b..0000000000 --- a/tcutils/utils.h +++ /dev/null @@ -1,152 +0,0 @@ -#ifndef UTILS_H -#define UTILS_H - -#include -#include -#include -#include -#include - -/* - * stream definition and macros to access them; - * all definitions default to little endian - */ - -typedef struct stream -{ - char *data; /* holds stream data */ - char *pos; /* current read/write position */ - int size; /* number of bytes in data */ - - stream() : data(0), pos(0), size(0) {} -} STREAM; - -#define qstream_new(_s, _size) \ - do \ - { \ - (_s).data = (char *) malloc(_size); \ - (_s).pos = (_s).data; \ - (_s).size = (_size); \ - } \ - while (0) - -#define qstream_new_zero(_s, _size) \ - do \ - { \ - (_s).data = (char *) calloc((_size), 1); \ - (_s).pos = (_s).data; \ - (_s).size = (_size); \ - } \ - while (0) - -#define qstream_free(_s) \ - do \ - { \ - if ((_s)->data) \ - free((_s)->data); \ - } \ - while (0) - -#define qstream_set_pos(_s, _p) \ - do \ - { \ - (_s)->pos = (_s)->data + (_p); \ - } \ - while (0) - -#define qstream_inc_pos(_s, _v) \ - do \ - { \ - (_s)->pos += (_v); \ - } \ - while (0) - -#define qstream_rd_u8(_s, _v) \ - do \ - { \ - (_v) = *((unsigned char *) ((_s)->pos)); \ - (_s)->pos++; \ - } \ - while (0) - -#define qstream_rd_u16(_s, _v) \ - do \ - { \ - (_v) = (unsigned short) \ - ( \ - (*((unsigned char *) ((_s)->pos + 0)) << 0) | \ - (*((unsigned char *) ((_s)->pos + 1)) << 8) \ - ); \ - (_s)->pos += 2; \ - } while (0) - -#define qstream_rd_u32(_s, _v) \ - do \ - { \ - (_v) = (unsigned int) \ - ( \ - (*((unsigned char *) ((_s)->pos + 0)) << 0) | \ - (*((unsigned char *) ((_s)->pos + 1)) << 8) | \ - (*((unsigned char *) ((_s)->pos + 2)) << 16) | \ - (*((unsigned char *) ((_s)->pos + 3)) << 24) \ - ); \ - (_s)->pos += 4; \ - } while (0) - -#define qstream_wr_u8(_s, _v) \ - do \ - { \ - *((_s)->pos) = (unsigned char) (_v); \ - (_s)->pos++; \ - } while (0) - -#define qstream_wr_u16(_s, _v) \ - do \ - { \ - *((_s)->pos) = (unsigned char) ((_v) >> 0); \ - (_s)->pos++; \ - *((_s)->pos) = (unsigned char) ((_v) >> 8); \ - (_s)->pos++; \ - } while (0) - -#define qstream_wr_u32(_s, _v) \ - do \ - { \ - *((_s)->pos) = (unsigned char) ((_v) >> 0); \ - (_s)->pos++; \ - *((_s)->pos) = (unsigned char) ((_v) >> 8); \ - (_s)->pos++; \ - *((_s)->pos) = (unsigned char) ((_v) >> 16); \ - (_s)->pos++; \ - *((_s)->pos) = (unsigned char) ((_v) >> 24); \ - (_s)->pos++; \ - } while (0) - -/* list of commands we support; this list should match the one in */ -/* NeutrinoRDP channels/tcutils/tcutils_main.h */ -enum TCU_COMMANDS -{ - TCU_CMD_GET_MOUNT_LIST = 1, - TCU_CMD_UNMOUNT_DEVICE -}; - -/* umount error codes */ -enum TCU_UMOUNT_ERROR -{ - UMOUNT_SUCCESS = 0, - UMOUNT_BUSY, - UMOUNT_NOT_MOUNTED, - UMOUNT_OP_NOT_PERMITTED, - UMOUNT_PERMISSION_DENIED, - UMOUNT_UNKNOWN -}; - -class Utils -{ - public: - Utils(); - static int getMountList(void *wtsChannel, QList *itemList); - static int unmountDevice(void *wtsChannel, QString device, QStatusBar *statusBar); -}; - -#endif // UTILS_H