Skip to content

Commit c6dfd57

Browse files
committed
🚧 utils: fix rootfs of partition scheme from predefined config
1 parent c322aba commit c6dfd57

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

‎src/utils.cpp‎

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1777,6 +1777,15 @@ bool parse_config() noexcept {
17771777
return false;
17781778
}
17791779

1780+
if (doc.HasMember("fs_name")) {
1781+
assert(doc["fs_name"].IsString());
1782+
config_data["FILESYSTEM_NAME"] = std::string{doc["fs_name"].GetString()};
1783+
} else if (headless_mode) {
1784+
fmt::print(stderr, "'fs_name' field is required in HEADLESS mode!\n");
1785+
return false;
1786+
}
1787+
auto& root_fstype = std::get<std::string>(config_data["FILESYSTEM_NAME"]);
1788+
17801789
if (doc.HasMember("partitions")) {
17811790
assert(doc["partitions"].IsArray());
17821791

@@ -1799,12 +1808,12 @@ bool parse_config() noexcept {
17991808
fmt::print(stderr, "partition type '{}' is invalid! Valid types: {}.\n", part_type, valid_types);
18001809
return false;
18011810
}
1802-
if (!partition_map.HasMember("fs_name") && part_type == "additional"sv) {
1811+
if (!partition_map.HasMember("fs_name") && (part_type != "root"sv || (root_fstype.empty() && part_type == "root"sv))) {
18031812
fmt::print(stderr, "required field 'fs_name' is missing for partition type '{}'!\n", part_type);
18041813
return false;
18051814
}
18061815

1807-
std::string part_fs_name{"-"};
1816+
std::string part_fs_name{root_fstype};
18081817
if (partition_map.HasMember("fs_name")) {
18091818
assert(partition_map["fs_name"].IsString());
18101819
part_fs_name = partition_map["fs_name"].GetString();
@@ -1821,14 +1830,6 @@ bool parse_config() noexcept {
18211830
return false;
18221831
}
18231832

1824-
if (doc.HasMember("fs_name")) {
1825-
assert(doc["fs_name"].IsString());
1826-
config_data["FILESYSTEM_NAME"] = std::string{doc["fs_name"].GetString()};
1827-
} else if (headless_mode) {
1828-
fmt::print(stderr, "'fs_name' field is required in HEADLESS mode!\n");
1829-
return false;
1830-
}
1831-
18321833
if (doc.HasMember("mount_opts")) {
18331834
assert(doc["mount_opts"].IsString());
18341835
config_data["MOUNT_OPTS"] = std::string{doc["mount_opts"].GetString()};

0 commit comments

Comments
 (0)