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., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19 
20 
21 #ifndef VSTAFS_H
22 #define VSTAFS_H	1
23 
24 
25 #define LINE			16
26 #define BLOCK_SIZE		512
27 #define VSTAFS_START_DATA	320
28 
29 struct bootrecord
30 {
31   unsigned char flag;
32   unsigned char s_sector;
33   unsigned char s_head;
34   unsigned char s_cylinder;
35   unsigned char p_type;
36   unsigned char e_sector;
37   unsigned char e_head;
38   unsigned char e_cylinder;
39   unsigned long start_lba;
40   unsigned long nr_sector_lba;
41 };
42 
43 struct alloc
44 {
45   unsigned long a_start;
46   unsigned long a_len;
47 };
48 
49 struct first_sector
50 {
51   unsigned long fs_magic;
52   unsigned long fs_size;
53   unsigned long fs_extsize;
54   unsigned long fs_free;
55   struct  alloc fs_freesecs[0];
56 };
57 
58 struct prot
59 {
60   unsigned char len;
61   unsigned char pdefault;
62   unsigned char id[7];
63   unsigned char bits[7];
64 };
65 
66 struct fs_file
67 {
68   unsigned long prev;
69   unsigned long rev;
70   unsigned long len;
71   unsigned short type;
72   unsigned short nlink;
73   struct prot pprot;
74   unsigned int owner;
75   unsigned int extents;
76   struct alloc blocks[32];
77   long fs_ctime, fs_mtime; /* it is not lon but time_t */
78   char pad[16];
79   char data[0];
80 };
81 
82 struct dir_entry
83 {
84   char name[28];
85   unsigned long start;
86 };
87 
88 #endif /* ! VSTAFS_H */
89