]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
homectl: make default area configurable
authorLennart Poettering <lennart@poettering.net>
Fri, 24 Jan 2025 12:35:01 +0000 (13:35 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 6 Feb 2025 08:23:49 +0000 (09:23 +0100)
src/home/homectl.c

index 0c032c05d197d0c378a98cae2471a6d3c5547ba0..bfd4b3b574b4b1e723e723b8cdc792c26bba53f1 100644 (file)
@@ -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;