Reuse set_default_kernel from systemd-class.

This commit is contained in:
Arzhan Kinzhalin
2017-09-19 18:49:02 +00:00
parent 809aeb2ce8
commit 43baee8f91
3 changed files with 13 additions and 6 deletions
+3 -4
View File
@@ -126,10 +126,9 @@ static bool shim_systemd_remove_kernel(const BootManager *manager, const Kernel
}
static bool shim_systemd_set_default_kernel(const BootManager *manager, const Kernel *kernel) {
(void)manager;
(void)kernel;
fprintf(stderr, "%s is not implemented\n", __func__);
return true;
/* this writes systemd config. systemd has the configuration paths
* hardcoded, hence whatever sd_class is doing is OK. */
return sd_class_set_default_kernel_impl(manager, kernel, NULL);
}
static bool exists_identical(const char *path, const char *spath) {
+7 -2
View File
@@ -300,13 +300,14 @@ bool sd_class_remove_kernel(const BootManager *manager, const Kernel *kernel)
return true;
}
bool sd_class_set_default_kernel(const BootManager *manager, const Kernel *kernel)
bool sd_class_set_default_kernel_impl(const BootManager *manager, const Kernel *kernel,
bool (*ensure_layout)(const BootManager *))
{
if (!manager) {
return false;
}
if (!sd_class_ensure_dirs(manager)) {
if (ensure_layout && !ensure_layout(manager)) {
LOG_FATAL("Failed to create required directories for %s", sd_config->name);
return false;
}
@@ -366,6 +367,10 @@ write_config:
return true;
}
bool sd_class_set_default_kernel(const BootManager *manager, const Kernel *kernel) {
return sd_class_set_default_kernel_impl(manager, kernel, sd_class_ensure_dirs);
}
bool sd_class_needs_install(const BootManager *manager)
{
if (!manager) {
+3
View File
@@ -41,6 +41,9 @@ bool sd_class_remove_kernel(const BootManager *manager, const Kernel *kernel);
bool sd_class_set_default_kernel(const BootManager *manager, const Kernel *kernel);
bool sd_class_set_default_kernel_impl(const BootManager *manager, const Kernel *kernel,
bool (*ensure_layout)(const BootManager *));
bool sd_class_needs_install(const BootManager *manager);
bool sd_class_needs_update(const BootManager *manager);