From 3195d9c0a5ad0d0af6b99b3946a870428ad99ac6 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 8 Mar 1999 21:39:16 +0000 Subject: Added code to translate internal libio flags to POSIX style flags. --- c/src/exec/libcsupport/src/libio.c | 23 ++++++++++++++++++++--- c/src/lib/libc/libio.c | 23 ++++++++++++++++++++--- 2 files changed, 40 insertions(+), 6 deletions(-) (limited to 'c/src') diff --git a/c/src/exec/libcsupport/src/libio.c b/c/src/exec/libcsupport/src/libio.c index bedd4a920e..3ea32222f3 100644 --- a/c/src/exec/libcsupport/src/libio.c +++ b/c/src/exec/libcsupport/src/libio.c @@ -158,9 +158,26 @@ unsigned32 rtems_libio_to_fcntl_flags( { unsigned32 fcntl_flags = 0; - fcntl_flags = rtems_assoc_remote_by_local( access_modes_assoc, flags ); - fcntl_flags |= - rtems_assoc_remote_by_local_bitfield(status_flags_assoc, flags); + if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { + fcntl_flags |= O_RDWR; + } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) { + fcntl_flags |= O_RDONLY; + } else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) { + fcntl_flags |= O_WRONLY; + } + + if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) { + fcntl_flags |= O_NDELAY; + } + + if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) { + fcntl_flags |= O_APPEND; + } + + if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) { + fcntl_flags |= O_CREAT; + } + return fcntl_flags; } diff --git a/c/src/lib/libc/libio.c b/c/src/lib/libc/libio.c index bedd4a920e..3ea32222f3 100644 --- a/c/src/lib/libc/libio.c +++ b/c/src/lib/libc/libio.c @@ -158,9 +158,26 @@ unsigned32 rtems_libio_to_fcntl_flags( { unsigned32 fcntl_flags = 0; - fcntl_flags = rtems_assoc_remote_by_local( access_modes_assoc, flags ); - fcntl_flags |= - rtems_assoc_remote_by_local_bitfield(status_flags_assoc, flags); + if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { + fcntl_flags |= O_RDWR; + } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) { + fcntl_flags |= O_RDONLY; + } else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) { + fcntl_flags |= O_WRONLY; + } + + if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) { + fcntl_flags |= O_NDELAY; + } + + if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) { + fcntl_flags |= O_APPEND; + } + + if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) { + fcntl_flags |= O_CREAT; + } + return fcntl_flags; } -- cgit v1.2.3