ref: 264cbeaa3965e4f2e8cb5f54019635b6e4cc87ea
dir: /libnpe/opendir.c/
#include <dirent.h>
#include "_dirent.h"
DIR *
opendir(char *name)
{
Dir *dir;
DIR *d;
int fd;
dir = nil;
d = nil;
if((fd = open(name, OREAD|OCEXEC)) >= 0 &&
(dir = dirfstat(fd)) != nil &&
(dir->qid.type & QTDIR) != 0 &&
(d = calloc(1, sizeof(*d))) != nil){
d->fd = fd;
}
free(dir);
if(d == nil)
close(fd);
return d;
}