/********************************************************************** * Copyright (c) Digital Equipment Corporation 1984, 1985, 1986. * * All Rights Reserved. * * Reference "/usr/src/COPYRIGHT" for applicable restrictions. * **********************************************************************/ /* * static char sccsid[] = "@(#)opendir.c 3.0 4/22/86"; */ #include <sys/types.h> #include <sys/stat.h> #include <ndir.h> /* * open a directory. */ DIR * opendir(name) char *name; { register DIR *dirp; register int fd; struct stat sbuf; if ((fd = open(name, 0)) == -1) return NULL; fstat(fd, &sbuf); if (((sbuf.st_mode & S_IFDIR) == 0) || ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL)) { close (fd); return NULL; } dirp->dd_fd = fd; dirp->dd_loc = 0; return dirp; }