Ejemplo n.º 1
0
static void test_get_locales(void) {
        _cleanup_strv_free_ char **locales = NULL;
        char **p;
        int r;

        r = get_locales(&locales);
        assert_se(r >= 0);
        assert_se(locales);

        STRV_FOREACH(p, locales) {
                puts(*p);
                assert_se(locale_is_valid(*p));
        }
Ejemplo n.º 2
0
static int list_locales(int argc, char **argv, void *userdata) {
        _cleanup_strv_free_ char **l = NULL;
        int r;

        r = get_locales(&l);
        if (r < 0)
                return log_error_errno(r, "Failed to read list of locales: %m");

        (void) pager_open(arg_no_pager, false);
        strv_print(l);

        return 0;
}
Ejemplo n.º 3
0
static int prompt_locale(void) {
        _cleanup_strv_free_ char **locales = NULL;
        int r;

        if (arg_locale || arg_locale_messages)
                return 0;

        if (!arg_prompt_locale)
                return 0;

        r = get_locales(&locales);
        if (r < 0) {
                log_error("Cannot query locales list: %s", strerror(-r));
                return r;
        }

        print_welcome();

        printf("\nAvailable Locales:\n\n");
        r = show_menu(locales, 3, 22, 60);
        if (r < 0)
                return r;

        putchar('\n');

        r = prompt_loop("Please enter system locale name or number", locales, locale_is_valid, &arg_locale);
        if (r < 0)
                return r;

        if (isempty(arg_locale))
                return 0;

        r = prompt_loop("Please enter system message locale name or number", locales, locale_is_valid, &arg_locale_messages);
        if (r < 0)
                return r;

        return 0;
}