summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/imfs')
-rw-r--r--cpukit/libfs/src/imfs/deviceio.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs.h40
-rw-r--r--cpukit/libfs/src/imfs/imfs_config.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_creat.c15
-rw-r--r--cpukit/libfs/src/imfs/imfs_getchild.c4
-rw-r--r--cpukit/libfs/src/imfs/imfs_handlers_device.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_handlers_directory.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_handlers_link.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_handlers_memfile.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_init.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_initsupp.c8
-rw-r--r--cpukit/libfs/src/imfs/imfs_symlink.c17
-rw-r--r--cpukit/libfs/src/imfs/imfs_unixstub.c4
-rw-r--r--cpukit/libfs/src/imfs/miniimfs_init.c2
14 files changed, 56 insertions, 48 deletions
diff --git a/cpukit/libfs/src/imfs/deviceio.c b/cpukit/libfs/src/imfs/deviceio.c
index 8c44e0a223..05edf454f7 100644
--- a/cpukit/libfs/src/imfs/deviceio.c
+++ b/cpukit/libfs/src/imfs/deviceio.c
@@ -29,7 +29,7 @@
* Convert RTEMS status to a UNIX errno
*/
-rtems_assoc_t errno_assoc[] = {
+const rtems_assoc_t errno_assoc[] = {
{ "OK", RTEMS_SUCCESSFUL, 0 },
{ "BUSY", RTEMS_RESOURCE_IN_USE, EBUSY },
{ "INVALID NAME", RTEMS_INVALID_NAME, EINVAL },
diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h
index 2f69537b83..ae1839b3f7 100644
--- a/cpukit/libfs/src/imfs/imfs.h
+++ b/cpukit/libfs/src/imfs/imfs.h
@@ -56,7 +56,7 @@ typedef struct {
} IMFS_link_t;
typedef struct {
- const char *name;
+ char *name;
} IMFS_sym_link_t;
/*
@@ -205,9 +205,9 @@ struct IMFS_jnode_tt {
} while (0)
typedef struct {
- ino_t ino_count;
- rtems_filesystem_file_handlers_r *memfile_handlers;
- rtems_filesystem_file_handlers_r *directory_handlers;
+ ino_t ino_count;
+ const rtems_filesystem_file_handlers_r *memfile_handlers;
+ const rtems_filesystem_file_handlers_r *directory_handlers;
} IMFS_fs_info_t;
/*
@@ -226,13 +226,13 @@ typedef enum {
* Shared Data
*/
-extern rtems_filesystem_file_handlers_r IMFS_directory_handlers;
-extern rtems_filesystem_file_handlers_r IMFS_device_handlers;
-extern rtems_filesystem_file_handlers_r IMFS_link_handlers;
-extern rtems_filesystem_file_handlers_r IMFS_memfile_handlers;
-extern rtems_filesystem_operations_table IMFS_ops;
-extern rtems_filesystem_operations_table miniIMFS_ops;
-extern rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS;
+extern const rtems_filesystem_file_handlers_r IMFS_directory_handlers;
+extern const rtems_filesystem_file_handlers_r IMFS_device_handlers;
+extern const rtems_filesystem_file_handlers_r IMFS_link_handlers;
+extern const rtems_filesystem_file_handlers_r IMFS_memfile_handlers;
+extern const rtems_filesystem_operations_table IMFS_ops;
+extern const rtems_filesystem_operations_table miniIMFS_ops;
+extern const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS;
/*
* Routines
@@ -247,10 +247,10 @@ int miniIMFS_initialize(
);
int IMFS_initialize_support(
- rtems_filesystem_mount_table_entry_t *mt_entry,
- rtems_filesystem_operations_table *op_table,
- rtems_filesystem_file_handlers_r *memfile_handlers,
- rtems_filesystem_file_handlers_r *directory_handlers
+ rtems_filesystem_mount_table_entry_t *mt_entry,
+ const rtems_filesystem_operations_table *op_table,
+ const rtems_filesystem_file_handlers_r *memfile_handlers,
+ const rtems_filesystem_file_handlers_r *directory_handlers
);
int IMFS_fsunmount(
@@ -340,11 +340,11 @@ int IMFS_mknod(
);
IMFS_jnode_t *IMFS_create_node(
- rtems_filesystem_location_info_t *parent_loc, /* IN */
- IMFS_jnode_types_t type, /* IN */
- char *name, /* IN */
- mode_t mode, /* IN */
- IMFS_types_union *info /* IN */
+ rtems_filesystem_location_info_t *parent_loc, /* IN */
+ IMFS_jnode_types_t type, /* IN */
+ const char *name, /* IN */
+ mode_t mode, /* IN */
+ const IMFS_types_union *info /* IN */
);
int IMFS_evaluate_for_make(
diff --git a/cpukit/libfs/src/imfs/imfs_config.c b/cpukit/libfs/src/imfs/imfs_config.c
index 20da389fa2..78f947e81f 100644
--- a/cpukit/libfs/src/imfs/imfs_config.c
+++ b/cpukit/libfs/src/imfs/imfs_config.c
@@ -19,7 +19,7 @@
/* XXX this structure should use real constants */
-rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
+const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
5, /* link_max */
6, /* max_canon */
7, /* max_input */
diff --git a/cpukit/libfs/src/imfs/imfs_creat.c b/cpukit/libfs/src/imfs/imfs_creat.c
index 94d9dac9c1..1eaea0b384 100644
--- a/cpukit/libfs/src/imfs/imfs_creat.c
+++ b/cpukit/libfs/src/imfs/imfs_creat.c
@@ -24,18 +24,17 @@
#include <rtems/libio_.h>
IMFS_jnode_t *IMFS_create_node(
- rtems_filesystem_location_info_t *parent_loc,
- IMFS_jnode_types_t type,
- char *name,
- mode_t mode,
- IMFS_types_union *info
+ rtems_filesystem_location_info_t *parent_loc,
+ IMFS_jnode_types_t type,
+ const char *name,
+ mode_t mode,
+ const IMFS_types_union *info
)
{
IMFS_jnode_t *node;
struct timeval tv;
IMFS_jnode_t *parent = NULL;
IMFS_fs_info_t *fs_info;
- char *sym_name;
if ( parent_loc != NULL )
parent = parent_loc->node_access;
@@ -94,9 +93,7 @@ IMFS_jnode_t *IMFS_create_node(
break;
case IMFS_SYM_LINK:
- sym_name = calloc( 1, strlen( info->sym_link.name ) + 1 );
- strcpy( sym_name, info->sym_link.name );
- node->info.sym_link.name = sym_name;
+ node->info.sym_link.name = info->sym_link.name;
break;
case IMFS_DEVICE:
diff --git a/cpukit/libfs/src/imfs/imfs_getchild.c b/cpukit/libfs/src/imfs/imfs_getchild.c
index 67663db8ea..0c29516dd7 100644
--- a/cpukit/libfs/src/imfs/imfs_getchild.c
+++ b/cpukit/libfs/src/imfs/imfs_getchild.c
@@ -22,8 +22,8 @@
#include <string.h>
#include "imfs.h"
-static char dotname[2] = ".";
-static char dotdotname[3] = "..";
+static const char dotname[2] = ".";
+static const char dotdotname[3] = "..";
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
diff --git a/cpukit/libfs/src/imfs/imfs_handlers_device.c b/cpukit/libfs/src/imfs/imfs_handlers_device.c
index fa373b8b91..a1ed7ab912 100644
--- a/cpukit/libfs/src/imfs/imfs_handlers_device.c
+++ b/cpukit/libfs/src/imfs/imfs_handlers_device.c
@@ -23,7 +23,7 @@
* Handler table for IMFS device nodes
*/
-rtems_filesystem_file_handlers_r IMFS_device_handlers = {
+const rtems_filesystem_file_handlers_r IMFS_device_handlers = {
device_open,
device_close,
device_read,
diff --git a/cpukit/libfs/src/imfs/imfs_handlers_directory.c b/cpukit/libfs/src/imfs/imfs_handlers_directory.c
index b9453a0725..18ec588876 100644
--- a/cpukit/libfs/src/imfs/imfs_handlers_directory.c
+++ b/cpukit/libfs/src/imfs/imfs_handlers_directory.c
@@ -23,7 +23,7 @@
* Set of operations handlers for operations on directories.
*/
-rtems_filesystem_file_handlers_r IMFS_directory_handlers = {
+const rtems_filesystem_file_handlers_r IMFS_directory_handlers = {
imfs_dir_open,
imfs_dir_close,
imfs_dir_read,
diff --git a/cpukit/libfs/src/imfs/imfs_handlers_link.c b/cpukit/libfs/src/imfs/imfs_handlers_link.c
index f4b926dcab..038da475fc 100644
--- a/cpukit/libfs/src/imfs/imfs_handlers_link.c
+++ b/cpukit/libfs/src/imfs/imfs_handlers_link.c
@@ -23,7 +23,7 @@
* Handler table for IMFS device nodes
*/
-rtems_filesystem_file_handlers_r IMFS_link_handlers = {
+const rtems_filesystem_file_handlers_r IMFS_link_handlers = {
NULL, /* open */
NULL, /* close */
NULL, /* read */
diff --git a/cpukit/libfs/src/imfs/imfs_handlers_memfile.c b/cpukit/libfs/src/imfs/imfs_handlers_memfile.c
index 1db049b504..3b765f0149 100644
--- a/cpukit/libfs/src/imfs/imfs_handlers_memfile.c
+++ b/cpukit/libfs/src/imfs/imfs_handlers_memfile.c
@@ -23,7 +23,7 @@
* Set of operations handlers for operations on memfile entities.
*/
-rtems_filesystem_file_handlers_r IMFS_memfile_handlers = {
+const rtems_filesystem_file_handlers_r IMFS_memfile_handlers = {
memfile_open,
memfile_close,
memfile_read,
diff --git a/cpukit/libfs/src/imfs/imfs_init.c b/cpukit/libfs/src/imfs/imfs_init.c
index 4ed08bd500..81091bc936 100644
--- a/cpukit/libfs/src/imfs/imfs_init.c
+++ b/cpukit/libfs/src/imfs/imfs_init.c
@@ -33,7 +33,7 @@
* IMFS file system operations table
*/
-rtems_filesystem_operations_table IMFS_ops = {
+const rtems_filesystem_operations_table IMFS_ops = {
IMFS_eval_path,
IMFS_evaluate_for_make,
IMFS_link,
diff --git a/cpukit/libfs/src/imfs/imfs_initsupp.c b/cpukit/libfs/src/imfs/imfs_initsupp.c
index 29b014d374..05f7ab768a 100644
--- a/cpukit/libfs/src/imfs/imfs_initsupp.c
+++ b/cpukit/libfs/src/imfs/imfs_initsupp.c
@@ -66,10 +66,10 @@ static int IMFS_determine_bytes_per_block(
*/
int IMFS_initialize_support(
- rtems_filesystem_mount_table_entry_t *temp_mt_entry,
- rtems_filesystem_operations_table *op_table,
- rtems_filesystem_file_handlers_r *memfile_handlers,
- rtems_filesystem_file_handlers_r *directory_handlers
+ rtems_filesystem_mount_table_entry_t *temp_mt_entry,
+ const rtems_filesystem_operations_table *op_table,
+ const rtems_filesystem_file_handlers_r *memfile_handlers,
+ const rtems_filesystem_file_handlers_r *directory_handlers
)
{
IMFS_fs_info_t *fs_info;
diff --git a/cpukit/libfs/src/imfs/imfs_symlink.c b/cpukit/libfs/src/imfs/imfs_symlink.c
index 38072b9f69..e946f3dc66 100644
--- a/cpukit/libfs/src/imfs/imfs_symlink.c
+++ b/cpukit/libfs/src/imfs/imfs_symlink.c
@@ -20,6 +20,8 @@
#endif
#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
#include "imfs.h"
#include <rtems/libio_.h>
#include <rtems/seterr.h>
@@ -41,7 +43,14 @@ int IMFS_symlink(
IMFS_get_token( node_name, new_name, &i );
- info.sym_link.name = link_name;
+ /*
+ * Duplicate link name
+ */
+
+ info.sym_link.name = strdup( link_name);
+ if (info.sym_link.name == NULL) {
+ rtems_set_errno_and_return_minus_one( ENOMEM);
+ }
/*
* Create a new link node.
@@ -55,8 +64,10 @@ int IMFS_symlink(
&info
);
- if ( !new_node )
- rtems_set_errno_and_return_minus_one( ENOMEM );
+ if (new_node == NULL) {
+ free( info.sym_link.name);
+ rtems_set_errno_and_return_minus_one( ENOMEM);
+ }
return 0;
}
diff --git a/cpukit/libfs/src/imfs/imfs_unixstub.c b/cpukit/libfs/src/imfs/imfs_unixstub.c
index d642b260d5..47943040bb 100644
--- a/cpukit/libfs/src/imfs/imfs_unixstub.c
+++ b/cpukit/libfs/src/imfs/imfs_unixstub.c
@@ -31,7 +31,7 @@
* IMFS file system operations table
*/
-rtems_filesystem_operations_table IMFS_ops = {
+const rtems_filesystem_operations_table IMFS_ops = {
NULL,
NULL,
NULL,
@@ -54,7 +54,7 @@ rtems_filesystem_operations_table IMFS_ops = {
* IMFS file system operations table
*/
-rtems_filesystem_operations_table miniIMFS_ops = {
+const rtems_filesystem_operations_table miniIMFS_ops = {
NULL,
NULL,
NULL,
diff --git a/cpukit/libfs/src/imfs/miniimfs_init.c b/cpukit/libfs/src/imfs/miniimfs_init.c
index fdf2310cf3..15ca663429 100644
--- a/cpukit/libfs/src/imfs/miniimfs_init.c
+++ b/cpukit/libfs/src/imfs/miniimfs_init.c
@@ -33,7 +33,7 @@
* miniIMFS file system operations table
*/
-rtems_filesystem_operations_table miniIMFS_ops = {
+const rtems_filesystem_operations_table miniIMFS_ops = {
IMFS_eval_path,
IMFS_evaluate_for_make,
NULL, /* XXX IMFS_link, */