summaryrefslogtreecommitdiffstats
path: root/tdeio
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-10-06 11:38:24 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-10-06 11:38:24 -0500
commit9cb7d7318211f13d690fea92d13aca60b0ae7c5a (patch)
treefd6bf55096bd25c85a0a2a06c3f25dfb3b49ea2a /tdeio
parentddbe23e90d6684548fe9a952b01b3d6cbaf60a7c (diff)
downloadtdelibs-9cb7d7318211f13d690fea92d13aca60b0ae7c5a.tar.gz
tdelibs-9cb7d7318211f13d690fea92d13aca60b0ae7c5a.zip
Push the following patches to GIT from Bug 1499:
tdelibs: disable kfiledialogbox OK button if user has no permission on file tdelibs: fix https loop tdelibs: fix groups in kdialogpropertiesdialog tdelibs: avoid assertion in tdeio karchive
Diffstat (limited to 'tdeio')
-rw-r--r--tdeio/tdefile/kpropertiesdialog.cpp54
-rw-r--r--tdeio/tdeio/karchive.cpp4
-rw-r--r--tdeio/tdeio/tcpslavebase.cpp12
3 files changed, 47 insertions, 23 deletions
diff --git a/tdeio/tdefile/kpropertiesdialog.cpp b/tdeio/tdefile/kpropertiesdialog.cpp
index 49f3359fd..9fd902780 100644
--- a/tdeio/tdefile/kpropertiesdialog.cpp
+++ b/tdeio/tdefile/kpropertiesdialog.cpp
@@ -1764,7 +1764,6 @@ KFilePermissionsPropsPlugin::KFilePermissionsPropsPlugin( KPropertiesDialog *_pr
*/
int i, maxEntries = 1000;
struct passwd *user;
- struct group *ge;
/* File owner: For root, offer a KLineEdit with autocompletion.
* For a user, who can never chown() a file, offer a TQLabel.
@@ -1800,27 +1799,31 @@ KFilePermissionsPropsPlugin::KFilePermissionsPropsPlugin( KPropertiesDialog *_pr
strUser = user->pw_name;
#ifdef Q_OS_UNIX
- setgrent();
- for (i=0; ((ge = getgrent()) != 0L) && (i < maxEntries); i++)
- {
- if (IamRoot)
- groupList += TQString::fromLatin1(ge->gr_name);
- else
- {
- /* pick the groups to which the user belongs */
- char ** members = ge->gr_mem;
- char * member;
- while ((member = *members) != 0L) {
- if (strUser == member) {
- groupList += TQString::fromLocal8Bit(ge->gr_name);
- break;
- }
- ++members;
- }
- }
+ gid_t *groups = NULL;
+ int ng = 1;
+ struct group *mygroup;
+ gid_t *newgroups = NULL;
+
+ groups = (gid_t *) malloc(ng * sizeof(gid_t));
+
+ if (getgrouplist(strUser, user->pw_gid, groups, &ng) == -1) {
+ newgroups = (gid_t *) malloc(ng * sizeof(gid_t));
+ if (newgroups != NULL) {
+ free(groups);
+ groups = newgroups;
+ getgrouplist(strUser, user->pw_gid, groups, &ng);
+ } else ng = 1;
}
- endgrent();
-#endif //Q_OS_UNIX
+
+ for (i = 0; i < ng; i++) {
+ mygroup = getgrgid(groups[i]);
+ if (mygroup != NULL) groupList += TQString::fromLocal8Bit(mygroup->gr_name);
+ }
+
+ free(groups);
+
+#else //Q_OS_UNIX
+ struct group *ge;
/* add the effective Group to the list .. */
ge = getgrgid (getegid());
@@ -1831,6 +1834,7 @@ KFilePermissionsPropsPlugin::KFilePermissionsPropsPlugin( KPropertiesDialog *_pr
if (groupList.find(name) == groupList.end())
groupList += name;
}
+#endif //Q_OS_UNIX
bool isMyGroup = groupList.contains(strGroup);
@@ -2081,6 +2085,7 @@ void KFilePermissionsPropsPlugin::slotShowAdvancedPermissions() {
}
// Draw Checkboxes
+ bool allDisable = true;
TQCheckBox *cba[3][4];
for (int row = 0; row < 3 ; ++row) {
for (int col = 0; col < 4; ++col) {
@@ -2091,6 +2096,9 @@ void KFilePermissionsPropsPlugin::slotShowAdvancedPermissions() {
if ( aPartialPermissions & fperm[row][col] )
{
cb->setTristate();
+ if( d->canChangePermissions ) {
+ allDisable = false;
+ }
cb->setNoChange();
}
else if (d->cbRecursive && d->cbRecursive->isChecked())
@@ -2152,6 +2160,10 @@ void KFilePermissionsPropsPlugin::slotShowAdvancedPermissions() {
}
#endif
+ if ( allDisable ) {
+ dlg.enableButtonOK( false );
+ }
+
if (dlg.exec() != KDialogBase::Accepted)
return;
diff --git a/tdeio/tdeio/karchive.cpp b/tdeio/tdeio/karchive.cpp
index 0e8d6789d..b0e0dc6ab 100644
--- a/tdeio/tdeio/karchive.cpp
+++ b/tdeio/tdeio/karchive.cpp
@@ -588,7 +588,9 @@ const KArchiveEntry* KArchiveDirectory::entry( TQString name ) const
void KArchiveDirectory::addEntry( KArchiveEntry* entry )
{
- Q_ASSERT( !entry->name().isEmpty() );
+ if( entry->name().isEmpty() ) {
+ return;
+ }
if( m_entries[ entry->name() ] ) {
kdWarning() << "KArchiveDirectory::addEntry: directory " << name()
<< " has entry " << entry->name() << " already" << endl;
diff --git a/tdeio/tdeio/tcpslavebase.cpp b/tdeio/tdeio/tcpslavebase.cpp
index e9707a76a..b4b3fa656 100644
--- a/tdeio/tdeio/tcpslavebase.cpp
+++ b/tdeio/tdeio/tcpslavebase.cpp
@@ -1095,7 +1095,13 @@ int TCPSlaveBase::verifyCertificate()
TDEConfig *config = new TDEConfig("tdeioslaverc");
config->setGroup("Notification Messages");
- if (!config->readBoolEntry("WarnOnEnterSSLMode", true)) {
+ bool dialogBoxStatus = false;
+ if( config->hasKey("WarnOnEnterSSLMode") ) {
+ dialogBoxStatus = true;
+ }
+ bool keyStatus = config->readBoolEntry("WarnOnEnterSSLMode", true);
+ dialogBoxStatus = dialogBoxStatus && keyStatus;
+ if (!keyStatus) {
config->deleteEntry("WarnOnEnterSSLMode");
config->sync();
d->kssl->settings()->setWarnOnEnter(false);
@@ -1122,6 +1128,10 @@ int TCPSlaveBase::verifyCertificate()
"showSSLInfoDialog(TQString,TDEIO::MetaData,int)",
data, ignoretype, ignore);
}
+ //Laurent: If we disable message box we can't click on KMessageBox::No
+ if(dialogBoxStatus) {
+ break;
+ }
} while (result != KMessageBox::No);
}