tree-wide: port various bits over to locale_is_installed()
This commit is contained in:
+18
-10
@@ -205,6 +205,14 @@ static int prompt_loop(const char *text, char **l, unsigned percentage, bool (*i
|
||||
}
|
||||
}
|
||||
|
||||
static bool locale_is_ok(const char *name) {
|
||||
|
||||
if (arg_root)
|
||||
return locale_is_valid(name);
|
||||
|
||||
return locale_is_installed(name) > 0;
|
||||
}
|
||||
|
||||
static int prompt_locale(void) {
|
||||
_cleanup_strv_free_ char **locales = NULL;
|
||||
int r;
|
||||
@@ -238,7 +246,7 @@ static int prompt_locale(void) {
|
||||
print_welcome();
|
||||
|
||||
r = prompt_loop("Please enter system locale name or number",
|
||||
locales, 60, locale_is_valid, &arg_locale);
|
||||
locales, 60, locale_is_ok, &arg_locale);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -246,7 +254,7 @@ static int prompt_locale(void) {
|
||||
return 0;
|
||||
|
||||
r = prompt_loop("Please enter system message locale name or number",
|
||||
locales, 60, locale_is_valid, &arg_locale_messages);
|
||||
locales, 60, locale_is_ok, &arg_locale_messages);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -791,10 +799,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_LOCALE:
|
||||
if (!locale_is_valid(optarg))
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Locale %s is not valid.", optarg);
|
||||
|
||||
r = free_and_strdup(&arg_locale, optarg);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
@@ -802,10 +806,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_LOCALE_MESSAGES:
|
||||
if (!locale_is_valid(optarg))
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Locale %s is not valid.", optarg);
|
||||
|
||||
r = free_and_strdup(&arg_locale_messages, optarg);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
@@ -927,6 +927,14 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
assert_not_reached("Unhandled option");
|
||||
}
|
||||
|
||||
/* We check if the specified locale strings are valid down here, so that we can take --root= into
|
||||
* account when looking for the locale files. */
|
||||
|
||||
if (arg_locale && !locale_is_ok(arg_locale))
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Locale %s is not installed.", arg_locale);
|
||||
if (arg_locale_messages && !locale_is_ok(arg_locale_messages))
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Locale %s is not installed.", arg_locale_messages);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user