|
|
1.1 ! root 1: static char sccsid[] = "@(#)opendir.c 4.3 8/4/82"; ! 2: ! 3: #include <sys/types.h> ! 4: #include <sys/stat.h> ! 5: #include <ndir.h> ! 6: ! 7: /* ! 8: * open a directory. ! 9: */ ! 10: DIR * ! 11: opendir(name) ! 12: char *name; ! 13: { ! 14: register DIR *dirp; ! 15: register int fd; ! 16: struct stat sbuf; ! 17: ! 18: if ((fd = open(name, 0)) == -1) ! 19: return NULL; ! 20: fstat(fd, &sbuf); ! 21: if (((sbuf.st_mode & S_IFDIR) == 0) || ! 22: ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL)) { ! 23: close (fd); ! 24: return NULL; ! 25: } ! 26: dirp->dd_fd = fd; ! 27: dirp->dd_loc = 0; ! 28: return dirp; ! 29: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.