Hello community,

here is the log from the commit of package kio for openSUSE:Factory checked in 
at 2014-10-01 11:22:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kio (Old)
 and      /work/SRC/openSUSE:Factory/.kio.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kio"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kio/kio.changes  2014-09-12 17:04:45.000000000 
+0200
+++ /work/SRC/openSUSE:Factory/.kio.new/kio.changes     2014-10-01 
11:22:33.000000000 +0200
@@ -1,0 +2,7 @@
+Fri Sep 26 01:00:06 UTC 2014 - [email protected]
+
+- Add 0001-Add-new-KIO-job-KIO-fileSystemFreeSpace-that-allows-.patch
+  from upstream:  allows you to get a filesystem's total and
+  available space.
+
+-------------------------------------------------------------------

New:
----
  0001-Add-new-KIO-job-KIO-fileSystemFreeSpace-that-allows-.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kio.spec ++++++
--- /var/tmp/diff_new_pack.2hdO09/_old  2014-10-01 11:22:34.000000000 +0200
+++ /var/tmp/diff_new_pack.2hdO09/_new  2014-10-01 11:22:34.000000000 +0200
@@ -70,6 +70,8 @@
 Patch0:         0001-Fix-thumbnails-for-mimetype-groups.patch
 # PATCH-FIX-UPSTREAM  
0002-Fix-relative-paths-being-turned-into-http-urls-by-fr.patch
 Patch1:         0002-Fix-relative-paths-being-turned-into-http-urls-by-fr.patch
+# PATCH-FIX-UPSTREAM  
0001-Add-new-KIO-job-KIO-fileSystemFreeSpace-that-allows-.patch
+Patch2:         0001-Add-new-KIO-job-KIO-fileSystemFreeSpace-that-allows-.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -101,6 +103,7 @@
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 %build
   %cmake_kf5 -d build

++++++ 0001-Add-new-KIO-job-KIO-fileSystemFreeSpace-that-allows-.patch ++++++
>From ed705a319e671631e17f74ac2fbc84d102f45a09 Mon Sep 17 00:00:00 2001
From: Mathias Tillman <[email protected]>
Date: Sun, 14 Sep 2014 16:39:44 +0200
Subject: [PATCH 1/1] Add new KIO job, KIO::fileSystemFreeSpace, that allows
 you to get a filesystem's total and available space.

REVIEW: 120134
---
 src/core/CMakeLists.txt             |  2 +
 src/core/commands_p.h               |  3 +-
 src/core/filesystemfreespacejob.cpp | 88 +++++++++++++++++++++++++++++++++++++
 src/core/filesystemfreespacejob.h   | 73 ++++++++++++++++++++++++++++++
 src/core/slavebase.cpp              | 20 ++++++++-
 src/core/slavebase.h                |  3 +-
 src/ioslaves/file/file.cpp          | 31 +++++++++++++
 src/ioslaves/file/file.h            |  5 +++
 8 files changed, 221 insertions(+), 4 deletions(-)
 create mode 100644 src/core/filesystemfreespacejob.cpp
 create mode 100644 src/core/filesystemfreespacejob.h

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index f1f8848..7043e49 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -66,6 +66,7 @@ set(kiocore_SRCS
   statjob.cpp
   storedtransferjob.cpp
   transferjob.cpp
+  filesystemfreespacejob.cpp
   scheduler.cpp
   slaveconfig.cpp
   kprotocolmanager.cpp
@@ -194,6 +195,7 @@ ecm_generate_headers(KIOCore_CamelCase_HEADERS
   AuthInfo
   DavJob
   DesktopExecParser
+  FileSystemFreeSpaceJob
 
   PREFIX KIO
   REQUIRED_HEADERS KIO_namespaced_HEADERS
diff --git a/src/core/commands_p.h b/src/core/commands_p.h
index 4b6bfa2..a8ddeba 100644
--- a/src/core/commands_p.h
+++ b/src/core/commands_p.h
@@ -63,7 +63,8 @@ enum Command {
     CMD_WRITE = 91,
     CMD_SEEK = 92,
     CMD_CLOSE = 93,
-    CMD_HOST_INFO = 94
+    CMD_HOST_INFO = 94,
+    CMD_FILESYSTEMFREESPACE = 95
                     // Add new ones here once a release is done, to avoid 
breaking binary compatibility.
                     // Note that protocol-specific commands shouldn't be added 
here, but should use special.
 };
diff --git a/src/core/filesystemfreespacejob.cpp 
b/src/core/filesystemfreespacejob.cpp
new file mode 100644
index 0000000..2b85ad2
--- /dev/null
+++ b/src/core/filesystemfreespacejob.cpp
@@ -0,0 +1,88 @@
+/* This file is part of the KDE libraries
+    Copyright (C) 2000 Stephan Kulow <[email protected]>
+                  2000-2009 David Faure <[email protected]>
+                  2014 Mathias Tillman <[email protected]>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+*/
+
+#include "filesystemfreespacejob.h"
+#include "job.h"
+#include "job_p.h"
+#include <slave.h>
+
+using namespace KIO;
+
+class KIO::FileSystemFreeSpaceJobPrivate: public SimpleJobPrivate
+{
+public:
+    FileSystemFreeSpaceJobPrivate(const QUrl &url, int command, const 
QByteArray &packedArgs)
+        : SimpleJobPrivate(url, command, packedArgs)
+    { }
+
+    /**
+     * @internal
+     * Called by the scheduler when a @p slave gets to
+     * work on this job.
+     * @param slave the slave that starts working on this job
+     */
+    void start(Slave *slave) Q_DECL_OVERRIDE;
+
+    Q_DECLARE_PUBLIC(FileSystemFreeSpaceJob)
+
+    static inline FileSystemFreeSpaceJob *newJob(const QUrl &url, int command, 
const QByteArray &packedArgs)
+    {
+        FileSystemFreeSpaceJob *job = new FileSystemFreeSpaceJob(*new 
FileSystemFreeSpaceJobPrivate(url, command, packedArgs));
+        job->setUiDelegate(KIO::createDefaultJobUiDelegate());
+        return job;
+    }
+};
+
+FileSystemFreeSpaceJob::FileSystemFreeSpaceJob(FileSystemFreeSpaceJobPrivate 
&dd)
+    : SimpleJob(dd)
+{
+}
+
+FileSystemFreeSpaceJob::~FileSystemFreeSpaceJob()
+{
+}
+
+void FileSystemFreeSpaceJobPrivate::start(Slave *slave)
+{
+    Q_Q(FileSystemFreeSpaceJob);
+    SimpleJobPrivate::start(slave);
+}
+
+void FileSystemFreeSpaceJob::slotFinished()
+{
+    Q_D(FileSystemFreeSpaceJob);
+
+    KIO::filesize_t total = queryMetaData("total").toULongLong();
+    KIO::filesize_t available = queryMetaData("available").toULongLong();
+
+    emit result(this, total, available);
+
+    // Return slave to the scheduler
+    SimpleJob::slotFinished();
+}
+
+KIO::FileSystemFreeSpaceJob *KIO::fileSystemFreeSpace(const QUrl &url)
+{
+    KIO_ARGS << url;
+    return FileSystemFreeSpaceJobPrivate::newJob(url, CMD_FILESYSTEMFREESPACE, 
packedArgs);
+}
+
+#include "moc_filesystemfreespacejob.cpp"
diff --git a/src/core/filesystemfreespacejob.h 
b/src/core/filesystemfreespacejob.h
new file mode 100644
index 0000000..9754d5f
--- /dev/null
+++ b/src/core/filesystemfreespacejob.h
@@ -0,0 +1,73 @@
+/* This file is part of the KDE libraries
+    Copyright (C) 2000 Stephan Kulow <[email protected]>
+                  2000-2009 David Faure <[email protected]>
+                  2014 Mathias Tillman <[email protected]>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+*/
+
+#ifndef FILESYSTEMFREESPACEJOB_H
+#define FILESYSTEMFREESPACEJOB_H
+
+#include "kiocore_export.h"
+#include "simplejob.h"
+
+namespace KIO
+{
+
+class FileSystemFreeSpaceJobPrivate;
+/**
+ * A KIO job that retrieves the total and available size of a filesystem.
+ * @since 5.3
+ */
+class KIOCORE_EXPORT FileSystemFreeSpaceJob : public SimpleJob
+{
+
+    Q_OBJECT
+
+public:
+    ~FileSystemFreeSpaceJob();
+
+Q_SIGNALS:
+    /**
+     * Signals the result
+     * @param job the job that is redirected
+     * @param size total amount of space
+     * @param available amount of free space
+     */
+    void result(KIO::Job *job, KIO::filesize_t size, KIO::filesize_t 
available);
+
+protected Q_SLOTS:
+    void slotFinished() Q_DECL_OVERRIDE;
+
+public:
+    FileSystemFreeSpaceJob(FileSystemFreeSpaceJobPrivate &dd);
+
+private:
+    Q_DECLARE_PRIVATE(FileSystemFreeSpaceJob)
+};
+
+/**
+ * Get a filesystem's total and available space.
+ *
+ * @param url Url to the filesystem.
+ * @return the job handling the operation.
+ */
+KIOCORE_EXPORT FileSystemFreeSpaceJob *fileSystemFreeSpace(const QUrl &url);
+
+}
+
+#endif /* FILESYSTEMFREESPACEJOB_H */
diff --git a/src/core/slavebase.cpp b/src/core/slavebase.cpp
index 7280996..01844f5 100644
--- a/src/core/slavebase.cpp
+++ b/src/core/slavebase.cpp
@@ -1261,6 +1261,16 @@ void SlaveBase::dispatch(int command, const QByteArray 
&data)
         d->verifyState("multiGet()");
         d->m_state = d->Idle;
     } break;
+    case CMD_FILESYSTEMFREESPACE: {
+        stream >> url;
+
+        void *data = static_cast<void *>(&url);
+
+        d->m_state = d->InsideMethod;
+        virtual_hook(GetFileSystemFreeSpace, data);
+        d->verifyState("fileSystemFreeSpace()");
+        d->m_state = d->Idle;
+    } break;
     default: {
         // Some command we don't understand.
         // Just ignore it, it may come from some future version of KDE.
@@ -1387,9 +1397,15 @@ void SlaveBase::send(int cmd, const QByteArray &arr)
     }
 }
 
-void SlaveBase::virtual_hook(int, void *)
+void SlaveBase::virtual_hook(int id, void *data)
 {
-    /*BASE::virtual_hook( id, data );*/
+    Q_UNUSED(data);
+
+    switch(id) {
+    case GetFileSystemFreeSpace: {
+        error(ERR_UNSUPPORTED_ACTION, unsupportedActionErrorString(mProtocol, 
CMD_FILESYSTEMFREESPACE));
+    } break;
+    }
 }
 
 void SlaveBase::lookupHost(const QString &host)
diff --git a/src/core/slavebase.h b/src/core/slavebase.h
index 3b7aefa..d1d94de 100644
--- a/src/core/slavebase.h
+++ b/src/core/slavebase.h
@@ -932,7 +932,8 @@ protected:
     MetaData mIncomingMetaData;
 
     enum VirtualFunctionId {
-        AppConnectionMade = 0
+        AppConnectionMade = 0,
+        GetFileSystemFreeSpace = 1   // KF6 TODO: Turn into a virtual method
     };
     virtual void virtual_hook(int id, void *data);
 
diff --git a/src/ioslaves/file/file.cpp b/src/ioslaves/file/file.cpp
index 9eef9eb..1a2a767 100644
--- a/src/ioslaves/file/file.cpp
+++ b/src/ioslaves/file/file.cpp
@@ -33,6 +33,8 @@
 #include <QDirIterator>
 #include <qplatformdefs.h>
 
+#include <KDiskFreeSpaceInfo>
+
 #include "kioglobal_p.h"
 
 #include <assert.h>
@@ -1298,3 +1300,32 @@ bool FileProtocol::deleteRecursive(const QString &path)
     return true;
 }
 
+void FileProtocol::fileSystemFreeSpace(const QUrl &url)
+{
+    if (url.isLocalFile()) {
+        const KDiskFreeSpaceInfo spaceInfo = 
KDiskFreeSpaceInfo::freeSpaceInfo(url.toLocalFile());
+        if (spaceInfo.isValid()) {
+            setMetaData(QString::fromLatin1("total"), 
QString::number(spaceInfo.size()));
+            setMetaData(QString::fromLatin1("available"), 
QString::number(spaceInfo.available()));
+
+            finished();
+        } else {
+            error(KIO::ERR_COULD_NOT_STAT, url.url());
+        }
+    } else {
+        error(KIO::ERR_UNSUPPORTED_PROTOCOL, url.url());
+    }
+}
+
+void FileProtocol::virtual_hook(int id, void *data)
+{
+    switch(id) {
+    case SlaveBase::GetFileSystemFreeSpace: {
+        QUrl *url = static_cast<QUrl *>(data);
+        fileSystemFreeSpace(*url);
+    } break;
+    default: {
+        SlaveBase::virtual_hook(id, data);
+    } break;
+    }
+}
diff --git a/src/ioslaves/file/file.h b/src/ioslaves/file/file.h
index a6e3c3f..d966ac1 100644
--- a/src/ioslaves/file/file.h
+++ b/src/ioslaves/file/file.h
@@ -84,6 +84,9 @@ public:
     static bool isExtendedACL(acl_t acl);
 #endif
 
+protected:
+    void virtual_hook(int id, void *data) Q_DECL_OVERRIDE;
+
 private:
     bool createUDSEntry(const QString &filename, const QByteArray &path, 
KIO::UDSEntry &entry,
                         short int details);
@@ -92,6 +95,8 @@ private:
     QString getGroupName(KGroupId gid) const;
     bool deleteRecursive(const QString &path);
 
+    void fileSystemFreeSpace(const QUrl &url);  // KF6 TODO: Turn into virtual 
method in SlaveBase
+
 private:
     mutable QHash<KUserId, QString> mUsercache;
     mutable QHash<KGroupId, QString> mGroupcache;
-- 
2.1.0

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to