return 0;
}
-static int settle_entry_token(void) {
- int r;
-
- switch (arg_entry_token_type) {
-
- case ARG_ENTRY_TOKEN_AUTO: {
- _cleanup_free_ char *buf = NULL;
- r = read_one_line_file("/etc/kernel/entry-token", &buf);
- if (r < 0 && r != -ENOENT)
- return log_error_errno(r, "Failed to read /etc/kernel/entry-token: %m");
-
- if (!isempty(buf)) {
- free_and_replace(arg_entry_token, buf);
- arg_entry_token_type = ARG_ENTRY_TOKEN_LITERAL;
- } else if (sd_id128_is_null(arg_machine_id)) {
- _cleanup_free_ char *id = NULL, *image_id = NULL;
-
- r = parse_os_release(NULL,
- "IMAGE_ID", &image_id,
- "ID", &id);
- if (r < 0)
- return log_error_errno(r, "Failed to load /etc/os-release: %m");
-
- if (!isempty(image_id)) {
- free_and_replace(arg_entry_token, image_id);
- arg_entry_token_type = ARG_ENTRY_TOKEN_OS_IMAGE_ID;
- } else if (!isempty(id)) {
- free_and_replace(arg_entry_token, id);
- arg_entry_token_type = ARG_ENTRY_TOKEN_OS_ID;
- } else
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No machine ID set, and /etc/os-release carries no ID=/IMAGE_ID= fields.");
- } else {
- r = free_and_strdup_warn(&arg_entry_token, SD_ID128_TO_STRING(arg_machine_id));
- if (r < 0)
- return r;
-
- arg_entry_token_type = ARG_ENTRY_TOKEN_MACHINE_ID;
- }
-
- break;
- }
-
- case ARG_ENTRY_TOKEN_MACHINE_ID:
- if (sd_id128_is_null(arg_machine_id))
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No machine ID set.");
-
- r = free_and_strdup_warn(&arg_entry_token, SD_ID128_TO_STRING(arg_machine_id));
- if (r < 0)
- return r;
-
- break;
-
- case ARG_ENTRY_TOKEN_OS_IMAGE_ID: {
- _cleanup_free_ char *buf = NULL;
-
- r = parse_os_release(NULL, "IMAGE_ID", &buf);
- if (r < 0)
- return log_error_errno(r, "Failed to load /etc/os-release: %m");
-
- if (isempty(buf))
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "IMAGE_ID= field not set in /etc/os-release.");
-
- free_and_replace(arg_entry_token, buf);
- break;
- }
-
- case ARG_ENTRY_TOKEN_OS_ID: {
- _cleanup_free_ char *buf = NULL;
-
- r = parse_os_release(NULL, "ID", &buf);
- if (r < 0)
- return log_error_errno(r, "Failed to load /etc/os-release: %m");
-
- if (isempty(buf))
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "ID= field not set in /etc/os-release.");
-
- free_and_replace(arg_entry_token, buf);
- break;
- }
-
- case ARG_ENTRY_TOKEN_LITERAL:
- assert(!isempty(arg_entry_token)); /* already filled in by command line parser */
- break;
- }
-
- if (isempty(arg_entry_token) || !(utf8_is_valid(arg_entry_token) && string_is_safe(arg_entry_token)))
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Selected entry token not valid: %s", arg_entry_token);
-
- log_debug("Using entry token: %s", arg_entry_token);
- return 0;
-}
-
static bool use_boot_loader_spec_type1(void) {
/* If the layout is not specified, or if it is set explicitly to "bls" we assume Boot Loader
* Specification Type #1 is the chosen format for our boot loader entries */
if (!sd_id128_is_null(dollar_boot_partition_uuid))
printf(" (/dev/disk/by-partuuid/" SD_ID128_UUID_FORMAT_STR ")",
SD_ID128_FORMAT_VAL(dollar_boot_partition_uuid));
+ if (settle_entry_token() >= 0)
+ printf("\n token: %s", arg_entry_token);
printf("\n\n");
if (config->default_entry < 0)
#include "bootctl.h"
#include "bootctl-util.h"
#include "fileio.h"
+#include "os-util.h"
#include "stat-util.h"
#include "sync-util.h"
+#include "utf8.h"
int sync_everything(void) {
int ret = 0, k;
return r;
}
+
+int settle_entry_token(void) {
+ int r;
+
+ switch (arg_entry_token_type) {
+
+ case ARG_ENTRY_TOKEN_AUTO: {
+ _cleanup_free_ char *buf = NULL;
+ r = read_one_line_file("/etc/kernel/entry-token", &buf);
+ if (r < 0 && r != -ENOENT)
+ return log_error_errno(r, "Failed to read /etc/kernel/entry-token: %m");
+
+ if (!isempty(buf)) {
+ free_and_replace(arg_entry_token, buf);
+ arg_entry_token_type = ARG_ENTRY_TOKEN_LITERAL;
+ } else if (sd_id128_is_null(arg_machine_id)) {
+ _cleanup_free_ char *id = NULL, *image_id = NULL;
+
+ r = parse_os_release(NULL,
+ "IMAGE_ID", &image_id,
+ "ID", &id);
+ if (r < 0)
+ return log_error_errno(r, "Failed to load /etc/os-release: %m");
+
+ if (!isempty(image_id)) {
+ free_and_replace(arg_entry_token, image_id);
+ arg_entry_token_type = ARG_ENTRY_TOKEN_OS_IMAGE_ID;
+ } else if (!isempty(id)) {
+ free_and_replace(arg_entry_token, id);
+ arg_entry_token_type = ARG_ENTRY_TOKEN_OS_ID;
+ } else
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No machine ID set, and /etc/os-release carries no ID=/IMAGE_ID= fields.");
+ } else {
+ r = free_and_strdup_warn(&arg_entry_token, SD_ID128_TO_STRING(arg_machine_id));
+ if (r < 0)
+ return r;
+
+ arg_entry_token_type = ARG_ENTRY_TOKEN_MACHINE_ID;
+ }
+
+ break;
+ }
+
+ case ARG_ENTRY_TOKEN_MACHINE_ID:
+ if (sd_id128_is_null(arg_machine_id))
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No machine ID set.");
+
+ r = free_and_strdup_warn(&arg_entry_token, SD_ID128_TO_STRING(arg_machine_id));
+ if (r < 0)
+ return r;
+
+ break;
+
+ case ARG_ENTRY_TOKEN_OS_IMAGE_ID: {
+ _cleanup_free_ char *buf = NULL;
+
+ r = parse_os_release(NULL, "IMAGE_ID", &buf);
+ if (r < 0)
+ return log_error_errno(r, "Failed to load /etc/os-release: %m");
+
+ if (isempty(buf))
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "IMAGE_ID= field not set in /etc/os-release.");
+
+ free_and_replace(arg_entry_token, buf);
+ break;
+ }
+
+ case ARG_ENTRY_TOKEN_OS_ID: {
+ _cleanup_free_ char *buf = NULL;
+
+ r = parse_os_release(NULL, "ID", &buf);
+ if (r < 0)
+ return log_error_errno(r, "Failed to load /etc/os-release: %m");
+
+ if (isempty(buf))
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "ID= field not set in /etc/os-release.");
+
+ free_and_replace(arg_entry_token, buf);
+ break;
+ }
+
+ case ARG_ENTRY_TOKEN_LITERAL:
+ assert(!isempty(arg_entry_token)); /* already filled in by command line parser */
+ break;
+ }
+
+ if (isempty(arg_entry_token) || !(utf8_is_valid(arg_entry_token) && string_is_safe(arg_entry_token)))
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Selected entry token not valid: %s", arg_entry_token);
+
+ log_debug("Using entry token: %s", arg_entry_token);
+ return 0;
+}
const char *get_efi_arch(void);
int get_file_version(int fd, char **ret);
+
+int settle_entry_token(void);