Exemple #1
0
static void
fsstat(Req *r)
{
    int i, path;

    path = r->fid->qid.path;
    switch(path) {
    case Qroot:
        fillstat(&r->d, "/", QTDIR, Qroot, 0555|DMDIR);
        break;
    case Qfactotum:
        fillstat(&r->d, "factotum", QTDIR, Qfactotum, 0555|DMDIR);
        break;
    default:
        for(i=0; i<nelem(dirtab); i++)
            if(dirtab[i].qidpath == path) {
                fillstat(&r->d, dirtab[i].name, 0, dirtab[i].qidpath, dirtab[i].perm);
                goto Break2;
            }
        respond(r, "file not found");
        break;
    }
Break2:
    respond(r, nil);
}
Exemple #2
0
static int
execgen(int i, Dir *d, void*)
{
	if(i < 1){
		fillstat(d, PATH(Qclone, 0));
		return 0;
	}
	i -= 1;

	if(i < nclient){
		fillstat(d, PATH(Qn, i));
		return 0;
	}
	return -1;
}
Exemple #3
0
static int
rootgen(int i, Dir *d, void*)
{
	if(i < 1){
		fillstat(d, PATH(Qexec, 0));
		return 0;
	}
	return -1;
}
Exemple #4
0
static int
fsdirgen(int n, Dir *dir, void *v)
{
    USED(v);

    if(n >= nelem(dirtab))
        return -1;
    fillstat(dir, dirtab[n].name, 0, dirtab[n].qidpath, dirtab[n].perm);
    return 0;
}
Exemple #5
0
static int
rootdirgen(int n, Dir *dir, void *v)
{
    USED(v);

    if(n > 0)
        return -1;

    fillstat(dir, factname, QTDIR, Qfactotum, DMDIR|0555);
    return 0;
}
Exemple #6
0
static void
fsstat(Req *r)
{
	Aux *a;

	a = r->fid->aux;
	if(r->fid->qid.path == 0 && (r->fid->qid.type & QTDIR))
		nntprefreshall(net);
	else if(a->g->isgroup)
		nntprefresh(net, a->g);
	fillstat(&r->d, a);
	respond(r, nil);
}
Exemple #7
0
static int
conngen(int i, Dir *d, void *aux)
{
	Client *c;

	c = aux;
	i += Qn+1;
	if(i <= Qstatus){
		fillstat(d, PATH(i, c->num));
		return 0;
	}
	return -1;
}
Exemple #8
0
static void
fsstat(Req *r)
{
	fillstat(&r->d, r->fid->qid.path);
	respond(r, nil);
}