links

lynx-like text mode web browser
git clone anongit@rnpnr.xyz:links.git
Log | Files | Refs | Feed | README | LICENSE

Commit: 44208ea2066a491576f749f03a06d85e8e0b2518
Parent: 419c7832ca6c26537cd4e658d0f942ba659c3dde
Author: opask
Date:   Sat,  7 Jul 2018 19:06:09 -0600

language related cleanup

Diffstat:
Mdefault.c | 22----------------------
Mlanguage.c | 121+++++++++++++++++++++----------------------------------------------------------
Mlanguage.h | 2--
Mlinks.h | 6+-----
Mmenu.c | 40----------------------------------------
Mos_dep.c | 7+++----
6 files changed, 36 insertions(+), 162 deletions(-)

diff --git a/default.c b/default.c @@ -1026,27 +1026,6 @@ static void cp_wr(struct option *o, unsigned char **s, int *l) add_to_str(s, l, n); } -static unsigned char *lang_rd(struct option *o, unsigned char *c) -{ - int i; - unsigned char *tok = get_token(&c); - if (!tok) return cast_uchar "Missing argument"; - for (i = -1; i < n_languages(); i++) - if (!(casestrcmp(language_name(i), tok))) { - set_language(i); - mem_free(tok); - return NULL; - } - mem_free(tok); - return cast_uchar "Unknown language"; -} - -static void lang_wr(struct option *o, unsigned char **s, int *l) -{ - add_nm(o, s, l); - add_quoted_to_str(s, l, language_name(current_language)); -} - static int getnum(unsigned char *s, int *n, int r1, int r2) { unsigned char *e; @@ -2210,7 +2189,6 @@ static struct option links_options[] = { {1, gen_cmd, num_rd, NULL, 10, 512, &screen_width, "dump_width", "width" }, {1, gen_cmd, cp_rd, NULL, 1, 0, &dump_codepage, "dump_codepage", "codepage" }, {1, gen_cmd, str_rd, str_wr, 0, MAX_STR_LEN, download_dir, "download_dir", "download-dir"}, - {1, gen_cmd, lang_rd, lang_wr, 0, 0, &current_language, "language", "language"}, {1, gen_cmd, num_rd, num_wr, 1, 99, &max_connections, "max_connections", "max-connections"}, {1, gen_cmd, num_rd, num_wr, 1, 99, &max_connections_to_host, "max_connections_to_host", "max-connections-to-host"}, {1, gen_cmd, num_rd, num_wr, 0, 16, &max_tries, "retries", "retries"}, diff --git a/language.c b/language.c @@ -18,40 +18,35 @@ unsigned char dummyarray[T__N_TEXTS]; #include "language.inc" -static unsigned char **translation_array[N_LANGUAGES][N_CODEPAGES]; +static unsigned char **translation_array[N_CODEPAGES]; -int current_language; static int current_lang_charset; void init_trans(void) { - int i, j; - for (i = 0; i < N_LANGUAGES; i++) - for (j = 0; j < N_CODEPAGES; j++) - translation_array[i][j] = NULL; - set_language(-1); + int j; + for (j = 0; j < N_CODEPAGES; j++) + translation_array[j] = NULL; + set_language(); } void shutdown_trans(void) { - int i, j, k; - for (i = 0; i < N_LANGUAGES; i++) - for (j = 0; j < N_CODEPAGES; j++) if (translation_array[i][j]) { - for (k = 0; k < T__N_TEXTS; k++) { - unsigned char *txt = translation_array[i][j][k]; - if (txt && - txt != cast_uchar translations[i].t[k].name && - txt != cast_uchar translation_english[k].name) - mem_free(txt); - } - mem_free(translation_array[i][j]); + int j, k; + for (j = 0; j < N_CODEPAGES; j++) if (translation_array[j]) { + for (k = 0; k < T__N_TEXTS; k++) { + unsigned char *txt = translation_array[j][k]; + if (txt && + txt != cast_uchar translation_english[k].name) + mem_free(txt); } + mem_free(translation_array[j]); + } } int get_language_from_lang(unsigned char *lang) { unsigned char *p; - int i; lang = stracpy(lang); lang[strcspn(cast_const_char lang, ".@")] = 0; if (!casestrcmp(lang, cast_uchar "nn_NO")) @@ -63,19 +58,16 @@ int get_language_from_lang(unsigned char *lang) *p = '-'; } search_again: - for (i = 0; i < n_languages(); i++) { - p = cast_uchar translations[i].t[T__ACCEPT_LANGUAGE].name; - if (!p) - continue; - p = stracpy(p); - p[strcspn(cast_const_char p, ",;")] = 0; - if (!casestrcmp(lang, p)) { - mem_free(p); - mem_free(lang); - return i; - } + p = cast_uchar translations[0].t[T__ACCEPT_LANGUAGE].name; + p = stracpy(p); + p[strcspn(cast_const_char p, ",;")] = 0; + if (!casestrcmp(lang, p)) { mem_free(p); + mem_free(lang); + return 0; } + mem_free(p); + if ((p = cast_uchar strchr(cast_const_char lang, '-'))) { *p = 0; goto search_again; @@ -84,38 +76,6 @@ search_again: return -1; } -int get_default_language(void) -{ - static int default_language = -1; - unsigned char *lang; - - if (default_language >= 0) - return default_language; - - default_language = os_default_language(); - if (default_language >= 0) - return default_language; - - lang = cast_uchar getenv("LANG"); - if (lang) { - default_language = get_language_from_lang(lang); - if (default_language >= 0) - return default_language; - } - - default_language = get_language_from_lang(cast_uchar "en"); - if (default_language < 0) - internal("default language 'english' not found"); - return default_language; -} - -int get_current_language(void) -{ - if (current_language >= 0) - return current_language; - return get_default_language(); -} - int get_default_charset(void) { static int default_charset = -1; @@ -141,10 +101,7 @@ int get_default_charset(void) if (strlen(cast_const_char lang) > 5 && !casestrcmp(cast_uchar (strchr(cast_const_char lang, 0) - 5), cast_uchar "@euro")) { p = cast_uchar "ISO-8859-15"; } else { - int def_lang = get_language_from_lang(lang); - if (def_lang < 0) - def_lang = get_default_language(); - p = cast_uchar translations[def_lang].t[T__DEFAULT_CHAR_SET].name; + p = cast_uchar translations[0].t[T__DEFAULT_CHAR_SET].name; if (!p) p = cast_uchar ""; } @@ -180,16 +137,15 @@ unsigned char *get_text_translation(unsigned char *text, struct terminal *term) unsigned char **current_tra; unsigned char *trn; int charset; - int language_idx = get_current_language(); if (!term) charset = 0; else if (term->spec) charset = term_charset(term); else charset = utf8_table; if (is_direct_text(text)) return text; - if ((current_tra = translation_array[language_idx][charset])) { + if ((current_tra = translation_array[charset])) { unsigned char *tt; if ((trn = current_tra[text - dummyarray])) return trn; tr: - if (!(tt = cast_uchar translations[language_idx].t[text - dummyarray].name)) { + if (!(tt = cast_uchar translations[0].t[text - dummyarray].name)) { trn = cast_uchar translation_english[text - dummyarray].name; } else { struct document_options l_opt; @@ -205,11 +161,11 @@ unsigned char *get_text_translation(unsigned char *text, struct terminal *term) current_tra[text - dummyarray] = trn; } else { if (current_lang_charset && charset != current_lang_charset) { - current_tra = translation_array[language_idx][charset] = mem_alloc(sizeof (unsigned char *) * T__N_TEXTS); + current_tra = translation_array[charset] = mem_alloc(sizeof (unsigned char *) * T__N_TEXTS); memset(current_tra, 0, sizeof (unsigned char *) * T__N_TEXTS); goto tr; } - if (!(trn = cast_uchar translations[language_idx].t[text - dummyarray].name)) { + if (!(trn = cast_uchar translations[0].t[text - dummyarray].name)) { trn = cast_uchar translation_english[text - dummyarray].name; } } @@ -222,31 +178,18 @@ unsigned char *get_english_translation(unsigned char *text) return cast_uchar translation_english[text - dummyarray].name; } -int n_languages(void) -{ - return N_LANGUAGES; -} - -unsigned char *language_name(int l) -{ - if (l == -1) return cast_uchar "default"; - return cast_uchar translations[l].t[T__LANGUAGE].name; -} - -void set_language(int l) +void set_language(void) { int i; unsigned char *cp; - current_language = l; - l = get_current_language(); - for (i = 0; i < T__N_TEXTS; i++) if (translations[l].t[i].code != i) { - internal("Bad table for language %s. Run script synclang.", translations[l].t[T__LANGUAGE].name); + for (i = 0; i < T__N_TEXTS; i++) if (translations[0].t[i].code != i) { + internal("Bad table for language %s. Run script synclang.", translations[0].t[T__LANGUAGE].name); return; } - cp = cast_uchar translations[l].t[T__CHAR_SET].name; + cp = cast_uchar translations[0].t[T__CHAR_SET].name; i = get_cp_index(cp); if (i == -1) { - internal("Unknown charset for language %s.", translations[l].t[T__LANGUAGE].name); + internal("Unknown charset for language %s.", translations[0].t[T__LANGUAGE].name); i = 0; } current_lang_charset = i; diff --git a/language.h b/language.h @@ -1,7 +1,5 @@ /* Automatically generated by gen-intl */ -#define N_LANGUAGES 1 - #define T__CHAR_SET 1 #define T__LANGUAGE 2 #define T__ACCEPT_LANGUAGE 3 diff --git a/links.h b/links.h @@ -2380,15 +2380,11 @@ void shutdown_trans(void); int get_country_language(int c); #endif int get_language_from_lang(unsigned char *); -int get_default_language(void); -int get_current_language(void); int get_default_charset(void); int get_commandline_charset(void); unsigned char *get_text_translation(unsigned char *, struct terminal *term); unsigned char *get_english_translation(unsigned char *); -void set_language(int); -int n_languages(void); -unsigned char *language_name(int); +void set_language(void); #define TEXT_(x) (dummyarray + x) /* TEXT causes name clash on windows */ diff --git a/menu.c b/menu.c @@ -3271,39 +3271,6 @@ static void miscelaneous_options(struct terminal *term, void *xxx, void *ses_) do_dialog(term, d, getml(d, NULL)); } -static void menu_set_language(struct terminal *term, void *pcp, void *ptr) -{ - set_language((int)(my_intptr_t)pcp); - cls_redraw_all_terminals(); -} - -static void menu_language_list(struct terminal *term, void *xxx, void *ses_) -{ -#ifdef OS_NO_SYSTEM_LANGUAGE - const int def = 0; -#else - const int def = 1; -#endif - int i, sel; - struct menu_item *mi; - mi = new_menu(1); - for (i = -def; i < n_languages(); i++) { - unsigned char *n, *r; - if (i == -1) { - n = TEXT_(T_DEFAULT_LANG); - r = language_name(get_default_language()); - } else { - n = language_name(i); - r = cast_uchar ""; - } - add_to_menu(&mi, n, r, cast_uchar "", menu_set_language, (void *)(my_intptr_t)i, 0, i + def); - } - sel = current_language + def; - if (sel < 0) - sel = get_default_language(); - do_menu_selected(term, mi, NULL, sel, NULL, NULL); -} - static unsigned char * const resize_texts[] = { TEXT_(T_COLUMNS), TEXT_(T_ROWS) }; static unsigned char x_str[4]; @@ -3651,10 +3618,6 @@ static void menu_write_config(struct terminal *term, void *xxx, void *yyy) write_config(term); } -static_const struct menu_item setup_menu_1[] = { - { TEXT_(T_LANGUAGE), cast_uchar ">", TEXT_(T_HK_LANGUAGE), menu_language_list, NULL, 1, 1 }, -}; - static_const struct menu_item setup_menu_2[] = { { TEXT_(T_CHARACTER_SET), cast_uchar ">", TEXT_(T_HK_CHARACTER_SET), charset_list, (void *)1, 1, 1 }, { TEXT_(T_TERMINAL_OPTIONS), cast_uchar "", TEXT_(T_HK_TERMINAL_OPTIONS), terminal_options, NULL, 0, 1 }, @@ -3700,7 +3663,6 @@ static void do_setup_menu(struct terminal *term, void *xxx, void *ses_) struct session *ses = (struct session *)ses_; struct menu_item *setup_menu, *e; int size = - sizeof(setup_menu_1) + sizeof(setup_menu_2) + #ifdef G sizeof(setup_menu_3) + @@ -3712,8 +3674,6 @@ static void do_setup_menu(struct terminal *term, void *xxx, void *ses_) sizeof(setup_menu_8); setup_menu = mem_alloc(size); e = setup_menu; - memcpy(e, setup_menu_1, sizeof(setup_menu_1)); - e += sizeof(setup_menu_1) / sizeof(struct menu_item); if (!F) { memcpy(e, setup_menu_2, sizeof(setup_menu_2)); e += sizeof(setup_menu_2) / sizeof(struct menu_item); diff --git a/os_dep.c b/os_dep.c @@ -3203,15 +3203,14 @@ int get_country_language(int c) { 422, cast_uchar "Slovak" }, { 593, cast_uchar "Spanish" }, }; - int idx, i; + int idx; #define C_EQUAL(a, b) countries[a].code == (b) #define C_ABOVE(a, b) countries[a].code > (b) BIN_SEARCH(array_elements(countries), C_EQUAL, C_ABOVE, c, idx); if (idx == -1) return -1; - for (i = 0; i < n_languages(); i++) - if (!casestrcmp(language_name(i), countries[idx].language)) - return i; + if (!casestrcmp(language_name(0), countries[idx].language)) + return 0; return -1; }