Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

typedef struct Dosboot  Dosboot;
typedef struct Dos      Dos;
typedef struct Dosdir   Dosdir;
typedef struct Dosfile  Dosfile;
typedef struct Dospart  Dospart;

struct Dospart
{
        uchar flag;             /* active flag */
        uchar shead;            /* starting head */
        uchar scs[2];           /* starting cylinder/sector */
        uchar type;             /* partition type */
        uchar ehead;            /* ending head */
        uchar ecs[2];           /* ending cylinder/sector */
        uchar start[4];         /* starting sector */
        uchar len[4];           /* length in sectors */
};

#define FAT12   0x01
#define FAT16   0x04
#define EXTEND  0x05
#define FATHUGE 0x06
#define FAT32   0x0b
#define FAT32X  0x0c
#define EXTHUGE 0x0f
#define DMDDO   0x54
#define PLAN9   0x39
#define LEXTEND 0x85

struct Dosfile{
        Dos     *dos;           /* owning dos file system */
        char    name[8];
        char    ext[3];
        uchar   attr;
        long    length;
        long    pstart;         /* physical start cluster address */
        long    pcurrent;       /* physical current cluster address */
        long    lcurrent;       /* logical current cluster address */
        long    offset;
};

struct Dos{
        long    start;          /* start of file system */
        int     sectsize;       /* in bytes */
        int     clustsize;      /* in sectors */
        int     clustbytes;     /* in bytes */
        int     nresrv;         /* sectors */
        int     nfats;          /* usually 2 */
        int     rootsize;       /* number of entries */
        int     volsize;        /* in sectors */
        int     mediadesc;
        int     fatsize;        /* in sectors */
        int     fatclusters;
        int     fatbits;        /* 12 or 16 */
        long    fataddr;        /* sector number */
        long    rootaddr;
        long    rootclust;
        long    dataaddr;
        long    freeptr;
};

extern int      dosinit(Fs*);