diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/exec/libfs/src/imfs/imfs_stat.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/c/src/exec/libfs/src/imfs/imfs_stat.c b/c/src/exec/libfs/src/imfs/imfs_stat.c new file mode 100644 index 0000000000..4628736714 --- /dev/null +++ b/c/src/exec/libfs/src/imfs/imfs_stat.c @@ -0,0 +1,59 @@ +/* + * IMFS_stat + * + * This routine provides a stat for the IMFS file system. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include <errno.h> +#include "imfs.h" +#include "libio_.h" + +int IMFS_stat( + rtems_filesystem_location_info_t *loc, + struct stat *buf +) +{ + IMFS_jnode_t *the_jnode; + IMFS_device_t *io; + + the_jnode = loc->node_access; + + + switch ( the_jnode->type ) { + + case IMFS_DEVICE: + io = &the_jnode->info.device; + buf->st_dev = rtems_filesystem_make_dev_t( io->major, io->minor ); + break; + + case IMFS_MEMORY_FILE: + buf->st_size = the_jnode->info.file.size; + break; + + default: + set_errno_and_return_minus_one( ENOTSUP ); + break; + } + + buf->st_mode = the_jnode->st_mode; + buf->st_nlink = the_jnode->st_nlink; + buf->st_ino = the_jnode->st_ino; + buf->st_uid = the_jnode->st_uid; + buf->st_gid = the_jnode->st_gid; + + buf->st_atime = the_jnode->st_atime; + buf->st_mtime = the_jnode->st_mtime; + buf->st_ctime = the_jnode->st_ctime; + + return 0; +} |