15750Smckusick /* Copyright (c) 1982 Regents of the University of California */ 25750Smckusick 3*6097Smckusic static char sccsid[] = "@(#)opendir.c 4.2 03/10/82"; 45750Smckusick 55750Smckusick #include <sys/types.h> 6*6097Smckusic #include <sys/stat.h> 75750Smckusick #include <ndir.h> 85750Smckusick 95750Smckusick /* 105750Smckusick * open a directory. 115750Smckusick */ 125750Smckusick DIR * 135750Smckusick opendir(name) 145750Smckusick char *name; 155750Smckusick { 16*6097Smckusic register DIR *dirp; 17*6097Smckusic struct stat sbuf; 185750Smckusick 195750Smckusick dirp = (DIR *)malloc(sizeof(DIR)); 205750Smckusick dirp->dd_fd = open(name, 0); 215750Smckusick if (dirp->dd_fd == -1) { 225750Smckusick free(dirp); 235750Smckusick return NULL; 245750Smckusick } 25*6097Smckusic fstat(dirp->dd_fd, &sbuf); 26*6097Smckusic if ((sbuf.st_mode & S_IFDIR) == 0) { 27*6097Smckusic free(dirp); 28*6097Smckusic return NULL; 29*6097Smckusic } 305750Smckusick dirp->dd_loc = 0; 315750Smckusick return dirp; 325750Smckusick } 33