forked from Imagelibrary/rtems
2002-01-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* src/imfs/imfs_eval.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/memfile.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_readlink.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_unlink.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_link.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_chown.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/ioman.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_mount.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_directory.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_stat.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_fchmod.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_symlink.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_mknod.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/linearfile.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs_unmount.c: Include <rtems/seterr.h>. Apply rtems_set_errno_and_return_minus_one. * src/imfs/imfs.h: Apply rtems_set_errno_and_return_minus_one. Comment out increment_and_check_linkcounts.
This commit is contained in:
@@ -1,3 +1,38 @@
|
||||
2002-01-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* src/imfs/imfs_eval.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/memfile.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_readlink.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_unlink.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_link.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_chown.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/ioman.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_mount.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_directory.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_stat.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_fchmod.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_symlink.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_mknod.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/linearfile.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_unmount.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs.h: Apply rtems_set_errno_and_return_minus_one.
|
||||
Comment out increment_and_check_linkcounts.
|
||||
|
||||
2001-11-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* wrapup/Makefile.am: Remove HAS_IMFS.
|
||||
|
||||
@@ -207,10 +207,13 @@ typedef struct {
|
||||
rtems_filesystem_file_handlers_r *directory_handlers;
|
||||
} IMFS_fs_info_t;
|
||||
|
||||
#if UNUSED
|
||||
/* FIXME: Unused, we might want to remove it */
|
||||
#define increment_and_check_linkcounts( _fs_info ) \
|
||||
((IMFS_fs_info_t * )_fs_info)->link_counts++; \
|
||||
if ( ((IMFS_fs_info_t * )_fs_info)->link_counts > MAXSYMLINKS ) \
|
||||
set_errno_and_return_minus_one( ELOOP )
|
||||
rtems_set_errno_and_return_minus_one( ELOOP )
|
||||
#endif
|
||||
|
||||
#define decrement_linkcounts( _fs_info ) \
|
||||
((IMFS_fs_info_t * )_fs_info)->link_counts--;
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
#include "imfs.h"
|
||||
|
||||
int IMFS_chown(
|
||||
@@ -43,7 +44,7 @@ int IMFS_chown(
|
||||
st_uid = geteuid();
|
||||
|
||||
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
|
||||
set_errno_and_return_minus_one( EPERM );
|
||||
rtems_set_errno_and_return_minus_one( EPERM );
|
||||
#endif
|
||||
|
||||
jnode->st_uid = owner;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
/*
|
||||
* imfs_dir_open
|
||||
@@ -197,7 +198,7 @@ int imfs_dir_lseek(
|
||||
case SEEK_END: /* Movement past the end of the directory via lseek */
|
||||
/* is not a permitted operation */
|
||||
default:
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -293,21 +294,21 @@ int imfs_dir_rmnod(
|
||||
*/
|
||||
|
||||
if ( ! Chain_Is_empty( &the_jnode->info.directory.Entries ) )
|
||||
set_errno_and_return_minus_one( ENOTEMPTY );
|
||||
rtems_set_errno_and_return_minus_one( ENOTEMPTY );
|
||||
|
||||
/*
|
||||
* You cannot remove the file system root node.
|
||||
*/
|
||||
|
||||
if ( pathloc->mt_entry->mt_fs_root.node_access == pathloc->node_access )
|
||||
set_errno_and_return_minus_one( EBUSY );
|
||||
rtems_set_errno_and_return_minus_one( EBUSY );
|
||||
|
||||
/*
|
||||
* You cannot remove a mountpoint.
|
||||
*/
|
||||
|
||||
if ( the_jnode->info.directory.mt_fs != NULL )
|
||||
set_errno_and_return_minus_one( EBUSY );
|
||||
rtems_set_errno_and_return_minus_one( EBUSY );
|
||||
|
||||
/*
|
||||
* Take the node out of the parent's chain that contains this node
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
#define RTEMS_LIBIO_PERMS_RX (RTEMS_LIBIO_PERMS_SEARCH | RTEMS_LIBIO_PERMS_READ)
|
||||
#define RTEMS_LIBIO_PERMS_WX (RTEMS_LIBIO_PERMS_SEARCH | RTEMS_LIBIO_PERMS_WRITE)
|
||||
@@ -80,7 +81,7 @@ int IMFS_evaluate_permission(
|
||||
|
||||
if ( !rtems_libio_is_valid_perms( flags ) ) {
|
||||
assert( 0 );
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
}
|
||||
|
||||
jnode = node->node_access;
|
||||
@@ -150,7 +151,7 @@ int IMFS_evaluate_hard_link(
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( node, flags ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -212,7 +213,7 @@ int IMFS_evaluate_sym_link(
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( node, flags ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -241,7 +242,7 @@ int IMFS_evaluate_link(
|
||||
rtems_filesystem_link_counts ++;
|
||||
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
|
||||
rtems_filesystem_link_counts = 0;
|
||||
set_errno_and_return_minus_one( ELOOP );
|
||||
rtems_set_errno_and_return_minus_one( ELOOP );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -307,7 +308,7 @@ int IMFS_evaluate_for_make(
|
||||
i += len;
|
||||
|
||||
if ( !pathloc->node_access )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
/*
|
||||
* I cannot move out of this directory without execute permission.
|
||||
@@ -316,7 +317,7 @@ int IMFS_evaluate_for_make(
|
||||
if ( type != IMFS_NO_MORE_PATH )
|
||||
if ( node->type == IMFS_DIRECTORY )
|
||||
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
node = pathloc->node_access;
|
||||
|
||||
@@ -352,7 +353,7 @@ int IMFS_evaluate_for_make(
|
||||
} else {
|
||||
|
||||
if ( !node->Parent )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
node = node->Parent;
|
||||
}
|
||||
@@ -378,14 +379,14 @@ int IMFS_evaluate_for_make(
|
||||
|
||||
node = pathloc->node_access;
|
||||
if ( !node )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* Only a directory can be decended into.
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* If we are at a node that is a mount point. Set loc to the
|
||||
@@ -417,11 +418,11 @@ int IMFS_evaluate_for_make(
|
||||
break;
|
||||
|
||||
case IMFS_NO_MORE_PATH:
|
||||
set_errno_and_return_minus_one( EEXIST );
|
||||
rtems_set_errno_and_return_minus_one( EEXIST );
|
||||
break;
|
||||
|
||||
case IMFS_INVALID_TOKEN:
|
||||
set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
break;
|
||||
|
||||
case IMFS_CURRENT_DIR:
|
||||
@@ -438,7 +439,7 @@ int IMFS_evaluate_for_make(
|
||||
|
||||
for( ; path[i] != '\0'; i++) {
|
||||
if ( !IMFS_is_separator( path[ i ] ) )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -452,14 +453,14 @@ int IMFS_evaluate_for_make(
|
||||
*/
|
||||
node = pathloc->node_access;
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* We must have Write and execute permission on the returned node.
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -489,7 +490,7 @@ int IMFS_eval_path(
|
||||
|
||||
if ( !rtems_libio_is_valid_perms( flags ) ) {
|
||||
assert( 0 );
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -509,7 +510,7 @@ int IMFS_eval_path(
|
||||
i += len;
|
||||
|
||||
if ( !pathloc->node_access )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
/*
|
||||
* I cannot move out of this directory without execute permission.
|
||||
@@ -517,7 +518,7 @@ int IMFS_eval_path(
|
||||
if ( type != IMFS_NO_MORE_PATH )
|
||||
if ( node->type == IMFS_DIRECTORY )
|
||||
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
node = pathloc->node_access;
|
||||
|
||||
@@ -551,7 +552,7 @@ int IMFS_eval_path(
|
||||
} else {
|
||||
|
||||
if ( !node->Parent )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
node = node->Parent;
|
||||
pathloc->node_access = node;
|
||||
@@ -572,7 +573,7 @@ int IMFS_eval_path(
|
||||
|
||||
node = pathloc->node_access;
|
||||
if ( !node )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
} else if ( node->type == IMFS_SYM_LINK ) {
|
||||
|
||||
@@ -588,7 +589,7 @@ int IMFS_eval_path(
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* If we are at a node that is a mount point. Set loc to the
|
||||
@@ -607,7 +608,7 @@ int IMFS_eval_path(
|
||||
|
||||
node = IMFS_find_match_in_dir( node, token );
|
||||
if ( !node )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
/*
|
||||
* Set the node access to the point we have found.
|
||||
@@ -621,7 +622,7 @@ int IMFS_eval_path(
|
||||
break;
|
||||
|
||||
case IMFS_INVALID_TOKEN:
|
||||
set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -653,7 +654,7 @@ int IMFS_eval_path(
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( pathloc, flags ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
#include "imfs.h"
|
||||
|
||||
int IMFS_fchmod(
|
||||
@@ -39,14 +40,14 @@ int IMFS_fchmod(
|
||||
st_uid = geteuid();
|
||||
|
||||
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
|
||||
set_errno_and_return_minus_one( EPERM );
|
||||
rtems_set_errno_and_return_minus_one( EPERM );
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Change only the RWX permissions on the jnode to mode.
|
||||
*/
|
||||
if ( mode & (~ (S_IRWXU | S_IRWXG | S_IRWXO ) ) )
|
||||
set_errno_and_return_minus_one( EPERM );
|
||||
rtems_set_errno_and_return_minus_one( EPERM );
|
||||
|
||||
/*
|
||||
* If we make a linear-file writeable, construct a block file
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_link(
|
||||
rtems_filesystem_location_info_t *to_loc, /* IN */
|
||||
@@ -40,7 +41,7 @@ int IMFS_link(
|
||||
|
||||
info.hard_link.link_node = to_loc->node_access;
|
||||
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
|
||||
set_errno_and_return_minus_one( EMLINK );
|
||||
rtems_set_errno_and_return_minus_one( EMLINK );
|
||||
|
||||
/*
|
||||
* Remove any separators at the end of the string.
|
||||
@@ -61,7 +62,7 @@ int IMFS_link(
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
set_errno_and_return_minus_one( ENOMEM );
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
|
||||
/*
|
||||
* Increment the link count of the node being pointed to.
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_mknod(
|
||||
const char *token, /* IN */
|
||||
@@ -54,7 +55,7 @@ int IMFS_mknod(
|
||||
type = IMFS_DEVICE;
|
||||
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
|
||||
} else {
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -70,7 +71,7 @@ int IMFS_mknod(
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
set_errno_and_return_minus_one( ENOMEM );
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_mount(
|
||||
rtems_filesystem_mount_table_entry_t *mt_entry
|
||||
@@ -40,7 +41,7 @@ int IMFS_mount(
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* Set mt_fs pointer to point to the mount table entry for
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_readlink(
|
||||
rtems_filesystem_location_info_t *loc,
|
||||
@@ -34,7 +35,7 @@ int IMFS_readlink(
|
||||
node = loc->node_access;
|
||||
|
||||
if ( node->type != IMFS_SYM_LINK )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
|
||||
buf[i] = node->info.sym_link.name[i];
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_stat(
|
||||
rtems_filesystem_location_info_t *loc,
|
||||
@@ -49,7 +50,7 @@ int IMFS_stat(
|
||||
break;
|
||||
|
||||
default:
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
rtems_set_errno_and_return_minus_one( ENOTSUP );
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_symlink(
|
||||
rtems_filesystem_location_info_t *parent_loc,
|
||||
@@ -55,7 +56,7 @@ int IMFS_symlink(
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
set_errno_and_return_minus_one( ENOMEM );
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_unlink(
|
||||
rtems_filesystem_location_info_t *loc /* IN */
|
||||
@@ -46,7 +47,7 @@ int IMFS_unlink(
|
||||
if ( node->type == IMFS_HARD_LINK ) {
|
||||
|
||||
if ( !node->info.hard_link.link_node )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
the_link = *loc;
|
||||
the_link.node_access = node->info.hard_link.link_node;
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_unmount(
|
||||
rtems_filesystem_mount_table_entry_t *mt_entry
|
||||
@@ -41,14 +42,14 @@ int IMFS_unmount(
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* Did the node indicate that there was a directory mounted here?
|
||||
*/
|
||||
|
||||
if ( node->info.directory.mt_fs == NULL )
|
||||
set_errno_and_return_minus_one( EINVAL ); /* XXX */
|
||||
rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */
|
||||
|
||||
/*
|
||||
* Set the mt_fs pointer to indicate that there is no longer
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
#include "imfs.h"
|
||||
|
||||
#if defined(__linux__)
|
||||
@@ -84,7 +85,7 @@ rtems_status_code rtems_io_lookup_name(
|
||||
|
||||
if ( !loc.ops->node_type_h ) {
|
||||
rtems_filesystem_freenode( &loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
rtems_set_errno_and_return_minus_one( ENOTSUP );
|
||||
}
|
||||
|
||||
node_type = (*loc.ops->node_type_h)( &loc );
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <rtems/libio.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
/*
|
||||
* linearfile_read
|
||||
@@ -55,11 +56,11 @@ int linearfile_read(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_LINEAR_FILE );
|
||||
if ( the_jnode->type != IMFS_LINEAR_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Error checks on arguments
|
||||
@@ -68,7 +69,7 @@ int linearfile_read(
|
||||
dest = (unsigned char *)buffer;
|
||||
assert( dest );
|
||||
if ( !dest )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* Perform a simple memory copy.
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <rtems/libio.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
#define MEMFILE_STATIC
|
||||
|
||||
@@ -208,7 +209,7 @@ int memfile_lseek(
|
||||
}
|
||||
else { /* Must be a block file (IMFS_MEMORY_FILE). */
|
||||
if (IMFS_memfile_extend( the_jnode, iop->offset ))
|
||||
set_errno_and_return_minus_one( ENOSPC );
|
||||
rtems_set_errno_and_return_minus_one( ENOSPC );
|
||||
|
||||
iop->size = the_jnode->info.file.size;
|
||||
}
|
||||
@@ -282,14 +283,14 @@ MEMFILE_STATIC int IMFS_memfile_extend(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
if ( new_length <= the_jnode->info.file.size )
|
||||
return 0;
|
||||
@@ -310,7 +311,7 @@ MEMFILE_STATIC int IMFS_memfile_extend(
|
||||
for ( ; block>=old_blocks ; block-- ) {
|
||||
IMFS_memfile_remove_block( the_jnode, block );
|
||||
}
|
||||
set_errno_and_return_minus_one( ENOSPC );
|
||||
rtems_set_errno_and_return_minus_one( ENOSPC );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -338,11 +339,11 @@ MEMFILE_STATIC int IMFS_memfile_addblock(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
|
||||
if ( *block_entry_ptr )
|
||||
@@ -469,11 +470,11 @@ int IMFS_memfile_remove(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Eventually this could be set smarter at each call to
|
||||
@@ -563,13 +564,13 @@ MEMFILE_STATIC int IMFS_memfile_read(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE ||
|
||||
the_jnode->type == IMFS_LINEAR_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE &&
|
||||
the_jnode->type != IMFS_LINEAR_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Error checks on arguments
|
||||
@@ -577,7 +578,7 @@ MEMFILE_STATIC int IMFS_memfile_read(
|
||||
|
||||
assert( dest );
|
||||
if ( !dest )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* If there is nothing to read, then quick exit.
|
||||
@@ -585,7 +586,7 @@ MEMFILE_STATIC int IMFS_memfile_read(
|
||||
|
||||
my_length = length;
|
||||
if ( !my_length )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* Linear files (as created from a tar file are easier to handle
|
||||
@@ -714,11 +715,11 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Error check arguments
|
||||
@@ -726,7 +727,7 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
|
||||
assert( source );
|
||||
if ( !source )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
|
||||
/*
|
||||
@@ -735,7 +736,7 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
|
||||
my_length = length;
|
||||
if ( !my_length )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* If the last byte we are supposed to write is past the end of this
|
||||
@@ -746,7 +747,7 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
if ( last_byte > the_jnode->info.file.size ) {
|
||||
status = IMFS_memfile_extend( the_jnode, last_byte );
|
||||
if ( status )
|
||||
set_errno_and_return_minus_one( ENOSPC );
|
||||
rtems_set_errno_and_return_minus_one( ENOSPC );
|
||||
}
|
||||
|
||||
copied = 0;
|
||||
|
||||
@@ -1,3 +1,38 @@
|
||||
2002-01-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* src/imfs/imfs_eval.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/memfile.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_readlink.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_unlink.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_link.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_chown.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/ioman.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_mount.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_directory.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_stat.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_fchmod.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_symlink.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_mknod.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/linearfile.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs_unmount.c: Include <rtems/seterr.h>.
|
||||
Apply rtems_set_errno_and_return_minus_one.
|
||||
* src/imfs/imfs.h: Apply rtems_set_errno_and_return_minus_one.
|
||||
Comment out increment_and_check_linkcounts.
|
||||
|
||||
2001-11-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* wrapup/Makefile.am: Remove HAS_IMFS.
|
||||
|
||||
@@ -207,10 +207,13 @@ typedef struct {
|
||||
rtems_filesystem_file_handlers_r *directory_handlers;
|
||||
} IMFS_fs_info_t;
|
||||
|
||||
#if UNUSED
|
||||
/* FIXME: Unused, we might want to remove it */
|
||||
#define increment_and_check_linkcounts( _fs_info ) \
|
||||
((IMFS_fs_info_t * )_fs_info)->link_counts++; \
|
||||
if ( ((IMFS_fs_info_t * )_fs_info)->link_counts > MAXSYMLINKS ) \
|
||||
set_errno_and_return_minus_one( ELOOP )
|
||||
rtems_set_errno_and_return_minus_one( ELOOP )
|
||||
#endif
|
||||
|
||||
#define decrement_linkcounts( _fs_info ) \
|
||||
((IMFS_fs_info_t * )_fs_info)->link_counts--;
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
#include "imfs.h"
|
||||
|
||||
int IMFS_chown(
|
||||
@@ -43,7 +44,7 @@ int IMFS_chown(
|
||||
st_uid = geteuid();
|
||||
|
||||
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
|
||||
set_errno_and_return_minus_one( EPERM );
|
||||
rtems_set_errno_and_return_minus_one( EPERM );
|
||||
#endif
|
||||
|
||||
jnode->st_uid = owner;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
/*
|
||||
* imfs_dir_open
|
||||
@@ -197,7 +198,7 @@ int imfs_dir_lseek(
|
||||
case SEEK_END: /* Movement past the end of the directory via lseek */
|
||||
/* is not a permitted operation */
|
||||
default:
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -293,21 +294,21 @@ int imfs_dir_rmnod(
|
||||
*/
|
||||
|
||||
if ( ! Chain_Is_empty( &the_jnode->info.directory.Entries ) )
|
||||
set_errno_and_return_minus_one( ENOTEMPTY );
|
||||
rtems_set_errno_and_return_minus_one( ENOTEMPTY );
|
||||
|
||||
/*
|
||||
* You cannot remove the file system root node.
|
||||
*/
|
||||
|
||||
if ( pathloc->mt_entry->mt_fs_root.node_access == pathloc->node_access )
|
||||
set_errno_and_return_minus_one( EBUSY );
|
||||
rtems_set_errno_and_return_minus_one( EBUSY );
|
||||
|
||||
/*
|
||||
* You cannot remove a mountpoint.
|
||||
*/
|
||||
|
||||
if ( the_jnode->info.directory.mt_fs != NULL )
|
||||
set_errno_and_return_minus_one( EBUSY );
|
||||
rtems_set_errno_and_return_minus_one( EBUSY );
|
||||
|
||||
/*
|
||||
* Take the node out of the parent's chain that contains this node
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
#define RTEMS_LIBIO_PERMS_RX (RTEMS_LIBIO_PERMS_SEARCH | RTEMS_LIBIO_PERMS_READ)
|
||||
#define RTEMS_LIBIO_PERMS_WX (RTEMS_LIBIO_PERMS_SEARCH | RTEMS_LIBIO_PERMS_WRITE)
|
||||
@@ -80,7 +81,7 @@ int IMFS_evaluate_permission(
|
||||
|
||||
if ( !rtems_libio_is_valid_perms( flags ) ) {
|
||||
assert( 0 );
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
}
|
||||
|
||||
jnode = node->node_access;
|
||||
@@ -150,7 +151,7 @@ int IMFS_evaluate_hard_link(
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( node, flags ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -212,7 +213,7 @@ int IMFS_evaluate_sym_link(
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( node, flags ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -241,7 +242,7 @@ int IMFS_evaluate_link(
|
||||
rtems_filesystem_link_counts ++;
|
||||
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
|
||||
rtems_filesystem_link_counts = 0;
|
||||
set_errno_and_return_minus_one( ELOOP );
|
||||
rtems_set_errno_and_return_minus_one( ELOOP );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -307,7 +308,7 @@ int IMFS_evaluate_for_make(
|
||||
i += len;
|
||||
|
||||
if ( !pathloc->node_access )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
/*
|
||||
* I cannot move out of this directory without execute permission.
|
||||
@@ -316,7 +317,7 @@ int IMFS_evaluate_for_make(
|
||||
if ( type != IMFS_NO_MORE_PATH )
|
||||
if ( node->type == IMFS_DIRECTORY )
|
||||
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
node = pathloc->node_access;
|
||||
|
||||
@@ -352,7 +353,7 @@ int IMFS_evaluate_for_make(
|
||||
} else {
|
||||
|
||||
if ( !node->Parent )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
node = node->Parent;
|
||||
}
|
||||
@@ -378,14 +379,14 @@ int IMFS_evaluate_for_make(
|
||||
|
||||
node = pathloc->node_access;
|
||||
if ( !node )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* Only a directory can be decended into.
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* If we are at a node that is a mount point. Set loc to the
|
||||
@@ -417,11 +418,11 @@ int IMFS_evaluate_for_make(
|
||||
break;
|
||||
|
||||
case IMFS_NO_MORE_PATH:
|
||||
set_errno_and_return_minus_one( EEXIST );
|
||||
rtems_set_errno_and_return_minus_one( EEXIST );
|
||||
break;
|
||||
|
||||
case IMFS_INVALID_TOKEN:
|
||||
set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
break;
|
||||
|
||||
case IMFS_CURRENT_DIR:
|
||||
@@ -438,7 +439,7 @@ int IMFS_evaluate_for_make(
|
||||
|
||||
for( ; path[i] != '\0'; i++) {
|
||||
if ( !IMFS_is_separator( path[ i ] ) )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -452,14 +453,14 @@ int IMFS_evaluate_for_make(
|
||||
*/
|
||||
node = pathloc->node_access;
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* We must have Write and execute permission on the returned node.
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -489,7 +490,7 @@ int IMFS_eval_path(
|
||||
|
||||
if ( !rtems_libio_is_valid_perms( flags ) ) {
|
||||
assert( 0 );
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -509,7 +510,7 @@ int IMFS_eval_path(
|
||||
i += len;
|
||||
|
||||
if ( !pathloc->node_access )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
/*
|
||||
* I cannot move out of this directory without execute permission.
|
||||
@@ -517,7 +518,7 @@ int IMFS_eval_path(
|
||||
if ( type != IMFS_NO_MORE_PATH )
|
||||
if ( node->type == IMFS_DIRECTORY )
|
||||
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
node = pathloc->node_access;
|
||||
|
||||
@@ -551,7 +552,7 @@ int IMFS_eval_path(
|
||||
} else {
|
||||
|
||||
if ( !node->Parent )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
node = node->Parent;
|
||||
pathloc->node_access = node;
|
||||
@@ -572,7 +573,7 @@ int IMFS_eval_path(
|
||||
|
||||
node = pathloc->node_access;
|
||||
if ( !node )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
} else if ( node->type == IMFS_SYM_LINK ) {
|
||||
|
||||
@@ -588,7 +589,7 @@ int IMFS_eval_path(
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* If we are at a node that is a mount point. Set loc to the
|
||||
@@ -607,7 +608,7 @@ int IMFS_eval_path(
|
||||
|
||||
node = IMFS_find_match_in_dir( node, token );
|
||||
if ( !node )
|
||||
set_errno_and_return_minus_one( ENOENT );
|
||||
rtems_set_errno_and_return_minus_one( ENOENT );
|
||||
|
||||
/*
|
||||
* Set the node access to the point we have found.
|
||||
@@ -621,7 +622,7 @@ int IMFS_eval_path(
|
||||
break;
|
||||
|
||||
case IMFS_INVALID_TOKEN:
|
||||
set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -653,7 +654,7 @@ int IMFS_eval_path(
|
||||
*/
|
||||
|
||||
if ( !IMFS_evaluate_permission( pathloc, flags ) )
|
||||
set_errno_and_return_minus_one( EACCES );
|
||||
rtems_set_errno_and_return_minus_one( EACCES );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
#include "imfs.h"
|
||||
|
||||
int IMFS_fchmod(
|
||||
@@ -39,14 +40,14 @@ int IMFS_fchmod(
|
||||
st_uid = geteuid();
|
||||
|
||||
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
|
||||
set_errno_and_return_minus_one( EPERM );
|
||||
rtems_set_errno_and_return_minus_one( EPERM );
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Change only the RWX permissions on the jnode to mode.
|
||||
*/
|
||||
if ( mode & (~ (S_IRWXU | S_IRWXG | S_IRWXO ) ) )
|
||||
set_errno_and_return_minus_one( EPERM );
|
||||
rtems_set_errno_and_return_minus_one( EPERM );
|
||||
|
||||
/*
|
||||
* If we make a linear-file writeable, construct a block file
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_link(
|
||||
rtems_filesystem_location_info_t *to_loc, /* IN */
|
||||
@@ -40,7 +41,7 @@ int IMFS_link(
|
||||
|
||||
info.hard_link.link_node = to_loc->node_access;
|
||||
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
|
||||
set_errno_and_return_minus_one( EMLINK );
|
||||
rtems_set_errno_and_return_minus_one( EMLINK );
|
||||
|
||||
/*
|
||||
* Remove any separators at the end of the string.
|
||||
@@ -61,7 +62,7 @@ int IMFS_link(
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
set_errno_and_return_minus_one( ENOMEM );
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
|
||||
/*
|
||||
* Increment the link count of the node being pointed to.
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_mknod(
|
||||
const char *token, /* IN */
|
||||
@@ -54,7 +55,7 @@ int IMFS_mknod(
|
||||
type = IMFS_DEVICE;
|
||||
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
|
||||
} else {
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -70,7 +71,7 @@ int IMFS_mknod(
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
set_errno_and_return_minus_one( ENOMEM );
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_mount(
|
||||
rtems_filesystem_mount_table_entry_t *mt_entry
|
||||
@@ -40,7 +41,7 @@ int IMFS_mount(
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* Set mt_fs pointer to point to the mount table entry for
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_readlink(
|
||||
rtems_filesystem_location_info_t *loc,
|
||||
@@ -34,7 +35,7 @@ int IMFS_readlink(
|
||||
node = loc->node_access;
|
||||
|
||||
if ( node->type != IMFS_SYM_LINK )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
|
||||
buf[i] = node->info.sym_link.name[i];
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_stat(
|
||||
rtems_filesystem_location_info_t *loc,
|
||||
@@ -49,7 +50,7 @@ int IMFS_stat(
|
||||
break;
|
||||
|
||||
default:
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
rtems_set_errno_and_return_minus_one( ENOTSUP );
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <errno.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_symlink(
|
||||
rtems_filesystem_location_info_t *parent_loc,
|
||||
@@ -55,7 +56,7 @@ int IMFS_symlink(
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
set_errno_and_return_minus_one( ENOMEM );
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_unlink(
|
||||
rtems_filesystem_location_info_t *loc /* IN */
|
||||
@@ -46,7 +47,7 @@ int IMFS_unlink(
|
||||
if ( node->type == IMFS_HARD_LINK ) {
|
||||
|
||||
if ( !node->info.hard_link.link_node )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
the_link = *loc;
|
||||
the_link.node_access = node->info.hard_link.link_node;
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
int IMFS_unmount(
|
||||
rtems_filesystem_mount_table_entry_t *mt_entry
|
||||
@@ -41,14 +42,14 @@ int IMFS_unmount(
|
||||
*/
|
||||
|
||||
if ( node->type != IMFS_DIRECTORY )
|
||||
set_errno_and_return_minus_one( ENOTDIR );
|
||||
rtems_set_errno_and_return_minus_one( ENOTDIR );
|
||||
|
||||
/*
|
||||
* Did the node indicate that there was a directory mounted here?
|
||||
*/
|
||||
|
||||
if ( node->info.directory.mt_fs == NULL )
|
||||
set_errno_and_return_minus_one( EINVAL ); /* XXX */
|
||||
rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */
|
||||
|
||||
/*
|
||||
* Set the mt_fs pointer to indicate that there is no longer
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
#include "imfs.h"
|
||||
|
||||
#if defined(__linux__)
|
||||
@@ -84,7 +85,7 @@ rtems_status_code rtems_io_lookup_name(
|
||||
|
||||
if ( !loc.ops->node_type_h ) {
|
||||
rtems_filesystem_freenode( &loc );
|
||||
set_errno_and_return_minus_one( ENOTSUP );
|
||||
rtems_set_errno_and_return_minus_one( ENOTSUP );
|
||||
}
|
||||
|
||||
node_type = (*loc.ops->node_type_h)( &loc );
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <rtems/libio.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
/*
|
||||
* linearfile_read
|
||||
@@ -55,11 +56,11 @@ int linearfile_read(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_LINEAR_FILE );
|
||||
if ( the_jnode->type != IMFS_LINEAR_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Error checks on arguments
|
||||
@@ -68,7 +69,7 @@ int linearfile_read(
|
||||
dest = (unsigned char *)buffer;
|
||||
assert( dest );
|
||||
if ( !dest )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* Perform a simple memory copy.
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <rtems/libio.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
|
||||
#define MEMFILE_STATIC
|
||||
|
||||
@@ -208,7 +209,7 @@ int memfile_lseek(
|
||||
}
|
||||
else { /* Must be a block file (IMFS_MEMORY_FILE). */
|
||||
if (IMFS_memfile_extend( the_jnode, iop->offset ))
|
||||
set_errno_and_return_minus_one( ENOSPC );
|
||||
rtems_set_errno_and_return_minus_one( ENOSPC );
|
||||
|
||||
iop->size = the_jnode->info.file.size;
|
||||
}
|
||||
@@ -282,14 +283,14 @@ MEMFILE_STATIC int IMFS_memfile_extend(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
if ( new_length <= the_jnode->info.file.size )
|
||||
return 0;
|
||||
@@ -310,7 +311,7 @@ MEMFILE_STATIC int IMFS_memfile_extend(
|
||||
for ( ; block>=old_blocks ; block-- ) {
|
||||
IMFS_memfile_remove_block( the_jnode, block );
|
||||
}
|
||||
set_errno_and_return_minus_one( ENOSPC );
|
||||
rtems_set_errno_and_return_minus_one( ENOSPC );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -338,11 +339,11 @@ MEMFILE_STATIC int IMFS_memfile_addblock(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
|
||||
if ( *block_entry_ptr )
|
||||
@@ -469,11 +470,11 @@ int IMFS_memfile_remove(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Eventually this could be set smarter at each call to
|
||||
@@ -563,13 +564,13 @@ MEMFILE_STATIC int IMFS_memfile_read(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE ||
|
||||
the_jnode->type == IMFS_LINEAR_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE &&
|
||||
the_jnode->type != IMFS_LINEAR_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Error checks on arguments
|
||||
@@ -577,7 +578,7 @@ MEMFILE_STATIC int IMFS_memfile_read(
|
||||
|
||||
assert( dest );
|
||||
if ( !dest )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* If there is nothing to read, then quick exit.
|
||||
@@ -585,7 +586,7 @@ MEMFILE_STATIC int IMFS_memfile_read(
|
||||
|
||||
my_length = length;
|
||||
if ( !my_length )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* Linear files (as created from a tar file are easier to handle
|
||||
@@ -714,11 +715,11 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
|
||||
assert( the_jnode );
|
||||
if ( !the_jnode )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
assert( the_jnode->type == IMFS_MEMORY_FILE );
|
||||
if ( the_jnode->type != IMFS_MEMORY_FILE )
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
rtems_set_errno_and_return_minus_one( EIO );
|
||||
|
||||
/*
|
||||
* Error check arguments
|
||||
@@ -726,7 +727,7 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
|
||||
assert( source );
|
||||
if ( !source )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
|
||||
/*
|
||||
@@ -735,7 +736,7 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
|
||||
my_length = length;
|
||||
if ( !my_length )
|
||||
set_errno_and_return_minus_one( EINVAL );
|
||||
rtems_set_errno_and_return_minus_one( EINVAL );
|
||||
|
||||
/*
|
||||
* If the last byte we are supposed to write is past the end of this
|
||||
@@ -746,7 +747,7 @@ MEMFILE_STATIC int IMFS_memfile_write(
|
||||
if ( last_byte > the_jnode->info.file.size ) {
|
||||
status = IMFS_memfile_extend( the_jnode, last_byte );
|
||||
if ( status )
|
||||
set_errno_and_return_minus_one( ENOSPC );
|
||||
rtems_set_errno_and_return_minus_one( ENOSPC );
|
||||
}
|
||||
|
||||
copied = 0;
|
||||
|
||||
Reference in New Issue
Block a user