ref: 7944a8444f40c267b9f622bfbe7f835115f8155a
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;
}