summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2002-09-14 17:04:05 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2002-09-14 17:04:05 +0000
commit193fe690070bb040b36bf7d2639b454d88c37d3f (patch)
tree26c894c8f3799b2ceb91ac83a0d550bb8ed06932
parent2002-09-13 Eric Norum <eric.norum@usask.ca> (diff)
downloadrtems-193fe690070bb040b36bf7d2639b454d88c37d3f.tar.bz2
2002-09-14 Eric Norum <eric.norum@usask.ca>
* src/readdir_r.c: New file. * Makefile.am: Reflect above.
-rw-r--r--cpukit/libcsupport/ChangeLog5
-rw-r--r--cpukit/libcsupport/Makefile.am32
-rw-r--r--cpukit/libcsupport/src/readdir_r.c22
3 files changed, 46 insertions, 13 deletions
diff --git a/cpukit/libcsupport/ChangeLog b/cpukit/libcsupport/ChangeLog
index b6738e5d67..d88e9059cf 100644
--- a/cpukit/libcsupport/ChangeLog
+++ b/cpukit/libcsupport/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-14 Eric Norum <eric.norum@usask.ca>
+
+ * src/readdir_r.c: New file.
+ * Makefile.am: Reflect above.
+
2002-08-12 Eric Norum <eric.norum@usask.ca>
* src/write.c (_write_r): Change prototype to match newlib's reent.h.
diff --git a/cpukit/libcsupport/Makefile.am b/cpukit/libcsupport/Makefile.am
index 53c3f3dc94..b758db0d61 100644
--- a/cpukit/libcsupport/Makefile.am
+++ b/cpukit/libcsupport/Makefile.am
@@ -97,28 +97,34 @@ ASSOCIATION_C_FILES = src/assoc.c src/assocnamebad.c
BASE_FS_C_FILES = src/base_fs.c src/mount.c src/unmount.c src/libio.c \
src/libio_sockets.c src/eval.c src/fs_null_handlers.c src/privateenv.c
-TERMIOS_C_FILES = src/cfgetispeed.c src/cfgetospeed.c src/cfsetispeed.c src/cfsetospeed.c \
- src/tcgetattr.c src/tcsetattr.c src/tcdrain.c src/tcflow.c src/tcflush.c src/tcgetprgrp.c \
- src/tcsendbreak.c src/tcsetpgrp.c src/termios.c src/termiosinitialize.c \
+TERMIOS_C_FILES = src/cfgetispeed.c src/cfgetospeed.c src/cfsetispeed.c \
+ src/cfsetospeed.c src/tcgetattr.c src/tcsetattr.c src/tcdrain.c \
+ src/tcflow.c src/tcflush.c src/tcgetprgrp.c src/tcsendbreak.c \
+ src/tcsetpgrp.c src/termios.c src/termiosinitialize.c \
src/termiosreserveresources.c
-SYSTEM_CALL_C_FILES = src/open.c src/close.c src/read.c src/write.c src/lseek.c src/ioctl.c src/mkdir.c \
- src/mknod.c src/mkfifo.c src/rmdir.c src/chdir.c src/chmod.c src/fchdir.c src/fchmod.c src/chown.c \
- src/link.c src/unlink.c src/umask.c src/ftruncate.c src/utime.c src/fstat.c src/fcntl.c src/fpathconf.c \
- src/getdents.c src/fsync.c src/fdatasync.c src/pipe.c src/dup.c src/dup2.c src/symlink.c src/readlink.c \
- src/creat.c src/chroot.c
+SYSTEM_CALL_C_FILES = src/open.c src/close.c src/read.c src/write.c \
+ src/lseek.c src/ioctl.c src/mkdir.c src/mknod.c src/mkfifo.c src/rmdir.c \
+ src/chdir.c src/chmod.c src/fchdir.c src/fchmod.c src/chown.c src/link.c \
+ src/unlink.c src/umask.c src/ftruncate.c src/utime.c src/fstat.c \
+ src/fcntl.c src/fpathconf.c src/getdents.c src/fsync.c src/fdatasync.c \
+ src/pipe.c src/dup.c src/dup2.c src/symlink.c src/readlink.c src/creat.c \
+ src/chroot.c
-DIRECTORY_SCAN_C_FILES = src/opendir.c src/closedir.c src/readdir.c src/rewinddir.c \
- src/scandir.c src/seekdir.c src/telldir.c src/getcwd.c
+DIRECTORY_SCAN_C_FILES = src/opendir.c src/closedir.c src/readdir.c \
+ src/readdir_r.c src/rewinddir.c src/scandir.c src/seekdir.c \
+ src/telldir.c src/getcwd.c
MALLOC_C_FILES = src/malloc.c src/mallocfreespace.c src/__brk.c src/__sbrk.c
PASSWORD_GROUP_C_FILES = src/getpwent.c src/getgrent.c
-TERMINAL_IDENTIFICATION_C_FILES = src/ctermid.c src/isatty.c src/ttyname.c src/ttyname_r.c
+TERMINAL_IDENTIFICATION_C_FILES = src/ctermid.c src/isatty.c src/ttyname.c \
+ src/ttyname_r.c
-LIBC_GLUE_C_FILES = src/__getpid.c src/__gettod.c src/__times.c src/truncate.c src/access.c \
- src/stat.c src/lstat.c src/pathconf.c src/newlibc.c src/no_posix.c src/no_libc.c src/utsname.c
+LIBC_GLUE_C_FILES = src/__getpid.c src/__gettod.c src/__times.c \
+ src/truncate.c src/access.c src/stat.c src/lstat.c src/pathconf.c \
+ src/newlibc.c src/no_posix.c src/no_libc.c src/utsname.c
UNIX_LIBC_C_FILES = src/unixlibc.c src/hosterr.c
diff --git a/cpukit/libcsupport/src/readdir_r.c b/cpukit/libcsupport/src/readdir_r.c
new file mode 100644
index 0000000000..9ddb84f97c
--- /dev/null
+++ b/cpukit/libcsupport/src/readdir_r.c
@@ -0,0 +1,22 @@
+/*
+ * readdir_r - reentrant version of readdir()
+ *
+ * $Id$
+ */
+
+#include <sys/types.h>
+#include <dirent.h>
+#include <errno.h>
+#include <stdio.h>
+
+/*
+ * The RTEMS version of readdir is already thread-safe.
+ */
+
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result)
+{
+ *result = readdir(dirp);
+ if (*result)
+ *entry = **result;
+ return *result ? 0 : errno;
+}