From 02fec4701cee79f875c1d02b8b4aee09380dbcb8 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 4 Jan 2001 20:04:45 +0000 Subject: integrate dietlibc/stdio per default for cdrom and disk only installs --- mdk-stage1/dietlibc/lib/readdir.c | 83 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 mdk-stage1/dietlibc/lib/readdir.c (limited to 'mdk-stage1/dietlibc/lib/readdir.c') diff --git a/mdk-stage1/dietlibc/lib/readdir.c b/mdk-stage1/dietlibc/lib/readdir.c new file mode 100644 index 000000000..5accd32a1 --- /dev/null +++ b/mdk-stage1/dietlibc/lib/readdir.c @@ -0,0 +1,83 @@ +#if 0 + +Sorry, currently broken + +#include +#include +#include +#include +#include + +#include "dirstream.h" + +#ifdef __ELF__ +#pragma weak readdir = __libc_readdir +#endif + +struct dirent * +__libc_readdir(DIR * dir) +{ + int result; + struct dirent *de; + + if (!dir) { + errno = EBADF; + return NULL; + } + + /* Are we running an old kernel? */ + if (dir->dd_getdents == no_getdents) + { + abort(); + } + + if (dir->dd_size <= dir->dd_nextloc) + { + /* read dir->dd_max bytes of directory entries. */ + result=getdents(dir->dd_fd,dir->dd_buf,dir->dd_max); + + /* We assume we have getdents (). */ + dir->dd_getdents = have_getdents; + if (result <= 0) + { + result = -result; + if (result > 0) + { + /* Are we right? */ + if (result == ENOSYS) + { + dir->dd_getdents = no_getdents; + abort(); + } + errno = result; + } + + return NULL; + } + + dir->dd_size = result; + dir->dd_nextloc = 0; + } + + de = (struct dirent *) (((char *)dir->dd_buf) + dir->dd_nextloc); + + /* Am I right? H.J. */ + dir->dd_nextloc += de->d_reclen; + + /* We have to save the next offset here. */ + dir->dd_nextoff = de->d_off; + + /* convert */ + dir->convbuf.d_ino=de->d_ino; + dir->convbuf.d_off=de->d_off; + dir->convbuf.d_reclen=de->d_reclen; + dir->convbuf.d_type=0; + if (strlen((char*)&de->d_type)>10) + de->d_name[10]=0; + strcpy(dir->convbuf.d_name,(char*)&de->d_type); + errno=0; + + return &dir->convbuf; +} + +#endif -- cgit v1.2.1