Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37559419
en ru br
ALT Linux repositórios
S:23.04.3-alt1

Group :: Desktop gráfico/KDE
RPM: kde5-kio-extras

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: alt-fix-permissions.patch
Download


--- 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;
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009