bug-parted
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] DOS #defines (was Re: Parted 1.6.0-pre3)


From: Andreas Dilger
Subject: [PATCH] DOS #defines (was Re: Parted 1.6.0-pre3)
Date: Mon, 4 Mar 2002 00:44:58 -0700
User-agent: Mutt/1.2.5i

This patch replaces the use of numerical partition types in DOS partitions
with #defined names (it could be an enum, I suppose, also).  This makes it
a bit cleaner code I think (especially w.r.t. hidden partitions).

Cheers, Andreas
================== patch-1.6.0p2-dosname.diff ============================
diff -ru libparted/disk_dos.c.orig libparted/disk_dos.c
--- libparted/disk_dos.c.orig   Mon Feb  4 16:29:31 2002
+++ libparted/disk_dos.c        Mon Feb 11 23:53:55 2002
@@ -51,6 +51,46 @@
 #define MSDOS_MAGIC            0xAA55
 #define PARTITION_MAGIC_MAGIC  0xf6f6
 
+#define PARTITION_EMPTY                0x00
+#define PARTITION_FAT12                0x01
+#define PARTITION_FAT16_SM     0x04
+#define PARTITION_EXT          0x05
+#define PARTITION_FAT16                0x06
+#define PARTITION_NTFS         0x07
+#define PARTITION_HPFS         0x07
+#define PARTITION_FAT32                0x0b
+#define PARTITION_FAT32_LBA    0x0c
+#define PARTITION_FAT16_LBA    0x0e
+#define PARTITION_EXT_LBA      0x0f
+
+#define PART_FLAG_HIDDEN       0x10    /* Valid for FAT/NTFS only */
+#define PARTITION_FAT12_H      (PARTITION_FAT12        | PART_FLAG_HIDDEN)
+#define PARTITION_FAT16_SM_H   (PARTITION_FAT16_SM     | PART_FLAG_HIDDEN)
+#define PARTITION_EXT_H                (PARTITION_EXT          | 
PART_FLAG_HIDDEN)
+#define PARTITION_FAT16_H      (PARTITION_FAT16        | PART_FLAG_HIDDEN)
+#define PARTITION_NTFS_H       (PARTITION_NTFS         | PART_FLAG_HIDDEN)
+#define PARTITION_HPFS_H       (PARTITION_HPFS         | PART_FLAG_HIDDEN)
+#define PARTITION_FAT32_H      (PARTITION_FAT32        | PART_FLAG_HIDDEN)
+#define PARTITION_FAT32_LBA_H  (PARTITION_FAT32_LBA    | PART_FLAG_HIDDEN)
+#define PARTITION_FAT16_LBA_H  (PARTITION_FAT16_LBA    | PART_FLAG_HIDDEN)
+
+#define PARTITION_COMPAQ_DIAG  0x12
+#define PARTITION_WINDOWS_LDM  0x42
+#define PARTITION_LINUX_SWAP   0x82
+#define PARTITION_LINUX                0x83
+#define PARTITION_MSAPM_SUSP   0x84
+#define PARTITION_LINUX_EXT    0x85
+#define PARTITION_LINUX_LVM    0x8e
+#define PARTITION_PHEONIX_SUSP 0xa0
+#define PARTITION_DELL_SUSP    0xa1
+#define PARTITION_FREEBSD      0xa5
+#define PARTITION_OPENBSD      0xa6
+#define PARTITION_NETBSD       0xa9
+#define PARTITION_DELL_DIAG    0xde
+#define PARTITION_GPT          0xee
+#define PARTITION_LINUX_RAID   0xfd
+#define PARTITION_LINUX_LVM_OLD 0xfe
+
 typedef struct _DosRawPartition                DosRawPartition;
 typedef struct _DosRawTable            DosRawTable;
 
@@ -190,9 +231,9 @@
 
        /* If this is a GPT disk, fail here */
        for (i = 0; i < 4; i++) {
-               if (part_table.partitions[i].type == 0xEE)
-                       return 0;
-       }
+               if (part_table.partitions[i].type == PARTITION_GPT)
+                       return 0;
+       }
 
 #ifdef ENABLE_PC98
        pc98_is_zero = 1;
@@ -493,9 +577,9 @@
        PED_ASSERT (raw_part != NULL, return 0);
 
        switch (raw_part->type) {
-       case 0x05:
-       case 0x0f:
-       case 0x85:
+       case PARTITION_EXT:
+       case PARTITION_EXT_LBA:
+       case PARTITION_LINUX_EXT:
                return 1;
 
        default:
@@ -511,12 +599,13 @@
        PED_ASSERT (raw_part != NULL, return 0);
 
        switch (raw_part->type) {
-       case 0x11:
-       case 0x14:
-       case 0x16:
-       case 0x1b:
-       case 0x1c:
-       case 0x1e:
+       case PARTITION_FAT12_H:
+       case PARTITION_FAT16_SM_H:
+       case PARTITION_FAT16_H:
+       case PARTITION_FAT32_H:
+       case PARTITION_NTFS_H:
+       case PARTITION_FAT32_LBA_H:
+       case PARTITION_FAT16_LBA_H:
                return 1;
 
        default:
@@ -532,11 +607,11 @@
        PED_ASSERT (raw_part != NULL, return 0);
 
        switch (raw_part->type) {
-       case 0xc:
-       case 0xe:
-       case 0xf:
-       case 0x1c:
-       case 0x1e:
+       case PARTITION_FAT32_LBA:
+       case PARTITION_FAT16_LBA:
+       case PARTITION_EXT_LBA:
+       case PARTITION_FAT32_LBA_H:
+       case PARTITION_FAT16_LBA_H:
                return 1;
 
        default:
@@ -607,7 +711,7 @@
 
        for (i = 0; i < 4; i++) {
                raw_part = &table.partitions [i];
-               if (raw_part->type == 0x0 || !raw_part->length)
+               if (raw_part->type == PARTITION_EMPTY || !raw_part->length)
                        continue;
 
                /* process nested extended partitions after normal logical
@@ -656,9 +760,9 @@
                dos_data->system = raw_part->type;
                dos_data->boot = raw_part->boot_ind != 0;
                dos_data->hidden = raw_part_is_hidden (raw_part);
-               dos_data->raid = raw_part->type == 0xfd;
-               dos_data->lvm = raw_part->type == 0xfe
-                                       || raw_part->type == 0x8e;
+               dos_data->raid = raw_part->type == PARTITION_LINUX_RAID;
+               dos_data->lvm = raw_part->type == PARTITION_LINUX_LVM_OLD
+                               || raw_part->type == PARTITION_LINUX_LVM;
                dos_data->lba = raw_part_is_lba (raw_part);
                if (!is_extended_table)
                        part->num = i + 1;
@@ -739,7 +844,7 @@
        PED_ASSERT (geom->dev != NULL, return 0);
 
        raw_part->boot_ind = 0;
-       raw_part->type = 0x5;
+       raw_part->type = PARTITION_EXT;
        raw_part->start = PED_CPU_TO_LE32 ((geom->start - offset)
                                / (geom->dev->sector_size / 512));
        raw_part->length = PED_CPU_TO_LE32 (geom->length
@@ -877,7 +982,7 @@
                        = dos_data = ped_malloc (sizeof (DosPartitionData));
                if (!dos_data)
                        goto error_free_part;
-               dos_data->system = 0x83;
+               dos_data->system = PARTITION_LINUX;
                dos_data->hidden = 0;
                dos_data->boot = 0;
                dos_data->raid = 0;
@@ -939,16 +1066,11 @@
                dos_data->lba = 1;
 
-       if (dos_data->hidden
-                   && strncmp (fs_type->name, "fat", 3) != 0
-                   && strcmp (fs_type->name, "ntfs") != 0)
-               dos_data->hidden = 0;
-
        if (part->type & PED_PARTITION_EXTENDED) {
                dos_data->raid = 0;
                dos_data->lvm = 0;
                if (dos_data->lba)
-                       dos_data->system = 0xf;
+                       dos_data->system = PARTITION_EXT_LBA;
                else
-                       dos_data->system = 0x5;
+                       dos_data->system = PARTITION_EXT;
                return 1;
        }
@@ -955,9 +1077,9 @@
 
        if (dos_data->lvm) {
-               dos_data->system = 0x8e;
+               dos_data->system = PARTITION_LINUX_LVM;
                return 1;
        }
        if (dos_data->raid) {
-               dos_data->system = 0xfd;
+               dos_data->system = PARTITION_LINUX_RAID;
                return 1;
        }
@@ -964,26 +1077,25 @@
 
        if (!fs_type) {
-               dos_data->system = 0x83;
+               dos_data->system = PARTITION_LINUX;
                dos_data->hidden = 0;
        } else if (!strcmp (fs_type->name, "fat16")) {
-               if (dos_data->hidden)
-                       dos_data->system = dos_data->lba ? 0x1e : 0x16;
-               else
-                       dos_data->system = dos_data->lba ? 0x0e : 0x06;
+               dos_data->system = dos_data->lba
+                       ? PARTITION_FAT16_LBA : PARTITION_FAT16;
+               if (dos_data->hidden)
+                       dos_data->system |= PART_FLAG_HIDDEN;
        } else if (!strcmp (fs_type->name, "fat32")) {
-               if (dos_data->hidden)
-                       dos_data->system = dos_data->lba ? 0x1c : 0x1b;
-               else
-                       dos_data->system = dos_data->lba ? 0x0c : 0x0b;
-       } else if (!strcmp (fs_type->name, "ntfs")) {
-               if (dos_data->hidden)
-                       dos_data->system = 0x17;
-               else
-                       dos_data->system = 0x7;
+               dos_data->system = dos_data->lba
+                       ? PARTITION_FAT32_LBA : PARTITION_FAT32;
+               if (dos_data->hidden)
+                       dos_data->system |= PART_FLAG_HIDDEN;
+       } else if (!strcmp (fs_type->name, "ntfs")
+                  || !strcmp (fs_type->name, "hpfs")) {
+               dos_data->system = PARTITION_NTFS;
+               if (dos_data->hidden)
+                       dos_data->system |= PART_FLAG_HIDDEN;
        } else if (!strcmp (fs_type->name, "linux-swap")) {
-               dos_data->system = 0x82;
+               dos_data->system = PARTITION_LINUX_SWAP;
                dos_data->hidden = 0;
        } else {
-               dos_data->system = 0x83;
+               dos_data->system = PARTITION_LINUX;
                dos_data->hidden = 0;
        }
@@ -1037,7 +1174,7 @@
                        dos_data->lvm = 0;
                }
                dos_data->raid = state;
-               dos_data->system = 0xfd;
+               dos_data->system = PARTITION_LINUX_RAID;
                return 1;
 
        case PED_PARTITION_LVM:
@@ -1047,5 +1183,5 @@
                }
                dos_data->lvm = state;
-               dos_data->system = 0x8e;
+               dos_data->system = PARTITION_LINUX_LVM;
                return 1;
 
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]