summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-09-13 15:08:40 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-10-14 14:04:20 +0200
commit1369bfd44f2393893036ee50f81e0104f7fb6416 (patch)
treef5eab85de4e8529904ec012bf4c7668d37d444da /common
parent51dce5facb4d1a6f182ede9654b25c2e83878aee (diff)
downloadbarebox-1369bfd44f2393893036ee50f81e0104f7fb6416.tar.gz
barebox-1369bfd44f2393893036ee50f81e0104f7fb6416.tar.xz
cdev: store dos partition type in struct cdev
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common')
-rw-r--r--common/partitions.c4
-rw-r--r--common/partitions/dos.c7
-rw-r--r--common/partitions/parser.h1
3 files changed, 9 insertions, 3 deletions
diff --git a/common/partitions.c b/common/partitions.c
index 38032a349c..694c6f6dd5 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -63,6 +63,8 @@ static int register_one_partition(struct block_device *blk,
goto out;
}
+ cdev->dos_partition_type = part->dos_partition_type;
+
free(partition_name);
if (!part->name[0])
@@ -84,7 +86,7 @@ static int register_one_partition(struct block_device *blk,
ret = 0;
out:
free(partition_name);
- return 0;
+ return ret;
}
static struct partition_parser *partition_parser_get_by_filetype(uint8_t *buf)
diff --git a/common/partitions/dos.c b/common/partitions/dos.c
index 29f13751a1..31b1ed60d1 100644
--- a/common/partitions/dos.c
+++ b/common/partitions/dos.c
@@ -138,10 +138,13 @@ static void dos_partition(void *buf, struct block_device *blk,
for (i = 0; i < 4; i++) {
pentry.first_sec = get_unaligned_le32(&table[i].partition_start);
pentry.size = get_unaligned_le32(&table[i].partition_size);
+ pentry.dos_partition_type = table[i].type;
if (pentry.first_sec != 0) {
- pd->parts[pd->used_entries].first_sec = pentry.first_sec;
- pd->parts[pd->used_entries].size = pentry.size;
+ int n = pd->used_entries;
+ pd->parts[n].first_sec = pentry.first_sec;
+ pd->parts[n].size = pentry.size;
+ pd->parts[n].dos_partition_type = pentry.dos_partition_type;
pd->used_entries++;
} else {
dev_dbg(blk->dev, "Skipping empty partition %d\n", i);
diff --git a/common/partitions/parser.h b/common/partitions/parser.h
index f5bdbd1442..8d39452378 100644
--- a/common/partitions/parser.h
+++ b/common/partitions/parser.h
@@ -16,6 +16,7 @@
struct partition {
char name[MAX_PARTITION_NAME];
+ u8 dos_partition_type;
uint64_t first_sec;
uint64_t size;
};