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