summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_initsupp.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_initsupp.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_initsupp.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_initsupp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_initsupp.c b/cpukit/libfs/src/imfs/imfs_initsupp.c
index 5f0df250e5..242856340e 100644
--- a/cpukit/libfs/src/imfs/imfs_initsupp.c
+++ b/cpukit/libfs/src/imfs/imfs_initsupp.c
@@ -78,10 +78,10 @@ IMFS_jnode_t *IMFS_initialize_node(
/*
* Fill in the basic information
*/
+ node->name = name;
+ node->namelen = namelen;
node->reference_count = 1;
node->st_nlink = 1;
- memcpy( node->name, name, namelen );
- node->name [namelen] = '\0';
node->control = node_control;
/*
@@ -192,6 +192,10 @@ IMFS_jnode_t *IMFS_node_remove_default(
void IMFS_node_destroy_default( IMFS_jnode_t *node )
{
+ if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) {
+ free( node->name );
+ }
+
free( node );
}