Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37038726
en ru br
Репозитории ALT

Группа :: Графические оболочки/KDE
Пакет: kde5-kio-extras

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: alt-fix-permissions.patch
Скачать


--- a/smb/kio_smb.h
+++ b/smb/kio_smb.h
@@ -204,6 +204,7 @@ public:
     Q_REQUIRED_RESULT WorkerResult copy(const QUrl &src, const QUrl &dst, int permissions, KIO::JobFlags flags) override;
     Q_REQUIRED_RESULT WorkerResult del(const QUrl &kurl, bool isfile) override;
     Q_REQUIRED_RESULT WorkerResult mkdir(const QUrl &kurl, int permissions) override;
+    Q_REQUIRED_RESULT WorkerResult chmod(const QUrl &kurl, int permissions) override;
     Q_REQUIRED_RESULT WorkerResult rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) override;
 
     // Functions overwritten in kio_smb_file.cpp
diff --git a/smb/kio_smb_dir.cpp b/smb/kio_smb_dir.cpp
index c35d1da..f3f3467
--- a/smb/kio_smb_dir.cpp
+++ b/smb/kio_smb_dir.cpp
@@ -494,6 +494,51 @@ void SMBWorker::mkdir(const QUrl &kurl, i
     return equal;
 }
 
+WorkerResult SMBWorker::chmod( const QUrl &kurl, int permissions )
+{
+    int errNum = 0;
+    int retVal = 0;
+    m_current_url = kurl;
+
+    retVal = smbc_chmod(m_current_url.toSmbcUrl(), permissions);
+
+    if( retVal < 0 ){
+        errNum = errno;
+    } else {
+        errNum = 0;
+    }
+
+    if( retVal < 0 )
+    {
+      switch(errNum)
+      {
+        case ENOENT:
+          errNum = cache_stat(kurl, &st);
+          if( errNum != 0 )
+          {
+            if(errNum == EACCES)
+            {
+              return WorkerResult::fail(KIO::ERR_ACCESS_DENIED, kurl.toDisplayString());
+            }
+            else
+            {
+              return WorkerResult::fail(KIO::ERR_DOES_NOT_EXIST, kurl.toDisplayString());
+            }
+          }
+          break;
+
+        case EACCES:
+        case EPERM:
+          return WorkerResult::fail( KIO::ERR_ACCESS_DENIED, kurl.toDisplayString() );
+
+      }
+
+      return WorkerResult::fail( KIO::ERR_CANNOT_CHMOD, kurl.toDisplayString() );
+    }
+
+    return WorkerResult::pass();
+}
+
 WorkerResult SMBWorker::rename(const QUrl &ksrc, const QUrl &kdest, KIO::JobFlags flags)
 {
     SMBUrl src;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin