From 167217bec15c9c7aa70ba2a3dc9c689b3cd91872 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Mon, 14 May 2001 14:19:32 +0000 Subject: import new version of dietlibc --- mdk-stage1/dietlibc/lib/opendir.c | 71 +++++++-------------------------------- 1 file changed, 13 insertions(+), 58 deletions(-) (limited to 'mdk-stage1/dietlibc/lib/opendir.c') diff --git a/mdk-stage1/dietlibc/lib/opendir.c b/mdk-stage1/dietlibc/lib/opendir.c index 05c0b9bc8..5c0c4a305 100644 --- a/mdk-stage1/dietlibc/lib/opendir.c +++ b/mdk-stage1/dietlibc/lib/opendir.c @@ -1,63 +1,18 @@ -#include +#include "dietdirent.h" +#include +#include #include -#include #include -#include -#undef _POSIX_PTHREADS -#include - -#include "dirstream.h" - -#ifndef O_DIRECTORY -#define O_DIRECTORY 0200000 /* must be a directory */ -#endif - -/* - * opendir just makes an open() call - it return NULL if it fails - * (open sets errno), otherwise it returns a DIR * pointer. - */ -#undef opendir -DIR * -opendir(const char * name) -{ - int fd; - struct stat statbuf; - struct dirent *buf; - DIR *ptr; - - /* - if (stat(name,&statbuf)) return NULL; - if (!S_ISDIR(statbuf.st_mode)) { - errno = ENOTDIR; - return NULL; - } - */ - if ((fd = open(name,O_RDONLY|O_DIRECTORY)) < 0) - return NULL; - /* According to POSIX, directory streams should be closed when - * exec. From "Anna Pluzhnikov" . - */ - if (fcntl(fd, F_SETFD, FD_CLOEXEC) < 0) - return NULL; - if (!(ptr=malloc(sizeof(*ptr)))) { - close(fd); - errno = ENOMEM; - return NULL; - } - - ptr->dd_max = statbuf.st_blksize; - if (ptr->dd_max < 512) - ptr->dd_max = 512; - if (!(buf=malloc(ptr->dd_max))) { - close(fd); - free(ptr); - errno = ENOMEM; - return NULL; +DIR *opendir (const char *name) { + DIR *t=(DIR*)malloc(sizeof(DIR)); + if (t) { + if ((t->fd=open(name,O_RDONLY|O_DIRECTORY))>=0) { + t->num=t->cur=0; + } else { + free(t); + t=0; + } } - ptr->dd_fd = fd; - ptr->dd_nextoff = ptr->dd_nextloc = ptr->dd_size = 0; - ptr->dd_buf = buf; - ptr->dd_getdents = unknown; - return ptr; + return t; } -- cgit v1.2.1