SCCS-vsn: lib/libc/gen/opendir.c 4.2
/* Copyright (c) 1982 Regents of the University of California */
/* Copyright (c) 1982 Regents of the University of California */
-static char sccsid[] = "@(#)opendir.c 4.1 %G%";
+static char sccsid[] = "@(#)opendir.c 4.2 %G%";
opendir(name)
char *name;
{
opendir(name)
char *name;
{
+ register DIR *dirp;
+ struct stat sbuf;
dirp = (DIR *)malloc(sizeof(DIR));
dirp->dd_fd = open(name, 0);
dirp = (DIR *)malloc(sizeof(DIR));
dirp->dd_fd = open(name, 0);
free(dirp);
return NULL;
}
free(dirp);
return NULL;
}
+ fstat(dirp->dd_fd, &sbuf);
+ if ((sbuf.st_mode & S_IFDIR) == 0) {
+ free(dirp);
+ return NULL;
+ }
dirp->dd_loc = 0;
return dirp;
}
dirp->dd_loc = 0;
return dirp;
}