From: Yu Watanabe Date: Mon, 30 Oct 2023 11:30:12 +0000 (+0900) Subject: locale,firstboot: add headers to vconsole.conf X-Git-Tag: v255-rc1~86^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e7a7cd4e927682996839fe961e2e539769e32c8;p=thirdparty%2Fsystemd.git locale,firstboot: add headers to vconsole.conf Closes #29717. Replaces #29760. Co-authored-by: cunshunxia --- diff --git a/src/basic/env-file.c b/src/basic/env-file.c index 226d578d389..c2cbff4d843 100644 --- a/src/basic/env-file.c +++ b/src/basic/env-file.c @@ -637,3 +637,11 @@ int write_env_file(int dir_fd, const char *fname, char **headers, char **l) { (void) unlinkat(dir_fd, p, 0); return r; } + +int write_vconsole_conf(int dir_fd, const char *fname, char **l) { + char **headers = STRV_MAKE( + "# Written by systemd-localed(8) or systemd-firstboot(1), read by systemd-localed", + "# and systemd-vconsole-setup(8). Use localectl(1) to update this file."); + + return write_env_file(dir_fd, fname, headers, l); +} diff --git a/src/basic/env-file.h b/src/basic/env-file.h index a9714cfd53a..37db30765b7 100644 --- a/src/basic/env-file.h +++ b/src/basic/env-file.h @@ -20,3 +20,5 @@ int load_env_file_pairs_fd(int fd, const char *fname, char ***ret); int merge_env_file(char ***env, FILE *f, const char *fname); int write_env_file(int dir_fd, const char *fname, char **headers, char **l); + +int write_vconsole_conf(int dir_fd, const char *fname, char **l); diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index 6a5b5715c1a..6cf7415a188 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -534,7 +534,7 @@ static int process_keymap(int rfd) { keymap = STRV_MAKE(strjoina("KEYMAP=", arg_keymap)); - r = write_env_file(pfd, f, NULL, keymap); + r = write_vconsole_conf(pfd, f, keymap); if (r < 0) return log_error_errno(r, "Failed to write /etc/vconsole.conf: %m"); diff --git a/src/locale/localed-util.c b/src/locale/localed-util.c index eca765c3f23..199f05b9177 100644 --- a/src/locale/localed-util.c +++ b/src/locale/localed-util.c @@ -532,7 +532,7 @@ int vconsole_write_data(Context *c) { return 0; } - r = write_env_file_label(AT_FDCWD, "/etc/vconsole.conf", NULL, l); + r = write_vconsole_conf_label(l); if (r < 0) return r; diff --git a/src/shared/env-file-label.c b/src/shared/env-file-label.c index 0ab2bb9b743..5917b6377f3 100644 --- a/src/shared/env-file-label.c +++ b/src/shared/env-file-label.c @@ -19,3 +19,17 @@ int write_env_file_label(int dir_fd, const char *fname, char **headers, char **l return r; } + +int write_vconsole_conf_label(char **l) { + int r; + + r = mac_selinux_create_file_prepare("/etc/vconsole.conf", S_IFREG); + if (r < 0) + return r; + + r = write_vconsole_conf(AT_FDCWD, "/etc/vconsole.conf", l); + + mac_selinux_create_file_clear(); + + return r; +} diff --git a/src/shared/env-file-label.h b/src/shared/env-file-label.h index 1f1d727b699..5ba45e40057 100644 --- a/src/shared/env-file-label.h +++ b/src/shared/env-file-label.h @@ -6,3 +6,5 @@ * for all */ int write_env_file_label(int dir_fd, const char *fname, char **headers, char **l); + +int write_vconsole_conf_label(char **l);