summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_mknod.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_mknod.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_mknod.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_mknod.c b/cpukit/libfs/src/imfs/imfs_mknod.c
index ed67192481..1a8438bedf 100644
--- a/cpukit/libfs/src/imfs/imfs_mknod.c
+++ b/cpukit/libfs/src/imfs/imfs_mknod.c
@@ -23,17 +23,20 @@
#include "imfs.h"
-static IMFS_jnode_types_t get_type( mode_t mode )
+static const IMFS_mknod_control *get_control(
+ const IMFS_mknod_controls *controls,
+ mode_t mode
+)
{
if ( S_ISDIR( mode ) ) {
- return IMFS_DIRECTORY;
+ return controls->directory;
} else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {
- return IMFS_DEVICE;
- } else if (S_ISFIFO( mode )) {
- return IMFS_FIFO;
+ return controls->device;
+ } else if ( S_ISFIFO( mode ) ) {
+ return controls->fifo;
} else {
IMFS_assert( S_ISREG( mode ) );
- return IMFS_MEMORY_FILE;
+ return controls->file;
}
}
@@ -48,7 +51,7 @@ int IMFS_mknod(
int rv = 0;
const IMFS_fs_info_t *fs_info = parentloc->mt_entry->fs_info;
const IMFS_mknod_control *mknod_control =
- fs_info->mknod_controls[ get_type( mode ) ];
+ get_control( fs_info->mknod_controls, mode );
IMFS_jnode_t *new_node;
new_node = IMFS_create_node(