Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fwsetup-ng.git;a=commitdiff;h=5a48ebd42f4cb9d4e42ad6233fa581316d2b04c0
commit 5a48ebd42f4cb9d4e42ad6233fa581316d2b04c0 Author: James Buren <[email protected]> Date: Tue Oct 9 06:00:03 2012 -0500 add function for retrieving partition's "purpose" diff --git a/src/block.c b/src/block.c index f20c986..ca06a1f 100644 --- a/src/block.c +++ b/src/block.c @@ -2,6 +2,8 @@ #include <blkid.h> #include "local.h" +#define EMPTY_PARTITION &(struct partition) {0} + #define DOS_DATA 0x83 #define DOS_SWAP 0x82 #define DOS_RAID 0xFD @@ -510,6 +512,54 @@ extern void disk_delete_partition(struct disk *disk) disk->modified = true; } +extern const char *disk_partition_get_purpose(struct disk *disk,int n) +{ + struct partition *part = 0; + const char *purpose = "unknown"; + + if(disk == 0 || n <= 0 || n > disk->size) + { + errno = EINVAL; + fprintf(logfile,"%s: %s\n",__func__,strerror(errno)); + return 0; + } + + part = &disk->table[n]; + + if(disk->type == DISKTYPE_DOS) + { + if(part->dostype == DOS_DATA) + purpose = "data"; + else if(part->dostype == DOS_SWAP) + purpose = "swap"; + else if(part->dostype == DOS_RAID) + purpose = "raid"; + else if(part->dostype == DOS_LVM) + purpose = "lvm"; + else if(part->dostype == DOS_EFI) + purpose = "efi"; + else if(part->dostype == DOS_EXTENDED) + purpose = "extended"; + } + else if(disk->type == DISKTYPE_GPT) + { + if(strcmp(part->gpttype,GPT_DATA) == 0) + purpose = "data"; + else if(strcmp(part->gpttype,GPT_SWAP) == 0) + purpose = "swap"; + else if(strcmp(part->gpttype,GPT_RAID) == 0) + purpose = "raid"; + else if(strcmp(part->gpttype,GPT_LVM) == 0) + purpose = "lvm"; + else if(strcmp(part->gpttype,GPT_EFI) == 0) + purpose = "efi"; + else if(strcmp(part->gpttype,GPT_BIOS) == 0) + purpose = "bios"; + } + + return purpose; +} + extern void disk_close(struct disk *disk) { if(disk == 0) _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
