From 59dd46ef985a719579132efa6a9aa49bfeeae112 Mon Sep 17 00:00:00 2001 From: Robert Xu Date: Sat, 31 Mar 2012 14:28:06 -0400 Subject: better late than never, hm... --- opensuse/core/tdelibs/fileshare.diff | 296 ----------------------------------- 1 file changed, 296 deletions(-) delete mode 100644 opensuse/core/tdelibs/fileshare.diff (limited to 'opensuse/core/tdelibs/fileshare.diff') diff --git a/opensuse/core/tdelibs/fileshare.diff b/opensuse/core/tdelibs/fileshare.diff deleted file mode 100644 index 86f7d0941..000000000 --- a/opensuse/core/tdelibs/fileshare.diff +++ /dev/null @@ -1,296 +0,0 @@ ---- kio/kfile/kfilesharedlg.cpp -+++ kio/kfile/kfilesharedlg.cpp 2004/08/06 08:38:31 -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -93,8 +94,10 @@ - delete m_widget; - m_rbShare = 0L; - m_rbUnShare = 0L; -+ m_rbSharerw = 0L; - m_widget = new QWidget( d->m_vBox ); - QVBoxLayout * vbox = new QVBoxLayout( m_widget ); -+ //QHBoxLayout * hbox = new QHBoxLayout( vbox ); - - switch ( KFileShare::authorization() ) { - case KFileShare::Authorized: -@@ -105,18 +108,31 @@ - home += '/'; - bool ok = true; - KFileItemList items = properties->items(); -- // We have 3 possibilities: all shared, all unshared, or mixed. -+ // We have some possibilities: all shared, all unshared (ro,rw), or mixed. - bool allShared = true; - bool allUnshared = true; -+ bool allreadonly = true; - KFileItemListIterator it( items ); - for ( ; it.current() && ok; ++it ) { - QString path = (*it)->url().path(); -+ -+ // 0 => not shared -+ // 1 => shared read only -+ // 3 => shared writeable -+ int dirStatus = KFileShare::isDirectoryShared( path ); - if ( !path.startsWith( home ) ) - ok = false; -- if ( KFileShare::isDirectoryShared( path ) ) -+ if ( dirStatus == 1 ) { - allUnshared = false; -- else -+ } -+ else if ( dirStatus == 3 ) { -+ allUnshared = false; -+ allreadonly = false; -+ } -+ else { - allShared = false; -+ allreadonly = false; -+ } - } - if ( !ok ) - { -@@ -136,16 +152,31 @@ - vbox->addWidget( m_rbUnShare, 0 ); - rbGroup->insert( m_rbUnShare ); - -- m_rbShare = new QRadioButton( i18n("Shared"), m_widget ); -+ m_rbShare = new QRadioButton( i18n("Shared - read only for others"), m_widget ); - connect( m_rbShare, SIGNAL( toggled(bool) ), SIGNAL( changed() ) ); - vbox->addWidget( m_rbShare, 0 ); - rbGroup->insert( m_rbShare ); - -+ m_rbSharerw = new QRadioButton( i18n("Shared - writeable for others"), m_widget ); -+ connect( m_rbSharerw, SIGNAL( toggled(bool) ), SIGNAL( changed() ) ); -+ vbox->addWidget( m_rbSharerw, 0 ); -+ rbGroup->insert( m_rbSharerw ); -+ -+ //QLabel *testlabel1 = new QLabel(i18n("Enter Samba Share Name here"),m_widget); -+ //m_leSmbShareName = new QLineEdit(m_widget); -+ //m_leSmbShareName->setMaxLength(12); -+ -+ //hbox->addWidget( testlabel1, 0 ); -+ //hbox->addWidget( m_leSmbShareName ); -+ //vbox->addLayout( hbox ); -+ - // Activate depending on status - if ( allShared ) -- m_rbShare->setChecked(true); -+ m_rbSharerw->setChecked(true); - if ( allUnshared ) - m_rbUnShare->setChecked(true); -+ if ( allreadonly ) -+ m_rbShare->setChecked(true); - - // Some help text - QLabel *label = new QLabel( i18n("Sharing this folder makes it available under Linux/UNIX (NFS) and Windows (Samba).") , m_widget ); -@@ -204,7 +235,7 @@ - void KFileSharePropsPlugin::applyChanges() - { - kdDebug() << "KFileSharePropsPlugin::applyChanges" << endl; -- if ( m_rbShare && m_rbUnShare ) -+ if ( m_rbShare && m_rbUnShare && m_rbSharerw ) - { - bool share = m_rbShare->isChecked(); - KFileItemList items = properties->items(); -@@ -212,7 +243,7 @@ - bool ok = true; - for ( ; it.current() && ok; ++it ) { - QString path = (*it)->url().path(); -- ok = setShared( path, share ); -+ ok = SuSEsetShared( path, share, m_rbSharerw->isChecked() ); - if (!ok) { - if (share) - KMessageBox::detailedError(properties, -@@ -239,8 +270,14 @@ - - bool KFileSharePropsPlugin::setShared( const QString& path, bool shared ) - { -- kdDebug() << "KFileSharePropsPlugin::setShared " << path << "," << shared << endl; -- return KFileShare::setShared( path, shared ); -+ return SuSEsetShared( path, shared, true ); -+} -+ -+bool KFileSharePropsPlugin::SuSEsetShared( const QString& path, bool shared, bool readonly ) -+{ -+ kdDebug() << "KFileSharePropsPlugin::setShared " << path << "," -+ << shared << readonly << endl; -+ return KFileShare::SuSEsetShared( path, shared, readonly ); - } - - QWidget* KFileSharePropsPlugin::page() const ---- kio/kfile/kfilesharedlg.h -+++ kio/kfile/kfilesharedlg.h 2004/08/06 08:38:31 -@@ -54,10 +54,13 @@ - private: - void init(); - bool setShared( const QString&path, bool shared ); -+ bool SuSEsetShared( const QString&path, bool shared, bool readonly ); - - QWidget *m_widget; - QRadioButton *m_rbShare; -+ QRadioButton *m_rbSharerw; - QRadioButton *m_rbUnShare; -+ //QLineEdit *m_leSmbShareName; - QPushButton *m_pbConfig; - class Private; - Private *d; ---- kio/kio/kfileshare.cpp -+++ kio/kio/kfileshare.cpp 2004/08/06 08:38:51 -@@ -20,6 +20,7 @@ - #include "kfileshare.h" - #include - #include -+#include - #include - #include - #include -@@ -35,8 +36,10 @@ - #include - - KFileShare::Authorization KFileShare::s_authorization = NotInitialized; --QStringList* KFileShare::s_shareList = 0L; --static KStaticDeleter sdShareList; -+//QStringList* KFileShare::s_shareList = 0L; -+//static KStaticDeleter sdShareList; -+QMap* KFileShare::s_shareMap = 0L; -+static KStaticDeleter > sdShareMap; - - KFileShare::ShareMode KFileShare::s_shareMode; - bool KFileShare::s_sambaEnabled; -@@ -164,10 +167,10 @@ - void KFileShare::readShareList() - { - KFileSharePrivate::self(); -- if ( !s_shareList ) -- sdShareList.setObject( s_shareList, new QStringList ); -+ if ( !s_shareMap ) -+ sdShareMap.setObject( s_shareMap, new QMap ); - else -- s_shareList->clear(); -+ s_shareMap->clear(); - - // /usr/sbin on Mandrake, $PATH allows flexibility for other distributions - QString exe = findExe( "filesharelist" ); -@@ -185,29 +188,45 @@ - - // Reading code shamelessly stolen from khostname.cpp ;) - QString line; -+ QString options; -+ QString path; - int length; -+ QRegExp rx_line("([^\\s]+)\\s+(.*)"); - do { - length = proc.readln(line, true); - if ( length > 0 ) - { - if ( line[length-1] != '/' ) - line += '/'; -- s_shareList->append(line); -+ if( rx_line.search( line ) != -1 ) { -+ options = rx_line.cap(1); -+ path = rx_line.cap(2); -+ (*s_shareMap)[path] = options; -+ } - kdDebug(7000) << "Shared dir:" << line << endl; - } - } while (length > -1); - } - - --bool KFileShare::isDirectoryShared( const QString& _path ) -+int KFileShare::isDirectoryShared( const QString& _path ) - { -- if ( ! s_shareList ) -+ int ret(0); -+ -+ if ( ! s_shareMap ) - readShareList(); - - QString path( _path ); - if ( path[path.length()-1] != '/' ) - path += '/'; -- return s_shareList && s_shareList->contains( path ); -+ //return s_shareList && s_shareList->contains( path ); -+ if( (*s_shareMap).contains(path) && !((*s_shareMap)[path].isEmpty()) ) { -+ ret+=1; -+ if( (*s_shareMap)[path].find("readwrite") != -1 ) -+ ret+=2; -+ } -+ -+ return ret; - } - - KFileShare::Authorization KFileShare::authorization() -@@ -230,17 +249,30 @@ - - bool KFileShare::setShared( const QString& path, bool shared ) - { -+ return SuSEsetShared( path, shared, false ); -+} -+ -+bool KFileShare::SuSEsetShared( const QString& path, bool shared, bool rw ) -+{ - if (! KFileShare::sharingEnabled() || - KFileShare::shareMode() == Advanced) - return false; - -- kdDebug(7000) << "KFileShare::setShared " << path << "," << shared << endl; - QString exe = KFileShare::findExe( "fileshareset" ); - if (exe.isEmpty()) - return false; -- -+ -+ // we want to share, so we kick it first - just to be sure - KProcess proc; - proc << exe; -+ proc << "--remove"; -+ proc << path; -+ proc.start( KProcess::Block ); -+ proc.clearArguments(); -+ -+ proc << exe; -+ if( rw ) -+ proc << "--rw"; - if ( shared ) - proc << "--add"; - else ---- kio/kio/kfileshare.h -+++ kio/kio/kfileshare.h 2004/08/06 08:38:31 -@@ -65,7 +65,7 @@ - /** - * Call this to know if a directory is currently shared - */ -- static bool isDirectoryShared( const QString& path ); -+ static int isDirectoryShared( const QString& path ); - - enum Authorization { NotInitialized, ErrorNotFound, Authorized, UserNotAllowed }; - /** -@@ -83,7 +83,12 @@ - * @returns wether the perl script was successful - */ - static bool setShared( const QString& path, bool shared ); -- -+ -+ /* -+ * SuSE only enhancement for now -+ */ -+ static bool SuSEsetShared( const QString& path, bool shared, bool ro ); -+ - /** - * The used share mode. - * Simple means that the simple sharing dialog is used and -@@ -132,7 +137,8 @@ - - private: - static Authorization s_authorization; -- static QStringList* s_shareList; -+// static QStringList* s_shareList; -+ static QMap* s_shareMap; - static ShareMode s_shareMode; - static bool s_sambaEnabled; - static bool s_nfsEnabled; -- cgit v1.2.1