From: Lennart Poettering Date: Fri, 24 Jan 2025 12:35:01 +0000 (+0100) Subject: homectl: make default area configurable X-Git-Tag: v258-rc1~1410^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=abf9e6ede5cb0689f33405db18ba1f0e5c65abfd;p=thirdparty%2Fsystemd.git homectl: make default area configurable --- diff --git a/src/home/homectl.c b/src/home/homectl.c index 0c032c05d19..bfd4b3b574b 100644 --- a/src/home/homectl.c +++ b/src/home/homectl.c @@ -2774,6 +2774,7 @@ static int help(int argc, char *argv[], void *userdata) { " --setenv=VARIABLE[=VALUE] Set an environment variable at log-in\n" " --timezone=TIMEZONE Set a time-zone\n" " --language=LOCALE Set preferred languages\n" + " --default-area=AREA Select default area\n" "\n%4$sAuthentication User Record Properties:%5$s\n" " --ssh-authorized-keys=KEYS\n" " Specify SSH public keys\n" @@ -2984,6 +2985,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_LOGIN_BACKGROUND, ARG_TMP_LIMIT, ARG_DEV_SHM_LIMIT, + ARG_DEFAULT_AREA, }; static const struct option options[] = { @@ -3086,6 +3088,7 @@ static int parse_argv(int argc, char *argv[]) { { "login-background", required_argument, NULL, ARG_LOGIN_BACKGROUND }, { "tmp-limit", required_argument, NULL, ARG_TMP_LIMIT }, { "dev-shm-limit", required_argument, NULL, ARG_DEV_SHM_LIMIT }, + { "default-area", required_argument, NULL, ARG_DEFAULT_AREA }, {} }; @@ -4569,6 +4572,24 @@ static int parse_argv(int argc, char *argv[]) { break; } + case ARG_DEFAULT_AREA: + if (isempty(optarg)) { + r = drop_from_identity("defaultArea"); + if (r < 0) + return r; + + break; + } + + if (!filename_is_valid(optarg)) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Parameter for default area field not valid: %s", optarg); + + r = sd_json_variant_set_field_string(&arg_identity_extra, "defaultArea", optarg); + if (r < 0) + return log_error_errno(r, "Failed to set default area field: %m"); + + break; + case '?': return -EINVAL;