source: soft/giet_vm/giet_fat32/fat32_shared.h @ 802

Last change on this file since 802 was 773, checked in by alain, 9 years ago

Fix several bugs related to new files or directories creation:

  • The first_free_cluster computation in _fat_init has been corrected.
  • The generation of SFN 8-3 names has been modified to pass the fsck_msdos check.
  • The number of clusters occupied by a directory is now stored in the <is_dir> field of inode.
File size: 3.4 KB
RevLine 
[663]1////////////////////////////////////////////////////////////////////////////////
2// File     : fat32_shared.h
3// Date     : 27/07/2015
4// Author   : Clément Guérin
5// Copyright (c) UPMC-LIP6
6////////////////////////////////////////////////////////////////////////////////
7
8#ifndef _FAT32_SHARED
9#define _FAT32_SHARED
10
11/********************************************************************************
12  This struct is used by _fat_file_info().
13********************************************************************************/
14
15typedef struct fat_file_info_s
16{
17    unsigned int size;      // size in bytes
18    unsigned int offset;    // offset in bytes
19    unsigned int is_dir;    // is the file a directory
20}   fat_file_info_t;
21
22/********************************************************************************
23  This struct is used by _fat_readdir(). It describes a directory entry.
24********************************************************************************/
25
26typedef struct fat_dirent_s
27{
28    unsigned int cluster;   // cluster index
29    unsigned int size;      // size in bytes
30    unsigned int is_dir;    // is the entry a directory
31    char name[36];          // entry name
32}   fat_dirent_t;
33
34/********************************************************************************
35  _fat_open() flags.
36********************************************************************************/
37
38#define O_RDONLY                0x01
39#define O_TRUNC                 0x10
[772]40#define O_CREAT                 0x20
[663]41
42/********************************************************************************
43  _fat_lseek() flags.
44********************************************************************************/
45
46#define SEEK_SET                0
47#define SEEK_CUR                1
[746]48#define SEEK_END                2
[663]49
[664]50/********************************************************************************
[773]51  _fat_dump_block() types.
52********************************************************************************/
53
54#define DUMP_BS                 0
55#define DUMP_FS                 1
56#define DUMP_FAT                2
57#define DUMP_FILE               3
58#define DUMP_DIR                4
59
60/********************************************************************************
[664]61  Error codes map.
62********************************************************************************/
63
64#define GIET_FAT32_OK                   (  0)
65#define GIET_FAT32_NOT_INITIALIZED      (- 1)
66#define GIET_FAT32_INVALID_BOOT_SECTOR  (- 2)
67#define GIET_FAT32_IO_ERROR             (- 3)
68#define GIET_FAT32_FILE_NOT_FOUND       (- 4)
69#define GIET_FAT32_INVALID_FD           (- 5)
70#define GIET_FAT32_NAME_TOO_LONG        (- 6)
71#define GIET_FAT32_TOO_MANY_OPEN_FILES  (- 7)
72#define GIET_FAT32_NOT_OPEN             (- 8)
73#define GIET_FAT32_IS_OPEN              (- 9)
74#define GIET_FAT32_READ_ONLY            (-10)
75#define GIET_FAT32_NO_FREE_SPACE        (-11)
76#define GIET_FAT32_INVALID_ARG          (-12)
77#define GIET_FAT32_NOT_A_DIRECTORY      (-13)
78#define GIET_FAT32_IS_DIRECTORY         (-14)
79#define GIET_FAT32_DIRECTORY_NOT_EMPTY  (-15)
80#define GIET_FAT32_MOVE_INTO_SUBDIR     (-16)
81#define GIET_FAT32_FILE_EXISTS          (-17)
82#define GIET_FAT32_NO_MORE_ENTRIES      (-18)
83#define GIET_FAT32_BUFFER_TOO_SMALL     (-19)
84
[663]85#endif // _FAT32_SHARED
86
87// Local Variables:
88// tab-width: 4
89// c-basic-offset: 4
90// c-file-offsets:((innamespace . 0)(inline-open . 0))
91// indent-tabs-mode: nil
92// End:
93// vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
94
Note: See TracBrowser for help on using the repository browser.