aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorFumitoshi UKAI <ukai@debian.or.jp>2003-02-05 16:43:56 +0000
committerFumitoshi UKAI <ukai@debian.or.jp>2003-02-05 16:43:56 +0000
commite312638d0c8d64fe85db128d0eb8c3885a8bfe88 (patch)
tree8ffc104ec0f6eef6aae2eea58ff34d882547d065 /main.c
parent[w3m-dev 03729] buf fix of reAnchorNewsheader() (diff)
downloadw3m-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.c67
1 files changed, 50 insertions, 17 deletions
diff --git a/main.c b/main.c
index aa88d1f..29f6af0 100644
--- a/main.c
+++ b/main.c
@@ -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 */