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

Reply via email to