forked from Imagelibrary/rtems
Patch from Chris Johns <cjohns@cybertec.com.au> to add support for
stat()'ing a symbolic link. This is needed to support the port of the BSD commands like ls to RTEMS.
This commit is contained in:
@@ -20,18 +20,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
||||||
NULL, /* open */
|
NULL, /* open */
|
||||||
NULL, /* close */
|
NULL, /* close */
|
||||||
NULL, /* read */
|
NULL, /* read */
|
||||||
NULL, /* write */
|
NULL, /* write */
|
||||||
NULL, /* ioctl */
|
NULL, /* ioctl */
|
||||||
NULL, /* lseek */
|
NULL, /* lseek */
|
||||||
NULL, /* stat */
|
IMFS_stat, /* stat */
|
||||||
NULL, /* fchmod */
|
NULL, /* fchmod */
|
||||||
NULL, /* ftruncate */
|
NULL, /* ftruncate */
|
||||||
NULL, /* fpathconf */
|
NULL, /* fpathconf */
|
||||||
NULL, /* fsync */
|
NULL, /* fsync */
|
||||||
NULL, /* fdatasync */
|
NULL, /* fdatasync */
|
||||||
NULL, /* fcntl */
|
NULL, /* fcntl */
|
||||||
IMFS_rmnod
|
IMFS_rmnod
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ int IMFS_stat(
|
|||||||
buf->st_size = the_jnode->info.file.size;
|
buf->st_size = the_jnode->info.file.size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IMFS_SYM_LINK:
|
||||||
|
buf->st_size = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
set_errno_and_return_minus_one( ENOTSUP );
|
set_errno_and_return_minus_one( ENOTSUP );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -20,18 +20,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
||||||
NULL, /* open */
|
NULL, /* open */
|
||||||
NULL, /* close */
|
NULL, /* close */
|
||||||
NULL, /* read */
|
NULL, /* read */
|
||||||
NULL, /* write */
|
NULL, /* write */
|
||||||
NULL, /* ioctl */
|
NULL, /* ioctl */
|
||||||
NULL, /* lseek */
|
NULL, /* lseek */
|
||||||
NULL, /* stat */
|
IMFS_stat, /* stat */
|
||||||
NULL, /* fchmod */
|
NULL, /* fchmod */
|
||||||
NULL, /* ftruncate */
|
NULL, /* ftruncate */
|
||||||
NULL, /* fpathconf */
|
NULL, /* fpathconf */
|
||||||
NULL, /* fsync */
|
NULL, /* fsync */
|
||||||
NULL, /* fdatasync */
|
NULL, /* fdatasync */
|
||||||
NULL, /* fcntl */
|
NULL, /* fcntl */
|
||||||
IMFS_rmnod
|
IMFS_rmnod
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ int IMFS_stat(
|
|||||||
buf->st_size = the_jnode->info.file.size;
|
buf->st_size = the_jnode->info.file.size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IMFS_SYM_LINK:
|
||||||
|
buf->st_size = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
set_errno_and_return_minus_one( ENOTSUP );
|
set_errno_and_return_minus_one( ENOTSUP );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -20,18 +20,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
||||||
NULL, /* open */
|
NULL, /* open */
|
||||||
NULL, /* close */
|
NULL, /* close */
|
||||||
NULL, /* read */
|
NULL, /* read */
|
||||||
NULL, /* write */
|
NULL, /* write */
|
||||||
NULL, /* ioctl */
|
NULL, /* ioctl */
|
||||||
NULL, /* lseek */
|
NULL, /* lseek */
|
||||||
NULL, /* stat */
|
IMFS_stat, /* stat */
|
||||||
NULL, /* fchmod */
|
NULL, /* fchmod */
|
||||||
NULL, /* ftruncate */
|
NULL, /* ftruncate */
|
||||||
NULL, /* fpathconf */
|
NULL, /* fpathconf */
|
||||||
NULL, /* fsync */
|
NULL, /* fsync */
|
||||||
NULL, /* fdatasync */
|
NULL, /* fdatasync */
|
||||||
NULL, /* fcntl */
|
NULL, /* fcntl */
|
||||||
IMFS_rmnod
|
IMFS_rmnod
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ int IMFS_stat(
|
|||||||
buf->st_size = the_jnode->info.file.size;
|
buf->st_size = the_jnode->info.file.size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IMFS_SYM_LINK:
|
||||||
|
buf->st_size = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
set_errno_and_return_minus_one( ENOTSUP );
|
set_errno_and_return_minus_one( ENOTSUP );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -20,18 +20,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
||||||
NULL, /* open */
|
NULL, /* open */
|
||||||
NULL, /* close */
|
NULL, /* close */
|
||||||
NULL, /* read */
|
NULL, /* read */
|
||||||
NULL, /* write */
|
NULL, /* write */
|
||||||
NULL, /* ioctl */
|
NULL, /* ioctl */
|
||||||
NULL, /* lseek */
|
NULL, /* lseek */
|
||||||
NULL, /* stat */
|
IMFS_stat, /* stat */
|
||||||
NULL, /* fchmod */
|
NULL, /* fchmod */
|
||||||
NULL, /* ftruncate */
|
NULL, /* ftruncate */
|
||||||
NULL, /* fpathconf */
|
NULL, /* fpathconf */
|
||||||
NULL, /* fsync */
|
NULL, /* fsync */
|
||||||
NULL, /* fdatasync */
|
NULL, /* fdatasync */
|
||||||
NULL, /* fcntl */
|
NULL, /* fcntl */
|
||||||
IMFS_rmnod
|
IMFS_rmnod
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ int IMFS_stat(
|
|||||||
buf->st_size = the_jnode->info.file.size;
|
buf->st_size = the_jnode->info.file.size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IMFS_SYM_LINK:
|
||||||
|
buf->st_size = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
set_errno_and_return_minus_one( ENOTSUP );
|
set_errno_and_return_minus_one( ENOTSUP );
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user