1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-10-10 05:23:37 -04:00

Bug 821: With CONFIG_UTF8 and UTF-8 I/O, form_state.value is in UTF-8.

That is even if the document and the terminal have some other charset.
This commit is contained in:
Kalle Olavi Niemitalo 2006-10-23 23:01:47 +03:00 committed by Kalle Olavi Niemitalo
parent 50b6a61f31
commit 4076759890
2 changed files with 21 additions and 16 deletions

View File

@ -1744,26 +1744,29 @@ field_op(struct session *ses, struct document_view *doc_view,
}
#ifdef CONFIG_UTF8
{
/* The charset of the terminal; we assume
* fs->value is in this charset.
* (Is that OK?) */
if (ses->tab->term->utf8) {
/* fs->value is in UTF-8 regardless of
* the charset of the terminal. */
text = encode_utf8(get_kbd_key(ev));
} else {
/* fs->value is in the charset of the
* terminal. */
int cp = get_opt_codepage_tree(ses->tab->term->spec,
"charset");
text = u2cp_no_nbsp(get_kbd_key(ev), cp);
length = strlen(text);
if (strlen(fs->value) + length > fc->maxlength
|| !insert_in_string(&fs->value, fs->state, text, length)) {
status = FRAME_EVENT_OK;
break;
}
fs->state += length;
if (fc->type == FC_TEXTAREA)
fs->state_cell = 0;
}
length = strlen(text);
if (strlen(fs->value) + length > fc->maxlength
|| !insert_in_string(&fs->value, fs->state, text, length)) {
status = FRAME_EVENT_OK;
break;
}
fs->state += length;
if (fc->type == FC_TEXTAREA)
fs->state_cell = 0;
#else
fs->value[fs->state++] = get_kbd_key(ev);
#endif /* CONFIG_UTF8 */

View File

@ -115,7 +115,9 @@ get_link_cursor_offset(struct document_view *doc_view, struct link *link)
struct form_control *fc;
struct form_state *fs;
#ifdef CONFIG_UTF8
int utf8 = doc_view->document->options.utf8;
/* The encoding of form fields depends on the terminal,
* rather than on the document. */
int utf8 = doc_view->session->tab->term->utf8;
#endif /* CONFIG_UTF8 */
switch (link->type) {