# 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