diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2017-07-13 22:46:45 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2017-07-13 22:50:01 +0200 |
commit | ea01d07c76b705e48d8d3a4600856746ce596e95 (patch) | |
tree | 11abb713ee2d1cf09ef62389e18dd03cbac691e0 /kde-apps/kio-extras/files | |
parent | dev-java/hawtjni-runtime: keyword ~arm64 (diff) | |
download | gentoo-ea01d07c76b705e48d8d3a4600856746ce596e95.tar.gz gentoo-ea01d07c76b705e48d8d3a4600856746ce596e95.tar.bz2 gentoo-ea01d07c76b705e48d8d3a4600856746ce596e95.zip |
kde-apps: Add KDE Applications 17.04.3
Package-Manager: Portage-2.3.6, Repoman-2.3.1
Diffstat (limited to 'kde-apps/kio-extras/files')
-rw-r--r-- | kde-apps/kio-extras/files/kio-extras-17.04.3-mtp.patch | 87 | ||||
-rw-r--r-- | kde-apps/kio-extras/files/kio-extras-17.04.3-smb.patch | 240 |
2 files changed, 327 insertions, 0 deletions
diff --git a/kde-apps/kio-extras/files/kio-extras-17.04.3-mtp.patch b/kde-apps/kio-extras/files/kio-extras-17.04.3-mtp.patch new file mode 100644 index 000000000000..04aff7dcdbd7 --- /dev/null +++ b/kde-apps/kio-extras/files/kio-extras-17.04.3-mtp.patch @@ -0,0 +1,87 @@ +From bdd0e54ee303559106d2ac746f9a3d167bd89146 Mon Sep 17 00:00:00 2001 +From: Kevin Funk <kfunk@kde.org> +Date: Tue, 11 Jul 2017 03:03:21 +0200 +Subject: mtp: Simplify code a bit + +Only one branch can be taken per call, make this clear by using +if/else-if instead of a series of ifs. +--- + mtp/kio_mtp.cpp | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/mtp/kio_mtp.cpp b/mtp/kio_mtp.cpp +index 0532820..9d8585f 100644 +--- a/mtp/kio_mtp.cpp ++++ b/mtp/kio_mtp.cpp +@@ -593,15 +593,12 @@ void MTPSlave::copy(const QUrl &src, const QUrl &dest, int, JobFlags flags) + { + qCDebug(LOG_KIO_MTP) << src.path() << dest.path(); + +- // mtp:/// to mtp:/// + if (src.scheme() == QLatin1String("mtp") && dest.scheme() == QLatin1String("mtp")) { + qCDebug(LOG_KIO_MTP) << "Copy on device: Not supported"; + // MTP doesn't support moving files directly on the device, so we have to download and then upload... + + error(ERR_UNSUPPORTED_ACTION, i18n("Cannot copy/move files on the device itself")); +- } +- // file:/// tp mtp:/// +- if (src.scheme() == QLatin1String("file") && dest.scheme() == QLatin1String("mtp")) { ++ } else if (src.scheme() == QLatin1String("file") && dest.scheme() == QLatin1String("mtp")) { + int check = checkUrl(dest); + switch (check) { + case 0: +@@ -680,9 +677,7 @@ void MTPSlave::copy(const QUrl &src, const QUrl &dest, int, JobFlags flags) + } + + qCDebug(LOG_KIO_MTP) << "Sent file"; +- } +- // mtp:/// to file:/// +- if (src.scheme() == QLatin1String("mtp") && dest.scheme() == QLatin1String("file")) { ++ } else if (src.scheme() == QLatin1String("mtp") && dest.scheme() == QLatin1String("file")) { + int check = checkUrl(src); + switch (check) { + case 0: +-- +cgit v0.11.2 +From f7b9b827ed7a23403913a4e356b0549d9deaf351 Mon Sep 17 00:00:00 2001 +From: Kevin Funk <kfunk@kde.org> +Date: Tue, 11 Jul 2017 03:04:21 +0200 +Subject: A couple of fixes for the MTP kio slave (2 patches) + +Summary: +mtp: Simplify code a bit + +Only one branch can be taken per call, make this clear by using +if/else-if instead of a series of ifs. + +mtp: Don't crash if getPath returns something invalid + +This happens when you try to copy a file from a device which just got +locked again (I think...) + +Reviewers: elvisangelaccio + +Reviewed By: elvisangelaccio + +Differential Revision: https://phabricator.kde.org/D6620 +--- + mtp/kio_mtp.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/mtp/kio_mtp.cpp b/mtp/kio_mtp.cpp +index 9d8585f..541268a 100644 +--- a/mtp/kio_mtp.cpp ++++ b/mtp/kio_mtp.cpp +@@ -705,6 +705,10 @@ void MTPSlave::copy(const QUrl &src, const QUrl &dest, int, JobFlags flags) + } + + QPair<void *, LIBMTP_mtpdevice_t *> pair = getPath(src.path()); ++ if (!pair.first) { ++ error(ERR_COULD_NOT_READ, src.path()); ++ return; ++ } + + LIBMTP_mtpdevice_t *device = pair.second; + LIBMTP_file_t *source = (LIBMTP_file_t *) pair.first; +-- +cgit v0.11.2 diff --git a/kde-apps/kio-extras/files/kio-extras-17.04.3-smb.patch b/kde-apps/kio-extras/files/kio-extras-17.04.3-smb.patch new file mode 100644 index 000000000000..b6b83845f795 --- /dev/null +++ b/kde-apps/kio-extras/files/kio-extras-17.04.3-smb.patch @@ -0,0 +1,240 @@ +From 2574c9158febdcb3dd7a0ebc3e76311f016d00d0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Mal=C3=BD?= <malymi@natur.cuni.cz> +Date: Wed, 12 Jul 2017 11:55:04 +0200 +Subject: Always create the "." UDSEntry + +Summary: +The smb_kio plugin does not create the "." UDSEntry, +relying on the underlying KIO infrastructure to create a default one. + +This patch ensures that the UDSEntry is always created with proper access permissions. + +CCBUG: 376344 + +Reviewers: elvisangelaccio + +Differential Revision: https://phabricator.kde.org/D6616 +--- + smb/kio_smb_browse.cpp | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/smb/kio_smb_browse.cpp b/smb/kio_smb_browse.cpp +index 1ca90a2..06ca60b 100644 +--- a/smb/kio_smb_browse.cpp ++++ b/smb/kio_smb_browse.cpp +@@ -309,6 +309,7 @@ void SMBSlave::listDir( const QUrl& kurl ) + int dirfd; + struct smbc_dirent *dirp = NULL; + UDSEntry udsentry; ++ bool dir_is_root = true; + + dirfd = smbc_opendir( m_current_url.toSmbcUrl() ); + if (dirfd > 0){ +@@ -350,8 +351,14 @@ void SMBSlave::listDir( const QUrl& kurl ) + udsentry.insert(KIO::UDSEntry::UDS_HIDDEN, 1); + } + +- if (udsName == "." || udsName == "..") ++ if (udsName == ".") + { ++ // Skip the "." entry ++ // Mind the way m_current_url is handled in the loop ++ } ++ else if (udsName == "..") ++ { ++ dir_is_root = false; + // fprintf(stderr,"----------- hide: -%s-\n",dirp->name); + // do nothing and hide the hidden shares + } +@@ -430,6 +437,20 @@ void SMBSlave::listDir( const QUrl& kurl ) + udsentry.clear(); + } while (dirp); // checked already in the head + ++ if (dir_is_root) { ++ udsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); ++ udsentry.insert(KIO::UDSEntry::UDS_NAME, "."); ++ udsentry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH)); ++ udsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QLatin1String("application/x-smb-server")); ++ } ++ else ++ { ++ udsentry.insert(KIO::UDSEntry::UDS_NAME, "."); ++ browse_stat_path(m_current_url, udsentry, true); ++ } ++ listEntry(udsentry); ++ udsentry.clear(); ++ + // clean up + smbc_closedir(dirfd); + } +-- +cgit v0.11.2 +From e792aa44b5aa0b122e006234a8f87a16ff12fe6f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Mal=C3=BD?= <malymi@natur.cuni.cz> +Date: Wed, 12 Jul 2017 11:57:12 +0200 +Subject: Return appropriate error code from browse_stat_path() instead of + trying to deal with the error internally. + +Summary: +Current behavior of browse_stat_path() can result in both finished() and error() being signaled to KIO. +This patch adjusts the logic to prevent this case. + +Reviewers: elvisangelaccio + +BUG: 376344 +FIXED-IN: 17.08.0 + +Differential Revision: https://phabricator.kde.org/D6617 +--- + smb/kio_smb.h | 5 ++-- + smb/kio_smb_browse.cpp | 67 ++++++++++++++++++++++++++++---------------------- + 2 files changed, 40 insertions(+), 32 deletions(-) + +diff --git a/smb/kio_smb.h b/smb/kio_smb.h +index a5cae11..a2a9343 100644 +--- a/smb/kio_smb.h ++++ b/smb/kio_smb.h +@@ -156,10 +156,9 @@ protected: + * Description : Return a stat of given SMBUrl. Calls cache_stat and + * pack it in UDSEntry. UDSEntry will not be cleared + * Parameter : SMBUrl the url to stat +- * ignore_errors do not call error(), but warning() +- * Return : false if any error occurred (errno), else true ++ * Return : cache_stat() return code + */ +- bool browse_stat_path(const SMBUrl& url, UDSEntry& udsentry, bool ignore_errors); ++ int browse_stat_path(const SMBUrl& url, UDSEntry& udsentry); + + /** + * Description : call smbc_stat and return stats of the url +diff --git a/smb/kio_smb_browse.cpp b/smb/kio_smb_browse.cpp +index 06ca60b..84bfdc2 100644 +--- a/smb/kio_smb_browse.cpp ++++ b/smb/kio_smb_browse.cpp +@@ -55,8 +55,7 @@ int SMBSlave::cache_stat(const SMBUrl &url, struct stat* st ) + } + + //--------------------------------------------------------------------------- +-bool SMBSlave::browse_stat_path(const SMBUrl& _url, UDSEntry& udsentry, bool ignore_errors) +- // Returns: true on success, false on failure ++int SMBSlave::browse_stat_path(const SMBUrl& _url, UDSEntry& udsentry) + { + SMBUrl url = _url; + +@@ -68,7 +67,7 @@ bool SMBSlave::browse_stat_path(const SMBUrl& _url, UDSEntry& udsentry, bool ign + qCDebug(KIO_SMB) << "mode: "<< st.st_mode; + warning(i18n("%1:\n" + "Unknown file type, neither directory or file.", url.toDisplayString())); +- return false; ++ return EINVAL; + } + + udsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, st.st_mode & S_IFMT); +@@ -96,24 +95,8 @@ bool SMBSlave::browse_stat_path(const SMBUrl& _url, UDSEntry& udsentry, bool ign + udsentry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, st.st_atime); + // No, st_ctime is not UDS_CREATION_TIME... + } +- else +- { +- if (!ignore_errors) { +- if (cacheStatErr == EPERM || cacheStatErr == EACCES) +- if (checkPassword(url)) { +- redirection( url ); +- return false; +- } +- +- reportError(url, cacheStatErr); +- } else if (cacheStatErr == ENOENT || cacheStatErr == ENOTDIR) { +- warning(i18n("File does not exist: %1", url.url())); +- } +- qCDebug(KIO_SMB) << "ERROR!!"; +- return false; +- } + +- return true; ++ return cacheStatErr; + } + + //=========================================================================== +@@ -141,7 +124,7 @@ void SMBSlave::stat( const QUrl& kurl ) + switch(m_current_url.getType()) + { + case SMBURLTYPE_UNKNOWN: +- error(ERR_MALFORMED_URL,m_current_url.toDisplayString()); ++ error(ERR_MALFORMED_URL, url.toDisplayString()); + return; + + case SMBURLTYPE_ENTIRE_NETWORK: +@@ -150,12 +133,38 @@ void SMBSlave::stat( const QUrl& kurl ) + break; + + case SMBURLTYPE_SHARE_OR_PATH: +- if (browse_stat_path(m_current_url, udsentry, false)) ++ { ++ int ret = browse_stat_path(m_current_url, udsentry); ++ ++ if (ret == EPERM || ret == EACCES) ++ { ++ SMBUrl smbUrl(url); ++ ++ if (checkPassword(smbUrl)) ++ { ++ redirection(smbUrl); ++ finished(); ++ } ++ else ++ { ++ reportError(url, ret); ++ } ++ ++ return; ++ } ++ else if (ret == ENOENT || ret == ENOTDIR) ++ { ++ warning(i18n("File does not exist: %1", url.url())); ++ finished(); ++ return; ++ } ++ else if (ret != 0) ++ { ++ qCDebug(KIO_SMB) << "stat() error" << ret << url; ++ reportError(url, ret); ++ return; ++ } + break; +- else { +- qCDebug(KIO_SMB) << "ERROR!!"; +- finished(); +- return; + } + default: + qCDebug(KIO_SMB) << "UNKNOWN " << url; +@@ -366,7 +375,7 @@ void SMBSlave::listDir( const QUrl& kurl ) + { + // Set stat information + m_current_url.addPath(dirpName); +- browse_stat_path(m_current_url, udsentry, true); ++ browse_stat_path(m_current_url, udsentry); + m_current_url.cd(".."); + + // Call base class to list entry +@@ -375,7 +384,7 @@ void SMBSlave::listDir( const QUrl& kurl ) + else if(dirp->smbc_type == SMBC_DIR) + { + m_current_url.addPath(dirpName); +- browse_stat_path(m_current_url, udsentry, true); ++ browse_stat_path(m_current_url, udsentry); + m_current_url.cd(".."); + + // Call base class to list entry +@@ -446,7 +455,7 @@ void SMBSlave::listDir( const QUrl& kurl ) + else + { + udsentry.insert(KIO::UDSEntry::UDS_NAME, "."); +- browse_stat_path(m_current_url, udsentry, true); ++ browse_stat_path(m_current_url, udsentry); + } + listEntry(udsentry); + udsentry.clear(); +-- +cgit v0.11.2 |