[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kioslave/smb
From:       Stephan Kulow <coolo () kde ! org>
Date:       2003-03-25 15:58:47
[Download RAW message or body]

CVS commit by coolo: 

some more work on correct browsing behaviour


  M +48 -21    kio_smb_browse.cpp   1.17
  M +2 -2      kio_smb_internal.cpp   1.13


--- kdebase/kioslave/smb/kio_smb_browse.cpp  #1.16:1.17
@@ -152,8 +152,10 @@ void SMBSlave::stat( const KURL& kurl )
       else {
         kdDebug(KIO_SMB) << "SMBSlave::stat ERROR!!"<< endl;
+        finished();
         return;
       }
     default:
       kdDebug(KIO_SMB) << "SMBSlave::stat UNKNOWN " << url.url() << endl;
+      finished();
       return;
     }
@@ -167,7 +169,21 @@ void SMBSlave::stat( const KURL& kurl )
 // TODO: complete checking
 KURL SMBSlave::checkURL(const KURL& kurl) const {
+
+    kdDebug(KIO_SMB) << "checkURL " << kurl << endl;
+    QString surl = kurl.url();
+    if (surl.startsWith("smb:/")) {
+        if (surl.length() == 5) // just the above
+            return kurl; // unchanged
+
+        if (surl.at(5) != '/') {
+            surl = "smb://" + surl.mid(5);
+            kdDebug(KIO_SMB) << "checkURL return1 " << surl << " " << \
KURL(surl).url() << endl; +            return KURL(surl);
+        }
+    }
+
   // smb:/ normaly have no userinfo
   // we must redirect ourself to remove the username and password
-  if (kurl.url().contains('@') && !kurl.url().contains("smb://")) {
+    if (surl.contains('@') && !surl.contains("smb://")) {
     KURL url(kurl);
     url.setPath("/"+kurl.url().right( kurl.url().length()-kurl.url().find('@') -1));
@@ -180,4 +196,5 @@ KURL SMBSlave::checkURL(const KURL& kurl
       url.setUser(userinfo);
     }
+        kdDebug() << "checkURL return2 " << url.url() << endl;
     return url;
   }
@@ -188,7 +205,9 @@ KURL SMBSlave::checkURL(const KURL& kurl
       KURL url(kurl);
       url.setPath("/");
+        kdDebug() << "checkURL return3 " << url.url() << endl;
       return url;
     }
 
+    kdDebug() << "checkURL return3 " << kurl.url() << endl;
   return kurl;
 }
@@ -305,4 +324,13 @@ void SMBSlave::listDir( const KURL& kurl
                udsentry.append(atom);
 
+               if (dirp->smbc_type == SMBC_SERVER) {
+                   atom.m_uds = KIO::UDS_URL;
+                   QString workgroup = m_current_url.host().upper();
+                   // when libsmbclient knows
+                   // atom.m_str = \
QString("smb://%1?WORKGROUP=%2").arg(dirpName).arg(workgroup.upper()); +              \
atom.m_str = QString("smb://%1").arg(dirpName); +                   \
udsentry.append(atom); +               }
+
                // Call base class to list entry
                listEntry(udsentry, false);

--- kdebase/kioslave/smb/kio_smb_internal.cpp  #1.12:1.13
@@ -81,6 +81,6 @@ void SMBUrl::updateCache()
     // we have to use pretty here as smbc is unable to handle e.g. %20
     m_surl = fromUnicode(KURL::url());
-    if (m_surl.left(5) == "smb:/" && m_surl.at(6) != '/')
-        m_surl = "smb://" + m_surl.mid(6);
+    if (m_surl == "smb:/")
+        m_surl = "smb://";
 
     m_type = SMBURLTYPE_UNKNOWN;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic