[PATCH 3/7] IMFS: Simplify IMFS_symlink()
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Feb 9 20:35:53 UTC 2015
---
cpukit/libfs/src/imfs/imfs_symlink.c | 33 +++++++--------------------------
1 file changed, 7 insertions(+), 26 deletions(-)
diff --git a/cpukit/libfs/src/imfs/imfs_symlink.c b/cpukit/libfs/src/imfs/imfs_symlink.c
index 2ddf99c..0f06446 100644
--- a/cpukit/libfs/src/imfs/imfs_symlink.c
+++ b/cpukit/libfs/src/imfs/imfs_symlink.c
@@ -20,7 +20,6 @@
#include "imfs.h"
-#include <stdlib.h>
#include <string.h>
static const IMFS_node_control IMFS_node_control_sym_link;
@@ -32,33 +31,23 @@ int IMFS_symlink(
const char *target
)
{
- char *dup_target;
IMFS_jnode_t *new_node;
/*
- * Duplicate link name
- */
- dup_target = strdup(target);
- if (dup_target == NULL) {
- rtems_set_errno_and_return_minus_one(ENOMEM);
- }
-
- /*
* Create a new link node.
*/
new_node = IMFS_create_node(
parentloc,
&IMFS_node_control_sym_link,
- sizeof( IMFS_sym_link_t ),
+ sizeof( IMFS_sym_link_t ) + strlen( target ) + 1,
name,
namelen,
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
- dup_target
+ RTEMS_DECONST( char *, target )
);
- if (new_node == NULL) {
- free(dup_target);
- rtems_set_errno_and_return_minus_one(ENOMEM);
+ if ( new_node == NULL ) {
+ rtems_set_errno_and_return_minus_one( ENOMEM );
}
return 0;
@@ -118,23 +107,15 @@ static IMFS_jnode_t *IMFS_node_initialize_sym_link(
{
IMFS_sym_link_t *sym_link = (IMFS_sym_link_t *) node;
- sym_link->name = arg;
+ sym_link->name = (char *) sym_link + sizeof( *sym_link );
+ strcpy( sym_link->name, arg );
return node;
}
-static void IMFS_node_destroy_sym_link( IMFS_jnode_t *node )
-{
- IMFS_sym_link_t *sym_link = (IMFS_sym_link_t *) node;
-
- free( sym_link->name );
-
- IMFS_node_destroy_default( node );
-}
-
static const IMFS_node_control IMFS_node_control_sym_link = {
.handlers = &IMFS_link_handlers,
.node_initialize = IMFS_node_initialize_sym_link,
.node_remove = IMFS_node_remove_default,
- .node_destroy = IMFS_node_destroy_sym_link
+ .node_destroy = IMFS_node_destroy_default
};
--
2.1.4
More information about the devel
mailing list