# FS_COMMAND_OPENFILEDIRECT

## C Specification

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

## Description

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

Arguments passed to this command
  This command takes as a command argument the variable `arg.openfiledirect` that is stored at `p_file`.
  This variable is defined in `nitro/fs/file.h` as shown below:

      typedef struct
              {
                  u32     top;
                  u32     bottom;
                  u32     index;
              } FSOpenFileDirectInfo;

  Argument content is listed below:

  Arguments | Content
  --- | ---
  `top` | An archive base offset that indicates the top of the file image area. This value is used for area determination in the `FS_SeekFile` function.
  `bottom` | An archive base offset that indicates the bottom of the file image area. This value is used for area determination in the `FS_SeekFile` function.
  `index` | Indicates a file's index. This value is used by the `FS_COMMAND_GETPATH` command.

Actions required of this command
  It sets the `p_file` variable prop.file as shown below:
  Each of the `prop.file` variables is appropriately set based on the arguments `top`, `bottom`, and `index`.
  The set values are used by subsequent `FS_COMMAND_READFILE` and `FS_COMMAND_WRITEFILE` commands. You may determine your own meanings for the `prop.file` variables as long as they are appropriate arguments for these commands. However, `prop.file.pos` must be within the range `prop.file.top` - `prop.file.bottom`.

Default Implementation
  The command sets values based on the following determinants:

  `prop.file.top` | Sets the argument `top` as-is.
  `prop.file.bottom` | Sets the argument `bottom` as-is.
  `prop.file.pos` | Sets the same value as `prop.file.top`
  `prop.file.own_id` | Sets the arguments `index` and `p_file->arc`.

Command Results
  If `FS_RESULT_SUCCESS` is returned by the command, `p_file` becomes a handle that holds file information, and from that point the `FS_IsFile` function will return TRUE.
  It can also be used in arguments in functions that operate on files.

Functions that use this command
  - `FS_OpenFileDirect`
    (indirectly from the default `FS_OPENFILEFAST` command)
  - `FS_OpenFile`
  - `FS_OpenFileFast`

## See Also

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

## Revision History

08/25/2004 Revised the error: FS_COMMAND_WRITE is changed to FS_COMMAND_WRITEFILE
07/12/2004 Initial Version