[PATCH 3/7] IMFS: Simplify IMFS_symlink()

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Feb 10 08:22:47 UTC 2015


On 09/02/15 22:28, Gedare Bloom wrote:
> Nit: should the counted string functions be used?

No, the allocation part takes care that we have enough space in the buffer.

>
> On Mon, Feb 9, 2015 at 3:35 PM, Sebastian Huber
> <sebastian.huber at embedded-brains.de> wrote:
>> ---
>>   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
>>
>> _______________________________________________
>> devel mailing list
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the devel mailing list