From 3ad474d024811adaa46306edeb0522b5568768bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 15 Sep 2003 21:55:45 +0000 Subject: [PATCH] The main partition can now contain file systems as well (it's no longer created on the stack, and added to the gPartitions list in that case). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4693 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/boot/loader/partitions.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/kernel/boot/loader/partitions.cpp b/src/kernel/boot/loader/partitions.cpp index 66dfae637c..7d1247a18c 100644 --- a/src/kernel/boot/loader/partitions.cpp +++ b/src/kernel/boot/loader/partitions.cpp @@ -59,6 +59,10 @@ extern list gPartitions; namespace boot { +/** A convenience class to automatically close a + * file descriptor upon deconstruction. + */ + class NodeOpener { public: NodeOpener(Node *node, int mode) @@ -247,13 +251,19 @@ Partition::Scan() status_t add_partitions_for(int fd) { - Partition partition(fd); + Partition *partition = new Partition(fd); // set some magic/default values - partition.block_size = 512; - partition.size = partition.Size(); + partition->block_size = 512; + partition->size = partition->Size(); - return partition.Scan(); + if (partition->Scan() == B_OK && partition->IsFileSystem()) { + list_add_item(&gPartitions, partition); + return B_OK; + } + + delete partition; + return B_OK; }