aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--scripts/.cvsignore3
-rw-r--r--scripts/Makefile54
-rw-r--r--scripts/w3mhelp.cgi.in186
3 files changed, 237 insertions, 6 deletions
diff --git a/scripts/.cvsignore b/scripts/.cvsignore
index 8cf0879..191d0e6 100644
--- a/scripts/.cvsignore
+++ b/scripts/.cvsignore
@@ -1 +1,4 @@
dirlist.cgi
+w3mhelp.cgi
+w3hmhelp-*.pl
+
diff --git a/scripts/Makefile b/scripts/Makefile
index b1d304a..4cf6575 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -3,27 +3,69 @@ prefix = /usr/local
DESTDIR =
BIN_DIR = $(prefix)/bin
LIB_DIR = $(prefix)/lib/w3m
+HELP_DIR = $(prefix)/lib/w3m
-LIB_TARGETS = dirlist.cgi
+LIB_TARGETS = dirlist.cgi w3mhelp.cgi
INSTALL = install -c
INSTALL_SCRIPT = $(INSTALL) -m 755
PERL = /usr/local/bin/perl
+DOCDIRS = doc:en_English doc-jp:ja_Japanese
+
.SUFFIXES: .in
-all: $(LIB_TARGETS)
+all: $(LIB_TARGETS) helplibs
.in:
- sed 's%@PERL@%$(PERL)%' $< > $@
- chmod +x $@
+ @echo "generating $@..."
+ @sed -e 's%@PERL@%$(PERL)%' -e 's%@HELP_DIR@%$(HELP_DIR)%' \
+ -e 's%@DOCDIRS@%$(DOCDIRS)%' $< > $@
+ @chmod +x $@
+ @echo done
+
+helplibs:
+ @echo "generating w3mhelp-funcname.pl..."
+ @echo '%funcname = (' > w3mhelp-funcname.pl
+ @while read fname fid; do \
+ case "$$fname" in [a-zA-Z@]*) echo "'$$fname', '$$fid',";; esac; \
+ done < ../funcname.tab >> w3mhelp-funcname.pl
+ @echo ');' >> w3mhelp-funcname.pl
+ @echo '%keyfunc = (' >> w3mhelp-funcname.pl
+ @case "$(KEYBIND_SRC)" in *lynx*) keymap=keymap.lynx;; *) keymap=keymap.default;; esac; \
+ while read keyword keys func rest; do \
+ if [ "X$$keyword" = Xkeymap ]; then \
+ keys=`echo "$$keys" | sed -e 's/\\\\/\\\\&/g'`; \
+ echo "'$$keys', '$$func',"; \
+ fi; \
+ done < ../doc/$$keymap >> w3mhelp-funcname.pl
+ @echo ');' >> w3mhelp-funcname.pl
+ @echo '1;' >> w3mhelp-funcname.pl
+ @echo "done"
+
+ @echo "generating w3mhelp-funcdesc*.pl..."
+ @for dirlang in $(DOCDIRS); do \
+ dir=`expr "$$dirlang" : "\(.*\):.*"`; \
+ lang=`expr "$$dirlang" : ".*:\(.*\)_.*"`; \
+ echo '%funcdesc = (' > w3mhelp-funcdesc.$$lang.pl; \
+ while read func desc; do \
+ case "$$func" in [a-zA-Z@]*) echo "'$$func', '$$desc', ";; esac; \
+ done < ../$$dir/README.func >> w3mhelp-funcdesc.$$lang.pl; \
+ echo ');' >> w3mhelp-funcdesc.$$lang.pl; \
+ echo '1;' >> w3mhelp-funcdesc.$$lang.pl; \
+ done
+ @echo done
install: $(LIB_TARGETS)
for file in $(LIB_TARGETS); \
do \
- $(INSTALL_SCRIPT) $$file $(DISTDIR)$(LIB_DIR); \
+ $(INSTALL_SCRIPT) $$file $(DESTDIR)$(LIB_DIR); \
+ done
+ for file in w3mhelp-*.pl; \
+ do \
+ $(INSTALL) $$file $(DESTDIR)$(HELP_DIR); \
done
clean:
- rm -f $(LIB_TARGETS)
+ rm -f $(LIB_TARGETS) w3mhelp-*.pl
diff --git a/scripts/w3mhelp.cgi.in b/scripts/w3mhelp.cgi.in
new file mode 100644
index 0000000..06d99e9
--- /dev/null
+++ b/scripts/w3mhelp.cgi.in
@@ -0,0 +1,186 @@
+#!@PERL@
+# $Id: w3mhelp.cgi.in,v 1.1 2001/11/30 16:48:19 ukai Exp $
+
+$helpdir="@HELP_DIR@";
+unshift(@INC, $helpdir);
+@docdirs=qw(@DOCDIRS@);
+
+require "w3mhelp-funcname.pl";
+require "w3mhelp-funcdesc.en.pl";
+$lang = 'en';
+
+%htmlesc = qw(< &lt; > &gt; & &amp;);
+
+$keymap = "$ENV{'HOME'}/.w3m/keymap";
+$version = '*unknown*';
+if (defined($ENV{'QUERY_STRING'})) {
+ print "QUERY_STRING=$ENV{'QUERY_STRING'}\n";
+ if ($ENV{'QUERY_STRING'} =~ /(^|&)version=([^&]*)/) {
+ $version = $2;
+ $version =~ s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('C', hex($1))/ge;
+ $version =~ s/w3m\///;
+ }
+ if ($ENV{'QUERY_STRING'} =~ /(^|&)lang=([^&]*)/) {
+ local $tlang=$2;
+ $tlang =~ s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('C', hex($1))/ge;
+ $tlang =~ tr/A-Z/a-z/;
+ print "tlang=$tlang\n";
+ eval qq{require "w3mhelp-funcdesc.$tlang.pl"};
+ if (defined(%funcdesc)) {
+ $lang = $tlang;
+ }
+ }
+}
+
+if (-f $keymap) {
+ open(KEYMAP, $keymap) or die "cannot open keymap: $keymap, $!";
+ &load_keymap(*KEYMAP, $func);
+ close(KEYMAP);
+}
+
+local (%funckeydesc, $key, $fname, $desc);
+
+while (($fname, $desc) = each %funcdesc) {
+ $funckeydesc{$funcname{$fname}} = "$desc\n";
+}
+while (($key, $fname) = each %keyfunc) {
+ $funckeydesc{$funcname{$fname}} .= "$key,";
+}
+
+print <<HEADING;
+Content-Type: text/html
+
+<HTML>
+<HEAD>
+<TITLE>w3m help page</TITLE>
+</HEAD>
+<BODY>
+<CENTER>
+*******
+<A HREF="http://w3m.sourceforge.net/">w3m</A>
+ (WWW-wo-Miru) Version $version by
+<A HREF="mailto:aito\@fw.ipsj.or.jp">A.ITO</A> ********<BR>
+ ***** Key assign table *****
+</CENTER>
+
+HEADING
+
+$q_version = $version;
+$q_version =~ s/[^A-Za-z0-9_\$\.\-]/sprintf('%%%02X', ord($&))/ge;
+$script = "<A HREF=\"$ENV{'SCRIPT_NAME'}?version=$q_version&amp;lang=";
+
+# doc:en_English doc-jp:ja_Japanese
+for $otherlang (@docdirs) {
+ local(@d) = split(/[:_]/, $otherlang);
+
+ if ($d[1] ne $lang) {
+ $d[1] =~ s/[^A-Za-z0-9_\$\.\-]/sprintf('%%%02X', ord($&))/ge;
+ print $script, $d[1], "\">$d[2] version</A><BR>\n";
+ }
+}
+
+&show_keymap("Page/Cursor motion",
+ qw(pgFore pgBack movR movL movD movU lup1 ldown1
+ goLineF goLineL movRW movLW shiftl shiftr
+ col1R col1L goLine ctrCsrH ctrCsrV
+ topA lastA nextA prevA
+ nextL nextLU nextR nextRD nextD nextU));
+
+&show_keymap("Hyperlink operation",
+ qw(followA svA peekURL peekIMG followI svI
+ chkURL chkNMID curURL pginfo curlno ldHist
+ rFrame extbrz linkbrz));
+
+&show_keymap("File/Stream operation",
+ qw(goURL ldfile readsh pipesh));
+
+&show_keymap("Buffer operation",
+ qw(backBf vwSrc selMn editBf rdrwSc reload
+ svBuf svSrc editScr));
+
+print <<PAGE;
+<H2>Buffer selection mode</H2>
+<table cellpadding=0>
+<TR><TD WIDTH=140>k, C-p<TD>Select previous buffer
+<TR><TD>j, C-n<TD>Select next buffer
+<TR><TD>D<TD>Delete current buffer
+<TR><TD>RET<TD>Go to the selected buffer
+</table>
+PAGE
+
+&show_keymap("Bookmark operation",
+ qw(ldBmark adBmark));
+
+&show_keymap("Search",
+ qw(srchfor srchbak srchnxt srchprv));
+
+&show_keymap("Dictionary look-up",
+ qw(dictword dictwordat));
+
+&show_keymap("Mark operation",
+ qw(_mark prevMk nextMk reMark));
+
+&show_keymap("Miscellany",
+ qw(setAlarm execsh ldhelp ldOpt cooLst susp qquitfm quitfm));
+
+print <<PAGE;
+<H2>Line-edit mode</H2>
+<table cellpadding=0>
+<TR><TD WIDTH=140>C-f<TD>Move cursor forward
+<TR><TD>C-b<TD>Move cursor backward
+<TR><TD>C-h<TD>Delete previous character
+<TR><TD>C-d<TD>Delete current character
+<TR><TD>C-k<TD>Kill everything after cursor
+<TR><TD>C-u<TD>Kill everything before cursor
+<TR><TD>C-a<TD>Move to the top of line
+<TR><TD>C-e<TD>Move to the bottom of line
+<TR><TD>C-p<TD>Fetch the previous string from the history list
+<TR><TD>C-n<TD>Fetch the next string from the history list
+<TR><TD>TAB,SPC<TD>Complete filename
+<TR><TD>RETURN<TD>Accept
+</table>
+<HR>
+</BODY>
+</HTML>
+PAGE
+
+exit 0;
+
+sub load_keymap {
+ local(*FH) = shift;
+ my ($func) = @_;
+
+ while (<FH>) {
+ next if /^#/;
+ next if /^\s*$/;
+ ($keymap, $key, $fname) = split;
+ next unless $keymap =~ /keymap/;
+ $fname =~ tr/a-z/A-Z/;
+ next unless (defined($funcdesc{$fname}));
+ $key =~ s/^\\//;
+ $keyfunc{$key} = $fname;
+ }
+}
+
+sub show_keymap {
+ my ($head, @list) = @_;
+ my ($fid);
+ my ($attr) = " WIDTH=140";
+
+ print <<PAGE;
+<H2>$head</H2>
+<table cellpadding=0>
+PAGE
+ foreach $fid (@list) {
+ local ($desc, $keys) = split("\n", $funckeydesc{$fid}, 2);
+ $keys =~ s/,$//;
+ $keys = '<NOT ASSIGNED>' if ($keys eq '');
+ $keys =~ s/[<>&]/$htmlesc{$&}/ge;
+ $desc =~ s/[<>&]/$htmlesc{$&}/ge;
+ print <<PAGE;
+<TR><TD$attr>$keys</TD><TD>$desc</TD></TR>
+PAGE
+ $attr = "";
+ }
+ print "</table>\n";
+}