summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-10-14 15:06:25 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-10-14 15:06:25 +0000
commite2324c081a4b1a0c6d7fdaaa99e0d5ef29325e20 (patch)
tree828a80e48298c57d4b897d3b9a74f9ade00bbdf1 /cpukit/libcsupport
parentFix formatting. (diff)
downloadrtems-e2324c081a4b1a0c6d7fdaaa99e0d5ef29325e20.tar.bz2
2008-10-14 Wei Shen <cquark@gmail.com>
* Makefile.am, preinstall.am, libcsupport/src/mknod.c, libcsupport/src/open.c, libcsupport/src/pipe.c, libfs/Makefile.am, libfs/preinstall.am, libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_creat.c, libfs/src/imfs/imfs_debug.c, libfs/src/imfs/imfs_eval.c, libfs/src/imfs/imfs_initsupp.c, libfs/src/imfs/imfs_mknod.c, libfs/src/imfs/imfs_stat.c, libfs/src/imfs/memfile.c: Initial commit of POSIX pipe support. * libfs/src/imfs/imfs_fifo.c, libfs/src/pipe/fifo.c, libfs/src/pipe/pipe.c, libfs/src/pipe/pipe.h: New files.
Diffstat (limited to 'cpukit/libcsupport')
-rw-r--r--cpukit/libcsupport/src/mknod.c3
-rw-r--r--cpukit/libcsupport/src/open.c4
-rw-r--r--cpukit/libcsupport/src/pipe.c10
3 files changed, 11 insertions, 6 deletions
diff --git a/cpukit/libcsupport/src/mknod.c b/cpukit/libcsupport/src/mknod.c
index c786c6d756..2d1db0fc3d 100644
--- a/cpukit/libcsupport/src/mknod.c
+++ b/cpukit/libcsupport/src/mknod.c
@@ -43,9 +43,6 @@ int mknod(
if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
rtems_set_errno_and_return_minus_one( EINVAL );
- if ( S_ISFIFO(mode) )
- rtems_set_errno_and_return_minus_one( ENOTSUP );
-
rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
if ( !temp_loc.ops->evalformake_h ) {
diff --git a/cpukit/libcsupport/src/open.c b/cpukit/libcsupport/src/open.c
index e29427e568..1bc83ed7bc 100644
--- a/cpukit/libcsupport/src/open.c
+++ b/cpukit/libcsupport/src/open.c
@@ -164,8 +164,10 @@ int open(
}
rc = (*iop->handlers->open_h)( iop, pathname, flags, mode );
- if ( rc )
+ if ( rc ) {
+ rc = errno;
goto done;
+ }
/*
* Optionally truncate the file.
diff --git a/cpukit/libcsupport/src/pipe.c b/cpukit/libcsupport/src/pipe.c
index 57a682e55b..ef8c820483 100644
--- a/cpukit/libcsupport/src/pipe.c
+++ b/cpukit/libcsupport/src/pipe.c
@@ -16,11 +16,17 @@
#endif
#include <errno.h>
+#include <sys/types.h>
+
+extern int pipe_create(int filsdes[2]);
int pipe(
int filsdes[2]
)
{
- errno = ENOSYS;
- return -1;
+ if (filsdes == NULL) {
+ errno = EFAULT;
+ return -1;
+ }
+ return pipe_create(filsdes);
}