Source Code (Use browser search to find items of interest.)
Class Index
kuser'KGroups (./kdeadmin/kuser/kgroup.h:43)
class KGroups {
public:
KGroups();
~KGroups();
KGroup *lookup(const QString &name);
KGroup *lookup(gid_t gid);
gid_t first_free();
bool save();
bool load();
KGroup *first();
KGroup *next();
KGroup *operator[](uint num);
void add(KGroup *ku);
void del(KGroup *au);
uint count() const;
protected:
int g_saved;
QList<KGroup> g;
int mode;
uid_t uid;
gid_t gid;
};
kuser'KGroups::KGroups() (./kdeadmin/kuser/kgroup.cpp:112)
KGroups::KGroups() {
g_saved = 0;
mode = 0644;
uid = 0;
gid = 0;
g.setAutoDelete(TRUE);
if (!load())
err->display();
}
kuser'KGroups::load() (./kdeadmin/kuser/kgroup.cpp:125)
bool KGroups::load() {
struct group *p;
KGroup *tmpKG = 0;
struct stat st;
stat(GROUP_FILE, &st);
mode = st.st_mode;
uid = st.st_uid;
gid = st.st_gid;
#ifdef HAVE_FGETGRENT
FILE *fgrp = fopen(GROUP_FILE, "r");
QString tmp;
if (fgrp == 0) {
err->addMsg(i18n("Error opening %1 for reading").arg(GROUP_FILE));
return FALSE;
}
while ((p = fgetgrent(fgrp)) != NULL) {
#else
while ((p = getgrent()) != NULL) {
#endif
tmpKG = new KGroup();
tmpKG->setGID(p->gr_gid);
tmpKG->setName(p->gr_name);
tmpKG->setPwd(p->gr_passwd);
char *u_name;
int i = 0;
while ((u_name = p->gr_mem[i])!=0) {
tmpKG->addUser(u_name);
i++;
}
g.append(tmpKG);
}
#ifdef HAVE_FGETGRENT
fclose(fgrp);
#endif
return TRUE;
}
kuser'KGroups::save() (./kdeadmin/kuser/kgroup.cpp:169)
bool KGroups::save() {
FILE *grp;
QString tmpS;
QString tmp;
if (!g_saved) {
backup(GROUP_FILE);
g_saved = TRUE;
}
umask(0077);
if ((grp = fopen(GROUP_FILE, "w")) == NULL) {
err->addMsg(i18n("Error opening %1 for writing").arg(GROUP_FILE));
return FALSE;
}
for (unsigned int i=0; i<g.count(); i++) {
KGroup *gr = g.at(i);
tmpS = QString("%1:%2:%3:")
.arg(gr->getName())
.arg(gr->getPwd())
.arg(gr->getGID());
for (uint j=0; j<gr->count(); j++) {
if (j != 0)
tmpS += ',';
tmpS += gr->user(j);
}
tmpS += '\n';
fputs(tmpS, grp);
}
fclose(grp);
chmod(GROUP_FILE, mode);
chown(GROUP_FILE, uid, gid);
#ifdef GRMKDB
if (system(GRMKDB) != 0) {
err->addMsg(i18n("Unable to build group database"), STOP);
return FALSE;
}
#endif
return TRUE;
}
kuser'KGroups::lookup() (./kdeadmin/kuser/kgroup.cpp:215)
KGroup *KGroups::lookup(const QString &name) {
for (uint i = 0; i<g.count(); i++)
if (g.at(i)->getName() == name)
return g.at(i);
return NULL;
}
kuser'KGroups::lookup() (./kdeadmin/kuser/kgroup.cpp:222)
KGroup *KGroups::lookup(gid_t gid) {
for (uint i = 0; i<g.count(); i++)
if (g.at(i)->getGID() == gid)
return g.at(i);
return NULL;
}
kuser'KGroups::first_free() (./kdeadmin/kuser/kgroup.cpp:229)
gid_t KGroups::first_free() {
gid_t t = _KU_FIRST_GID ;
for (t = _KU_FIRST_GID ; t<65534; t++)
if (lookup(t) == NULL)
return t;
err->addMsg(i18n("You have more than 65534 groups!?!? You have ran out of gid space!"));
return (-1);
}
kuser'KGroups::~KGroups() (./kdeadmin/kuser/kgroup.cpp:240)
KGroups::~KGroups() {
g.clear();
}
kuser'KGroups::first() (./kdeadmin/kuser/kgroup.cpp:248)
KGroup *KGroups::first() {
return g.first();
}
kuser'KGroups::next() (./kdeadmin/kuser/kgroup.cpp:252)
KGroup *KGroups::next() {
return g.next();
}
kuser'KGroups::add() (./kdeadmin/kuser/kgroup.cpp:256)
void KGroups::add(KGroup *ku) {
g.append(ku);
}
kuser'KGroups::del() (./kdeadmin/kuser/kgroup.cpp:260)
void KGroups::del(KGroup *au) {
g.remove(au);
}
kuser'KGroups::count() (./kdeadmin/kuser/kgroup.cpp:264)
uint KGroups::count() const {
return g.count();
}