# FSFile

## Definition

  `#include <nitro/fs.h>`
  `

      /* file and directory structure */
      typedef struct FSFile
      {
      /* private: */

      /* for archive control */
      FSFileLink          link;
      struct  FSArchive   *arc;
      /* for internal status */
      u32                 stat;
      FSCommandType       command;
      FSResult            error;
      OSThreadQueue       queue[4 / sizeof(OSThreadQueue)];

      /* private: (except direct operation with FSArchive) */

      /* handle property */
      union {
      /* file-handle property */
      struct {
      u32           own_id; /* own file-id */
      u32           top;    /* image-top */
      u32           bottom; /* image-bottom */
      u32           pos;    /* current position */
      } file;
      /* directory-handle property */
      struct {
      FSDirPos      pos;    /* current-directory-position */
      u32           parent; /* parent directory-id */
      } dir;
      } prop;

      /* command argument and return value area */
      union {
      FSReadFileInfo        readfile;
      FSWriteFileInfo       writefile;
      FSSeekDirInfo         seekdir;
      FSReadDirInfo         readdir;
      FSFindPathInfo        findpath;
      FSGetPathInfo         getpath;
      FSOpenFileFastInfo    openfilefast;
      FSOpenFileDirectInfo  openfiledirect;
      FSCloseFileInfo       closefile;
      } arg;

      } FSFile;

  `

## Description

This structure is used by file and directory access functions.
All members are used only in internal processing. Direct operation of these is prohibited.

## Note

This type of internal expression may change in future enhancements. Avoid programming that depends upon sizes and members in the current package.

## See Also

`FS_OpenFile, FS_OpenFileFast, FS_CloseFile, FS_GetLength, FS_ReadFile, FS_SeekFile, FS_SeekFileToBegin, FS_SeekFileToEnd, FS_FindDir, FS_ReadDir, FS_TellDir, FS_SeekDir, FS_RewindDir`

## Revision History

11/02/2004 Corrected the structure definition to match the header file.
05/20/2004 Description changes due changes in `FSFile`.
05/14/2004 Description changes due changes in `FSFile`.
04/13/2004 Description changes due changes in `FSFile`.
04/08/2004 Description changes due to the integration of `FSDir` and `FSFile`.
04/01/2004 Initial version.

CONFIDENTIAL