bool afsroot::entryok (afsdirentry *de, sfs_aid aid) { afsdir *d = userdir (aid); if (d && d->entryok (de, aid)) return true; return afsdir::entryok (de, aid); }
void afsroot::nfs_lookup (svccb *sbp, str name) { if (afsnode *e = lookup (name, sbp2aid (sbp))) lookup_reply (sbp, e); else userdir (sbp)->nfs_lookup (sbp, name); }
afsdirentry * afsroot::firstentry (sfs_aid aid) { afsdir *d = userdir (aid); afsdirentry *de = afsdir::firstentry (aid); if (!d || !d->lookup (de->name, aid)) return de; return nextentry (de, aid); }
void afsroot::nfs_remove (svccb *sbp) { str name = sbp->vers () == 2 ? str (sbp->Xtmpl getarg<diropargs> ()->name) : str (sbp->Xtmpl getarg<diropargs3> ()->name); if (srvinfo *si = srvinfo::lookup (name)) { si->unmount (0); nfs_error (sbp, nfsstat (EINPROGRESS)); } else if (afsdir *d = userdir (sbp)) d->nfs_remove (sbp); else nfs_error (sbp, NFSERR_ACCES); }
void afsroot::mkfattr3 (fattr3 *f, sfs_aid aid) { /* BSD needs the seconds (not just milliseconds/nanoseconds) of the * mtime to change on every lookup/getattr in order to defeat the * name cache. */ if (aid != lastaid) { lastaid = aid; bumpmtime (); } afsdir::mkfattr3 (f, aid); if (afsdir *d = userdir (aid)) { if (d != afs_naroot) f->mode |= 0222; f->nlink += d->getnlinks () - 2; } }
//-------------------------------- GameProfile::GameProfile(QObject *parent) : QObject(parent), m_accel(false) { userPath = QDir::homePath(); #ifdef Q_OS_WIN32 userPath += "/Application Data/XlabSoft/chains/"; #else userPath += "/.xlabsoft/chains/"; #endif QDir userdir(userPath); if (!userdir.exists()) userdir.mkpath(userPath); m_started = false; m_paused = false; scanThemes(); }
afsdirentry * afsroot::nextentry (afsdirentry *de, sfs_aid aid) { afsdir *d = userdir (aid); if (de->dir == this) { for (de = afsdir::nextentry (de, aid); de; de = afsdir::nextentry (de, aid)) if (!d || !d->lookup (de->name, aid)) return de; } else { assert (de); } if (!d) return NULL; if (!de) return d->firstentry (aid); else return d->nextentry (de, aid); }