summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_creat.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-15 10:38:15 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-15 11:26:39 +0100
commita43a34666e2124c24e86794206aa78d2ad5e910d (patch)
tree9cee489e9763ab32904bad5eef921c3411d7ca3f /cpukit/libfs/src/imfs/imfs_creat.c
parentIMFS: Add CONFIGURE_IMFS_DISABLE_READDIR (diff)
downloadrtems-a43a34666e2124c24e86794206aa78d2ad5e910d.tar.bz2
IMFS: Implement variable length node names
This reduces the average node size and adds more flexibility.
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_creat.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_creat.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_creat.c b/cpukit/libfs/src/imfs/imfs_creat.c
index 9675ca35a3..2e24972a28 100644
--- a/cpukit/libfs/src/imfs/imfs_creat.c
+++ b/cpukit/libfs/src/imfs/imfs_creat.c
@@ -35,7 +35,7 @@ IMFS_jnode_t *IMFS_create_node(
IMFS_jnode_t *allocated_node;
IMFS_jnode_t *node;
- allocated_node = calloc( 1, node_size );
+ allocated_node = calloc( 1, node_size + namelen );
if ( allocated_node == NULL ) {
errno = ENOMEM;
@@ -45,7 +45,7 @@ IMFS_jnode_t *IMFS_create_node(
node = IMFS_initialize_node(
allocated_node,
node_control,
- name,
+ (char *) allocated_node + node_size,
namelen,
mode,
arg
@@ -53,6 +53,8 @@ IMFS_jnode_t *IMFS_create_node(
if ( node != NULL ) {
IMFS_jnode_t *parent = parentloc->node_access;
+ memcpy( node->name, name, namelen );
+
/*
* This node MUST have a parent, so put it in that directory list.
*/