1 /*
2  *  GRUB  --  GRand Unified Bootloader
3  *  Copyright (C) 2001   Free Software Foundation, Inc.
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18  *  MA 02110-1301, USA.
19  */
20 
21 
22 #ifndef VSTAFS_H
23 #define VSTAFS_H	1
24 
25 
26 #define LINE			16
27 #define BLOCK_SIZE		512
28 #define VSTAFS_START_DATA	320
29 
30 struct bootrecord
31 {
32   unsigned char flag;
33   unsigned char s_sector;
34   unsigned char s_head;
35   unsigned char s_cylinder;
36   unsigned char p_type;
37   unsigned char e_sector;
38   unsigned char e_head;
39   unsigned char e_cylinder;
40   unsigned long start_lba;
41   unsigned long nr_sector_lba;
42 };
43 
44 struct alloc
45 {
46   unsigned long a_start;
47   unsigned long a_len;
48 };
49 
50 struct first_sector
51 {
52   unsigned long fs_magic;
53   unsigned long fs_size;
54   unsigned long fs_extsize;
55   unsigned long fs_free;
56   struct  alloc fs_freesecs[0];
57 };
58 
59 struct prot
60 {
61   unsigned char len;
62   unsigned char pdefault;
63   unsigned char id[7];
64   unsigned char bits[7];
65 };
66 
67 struct fs_file
68 {
69   unsigned long prev;
70   unsigned long rev;
71   unsigned long len;
72   unsigned short type;
73   unsigned short nlink;
74   struct prot pprot;
75   unsigned int owner;
76   unsigned int extents;
77   struct alloc blocks[32];
78   long fs_ctime, fs_mtime; /* it is not lon but time_t */
79   char pad[16];
80   char data[0];
81 };
82 
83 struct dir_entry
84 {
85   char name[28];
86   unsigned long start;
87 };
88 
89 #endif /* ! VSTAFS_H */
90