diff options
author | Fumitoshi UKAI <ukai@debian.or.jp> | 2003-02-05 16:43:56 +0000 |
---|---|---|
committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2003-02-05 16:43:56 +0000 |
commit | e312638d0c8d64fe85db128d0eb8c3885a8bfe88 (patch) | |
tree | 8ffc104ec0f6eef6aae2eea58ff34d882547d065 /main.c | |
parent | [w3m-dev 03729] buf fix of reAnchorNewsheader() (diff) | |
download | w3m-e312638d0c8d64fe85db128d0eb8c3885a8bfe88.tar.gz w3m-e312638d0c8d64fe85db128d0eb8c3885a8bfe88.zip |
[w3m-dev 03730] display decoded URL
* anchor.c (link_list_panel): support DecodeURL
* display.c (make_lastline_link): support DecodeURL
* etc.c (url_unquote_conv): added
* fm.h (DecodeURL): added
* history.c (historyBuffer): support DecodeURL
* indep.c (QUOTE_MAP): added
(HTML_QUOTE_MAP): added
(html_quote_char): deleted
(url_quote): use is_url_quote
(file_quote): use is_file_quote
(is_url_safe): deleted
(Str_form_quote): use is_url_unsafe
(Str_url_unquote): add safe args
(is_shell_safe): delete
(shell_quote): use is_shell_unsafe
* indep.h (QUOTE_MAP): added
(HTML_QUOTE_MAP): added
(HTML_QUOTE_MASK): added
(SHELL_UNSAFE_MASK): added
(URL_QUOTE_MASK): added
(FILE_QUOTE_MASK): added
(URL_UNSAFE_MASK): added
(GET_QUOTE_TYPE): added
(is_html_quote): added
(is_shell_unsafe): added
(is_url_quote): added
(is_file_quote): added
(is_url_unsafe): added
(html_quote_char): added
(html_quote_char): deleted
(Str_url_unquote): added safe
(form_unquote): Str_url_unquote changes
* linein.c (_prev): support DecodeURL
(_next): ditto
* main.c (goURL0): support DecodeURL
(_peekURL): ditto
(curURL): ditto
* map.c (follow_map_panel): support DecodeURL
(append_map_info): ditto
(append_link_info): ditto
(append_frame_info): ditto
(page_info_panel): ditto
* menu.c (initSelectMenu): delete SCM_LOCAL_CGI
support DecodeURL
(initSelTabMenu): delete SCM_LOCAL_CGI
support DecodeURL
(link_menu): support DecodeURL
* parsetagx.c (parse_tag): is_html_quote
* proto.h (url_unquote_conv): added
* rc.c (CMT_DECODE_URL): added
(params1): add decode_url
* url.c (openURL): Str_url_unquote non safe
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
Diffstat (limited to '')
-rw-r--r-- | main.c | 67 |
1 files changed, 50 insertions, 17 deletions
@@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.208 2003/01/31 16:14:26 ukai Exp $ */ +/* $Id: main.c,v 1.209 2003/02/05 16:43:58 ukai Exp $ */ #define MAINPROGRAM #include "fm.h" #include <signal.h> @@ -3878,8 +3878,11 @@ goURL0(char *prompt, int relative) current = baseURL(Currentbuf); if (current) { char *c_url = parsedURL2Str(current)->ptr; - if (DefaultURLString == DEFAULT_URL_CURRENT) + if (DefaultURLString == DEFAULT_URL_CURRENT) { url = c_url; + if (DecodeURL) + url = url_unquote_conv(url, 0); + } else pushHist(hist, c_url); } @@ -3888,8 +3891,11 @@ goURL0(char *prompt, int relative) char *a_url; parseURL2(a->url, &p_url, current); a_url = parsedURL2Str(&p_url)->ptr; - if (DefaultURLString == DEFAULT_URL_LINK) + if (DefaultURLString == DEFAULT_URL_LINK) { url = a_url; + if (DecodeURL) + url = url_unquote_conv(url, Currentbuf->document_code); + } else pushHist(hist, a_url); } @@ -4295,6 +4301,10 @@ _peekURL(int only_img) Anchor *a; ParsedURL pu; static Str s = NULL; +#ifdef JP_CHARSET + static Lineprop *p = NULL; + Lineprop *pp; +#endif static int offset = 0, n; if (Currentbuf->firstLine == NULL) @@ -4309,29 +4319,38 @@ _peekURL(int only_img) else { offset = 0; } + s = NULL; a = (only_img ? NULL : retrieveCurrentAnchor(Currentbuf)); if (a == NULL) { a = (only_img ? NULL : retrieveCurrentForm(Currentbuf)); if (a == NULL) { a = retrieveCurrentImg(Currentbuf); - if (a == NULL) { - s = NULL; + if (a == NULL) return; - } } - else { + else s = Strnew_charp(form2str((FormItemList *)a->url)); - goto disp; - } } - parseURL2(a->url, &pu, baseURL(Currentbuf)); - s = parsedURL2Str(&pu); + if (s == NULL) { + parseURL2(a->url, &pu, baseURL(Currentbuf)); + s = parsedURL2Str(&pu); + } + if (DecodeURL) + s = Strnew_charp(url_unquote_conv(s->ptr, Currentbuf->document_code)); +#ifdef JP_CHARSET + s = checkType(s, &pp, NULL); + p = NewAtom_N(Lineprop, s->length); + bcopy((void *)pp, (void *)p, s->length * sizeof(Lineprop)); +#endif disp: n = searchKeyNum(); if (n > 1 && s->length > (n - 1) * (COLS - 1)) - disp_message_nomouse(&s->ptr[(n - 1) * (COLS - 1)], TRUE); - else - disp_message_nomouse(&s->ptr[offset], TRUE); + offset = (n - 1) * (COLS - 1); +#ifdef JP_CHARSET + if (CharType(p[offset]) == PC_KANJI2) + offset++; +#endif + disp_message_nomouse(&s->ptr[offset], TRUE); } /* peek URL */ @@ -4361,6 +4380,10 @@ void curURL(void) { static Str s = NULL; +#ifdef JP_CHARSET + static Lineprop *p = NULL; + Lineprop *pp; +#endif static int offset = 0, n; if (Currentbuf->bufferprop & BP_INTERNAL) @@ -4374,12 +4397,22 @@ curURL(void) else { offset = 0; s = currentURL(); + if (DecodeURL) + s = Strnew_charp(url_unquote_conv(s->ptr, 0)); +#ifdef JP_CHARSET + s = checkType(s, &pp, NULL); + p = NewAtom_N(Lineprop, s->length); + bcopy((void *)pp, (void *)p, s->length * sizeof(Lineprop)); +#endif } n = searchKeyNum(); if (n > 1 && s->length > (n - 1) * (COLS - 1)) - disp_message_nomouse(&s->ptr[(n - 1) * (COLS - 1)], TRUE); - else - disp_message_nomouse(&s->ptr[offset], TRUE); + offset = (n - 1) * (COLS - 1); +#ifdef JP_CHARSET + if (CharType(p[offset]) == PC_KANJI2) + offset++; +#endif + disp_message_nomouse(&s->ptr[offset], TRUE); } /* view HTML source */ |