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*48658Sbosticopendir(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