summaryrefslogtreecommitdiff
path: root/noncore
authorumopapisdn <umopapisdn>2003-03-22 00:31:44 (UTC)
committer umopapisdn <umopapisdn>2003-03-22 00:31:44 (UTC)
commitebf65f250904e0619c10b69a0428fcc538ffc167 (patch) (side-by-side diff)
tree1ed0ca90ff564a55116787acff758cb2e4dcb4f8 /noncore
parentab8cb739c666f5f22049258a4bcbb06d1e1ad0c4 (diff)
downloadopie-ebf65f250904e0619c10b69a0428fcc538ffc167.zip
opie-ebf65f250904e0619c10b69a0428fcc538ffc167.tar.gz
opie-ebf65f250904e0619c10b69a0428fcc538ffc167.tar.bz2
Bugfix: Groupmembers should be separated by a comma and not by a space.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/usermanager/passwd.cpp11
-rw-r--r--noncore/settings/usermanager/userdialog.cpp17
2 files changed, 23 insertions, 5 deletions
diff --git a/noncore/settings/usermanager/passwd.cpp b/noncore/settings/usermanager/passwd.cpp
index 0a2bfba..1e98778 100644
--- a/noncore/settings/usermanager/passwd.cpp
+++ b/noncore/settings/usermanager/passwd.cpp
@@ -120,7 +120,7 @@ void Passwd::splitGroupEntry(QString &groupString) {
gr_name=(*it++);
it++;
gr_gid=(*it++).toInt();
- gr_mem=QStringList::split(" ",(*it++));
+ gr_mem=QStringList::split(",",(*it++));
}
// Find a user in the passwdStringList. Return true if found and also fill the pw_* variables.
@@ -239,9 +239,10 @@ bool Passwd::updateGroup(int gid) {
for(QStringList::Iterator it=groupStringList.begin(); it!=groupStringList.end(); ++it) {
if(groupRegExp.find((*it),0)!=-1) {
*it=QString(gr_name+":*:"+QString::number(gr_gid)+":");
- for(QStringList::Iterator member=gr_mem.begin(); member!=gr_mem.end(); ++member) {
+ for(QStringList::Iterator member=gr_mem.begin(); member!=gr_mem.end();) {
*it+=*member;
- *it+=" ";
+ ++member;
+ if(member!=gr_mem.end()) *it+=",";
}
return true;
}
@@ -275,7 +276,9 @@ bool Passwd::delGroup(int gid) {
// Add a user as a member to a group in groupStringList.
bool Passwd::addGroupMember(QString groupname, QString member) {
if(!(findGroup(groupname))) return false;
- gr_mem << member;
+ QRegExp memberRegExp(QString("^%1$").arg(member));
+ QStringList templist=gr_mem.grep(memberRegExp);
+ if(templist.isEmpty()) gr_mem << member;
if(!(updateGroup(gr_gid))) return false;
return true;
}
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp
index c82cc9d..0d2122b 100644
--- a/noncore/settings/usermanager/userdialog.cpp
+++ b/noncore/settings/usermanager/userdialog.cpp
@@ -333,11 +333,26 @@ bool UserDialog::editUser(const char *username) {
edituserDialog->groupComboBox->insertItem("<Undefined group>",0);
edituserDialog->groupComboBox->setCurrentItem(0);
}
+
// Select the groups in the listview, to which the user belongs.
QCheckListItem *temp;
- QRegExp userRegExp(QString("[:\\s]%1\\s").arg(username));
+ // BAH!!! QRegExp in qt2 sucks... or maybe I do... can't figure out how to check for EITHER end of input ($) OR a comma, so here we do two different QRegExps instead.
+ QRegExp userRegExp(QString("[:,]%1$").arg(username)); // The end of line variant.
QStringList tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of.
for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) { // Iterate over all of them.
+ qWarning(*it);
+ QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups.
+ for ( ; lvit.current(); ++lvit ) {
+ if(lvit.current()->text(0)==(*it).left((*it).find(":"))) {
+ temp=(QCheckListItem*)lvit.current();
+ temp->setOn(true); // If we find a line with that groupname, select it.;
+ }
+ }
+ }
+ userRegExp=QRegExp(QString("[:,]%1,").arg(username)); // And the other one. (not end of line.)
+ tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of.
+ for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) { // Iterate over all of them.
+ qWarning(*it);
QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups.
for ( ; lvit.current(); ++lvit ) {
if(lvit.current()->text(0)==(*it).left((*it).find(":"))) {