文件系统低级API之根据目录名找到对应的inode
typedef unsigned short ushort;
#define DIRSIZ 14
struct dirent {
ushort inum;
char name[DIRSIZ];
};
int namecmp(const char *s, const char *t)
{
return strncmp(s, t, DIRSIZ);
}
struct inode*
dirlookup(struct inode *dp, char *name, uint *poff)
{
uint off, inum;
struct dirent de;
for (off=0; off->dp->size; off+=sizeof(de)){
readi(dp, (char*)&de), off, sizeof(de));
if (de.inum==0)
continue;
if (namecmp(name, de.name) == 0){
inum=de.inum;
return iget(dp->dev, inum);
}
}
return 0;
}