1*48658Sbostic static char sccsid[] = "@(#)opendir.c 4.3 8/4/82";
2*48658Sbostic 
3*48658Sbostic #include <sys/types.h>
4*48658Sbostic #include <sys/stat.h>
5*48658Sbostic #include <ndir.h>
6*48658Sbostic 
7*48658Sbostic /*
8*48658Sbostic  * open a directory.
9*48658Sbostic  */
10*48658Sbostic DIR *
opendir(name)11*48658Sbostic opendir(name)
12*48658Sbostic 	char *name;
13*48658Sbostic {
14*48658Sbostic 	register DIR *dirp;
15*48658Sbostic 	register int fd;
16*48658Sbostic 	struct stat sbuf;
17*48658Sbostic 
18*48658Sbostic 	if ((fd = open(name, 0)) == -1)
19*48658Sbostic 		return NULL;
20*48658Sbostic 	fstat(fd, &sbuf);
21*48658Sbostic 	if (((sbuf.st_mode & S_IFDIR) == 0) ||
22*48658Sbostic 	    ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL)) {
23*48658Sbostic 		close (fd);
24*48658Sbostic 		return NULL;
25*48658Sbostic 	}
26*48658Sbostic 	dirp->dd_fd = fd;
27*48658Sbostic 	dirp->dd_loc = 0;
28*48658Sbostic 	return dirp;
29*48658Sbostic }
30