summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_load_tar.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-11-18 06:55:43 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-11-19 16:22:00 +0100
commitf3779985681baaa4ac4e33dddfabab241008376c (patch)
tree2758bb25741f90b3cd5d9266b0021a40aaf8b659 /cpukit/libfs/src/imfs/imfs_load_tar.c
parentMove feature macro before "config.h" include (diff)
downloadrtems-f3779985681baaa4ac4e33dddfabab241008376c.tar.bz2
imfs: Add IMFS_make_linfile()
Update #3818.
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_load_tar.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_load_tar.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_load_tar.c b/cpukit/libfs/src/imfs/imfs_load_tar.c
index e83553866a..6298a3f32d 100644
--- a/cpukit/libfs/src/imfs/imfs_load_tar.c
+++ b/cpukit/libfs/src/imfs/imfs_load_tar.c
@@ -135,21 +135,20 @@ int rtems_tarfs_load(
rtems_filesystem_eval_path_continue( &ctx );
if ( !rtems_filesystem_location_is_null( currentloc ) ) {
- IMFS_linearfile_t *linfile = (IMFS_linearfile_t *)
- IMFS_create_node(
- currentloc,
- &IMFS_node_control_linfile,
- sizeof( IMFS_file_t ),
- rtems_filesystem_eval_path_get_token( &ctx ),
- rtems_filesystem_eval_path_get_tokenlen( &ctx ),
- (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
- NULL
- );
-
- if ( linfile != NULL ) {
- linfile->File.size = file_size;
- linfile->direct = &tar_image[offset];
- }
+ IMFS_linearfile_context linctx = {
+ .data = &tar_image[offset],
+ .size = file_size
+ };
+
+ IMFS_create_node(
+ currentloc,
+ &IMFS_node_control_linfile,
+ sizeof( IMFS_file_t ),
+ rtems_filesystem_eval_path_get_token( &ctx ),
+ rtems_filesystem_eval_path_get_tokenlen( &ctx ),
+ (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
+ &linctx
+ );
}
nblocks = (((file_size) + 511) & ~511) / 512;