35 lines
657 B
C
35 lines
657 B
C
#include "u.h"
|
|
#include "../port/lib.h"
|
|
#include "mem.h"
|
|
#include "dat.h"
|
|
#include "fns.h"
|
|
#include "../port/error.h"
|
|
|
|
/*
|
|
* the zeroth element of the table MUST be the directory itself for ..
|
|
*/
|
|
int
|
|
devgen(Chan *c, char *name, Dirtab *tab, int ntab, int i, Dir *dp)
|
|
{
|
|
if(tab == 0)
|
|
return -1;
|
|
if(i == DEVDOTDOT){
|
|
/* nothing */
|
|
}else if(name){
|
|
for(i=1; i<ntab; i++)
|
|
if(strcmp(tab[i].name, name) == 0)
|
|
break;
|
|
if(i==ntab)
|
|
return -1;
|
|
tab += i;
|
|
}else{
|
|
/* skip over the first element, that for . itself */
|
|
i++;
|
|
if(i >= ntab)
|
|
return -1;
|
|
tab += i;
|
|
}
|
|
devdir(c, tab->qid, tab->name, tab->length, eve, tab->perm, dp);
|
|
return 1;
|
|
}
|