# FS_COMMAND_READFILE

## Definition

  `FSResult FS_ARCHIVE_PROC_FUNC(FSFile *p_file, FSCommandType command /* = FS_COMMAND_READFILE */);
  `

## Description

Operating specifications for the archive command `FS_COMMAND_READFILE` are shown below:

Arguments passed to this command

> This command takes as a command argument the variable `arg.readfile` that is stored in `p_file`.
> This variable is defined in `nitro/fs/file.h` as shown below:

>     typedef struct
>     {
>         void    *dst;
>         u32     len_org;
>         u32     len;
>     } FSReadFileInfo;

> Argument content is listed below:

Arguments | Content
dst | Points to the transfer destination memory address where read data is stored.
len_org | Indicates the size of data to read (bytes), using the specified value as-is.
len | Specifies the size of data to read (bytes), using the value that is adjusted by the file size at the time that the command is called.

Actions required of this command

>     p_file is a handle that always holds file information in prop.file.

>     Based on p_file's prog.file variable, the command makes the following settings:

>     Transfers len bytes of data from the archive offset position indicated by prop.file.pos, to memory at dst.
>     Adds value of len to prop.file.pos.

>     The value len is adjusted from the specified value, taking prop.file.bottom into consideration.
>     If you want to run a special process when a write exceeds the file size,
>     you can use the original value that is stored in len_org.

Default Implementation

> Uses the archive read callback function to transfer `len` bytes from the base offset position indicated by `prop.file.pos` to `dst`. Adds value of `len` to `prop.file.pos`.

Command Results

>     If FS_RESULT_SUCCESS is returned by the command, it will be determined that the transfer process for len bytes completed properly.
>     When anything else is returned by the command, it will be determined that transfer failed due to some error.

Functions that use this command

> FS_ReadFile FS_ReadFileAsync

## See Also

`FSArchive`, `FS_ARCHIVE_PROC_FUNC`, `FS_COMMAND_*`, `FS_SetArchiveProc`

## Revision History

07/12/2004 Initial version.

CONFIDENTIAL