ref: 8d59ff3b29f759e550dc421b8cd14d96b83b5001
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;
}