OSDN Git Service

maint: remove now-unused fat-related functions
[android-x86/external-parted.git] / libparted / fs / fat / bootsector.c
index 10426cd..c43940f 100644 (file)
@@ -1,10 +1,11 @@
 /*
     libparted
-    Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
+    Copyright (C) 1998-2000, 2002, 2004, 2007, 2009-2012 Free Software
+    Foundation, Inc.
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
+    the Free Software Foundation; either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
     GNU General Public License for more details.
 
     You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <config.h>
 #include "fat.h"
 
 #include <stdio.h>
@@ -37,8 +38,8 @@
 int
 fat_boot_sector_read (FatBootSector* bs, const PedGeometry *geom)
 {
-       PED_ASSERT (bs != NULL, return 0);
-       PED_ASSERT (geom != NULL, return 0);
+       PED_ASSERT (bs != NULL);
+       PED_ASSERT (geom != NULL);
 
        if (!ped_geometry_read (geom, bs, 0, 1))
                return 0;
@@ -57,7 +58,8 @@ fat_boot_sector_read (FatBootSector* bs, const PedGeometry *geom)
                return 0;
        }
 
-       if (!bs->sector_size || PED_LE16_TO_CPU (bs->sector_size) % 512) {
+       if (!bs->sector_size
+            || PED_LE16_TO_CPU (bs->sector_size) % PED_SECTOR_SIZE_DEFAULT) {
                ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
                        _("File system has an invalid sector size for a FAT "
                          "file system."));
@@ -115,6 +117,23 @@ fat_boot_sector_probe_type (const FatBootSector* bs, const PedGeometry* geom)
                return FAT_TYPE_FAT12;
 }
 
+static int
+_fat_table_entry_size (FatType fat_type)
+{
+       switch (fat_type) {
+               case FAT_TYPE_FAT12:
+               return 2;               /* FIXME: how? */
+
+               case FAT_TYPE_FAT16:
+               return 2;
+
+               case FAT_TYPE_FAT32:
+               return 4;
+       }
+
+       return 0;
+}
+
 /* Analyses the boot sector, and sticks appropriate numbers in
    fs->type_specific.
 
@@ -126,11 +145,10 @@ int
 fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs)
 {
        FatSpecific*            fs_info = FAT_SPECIFIC (fs);
-       PedExceptionOption      ex_status;
        int                     fat_entry_size;
 
-       PED_ASSERT (bs != NULL, return 0);
-       
+       PED_ASSERT (bs != NULL);
+
        if (PED_LE16_TO_CPU (bs->sector_size) != 512) {
                if (ped_exception_throw (
                        PED_EXCEPTION_BUG,
@@ -158,34 +176,22 @@ fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs)
 
                switch (ped_exception_throw (
                        PED_EXCEPTION_ERROR,
-                       PED_EXCEPTION_FIX + PED_EXCEPTION_IGNORE
-                       + PED_EXCEPTION_CANCEL,
+                       PED_EXCEPTION_IGNORE_CANCEL,
                        _("The file system's CHS geometry is (%d, %d, %d), "
                          "which is invalid.  The partition table's CHS "
-                         "geometry is (%d, %d, %d).  If you select Ignore, "
-                         "the file system's CHS geometry will be left "
-                         "unchanged.  If you select Fix, the file system's "
-                         "CHS geometry will be set to match the partition "
-                         "table's CHS geometry."),
+                         "geometry is (%d, %d, %d)."),
                         cyl_count, fs_info->heads, fs_info->sectors_per_track,
                         bios_geom->cylinders, bios_geom->heads,
                         bios_geom->sectors)) {
 
-               case PED_EXCEPTION_FIX:
-                       fs_info->sectors_per_track = bios_geom->sectors;
-                       fs_info->heads = bios_geom->heads;
-                       bs->secs_track
-                               = PED_CPU_TO_LE16 (fs_info->sectors_per_track);
-                       bs->heads = PED_CPU_TO_LE16 (fs_info->heads);
-                       if (!fat_boot_sector_write (bs, fs))
-                               return 0;
-                       break;
-
                case PED_EXCEPTION_CANCEL:
                        return 0;
 
                case PED_EXCEPTION_IGNORE:
                        break;
+
+                default:
+                        break;
                }
        }
 
@@ -271,7 +277,7 @@ fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs)
                = (fs_info->sector_count - fs_info->cluster_offset)
                  / fs_info->cluster_sectors;
 
-       fat_entry_size = fat_table_entry_size (fs_info->fat_type);
+       fat_entry_size = _fat_table_entry_size (fs_info->fat_type);
        if (fs_info->cluster_count + 2
                        > fs_info->fat_sectors * 512 / fat_entry_size)
                fs_info->cluster_count
@@ -283,112 +289,6 @@ fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs)
 }
 
 #ifndef DISCOVER_ONLY
-int
-fat_boot_sector_set_boot_code (FatBootSector* bs)
-{
-       PED_ASSERT (bs != NULL, return 0);
-
-       memset (bs, 0, 512);
-       memcpy (bs->boot_jump, FAT_BOOT_JUMP, 3);
-       memcpy (bs->u.fat32.boot_code, FAT_BOOT_CODE, FAT_BOOT_CODE_LENGTH);
-       return 1;
-}
-
-int
-fat_boot_sector_generate (FatBootSector* bs, const PedFileSystem* fs)
-{
-       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
-
-       PED_ASSERT (bs != NULL, return 0);
-
-       memcpy (bs->system_id, "MSWIN4.1", 8);
-       bs->sector_size = PED_CPU_TO_LE16 (fs_info->logical_sector_size * 512);
-       bs->cluster_size = fs_info->cluster_sectors
-                               / fs_info->logical_sector_size;
-       bs->reserved = PED_CPU_TO_LE16 (fs_info->fat_offset
-                                       / fs_info->logical_sector_size);
-       bs->fats = fs_info->fat_table_count;
-
-       bs->dir_entries = (fs_info->fat_type == FAT_TYPE_FAT16)
-                         ? PED_CPU_TO_LE16 (fs_info->root_dir_entry_count)
-                         : 0;
-
-       if (fs_info->sector_count / fs_info->logical_sector_size > 0xffff
-               || fs_info->fat_type == FAT_TYPE_FAT32) {
-               bs->sectors = 0;
-               bs->sector_count = PED_CPU_TO_LE32 (fs_info->sector_count
-                                               / fs_info->logical_sector_size);
-       } else {
-               bs->sectors = PED_CPU_TO_LE16 (fs_info->sector_count
-                                              / fs_info->logical_sector_size);
-               bs->sector_count = 0;
-       }
-
-       bs->media = 0xf8;
-
-       bs->secs_track = PED_CPU_TO_LE16 (fs_info->sectors_per_track);
-       bs->heads = PED_CPU_TO_LE16 (fs_info->heads);
-       bs->hidden = PED_CPU_TO_LE32 (fs->geom->start);
-
-       if (fs_info->fat_type == FAT_TYPE_FAT32) {
-               bs->fat_length = 0;
-               bs->u.fat32.fat_length = PED_CPU_TO_LE32 (fs_info->fat_sectors
-                                               / fs_info->logical_sector_size);
-               bs->u.fat32.flags = 0;  /* FIXME: what the hell are these? */
-               bs->u.fat32.version = 0;  /* must be 0, for Win98 bootstrap */
-               bs->u.fat32.root_dir_cluster
-                       = PED_CPU_TO_LE32 (fs_info->root_cluster);
-               bs->u.fat32.info_sector
-                       = PED_CPU_TO_LE16 (fs_info->info_sector_offset
-                                          / fs_info->logical_sector_size);
-               bs->u.fat32.backup_sector
-                       = PED_CPU_TO_LE16 (fs_info->boot_sector_backup_offset
-                                          / fs_info->logical_sector_size);
-
-               bs->u.fat32.drive_num = 0x80;   /* _ALWAYS_ 0x80.  silly DOS */
-
-               memset (bs->u.fat32.empty_1, 0, 12);
-
-               bs->u.fat32.ext_signature = 0x29;
-               bs->u.fat32.serial_number
-                       = PED_CPU_TO_LE32 (fs_info->serial_number);
-               memcpy (bs->u.fat32.volume_name, "NO NAME    ", 11);
-               memcpy (bs->u.fat32.fat_name, "FAT32   ", 8);
-       } else {
-               bs->fat_length
-                       = PED_CPU_TO_LE16 (fs_info->fat_sectors
-                                          / fs_info->logical_sector_size);
-
-               bs->u.fat16.drive_num = 0x80;   /* _ALWAYS_ 0x80.  silly DOS */
-
-               bs->u.fat16.ext_signature = 0x29;
-               bs->u.fat16.serial_number
-                       = PED_CPU_TO_LE32 (fs_info->serial_number);
-               memcpy (bs->u.fat16.volume_name, "NO NAME    ", 11);
-               memcpy (bs->u.fat16.fat_name, "FAT16   ", 8);
-       }
-
-       bs->boot_sign = PED_CPU_TO_LE16 (0xaa55);
-
-       return 1;
-}
-
-int
-fat_boot_sector_write (const FatBootSector* bs, PedFileSystem* fs)
-{
-       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
-
-       PED_ASSERT (bs != NULL, return 0);
-
-       if (!ped_geometry_write (fs->geom, bs, 0, 1))
-               return 0;
-       if (fs_info->fat_type == FAT_TYPE_FAT32) {
-               if (!ped_geometry_write (fs->geom, bs,
-                                        fs_info->boot_sector_backup_offset, 1))
-                       return 0;
-       }
-       return ped_geometry_sync (fs->geom);
-}
 
 int
 fat_info_sector_read (FatInfoSector* is, const PedFileSystem* fs)
@@ -396,8 +296,8 @@ fat_info_sector_read (FatInfoSector* is, const PedFileSystem* fs)
        FatSpecific*    fs_info = FAT_SPECIFIC (fs);
        int             status;
 
-       PED_ASSERT (is != NULL, return 0);
-       
+       PED_ASSERT (is != NULL);
+
        if (!ped_geometry_read (fs->geom, is, fs_info->info_sector_offset, 1))
                return 0;
 
@@ -413,37 +313,4 @@ fat_info_sector_read (FatInfoSector* is, const PedFileSystem* fs)
        }
        return 1;
 }
-
-int
-fat_info_sector_generate (FatInfoSector* is, const PedFileSystem* fs)
-{
-       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
-
-       PED_ASSERT (is != NULL, return 0);
-       
-       fat_table_count_stats (fs_info->fat);
-
-       memset (is, 0, 512);
-
-       is->signature_1 = PED_CPU_TO_LE32 (FAT32_INFO_MAGIC1);
-       is->signature_2 = PED_CPU_TO_LE32 (FAT32_INFO_MAGIC2);
-       is->free_clusters = PED_CPU_TO_LE32 (fs_info->fat->free_cluster_count);
-       is->next_cluster = PED_CPU_TO_LE32 (fs_info->fat->last_alloc);
-       is->signature_3 = PED_CPU_TO_LE16 (FAT32_INFO_MAGIC3);
-
-       return 1;
-}
-
-int
-fat_info_sector_write (const FatInfoSector* is, PedFileSystem *fs)
-{
-       FatSpecific*    fs_info = FAT_SPECIFIC (fs);
-
-       PED_ASSERT (is != NULL, return 0);
-       
-       if (!ped_geometry_write (fs->geom, is, fs_info->info_sector_offset, 1))
-               return 0;
-       return ped_geometry_sync (fs->geom);
-}
 #endif /* !DISCOVER_ONLY */
-