/[hurd]/hurd/fatfs/fat.c
ViewVC logotype

Diff of /hurd/fatfs/fat.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by marcus, Tue Dec 3 20:52:59 2002 UTC revision 1.2 by jbailey, Mon Jul 28 01:48:26 2003 UTC
# Line 1  Line 1 
1  /* fat.c - Support for FAT filesystems.  /* fat.c - Support for FAT filesystems.
2     Copyright (C) 2002 Free Software Foundation, Inc.     Copyright (C) 2002, 2003 Free Software Foundation, Inc.
3     Written by Marcus Brinkmann.     Written by Marcus Brinkmann.
4    
5     This file is part of the GNU Hurd.     This file is part of the GNU Hurd.
# Line 151  fat_read_sblock (void) Line 151  fat_read_sblock (void)
151      error (1, 0, "Number of total sectors is zero");      error (1, 0, "Number of total sectors is zero");
152    
153    if (bytes_per_sector & (store->block_size - 1))    if (bytes_per_sector & (store->block_size - 1))
154      error (1, 0, "Block size of filesystem is not a multiple of the block size "      error (1, 0, "Block size of filesystem is not
155             "of the store");            " a multiple of the block size of the store");
156    
157    if (read_word (sblock->reserved_sectors) == 0)    if (read_word (sblock->reserved_sectors) == 0)
158      error (1, 0, "Number of reserved sectors is zero");      error (1, 0, "Number of reserved sectors is zero");
# Line 164  fat_read_sblock (void) Line 164  fat_read_sblock (void)
164    if (sectors_per_fat == 0)    if (sectors_per_fat == 0)
165      error (1, 0, "Number of sectors per fat is zero");      error (1, 0, "Number of sectors per fat is zero");
166    
167    nr_of_root_dir_sectors = ((read_word (sblock->nr_of_root_dirents) * FAT_DIR_REC_LEN)    nr_of_root_dir_sectors = ((read_word (sblock->nr_of_root_dirents) *
168                        - 1) / bytes_per_sector + 1;                              FAT_DIR_REC_LEN) - 1) / bytes_per_sector + 1;
   if (nr_of_root_dir_sectors & (sectors_per_cluster - 1))  
     error (1, 0, "Number of root dir sectors is not a multiple of sectors_per_cluster");  
169    
170    first_root_dir_byte = (read_word (sblock->reserved_sectors)    first_root_dir_byte = (read_word (sblock->reserved_sectors)
171      + (sblock->nr_of_fat_tables * sectors_per_fat)) << log2_bytes_per_sector;      + (sblock->nr_of_fat_tables * sectors_per_fat)) << log2_bytes_per_sector;
172    first_data_sector = (first_root_dir_byte >> log2_bytes_per_sector) + nr_of_root_dir_sectors;    first_data_sector = (first_root_dir_byte >> log2_bytes_per_sector)
173        + nr_of_root_dir_sectors;
174    first_data_byte = first_data_sector << log2_bytes_per_sector;    first_data_byte = first_data_sector << log2_bytes_per_sector;
175    
176    nr_of_clusters = (total_sectors - first_data_sector) / sectors_per_cluster;    nr_of_clusters = (total_sectors - first_data_sector) / sectors_per_cluster;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26