Commit: 44208ea2066a491576f749f03a06d85e8e0b2518
Parent: 419c7832ca6c26537cd4e658d0f942ba659c3dde
Author: opask
Date: Sat, 7 Jul 2018 19:06:09 -0600
language related cleanup
Diffstat:
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, ¤t_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;
}