[Top][All Lists]
[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/