commit:     cd754c8fa40d987ebe4c137dc3ddcac300b707a2
Author:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
AuthorDate: Thu May 22 16:10:13 2014 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Thu May 22 16:10:13 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/kde.git;a=commit;h=cd754c8f

[kde-base/krdc] Add patch from upstream to support >=net-misc/freerdp-1.1.0 wrt 
bug #511010.

Package-Manager: portage-2.2.8-r1

---
 kde-base/krdc/files/krdc-4.13.1-freerdp.patch | 184 ++++++++++++++++++++++++++
 kde-base/krdc/krdc-4.13.49.9999.ebuild        |   2 +
 kde-base/krdc/krdc-4.9999.ebuild              |   2 +
 3 files changed, 188 insertions(+)

diff --git a/kde-base/krdc/files/krdc-4.13.1-freerdp.patch 
b/kde-base/krdc/files/krdc-4.13.1-freerdp.patch
new file mode 100644
index 0000000..75b5146
--- /dev/null
+++ b/kde-base/krdc/files/krdc-4.13.1-freerdp.patch
@@ -0,0 +1,184 @@
+Support >=free-rdp-1.1.0.
+
+https://git.reviewboard.kde.org/r/115059/
+
+diff --git a/rdp/rdpview.cpp b/rdp/rdpview.cpp
+index 
0d14e04691549e084b58501cd10ca2382ef25c63..9062ba5fa060284a679f0c9bc211ab7dd6972c0a
 100644
+--- a/rdp/rdpview.cpp
++++ b/rdp/rdpview.cpp
+@@ -158,71 +158,58 @@ bool RdpView::start()
+         width = this->parentWidget()->size().width();
+         height = this->parentWidget()->size().height();
+     }
+-    arguments << "-g" << QString::number(width) + 'x' + 
QString::number(height);
++    arguments << "-decorations";  // put this option first so we can detect 
xfreerdp < 1.1
++    arguments << "/w:" + QString::number(width);
++    arguments << "/h:" + QString::number(height);
+ 
+-    arguments << "-k" << 
keymapToXfreerdp(m_hostPreferences->keyboardLayout());
++    arguments << "/kbd:" + 
keymapToXfreerdp(m_hostPreferences->keyboardLayout());
+ 
+     if (!m_url.userName().isEmpty()) {
+         // if username contains a domain, it needs to be set with another 
parameter
+         if (m_url.userName().contains('\\')) {
+             const QStringList splittedName = m_url.userName().split('\\');
+-            arguments << "-d" << splittedName.at(0);
+-            arguments << "-u" << splittedName.at(1);
++            arguments << "/d:" + splittedName.at(0);
++            arguments << "/u:" + splittedName.at(1);
+         } else {
+-            arguments << "-u" << m_url.userName();
++            arguments << "/u:" + m_url.userName();
+         }
+     } else {
+-        arguments << "-u" << "";
++        arguments << "-u:";
+     }
+ 
+-    if (!m_url.password().isNull())
+-        arguments << "-p" << m_url.password();
+-
+-    arguments << "-D";  // request the window has no decorations
+-    arguments << "-X" << QString::number(m_container->winId());
+-    arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 
1) * 8);
+-
+-    switch (m_hostPreferences->sound()) {
+-    case 1:
+-        arguments << "-o";
+-        break;
+-    case 0:
+-        arguments << "--plugin" << "rdpsnd";
+-        break;
+-    case 2:
+-    default:
+-        break;
+-    }
++    arguments << "/parent-window:" + QString::number(m_container->winId());
++    arguments << "/bpp:" + QString::number((m_hostPreferences->colorDepth() + 
1) * 8);
++    arguments << "/audio-mode:" + m_hostPreferences->sound();
+ 
+     if (!m_hostPreferences->shareMedia().isEmpty()) {
+         QStringList shareMedia;
+-        shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + 
m_hostPreferences->shareMedia() << "--";
++        shareMedia << "/drive:media," + m_hostPreferences->shareMedia();
+         arguments += shareMedia;
+     }
+ 
+     QString performance;
+     switch (m_hostPreferences->performance()) {
+     case 0:
+-        performance = 'm';
++        performance = "modem";
+         break;
+     case 1:
+-        performance = 'b';
++        performance = "broadband";
+         break;
+     case 2:
+-        performance = 'l';
++        performance = "lan";
+         break;
+     default:
+         break;
+     }
+ 
+-    arguments << "-x" << performance;
++    arguments << "/network:" + performance;
+ 
+     if (m_hostPreferences->console()) {
+-        arguments << "-0";
++        arguments << "/admin";
+     }
+ 
+     if (m_hostPreferences->remoteFX()) {
+-        arguments << "--rfx";
++        arguments << "/rfx";
+     }
+ 
+     if (!m_hostPreferences->extraOptions().isEmpty()) {
+@@ -233,16 +220,21 @@ bool RdpView::start()
+     // krdc has no support for certificate management yet; it would not be 
possbile to connect to any host:
+     // "The host key for example.com has changed" ...
+     // "Add correct host key in ~/.freerdp/known_hosts to get rid of this 
message."
+-    arguments << "--ignore-certificate";
++    arguments << "/cert-ignore";
+ 
+     // clipboard sharing is activated in KRDC; user can disable it at runtime
+-    arguments << "--plugin" << "cliprdr";
++    arguments << "/clipboard";
+ 
+-    arguments << "-t" << QString::number(m_port);
+-    arguments << m_host;
++    arguments << "/port:" + QString::number(m_port);
++    arguments << "/v:" + m_host;
+ 
+     kDebug(5012) << "Starting xfreerdp with arguments:" << arguments;
+ 
++    //avoid printing the password in debug
++    if (!m_url.password().isNull()) {
++        arguments << "/p:" + m_url.password();
++    }
++
+     setStatus(Connecting);
+ 
+     connect(m_process, SIGNAL(error(QProcess::ProcessError)), 
SLOT(processError(QProcess::ProcessError)));
+@@ -302,7 +294,7 @@ void RdpView::connectionError()
+ 
+ void RdpView::processError(QProcess::ProcessError error)
+ {
+-    kDebug(5012) << "processError:" << error;
++    kDebug(5012) << error;
+     if (m_quitFlag) // do not try to show error messages while quitting 
(prevent crashes)
+         return;
+ 
+@@ -319,33 +311,13 @@ void RdpView::processError(QProcess::ProcessError error)
+ void RdpView::receivedStandardError()
+ {
+     const QString output(m_process->readAllStandardError());
+-    kDebug(5012) << "receivedStandardError:" << output;
+-    QString line;
+-    int i = 0;
+-    while (!(line = output.section('\n', i, i)).isEmpty()) {
+-        
+-        // the following error is issued by freerdp because of a bug in 
freerdp 1.0.1 and below;
+-        // see: https://github.com/FreeRDP/FreeRDP/pull/576
+-        //"X Error of failed request:  BadWindow (invalid Window parameter)
+-        //   Major opcode of failed request:  7 (X_ReparentWindow)
+-        //   Resource id in failed request:  0x71303348
+-        //   Serial number of failed request:  36
+-        //   Current serial number in output stream:  36"
+-        if (line.contains(QLatin1String("X_ReparentWindow"))) {
+-            KMessageBox::error(0, i18n("The version of \"xfreerdp\" you are 
using is too old.\n"
+-                                       "xfreerdp 1.0.2 or greater is 
required."),
+-                               i18n("RDP Failure"));
+-            connectionError();
+-            return;
+-        }
+-        i++;
+-    }
++    kDebug(5012) << output;
+ }
+ 
+ void RdpView::receivedStandardOutput()
+ {
+     const QString output(m_process->readAllStandardOutput());
+-    kDebug(5012) << "receivedStandardOutput:" << output;
++    kDebug(5012) << output;
+     QString line;
+     int i = 0;
+     while (!(line = output.section('\n', i, i)).isEmpty()) {
+@@ -373,6 +345,14 @@ void RdpView::receivedStandardOutput()
+             return;
+         }
+ 
++        // we no longer support freerdp < 1.1, we only support versions with 
the new interface
++        if (line.contains(QLatin1String("invalid option: -decorations"))) {
++            KMessageBox::error(0, i18n("The version of \"xfreerdp\" you are 
using is too old.\n"
++                                       "xfreerdp 1.1 or greater is 
required."),
++                               i18n("RDP Failure"));
++            connectionError();
++            return;
++        }
+         i++;
+     }
+ }

diff --git a/kde-base/krdc/krdc-4.13.49.9999.ebuild 
b/kde-base/krdc/krdc-4.13.49.9999.ebuild
index 59390f4..01402c9 100644
--- a/kde-base/krdc/krdc-4.13.49.9999.ebuild
+++ b/kde-base/krdc/krdc-4.13.49.9999.ebuild
@@ -24,6 +24,8 @@ RDEPEND="${DEPEND}
        rdesktop? ( >=net-misc/freerdp-1.1.0_beta1[X] )
 "
 
+PATCHES=( "${FILESDIR}/${PN}-4.13.1-freerdp.patch" )
+
 src_configure() {
        mycmakeargs=(
                $(cmake-utils_use_with jpeg)

diff --git a/kde-base/krdc/krdc-4.9999.ebuild b/kde-base/krdc/krdc-4.9999.ebuild
index 59390f4..01402c9 100644
--- a/kde-base/krdc/krdc-4.9999.ebuild
+++ b/kde-base/krdc/krdc-4.9999.ebuild
@@ -24,6 +24,8 @@ RDEPEND="${DEPEND}
        rdesktop? ( >=net-misc/freerdp-1.1.0_beta1[X] )
 "
 
+PATCHES=( "${FILESDIR}/${PN}-4.13.1-freerdp.patch" )
+
 src_configure() {
        mycmakeargs=(
                $(cmake-utils_use_with jpeg)

Reply via email to