diff options
author | Tatsuya Kinoshita <tats@debian.org> | 2018-01-25 09:43:42 +0000 |
---|---|---|
committer | Tatsuya Kinoshita <tats@debian.org> | 2018-01-25 09:43:42 +0000 |
commit | 53f367af5c3fa33c949bc63bc31fa1b86577b5e3 (patch) | |
tree | 6c22606793bfbe8ba02459504bfed24ce2b4f8ee /debian/patches | |
parent | update debian/changelog (diff) | |
download | w3m-53f367af5c3fa33c949bc63bc31fa1b86577b5e3.tar.gz w3m-53f367af5c3fa33c949bc63bc31fa1b86577b5e3.zip |
Update 020_debian.patch to v0.5.3+git20180125
- Fix stack overflow with malformed text [CVE-2018-6196]
- Fix null deref with malformed text [CVE-2018-6197]
- Fix /tmp file races only when ~/.w3m is unwritable [CVE-2018-6198]
(closes: #888097)
- Suppress error messages when ~/.w3m is unwritable (closes: #871425)
- Extend ssl_forbid_method to disable TLSv1.1 (closes: #874218)
- Typo fix in --help message (closes: #878106)
Diffstat (limited to 'debian/patches')
-rw-r--r-- | debian/patches/020_debian.patch | 1046 |
1 files changed, 788 insertions, 258 deletions
diff --git a/debian/patches/020_debian.patch b/debian/patches/020_debian.patch index 9d17218..b67e317 100644 --- a/debian/patches/020_debian.patch +++ b/debian/patches/020_debian.patch @@ -1,5 +1,5 @@ Description: Git master branch of Debian's w3m -Origin: https://anonscm.debian.org/cgit/collab-maint/w3m.git +Origin: https://salsa.debian.org/debian/w3m/commits/master diff --git a/Bonus/goodict.cgi b/Bonus/goodict.cgi index 8f443c1..5fb6581 100755 @@ -60,10 +60,102 @@ index 8f443c1..5fb6581 100755 $input = "w3m-control: GOTO_LINK"; } diff --git a/ChangeLog b/ChangeLog -index 88358ef..5e77a18 100644 +index 88358ef..b14c60a 100644 --- a/ChangeLog +++ b/ChangeLog -@@ -1,3 +1,1526 @@ +@@ -1,3 +1,1618 @@ ++2018-01-25 Tatsuya Kinoshita <tats@debian.org> ++ ++ * ChangeLog, NEWS: Add CVE IDs. ++ cf. https://security-tracker.debian.org/tracker/source-package/w3m ++ ++2018-01-21 Tatsuya Kinoshita <tats@debian.org> ++ ++ * NEWS: Update NEWS. ++ ++ * scripts/Makefile.in: Do not remove w3mdict.cgi when "make distclean". ++ ++ * config.h.dist, config.h.in, configure, configure.ac, main.c, rc.c: ++ Make temporary directory safely when ~/.w3m is unwritable. ++ Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=888097 ++ [CVE-2018-6198] ++ ++ * rc.c: Suppress error messages when ~/.w3m is unwritable. ++ Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=871425 ++ ++2018-01-20 Tatsuya Kinoshita <tats@debian.org> ++ ++ * config.guess, config.sub: ++ Update config.* with autotools-dev 20171216.1. ++ ++ * table.c: Prevent negative indent value in feed_table_block_tag(). ++ Bug-Debian: https://github.com/tats/w3m/issues/88 [CVE-2018-6196] ++ ++2018-01-06 Tatsuya Kinoshita <tats@debian.org> ++ ++ * doc-jp/README.SSL: Doc fix for ssl_forbid_method. ++ ++ * po/de.po, po/ja.po, po/w3m.pot, po/zh_CN.po, po/zh_TW.po, rc.c: ++ * url.c: Fix multi-character character constant for ssl_forbid_method. ++ ++2018-01-06 se <se@example.com> ++ ++ * po/de.po, po/ja.po, po/w3m.pot, po/zh_CN.po, po/zh_TW.po, rc.c: ++ * url.c: Extend ssl_forbid_method to disable TLSv1.1. ++ Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874218#5 ++ ++2018-01-06 Tatsuya Kinoshita <tats@debian.org> ++ ++ * w3mimg/fb/fb_w3mimg.c: Accept TERM=fbterm. ++ cf. https://bushowhige.blogspot.jp/2015/01/fbterm-w3m-img.html ++ ++2017-12-27 Tatsuya Kinoshita <tats@debian.org> ++ ++ * form.c: Prevent invalid columnPos() call in formUpdateBuffer(). ++ Bug-Debian: https://github.com/tats/w3m/issues/89 [CVE-2018-6197] ++ ++ * main.c: Typo fix in fusage(). ++ Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=878106 ++ ++ * doc-jp/README.tab, doc/README.tab, main.c: English fix. ++ cf. [emacs-w3m:12706], http://emacs-w3m.namazu.org/ml/msg12598.html ++ ++2017-12-24 HIGUCHI Daisuke (VDR dai) <dai@debian.org> ++ ++ * scripts/w3mman/w3mman.1.in, terms.c: Fix spelling error. ++ ++2017-08-27 Kyle J. McKay <mackyle@gmail.com> ++ ++ Correct <base ...> parsing and do not turn a form's GET into POST. ++ Bug-Debian: https://github.com/tats/w3m/pull/93 ++ ++ * form.c: ++ form.c: do not gratuitously turn GET into POST. ++ When encountering a <form ...> tag that contains these values: ++ method="get" enctype="multipart/form-data" ++ Do not transform the method into POST to accomodate enctype. ++ Instead behave in the compatible way that all other browsers ++ behave in this instance and ignore the enctype parameter ++ (treating it as the default application/x-www-form-urlencoded) ++ and perform a "GET" just as the method parameter requests. ++ This behavior produces far more compatible results than ++ gratuitously changing the "get" into a "post" which can ++ result in unexpected "405 Method Not Allowed" errors. ++ Signed-off-by: Kyle J. McKay <mackyle@gmail.com> ++ ++ * file.c: ++ file.c: compute correct base URL when not absolute. ++ When a server makes use of the PATH_INFO feature in a CGI, ++ the returned pages may often have a <base href="..." /> tag ++ specifying the URL of the CGI itself as the base. ++ However, to avoid hard-coding the scheme and host into such ++ a base href, the href value will often omit the scheme, host ++ and port. ++ Make sure that when parsing any such base href value that ++ any omitted components are taken from the current URL rather ++ than taken as being from a bare, absolute file:/// URL. ++ Signed-off-by: Kyle J. McKay <mackyle@gmail.com> ++ +2017-01-02 Tatsuya Kinoshita <tats@debian.org> + + * NEWS: Update NEWS. @@ -1642,10 +1734,23 @@ index 7d692f9..453072d 100644 do \ (cd $$dir && $(MAKE) $(MAKE_ARGS) uninstall); \ diff --git a/NEWS b/NEWS -index 66e309d..d8a99d3 100644 +index 66e309d..4ed621a 100644 --- a/NEWS +++ b/NEWS -@@ -1,3 +1,65 @@ +@@ -1,3 +1,78 @@ ++Debian's w3m 0.5.3+git20180125 ++ ++* bug fixes ++ - fix stack overflow with malformed text [CVE-2018-6196] ++ - fix null deref with malformed text [CVE-2018-6197] ++ - fix /tmp file races only when ~/.w3m is unwritable [CVE-2018-6198] ++ - do not remove w3mdict.cgi when "make distclean" ++ - do not turn a form's GET into POST ++ - correct <base ...> parsing ++ - accept TERM=fbterm ++* new feature ++ - extend ssl_forbid_method to disable TLSv1.1 ++ +Debian's w3m 0.5.3+git20170102 + +* bug fixes @@ -2220,7 +2325,7 @@ index 5afc26a..3b2352a 100644 unlink(buf->savecache); buf->savecache = NULL; diff --git a/config.guess b/config.guess -index 51fab47..0967f2a 100755 +index 51fab47..31e01ef 100755 --- a/config.guess +++ b/config.guess @@ -1,13 +1,12 @@ @@ -2228,10 +2333,10 @@ index 51fab47..0967f2a 100755 # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+# Copyright 1992-2016 Free Software Foundation, Inc. ++# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2004-03-12' -+timestamp='2016-04-02' ++timestamp='2017-11-07' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -2246,7 +2351,7 @@ index 51fab47..0967f2a 100755 # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# along with this program; if not, see <http://www.gnu.org/licenses/>. ++# along with this program; if not, see <https://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -2266,7 +2371,7 @@ index 51fab47..0967f2a 100755 -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess ++# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. @@ -2275,13 +2380,22 @@ index 51fab47..0967f2a 100755 me=`echo "$0" | sed -e 's,.*/,,'` +@@ -42,7 +39,7 @@ Usage: $0 [OPTION] + + Output the configuration name of the system \`$me' is run on. + +-Operation modes: ++Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit @@ -53,8 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -+Copyright 1992-2016 Free Software Foundation, Inc. ++Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -2353,7 +2467,7 @@ index 51fab47..0967f2a 100755 # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward -@@ -151,22 +168,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -151,22 +168,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" @@ -2377,10 +2491,13 @@ index 51fab47..0967f2a 100755 *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. +- # to ELF recently, or will in the future. ++ # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in -- arm*|i386|m68k|ns32k|sh3*|sparc|vax) -+ arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) ++ earm*) ++ os=netbsdelf ++ ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null @@ -2388,7 +2505,7 @@ index 51fab47..0967f2a 100755 then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? -@@ -176,7 +201,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -176,7 +204,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) @@ -2404,7 +2521,7 @@ index 51fab47..0967f2a 100755 ;; esac # The OS release -@@ -189,78 +221,48 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -189,78 +224,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) @@ -2478,6 +2595,9 @@ index 51fab47..0967f2a 100755 + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; ++ *:MidnightBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE} ++ exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit 0 ;; @@ -2497,6 +2617,9 @@ index 51fab47..0967f2a 100755 + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; ++ *:Redox:*:*) ++ echo ${UNAME_MACHINE}-unknown-redox ++ exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -2508,7 +2631,7 @@ index 51fab47..0967f2a 100755 ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on -@@ -270,76 +272,82 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -270,76 +281,73 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") @@ -2567,22 +2690,20 @@ index 51fab47..0967f2a 100755 - Alpha*:OpenVMS:*:*) - echo alpha-hp-vms - exit 0 ;; +- Alpha\ *:Windows_NT*:*) +- # How do we know it's Interix rather than the generic POSIX subsystem? +- # Should we change UNAME_MACHINE based on the output of uname instead +- # of the specific Alpha model? +- echo alpha-pc-interix +- exit 0 ;; +- 21064:Windows_NT:50:3) +- echo alpha-dec-winnt3.5 +- exit 0 ;; + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix -- exit 0 ;; -+ exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 -- exit 0 ;; -+ exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; @@ -2773,7 +2894,22 @@ index 51fab47..0967f2a 100755 mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c -@@ -467,35 +494,36 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -455,47 +482,48 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + #endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) +- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); ++ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) +- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); ++ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) +- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); ++ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif exit (-1); } EOF @@ -2871,7 +3007,7 @@ index 51fab47..0967f2a 100755 *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build -@@ -553,49 +581,54 @@ EOF +@@ -553,125 +581,140 @@ EOF exit(0); } EOF @@ -2912,8 +3048,9 @@ index 51fab47..0967f2a 100755 *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; +- ibmrt:4.4BSD:*|romp-ibm:BSD:*) + exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) ++ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; @@ -2940,7 +3077,10 @@ index 51fab47..0967f2a 100755 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in -@@ -604,74 +637,84 @@ EOF +- 9000/31? ) HP_ARCH=m68000 ;; +- 9000/[34]?? ) HP_ARCH=m68k ;; ++ 9000/31?) HP_ARCH=m68000 ;; ++ 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` @@ -3074,7 +3214,7 @@ index 51fab47..0967f2a 100755 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c -@@ -699,340 +742,351 @@ EOF +@@ -699,356 +742,356 @@ EOF exit (0); } EOF @@ -3083,8 +3223,9 @@ index 51fab47..0967f2a 100755 + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; +- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) ++ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; @@ -3095,8 +3236,9 @@ index 51fab47..0967f2a 100755 *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; +- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) ++ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; @@ -3219,10 +3361,11 @@ index 51fab47..0967f2a 100755 + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) -+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ *) -+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ UNAME_PROCESSOR=x86_64 ;; ++ i386) ++ UNAME_PROCESSOR=i586 ;; + esac ++ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -3239,16 +3382,21 @@ index 51fab47..0967f2a 100755 + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; -+ i*:windows32*:*) -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 -+ exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; +- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) +- echo i${UNAME_MACHINE}-pc-mks +- exit 0 ;; +- i*:Windows_NT*:* | Pentium*:Windows_NT*:*) +- # How do we know it's Interix rather than the generic POSIX subsystem? +- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we +- # UNAME_MACHINE based on the output of uname instead of i386? +- echo i586-pc-interix +- exit 0 ;; + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in @@ -3262,31 +3410,16 @@ index 51fab47..0967f2a 100755 + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks -- exit 0 ;; -+ exit ;; -+ 8664:Windows_NT:*) -+ echo x86_64-pc-mks -+ exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix -- exit 0 ;; -+ exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; +- p*:CYGWIN*:*) +- echo powerpcle-unknown-cygwin +- exit 0 ;; + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin -- exit 0 ;; -+ exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; @@ -3455,6 +3588,9 @@ index 51fab47..0967f2a 100755 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; ++ mips64el:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; @@ -3494,6 +3630,9 @@ index 51fab47..0967f2a 100755 + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; ++ riscv32:Linux:*:* | riscv64:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; @@ -3631,11 +3770,12 @@ index 51fab47..0967f2a 100755 i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; +- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) ++ i*86:*:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then -@@ -1040,15 +1094,16 @@ EOF + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi @@ -3655,7 +3795,7 @@ index 51fab47..0967f2a 100755 i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` -@@ -1066,73 +1121,86 @@ EOF +@@ -1066,73 +1109,86 @@ EOF else echo ${UNAME_MACHINE}-pc-sysv32 fi @@ -3769,7 +3909,7 @@ index 51fab47..0967f2a 100755 *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` -@@ -1140,278 +1208,203 @@ EOF +@@ -1140,291 +1196,239 @@ EOF else echo ns32k-sni-sysv fi @@ -3884,14 +4024,21 @@ index 51fab47..0967f2a 100755 + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ -+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ -+ grep IS_64BIT_ARCH >/dev/null ++ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ ++ grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi ++ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc ++ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ ++ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ ++ grep IS_PPC >/dev/null ++ then ++ UNAME_PROCESSOR=powerpc ++ fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -3918,17 +4065,21 @@ index 51fab47..0967f2a 100755 *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; +- NSR-?:NONSTOP_KERNEL:*:*) + exit ;; -+ NEO-?:NONSTOP_KERNEL:*:*) ++ NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; - NSR-?:NONSTOP_KERNEL:*:*) ++ NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; ++ NSX-*:NONSTOP_KERNEL:*:*) ++ echo nsx-tandem-nsk${UNAME_RELEASE} ++ exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; @@ -4078,7 +4229,8 @@ index 51fab47..0967f2a 100755 -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif -- ++echo "$0: unable to guess system type" >&2 + -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); @@ -4092,7 +4244,11 @@ index 51fab47..0967f2a 100755 - struct utsname un; - - uname(&un); -- ++case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in ++ mips:Linux | mips64:Linux) ++ # If we got here on MIPS GNU/Linux, output extra information. ++ cat >&2 <<EOF + - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } @@ -4130,7 +4286,9 @@ index 51fab47..0967f2a 100755 - - exit (1); -} --EOF ++NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize ++the system type. Please install a C compiler and try again. + EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 - @@ -4163,23 +4321,45 @@ index 51fab47..0967f2a 100755 - exit 0 ;; - esac -fi -- ++ ;; ++esac + cat >&2 <<EOF - $0: unable to guess system type +-$0: unable to guess system type -@@ -1419,7 +1412,9 @@ This script, last modified $timestamp, has failed to recognize - the operating system you are using. It is advised that you - download the most up to date version of the config scripts from +-This script, last modified $timestamp, has failed to recognize +-the operating system you are using. It is advised that you +-download the most up to date version of the config scripts from ++This script (version $timestamp), has failed to recognize the ++operating system you are using. If your script is old, overwrite *all* ++copies of config.guess and config.sub with the latest versions from: - ftp://ftp.gnu.org/pub/gnu/config/ -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess ++ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +and -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub ++ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +-If the version you run ($0) is already up to date, please +-send the following data and any information you think might be +-pertinent to <config-patches@gnu.org> in order to provide the needed +-information to handle your system. ++If $0 has already been updated, send the following data and any ++information you think might be pertinent to config-patches@gnu.org to ++provide the necessary information to handle your system. + + config.guess timestamp = $timestamp - If the version you run ($0) is already up to date, please - send the following data and any information you think might be +@@ -1452,7 +1456,7 @@ EOF + exit 1 + + # Local variables: +-# eval: (add-hook 'write-file-hooks 'time-stamp) ++# eval: (add-hook 'write-file-functions 'time-stamp) + # time-stamp-start: "timestamp='" + # time-stamp-format: "%:y-%02m-%02d" + # time-stamp-end: "'" diff --git a/config.h.dist b/config.h.dist -index 844a555..0440927 100644 +index 844a555..4d9c119 100644 --- a/config.h.dist +++ b/config.h.dist @@ -9,10 +9,10 @@ @@ -4195,8 +4375,16 @@ index 844a555..0440927 100644 /* If you want to load and save URL history. +@@ -210,6 +210,7 @@ typedef long clen_t; + #define HAVE_SRANDOM + #undef HAVE_GETPASSPHRASE + #define HAVE_CHDIR ++#define HAVE_MKDTEMP + + + #define SETJMP(env) sigsetjmp(env,1) diff --git a/config.h.in b/config.h.in -index 2f41eed..3b575e4 100644 +index 2f41eed..6ab3008 100644 --- a/config.h.in +++ b/config.h.in @@ -25,6 +25,7 @@ @@ -4216,7 +4404,15 @@ index 2f41eed..3b575e4 100644 #define ENABLE_REMOVE_TRAILINGSPACES #undef MENU_THIN_FRAME #undef USE_RAW_SCROLL -@@ -209,6 +210,10 @@ typedef RETSIGTYPE MySignalHandler; +@@ -142,6 +143,7 @@ typedef long clen_t; + #undef HAVE_SRANDOM + #undef HAVE_GETPASSPHRASE + #undef HAVE_CHDIR ++#undef HAVE_MKDTEMP + #undef HAVE_SETPGRP + #undef HAVE_SETLOCALE + #undef HAVE_LANGINFO_CODESET +@@ -209,6 +211,10 @@ typedef RETSIGTYPE MySignalHandler; #define SUPPORT_WIN9X_CONSOLE_MBCS 1 #endif @@ -4228,7 +4424,7 @@ index 2f41eed..3b575e4 100644 #define DEFAULT_TERM "dosansi" #else diff --git a/config.sub b/config.sub -index ba33103..8d39c4b 100755 +index ba33103..00f68b8 100755 --- a/config.sub +++ b/config.sub @@ -1,42 +1,40 @@ @@ -4236,10 +4432,10 @@ index ba33103..8d39c4b 100755 # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+# Copyright 1992-2016 Free Software Foundation, Inc. ++# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2004-03-12' -+timestamp='2016-03-30' ++timestamp='2017-11-23' -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software @@ -4267,7 +4463,7 @@ index ba33103..8d39c4b 100755 -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -+# along with this program; if not, see <http://www.gnu.org/licenses/>. ++# along with this program; if not, see <https://www.gnu.org/licenses/>. +# # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -4288,12 +4484,12 @@ index ba33103..8d39c4b 100755 # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub ++# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. -@@ -55,8 +53,7 @@ timestamp='2004-03-12' +@@ -55,12 +53,11 @@ timestamp='2004-03-12' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -4303,13 +4499,18 @@ index ba33103..8d39c4b 100755 Canonicalize a configuration name. +-Operation modes: ++Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit @@ -70,8 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -+Copyright 1992-2016 Free Software Foundation, Inc. ++Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -4346,7 +4547,7 @@ index ba33103..8d39c4b 100755 + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ -+ kopensolaris*-gnu* | \ ++ kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -4405,7 +4606,7 @@ index ba33103..8d39c4b 100755 -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -@@ -203,6 +217,12 @@ case $os in +@@ -203,15 +217,18 @@ case $os in -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; @@ -4418,7 +4619,16 @@ index ba33103..8d39c4b 100755 -lynx*) os=-lynxos ;; -@@ -227,57 +247,114 @@ case $basic_machine in + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; +- -windowsnt*) +- os=`echo $os | sed -e 's/windowsnt/winnt/'` +- ;; + -psos*) + os=-psos + ;; +@@ -227,57 +244,115 @@ case $basic_machine in # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ @@ -4440,8 +4650,9 @@ index ba33103..8d39c4b 100755 + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +- | i370 | i860 | i960 | ia64 \ + | hexagon \ - | i370 | i860 | i960 | ia64 \ ++ | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | mcore \ + | k1om \ @@ -4483,6 +4694,7 @@ index ba33103..8d39c4b 100755 | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ ++ | pru \ | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | riscv32 | riscv64 \ @@ -4494,6 +4706,9 @@ index ba33103..8d39c4b 100755 - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ +- | we32k \ +- | x86 | xscale | xstormy16 | xtensa \ +- | z8k) + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ @@ -4501,9 +4716,7 @@ index ba33103..8d39c4b 100755 + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ - | we32k \ -- | x86 | xscale | xstormy16 | xtensa \ -- | z8k) ++ | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) basic_machine=$basic_machine-unknown @@ -4549,7 +4762,7 @@ index ba33103..8d39c4b 100755 # We use `pc' rather than `unknown' # because (1) that's what they normally are, and -@@ -293,59 +370,89 @@ case $basic_machine in +@@ -293,59 +368,91 @@ case $basic_machine in # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ @@ -4576,8 +4789,9 @@ index ba33103..8d39c4b 100755 + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ +- | i*86-* | i860-* | i960-* | ia64-* \ + | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ ++ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ - | m32r-* | m32rle-* \ + | k1om-* \ @@ -4623,6 +4837,7 @@ index ba33103..8d39c4b 100755 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ ++ | pru-* \ | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ @@ -4645,6 +4860,7 @@ index ba33103..8d39c4b 100755 + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ ++ | wasm32-* \ | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ @@ -4742,7 +4958,7 @@ index ba33103..8d39c4b 100755 cris | cris-* | etrax*) basic_machine=cris-axis ;; -@@ -481,6 +627,14 @@ case $basic_machine in +@@ -481,14 +627,30 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; @@ -4757,7 +4973,24 @@ index ba33103..8d39c4b 100755 dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx -@@ -592,7 +746,6 @@ case $basic_machine in + ;; +- dpx2* | dpx2*-bull) ++ dpx2*) + basic_machine=m68k-bull + os=-sysv3 + ;; ++ e500v[12]) ++ basic_machine=powerpc-unknown ++ os=$os"spe" ++ ;; ++ e500v[12]-*) ++ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=$os"spe" ++ ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon +@@ -592,7 +754,6 @@ case $basic_machine in i370-ibm* | ibm*) basic_machine=i370-ibm ;; @@ -4765,7 +4998,7 @@ index ba33103..8d39c4b 100755 i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 -@@ -631,6 +784,17 @@ case $basic_machine in +@@ -631,6 +792,17 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; @@ -4783,7 +5016,7 @@ index ba33103..8d39c4b 100755 m88k-omron*) basic_machine=m88k-omron ;; -@@ -642,10 +806,21 @@ case $basic_machine in +@@ -642,10 +814,21 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; @@ -4806,7 +5039,7 @@ index ba33103..8d39c4b 100755 miniframe) basic_machine=m68000-convergent ;; -@@ -659,10 +834,6 @@ case $basic_machine in +@@ -659,10 +842,6 @@ case $basic_machine in mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; @@ -4817,7 +5050,7 @@ index ba33103..8d39c4b 100755 monitor) basic_machine=m68k-rom68k os=-coff -@@ -671,14 +842,29 @@ case $basic_machine in +@@ -671,14 +850,29 @@ case $basic_machine in basic_machine=powerpc-unknown os=-morphos ;; @@ -4847,7 +5080,16 @@ index ba33103..8d39c4b 100755 ncr3000) basic_machine=i486-ncr os=-sysv4 -@@ -743,9 +929,11 @@ case $basic_machine in +@@ -707,7 +901,7 @@ case $basic_machine in + basic_machine=v70-nec + os=-sysv + ;; +- next | m*-next ) ++ next | m*-next) + basic_machine=m68k-next + case $os in + -nextstep* ) +@@ -743,20 +937,24 @@ case $basic_machine in np1) basic_machine=np1-gould ;; @@ -4862,7 +5104,11 @@ index ba33103..8d39c4b 100755 ;; nsr-tandem) basic_machine=nsr-tandem -@@ -754,9 +942,8 @@ case $basic_machine in + ;; ++ nsx-tandem) ++ basic_machine=nsx-tandem ++ ;; + op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; @@ -4873,7 +5119,7 @@ index ba33103..8d39c4b 100755 ;; os400) basic_machine=powerpc-ibm -@@ -778,6 +965,14 @@ case $basic_machine in +@@ -778,6 +976,14 @@ case $basic_machine in basic_machine=i860-intel os=-osf ;; @@ -4888,7 +5134,7 @@ index ba33103..8d39c4b 100755 pbd) basic_machine=sparc-tti ;; -@@ -787,6 +982,12 @@ case $basic_machine in +@@ -787,6 +993,12 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; @@ -4901,7 +5147,7 @@ index ba33103..8d39c4b 100755 pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; -@@ -816,9 +1017,10 @@ case $basic_machine in +@@ -816,11 +1028,12 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; @@ -4912,9 +5158,21 @@ index ba33103..8d39c4b 100755 + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle | ppc-le | powerpc-little) +- ppcle | powerpclittle | ppc-le | powerpc-little) ++ ppcle | powerpclittle) basic_machine=powerpcle-unknown -@@ -843,6 +1045,14 @@ case $basic_machine in + ;; + ppcle-* | powerpclittle-*) +@@ -830,7 +1043,7 @@ case $basic_machine in + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; +- ppc64le | powerpc64little | ppc64-le | powerpc64-little) ++ ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) +@@ -843,6 +1056,14 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; @@ -4929,7 +5187,7 @@ index ba33103..8d39c4b 100755 rom68k) basic_machine=m68k-rom68k os=-coff -@@ -869,6 +1079,10 @@ case $basic_machine in +@@ -869,6 +1090,10 @@ case $basic_machine in sb1el) basic_machine=mipsisa64sb1el-unknown ;; @@ -4940,7 +5198,7 @@ index ba33103..8d39c4b 100755 sei) basic_machine=mips-sei os=-seiux -@@ -880,6 +1094,9 @@ case $basic_machine in +@@ -880,6 +1105,9 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; @@ -4950,7 +5208,7 @@ index ba33103..8d39c4b 100755 sh64) basic_machine=sh64-unknown ;; -@@ -901,6 +1118,9 @@ case $basic_machine in +@@ -901,6 +1129,9 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; @@ -4960,7 +5218,7 @@ index ba33103..8d39c4b 100755 sun2) basic_machine=m68000-sun ;; -@@ -957,17 +1177,9 @@ case $basic_machine in +@@ -957,17 +1188,9 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; @@ -4981,10 +5239,23 @@ index ba33103..8d39c4b 100755 ;; tx39) basic_machine=mipstx39-unknown -@@ -1029,9 +1241,16 @@ case $basic_machine in +@@ -1021,6 +1244,9 @@ case $basic_machine in + basic_machine=a29k-wrs + os=-vxworks + ;; ++ wasm32) ++ basic_machine=wasm32-unknown ++ ;; + w65*) + basic_machine=w65-wdc + os=-none +@@ -1029,9 +1255,19 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; ++ x64) ++ basic_machine=x86_64-pc ++ ;; + xbox) + basic_machine=i686-pc + os=-mingw32 @@ -4998,7 +5269,7 @@ index ba33103..8d39c4b 100755 ymp) basic_machine=ymp-cray os=-unicos -@@ -1040,6 +1259,10 @@ case $basic_machine in +@@ -1040,6 +1276,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; @@ -5009,7 +5280,7 @@ index ba33103..8d39c4b 100755 none) basic_machine=none-none os=-none -@@ -1059,6 +1282,9 @@ case $basic_machine in +@@ -1059,6 +1299,9 @@ case $basic_machine in romp) basic_machine=romp-ibm ;; @@ -5019,7 +5290,7 @@ index ba33103..8d39c4b 100755 rs6000) basic_machine=rs6000-ibm ;; -@@ -1075,13 +1301,10 @@ case $basic_machine in +@@ -1075,13 +1318,10 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; @@ -5035,14 +5306,14 @@ index ba33103..8d39c4b 100755 basic_machine=sparc-sun ;; cydra) -@@ -1125,9 +1348,12 @@ esac +@@ -1125,9 +1365,12 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. -+ # First match some system type aliases -+ # that might get confused with valid system types. ++ # First match some system type aliases that might get confused ++ # with valid system types. # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux @@ -5050,8 +5321,15 @@ index ba33103..8d39c4b 100755 -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -@@ -1148,26 +1374,32 @@ case $os in - # Each alternative MUST END IN A *, to match a version number. +@@ -1143,31 +1386,37 @@ case $os in + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; +- # First accept the basic system types. ++ # Now accept the basic system types. + # The portable systems comes first. +- # Each alternative MUST END IN A *, to match a version number. ++ # Each alternative MUST end in a * to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ @@ -5074,9 +5352,9 @@ index ba33103..8d39c4b 100755 - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -chorusos* | -chorusrdb* | -cegcc* \ ++ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ ++ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -5087,11 +5365,11 @@ index ba33103..8d39c4b 100755 - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ -+ | -onefs* | -tirtos*) ++ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) -@@ -1185,7 +1417,7 @@ case $os in +@@ -1185,7 +1434,7 @@ case $os in os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ @@ -5100,7 +5378,7 @@ index ba33103..8d39c4b 100755 | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) -@@ -1206,7 +1438,7 @@ case $os in +@@ -1206,7 +1455,7 @@ case $os in -opened*) os=-openedition ;; @@ -5109,7 +5387,16 @@ index ba33103..8d39c4b 100755 os=-os400 ;; -wince*) -@@ -1255,7 +1487,7 @@ case $os in +@@ -1242,7 +1491,7 @@ case $os in + -nova*) + os=-rtmk-nova + ;; +- -ns2 ) ++ -ns2) + os=-nextstep2 + ;; + -nsk*) +@@ -1255,7 +1504,7 @@ case $os in -sinix*) os=-sysv4 ;; @@ -5118,7 +5405,7 @@ index ba33103..8d39c4b 100755 os=-tpf ;; -triton*) -@@ -1291,8 +1523,15 @@ case $os in +@@ -1291,8 +1540,28 @@ case $os in -aros*) os=-aros ;; @@ -5130,13 +5417,26 @@ index ba33103..8d39c4b 100755 + -dicos*) + os=-dicos + ;; ++ -pikeos*) ++ # Until real need of OS specific support for ++ # particular features comes up, bare metal ++ # configurations are quite functional. ++ case $basic_machine in ++ arm*) ++ os=-eabi ++ ;; ++ *) ++ os=-elf ++ ;; ++ esac ++ ;; + -nacl*) + ;; + -ios) ;; -none) ;; -@@ -1316,6 +1555,12 @@ else +@@ -1316,6 +1585,12 @@ else # system, and we'll never get to this point. case $basic_machine in @@ -5149,7 +5449,7 @@ index ba33103..8d39c4b 100755 *-acorn) os=-riscix1.2 ;; -@@ -1325,9 +1570,24 @@ case $basic_machine in +@@ -1325,9 +1600,24 @@ case $basic_machine in arm*-semi) os=-aout ;; @@ -5177,7 +5477,7 @@ index ba33103..8d39c4b 100755 # This must come before the *-dec entry. pdp10-*) os=-tops20 -@@ -1346,13 +1606,13 @@ case $basic_machine in +@@ -1346,13 +1636,13 @@ case $basic_machine in ;; m68000-sun) os=-sunos3 @@ -5194,7 +5494,13 @@ index ba33103..8d39c4b 100755 mips*-cisco) os=-elf ;; -@@ -1371,9 +1631,15 @@ case $basic_machine in +@@ -1368,12 +1658,21 @@ case $basic_machine in + sparc-* | *-sun) + os=-sunos4.1.1 + ;; ++ pru-*) ++ os=-elf ++ ;; *-be) os=-beos ;; @@ -5210,7 +5516,16 @@ index ba33103..8d39c4b 100755 *-wec) os=-proelf ;; -@@ -1476,7 +1742,7 @@ case $basic_machine in +@@ -1407,7 +1706,7 @@ case $basic_machine in + m88k-omron*) + os=-luna + ;; +- *-next ) ++ *-next) + os=-nextstep + ;; + *-sequent) +@@ -1476,7 +1775,7 @@ case $basic_machine in -sunos*) vendor=sun ;; @@ -5219,7 +5534,7 @@ index ba33103..8d39c4b 100755 vendor=ibm ;; -beos*) -@@ -1539,7 +1805,7 @@ case $basic_machine in +@@ -1539,10 +1838,10 @@ case $basic_machine in esac echo $basic_machine$os @@ -5227,9 +5542,13 @@ index ba33103..8d39c4b 100755 +exit # Local variables: - # eval: (add-hook 'write-file-hooks 'time-stamp) +-# eval: (add-hook 'write-file-hooks 'time-stamp) ++# eval: (add-hook 'write-file-functions 'time-stamp) + # time-stamp-start: "timestamp='" + # time-stamp-format: "%:y-%02m-%02d" + # time-stamp-end: "'" diff --git a/configure b/configure -index 4c1bc06..140f050 100755 +index 4c1bc06..8699b43 100755 --- a/configure +++ b/configure @@ -1486,11 +1486,11 @@ Optional Packages: @@ -5332,6 +5651,15 @@ index 4c1bc06..140f050 100755 for lib in $with_termlib; do as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_tgetent" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l$lib" >&5 +@@ -8766,7 +8767,7 @@ _ACEOF + + + +-for ac_func in strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale ++for ac_func in strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir mkdtemp getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -8986,7 +8987,7 @@ extern char *sys_errlist[]; int main () @@ -5372,9 +5700,18 @@ index 4c1bc06..140f050 100755 "libwc/Makefile") CONFIG_FILES="$CONFIG_FILES libwc/Makefile" ;; "w3mimg/Makefile") CONFIG_FILES="$CONFIG_FILES w3mimg/Makefile" ;; diff --git a/configure.ac b/configure.ac -index 7308fc6..320a6e2 100644 +index 7308fc6..ebb3282 100644 --- a/configure.ac +++ b/configure.ac +@@ -150,7 +150,7 @@ dnl AC_FUNC_MEMCMP + dnl AC_FUNC_MMAP + dnl AC_FUNC_SETVBUF_REVERSED + dnl AC_FUNC_VPRINTF +-AC_CHECK_FUNCS(strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale) ++AC_CHECK_FUNCS(strcasecmp strcasestr strchr memcpy strerror bcopy setpgrp chdir mkdtemp getcwd getwd readlink setenv putenv strtoll stroq atoll atoq symlink readlink lstat srand48 srandom getpassphrase waitpid setlocale) + AC_FUNC_STRFTIME + AC_FUNC_WAIT3 + AC_FUNC_SETPGRP @@ -172,7 +172,7 @@ AC_SUBST(RC_DIR) RC_DIR="~/.$PACKAGE" AC_DEFINE(RC_DIR, "$RC_DIR") @@ -9249,14 +9586,16 @@ index 074766f..e5e59b1 100644 http://w3m.sourceforge.net/ + https://sourceforge.net/projects/w3m/ diff --git a/doc-jp/README.SSL b/doc-jp/README.SSL -index 4aedfde..47d5fd6 100644 +index 4aedfde..ac3f4a3 100644 --- a/doc-jp/README.SSL +++ b/doc-jp/README.SSL -@@ -25,9 +25,9 @@ SSL +@@ -24,10 +24,10 @@ SSL + ・ SSL に関して以下の設定が可能になってます: ssl_forbid_method - 使わないSSLメソッドのリスト(2: SSLv2, 3: SSLv3, t: TLSv1) +- 使わないSSLメソッドのリスト(2: SSLv2, 3: SSLv3, t: TLSv1) - (デフォルトは<NULL>). ++ 使わないSSLメソッドのリスト(2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1) + (デフォルトは2, 3). ssl_verify_server ON/OFF - SSLのサーバ認証を行う(デフォルトはOFF). @@ -9377,6 +9716,18 @@ index 0000000..90066f7 +http://www.example.com/ABC/ + +ただし、ホスト名の部分は常に小文字に変換してから比較します。 +diff --git a/doc-jp/README.tab b/doc-jp/README.tab +index 61f7c58..99a1220 100644 +--- a/doc-jp/README.tab ++++ b/doc-jp/README.tab +@@ -38,6 +38,6 @@ w3m $B$r%?%V%V%i%&%62=(B + open_tab_blank $B!D(B target $B$,(B _blank $B$+(B _new $B$N>l9g$O?7$7$$%?%V$G3+$/(B + $B%G%U%)%k%H$O(B OFF + close_tab_back $B!D(B $BLa$k;~$K%P%C%U%!$,:G8e$J$i%?%V$rJD$8$k(B +- $B%G%U%)%k%H$O(B OFF (= Can't back...) ++ $B%G%U%)%k%H$O(B OFF (= Can't go back...) + + $B$rDI2C$7$F$$$^$9!#(B diff --git a/doc-jp/keymap.lynx b/doc-jp/keymap.lynx index 869c716..e4085c8 100644 --- a/doc-jp/keymap.lynx @@ -13910,6 +14261,19 @@ index 0000000..588afc4 + environmental variable. + + $ W3M_IMG2SIXEL="img2sixel -d atkinson" w3m -sixel http://... +diff --git a/doc/README.tab b/doc/README.tab +index 8e98e1c..f237f70 100644 +--- a/doc/README.tab ++++ b/doc/README.tab +@@ -39,7 +39,7 @@ Options: + open_tab_blank ... open new tab if target is _blank or _new + default: OFF + close_tab_back ... close the tab when you back from last buffer in the tab +- default: OFF (= Can't back...) ++ default: OFF (= Can't go back...) + + + diff --git a/doc/keymap.lynx b/doc/keymap.lynx index 869c716..e4085c8 100644 --- a/doc/keymap.lynx @@ -14453,7 +14817,7 @@ index 8fe1215..37c4f15 100644 QuietMessage = TRUE; fmInitialized = FALSE; diff --git a/file.c b/file.c -index 567d41e..4d15ff1 100644 +index 567d41e..9b0e947 100644 --- a/file.c +++ b/file.c @@ -26,6 +26,8 @@ @@ -14990,10 +15354,11 @@ index 567d41e..4d15ff1 100644 Strcat_char(tmp, ' '); } break; -@@ -3732,6 +3753,75 @@ process_input(struct parsed_tag *tag) +@@ -3731,6 +3752,75 @@ process_input(struct parsed_tag *tag) + return tmp; } - Str ++Str +process_button(struct parsed_tag *tag) +{ + Str tmp = NULL; @@ -15062,10 +15427,9 @@ index 567d41e..4d15ff1 100644 + return tmp; +} + -+Str + Str process_select(struct parsed_tag *tag) { - Str tmp = NULL; @@ -3926,7 +4016,7 @@ process_textarea(struct parsed_tag *tag, int width) cur_textarea_size = 20; if (parsedtag_get_value(tag, ATTR_COLS, &p)) { @@ -15383,7 +15747,8 @@ index 567d41e..4d15ff1 100644 + buf->document_charset); if (!buf->baseURL) buf->baseURL = New(ParsedURL); - parseURL(p, buf->baseURL, NULL); +- parseURL(p, buf->baseURL, NULL); ++ parseURL2(p, buf->baseURL, &buf->currentURL); +#if defined(USE_M17N) || defined(USE_IMAGE) + base = buf->baseURL; +#endif @@ -16142,7 +16507,7 @@ index 8378939..96d3ab3 100644 global double image_scale init(100); #endif diff --git a/form.c b/form.c -index b7556ca..0605513 100644 +index b7556ca..bc14d39 100644 --- a/form.c +++ b/form.c @@ -10,8 +10,10 @@ @@ -16156,7 +16521,20 @@ index b7556ca..0605513 100644 #include "menu.h" #endif /* MENU_SELECT */ -@@ -122,10 +124,12 @@ formList_addInput(struct form_list *fl, struct parsed_tag *tag) +@@ -54,10 +56,9 @@ newFormList(char *action, char *method, char *charset, char *enctype, + m = FORM_METHOD_INTERNAL; + /* unknown method is regarded as 'get' */ + +- if (enctype != NULL && !strcasecmp(enctype, "multipart/form-data")) { ++ if (m != FORM_METHOD_GET && enctype != NULL && ++ !strcasecmp(enctype, "multipart/form-data")) { + e = FORM_ENCTYPE_MULTIPART; +- if (m == FORM_METHOD_GET) +- m = FORM_METHOD_POST; + } + + #ifdef USE_M17N +@@ -122,10 +123,12 @@ formList_addInput(struct form_list *fl, struct parsed_tag *tag) parsedtag_get_value(tag, ATTR_SIZE, &item->size); parsedtag_get_value(tag, ATTR_MAXLENGTH, &item->maxlength); item->readonly = parsedtag_exists(tag, ATTR_READONLY); @@ -16171,7 +16549,7 @@ index b7556ca..0605513 100644 item->select_option = select_option[i].first; #endif /* MENU_SELECT */ if (parsedtag_get_value(tag, ATTR_ROWS, &p)) -@@ -196,7 +200,7 @@ formtype(char *typestr) +@@ -196,7 +199,7 @@ formtype(char *typestr) if (!strcasecmp(typestr, _formtypetbl[i])) return i; } @@ -16180,7 +16558,7 @@ index b7556ca..0605513 100644 } void -@@ -316,7 +320,8 @@ form_update_line(Line *line, char **str, int spos, int epos, int width, +@@ -316,7 +319,8 @@ form_update_line(Line *line, char **str, int spos, int epos, int width, pos += width - w; len = line->len + pos + spos - epos; @@ -16190,7 +16568,7 @@ index b7556ca..0605513 100644 prop = New_N(Lineprop, len); bcopy((void *)line->lineBuf, (void *)buf, spos * sizeof(char)); bcopy((void *)line->propBuf, (void *)prop, spos * sizeof(Lineprop)); -@@ -438,6 +443,9 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) +@@ -438,6 +442,9 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) switch (form->type) { case FORM_INPUT_CHECKBOX: case FORM_INPUT_RADIO: @@ -16200,7 +16578,7 @@ index b7556ca..0605513 100644 if (form->checked) buf->currentLine->lineBuf[spos] = '*'; else -@@ -455,8 +463,14 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) +@@ -455,8 +462,14 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) } else #endif /* MENU_SELECT */ @@ -16215,7 +16593,16 @@ index b7556ca..0605513 100644 if (form->type == FORM_TEXTAREA) { int n = a->y - buf->currentLine->linenumber; if (n > 0) -@@ -477,6 +491,9 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) +@@ -469,6 +482,8 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) + rows = form->rows ? form->rows : 1; + col = COLPOS(l, a->start.pos); + for (c_rows = 0; c_rows < rows; c_rows++, l = l->next) { ++ if (l == NULL) ++ break; + if (rows > 1) { + pos = columnPos(l, col); + a = retrieveAnchor(buf->formitem, l->linenumber, pos); +@@ -477,6 +492,9 @@ formUpdateBuffer(Anchor *a, Buffer *buf, FormItemList *form) spos = a->start.pos; epos = a->end.pos; } @@ -16225,7 +16612,7 @@ index b7556ca..0605513 100644 pos = form_update_line(l, &p, spos, epos, COLPOS(l, epos) - col, rows > 1, form->type == FORM_INPUT_PASSWORD); -@@ -787,7 +804,7 @@ struct pre_form { +@@ -787,7 +805,7 @@ struct pre_form { static struct pre_form *PreForm = NULL; static struct pre_form * @@ -16234,7 +16621,7 @@ index b7556ca..0605513 100644 { ParsedURL pu; struct pre_form *new; -@@ -796,21 +813,13 @@ add_pre_form(struct pre_form *prev, char *url, char *name, char *action) +@@ -796,21 +814,13 @@ add_pre_form(struct pre_form *prev, char *url, char *name, char *action) new = prev->next = New(struct pre_form); else new = PreForm = New(struct pre_form); @@ -16260,7 +16647,7 @@ index b7556ca..0605513 100644 new->name = (name && *name) ? name : NULL; new->action = (action && *action) ? action : NULL; new->item = NULL; -@@ -834,7 +843,7 @@ add_pre_form_item(struct pre_form *pf, struct pre_form_item *prev, int type, +@@ -834,7 +844,7 @@ add_pre_form_item(struct pre_form *pf, struct pre_form_item *prev, int type, new->name = name; new->value = value; if (checked && *checked && (!strcmp(checked, "0") || @@ -16269,7 +16656,7 @@ index b7556ca..0605513 100644 || !strcasecmp(checked, "no"))) new->checked = 0; else -@@ -875,6 +884,7 @@ loadPreForm(void) +@@ -875,6 +885,7 @@ loadPreForm(void) return; while (1) { char *p, *s, *arg; @@ -16277,7 +16664,7 @@ index b7556ca..0605513 100644 line = Strfgets(fp); if (line->length == 0) -@@ -890,18 +900,20 @@ loadPreForm(void) +@@ -890,18 +901,20 @@ loadPreForm(void) if (*p == '#' || *p == '\0') continue; /* comment or empty line */ s = getWord(&p); @@ -16300,7 +16687,7 @@ index b7556ca..0605513 100644 if (!strcmp(s, "form")) { if (!arg || !*arg) continue; -@@ -913,7 +925,7 @@ loadPreForm(void) +@@ -913,7 +926,7 @@ loadPreForm(void) } if (pf->item) { struct pre_form *prev = pf; @@ -18803,7 +19190,7 @@ index c0461df..f0c6242 100644 int quoted; char *q = NULL; diff --git a/main.c b/main.c -index b421943..85b0003 100644 +index b421943..43e181c 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,7 @@ @@ -18833,7 +19220,7 @@ index b421943..85b0003 100644 static void fversion(FILE * f) { -@@ -200,10 +206,12 @@ fusage(FILE * f, int err) +@@ -200,9 +206,11 @@ fusage(FILE * f, int err) #ifdef USE_M17N fprintf(f, " -I charset document charset\n"); fprintf(f, " -O charset display/output charset\n"); @@ -18841,11 +19228,10 @@ index b421943..85b0003 100644 fprintf(f, " -e EUC-JP\n"); fprintf(f, " -s Shift_JIS\n"); fprintf(f, " -j JIS\n"); - #endif +#endif + #endif fprintf(f, " -B load bookmark\n"); fprintf(f, " -bookmark file specify bookmark file\n"); - fprintf(f, " -T type specify content-type\n"); @@ -214,7 +222,7 @@ fusage(FILE * f, int err) #endif /* USE_COLOR */ fprintf(f, @@ -18855,10 +19241,12 @@ index b421943..85b0003 100644 fprintf(f, " -cols width specify column width (used with -dump)\n"); fprintf(f, -@@ -248,8 +256,12 @@ fusage(FILE * f, int err) +@@ -247,9 +255,13 @@ fusage(FILE * f, int err) + " -cookie use cookie (-no-cookie: don't use cookie)\n"); #endif /* USE_COOKIE */ fprintf(f, " -graph use DEC special graphics for border of table and menu\n"); - fprintf(f, " -no-graph use ACII character for border of table and menu\n"); +- fprintf(f, " -no-graph use ACII character for border of table and menu\n"); ++ fprintf(f, " -no-graph use ASCII character for border of table and menu\n"); +#if 1 /* pager requires -s */ + fprintf(f, " -s squeeze multiple blank lines\n"); +#else @@ -19718,6 +20106,15 @@ index b421943..85b0003 100644 { Buffer *buf = Currentbuf->linkBuffer[LB_N_FRAME]; +@@ -3970,7 +4105,7 @@ DEFUN(backBf, BACK, "Back to previous buffer") + } + else + /* FIXME: gettextize? */ +- disp_message("Can't back...", TRUE); ++ disp_message("Can't go back...", TRUE); + return; + } + @@ -4008,8 +4143,7 @@ DEFUN(backBf, BACK, "Back to previous buffer") displayBuffer(Currentbuf, B_FORCE_REDRAW); } @@ -20275,7 +20672,18 @@ index b421943..85b0003 100644 } void -@@ -5772,7 +5975,7 @@ w3m_exit(int i) +@@ -5768,11 +5971,18 @@ w3m_exit(int i) + #endif + #ifdef __MINGW32_VERSION + WSACleanup(); ++#endif ++#ifdef HAVE_MKDTEMP ++ if (no_rc_dir && tmp_dir != rc_dir) ++ if (rmdir(tmp_dir) != 0) { ++ fprintf(stderr, "Can't remove temporary directory (%s)!\n", tmp_dir); ++ exit(1); ++ } + #endif exit(i); } @@ -20284,7 +20692,7 @@ index b421943..85b0003 100644 { char *data, *p; int cmd; -@@ -5900,7 +6103,7 @@ setAlarmEvent(AlarmEvent * event, int sec, short status, int cmd, void *data) +@@ -5900,7 +6110,7 @@ setAlarmEvent(AlarmEvent * event, int sec, short status, int cmd, void *data) } #endif @@ -20293,7 +20701,7 @@ index b421943..85b0003 100644 { char *resource = searchKeyData(); -@@ -5969,8 +6172,7 @@ DEFUN(reinit, REINIT, "Reload configuration files") +@@ -5969,8 +6179,7 @@ DEFUN(reinit, REINIT, "Reload configuration files") ptr, FALSE); } @@ -20303,7 +20711,7 @@ index b421943..85b0003 100644 { char *data; -@@ -6031,7 +6233,7 @@ _newT(void) +@@ -6031,7 +6240,7 @@ _newT(void) nTab++; } @@ -20312,7 +20720,7 @@ index b421943..85b0003 100644 { _newT(); displayBuffer(Currentbuf, B_REDRAW_IMAGE); -@@ -6142,7 +6344,7 @@ deleteTab(TabBuffer * tab) +@@ -6142,7 +6351,7 @@ deleteTab(TabBuffer * tab) return FirstTab; } @@ -20321,7 +20729,7 @@ index b421943..85b0003 100644 { TabBuffer *tab; -@@ -6157,7 +6359,7 @@ DEFUN(closeT, CLOSE_TAB, "Close current tab") +@@ -6157,7 +6366,7 @@ DEFUN(closeT, CLOSE_TAB, "Close current tab") displayBuffer(Currentbuf, B_REDRAW_IMAGE); } @@ -20330,7 +20738,7 @@ index b421943..85b0003 100644 { int i; -@@ -6172,7 +6374,7 @@ DEFUN(nextT, NEXT_TAB, "Move to next tab") +@@ -6172,7 +6381,7 @@ DEFUN(nextT, NEXT_TAB, "Move to next tab") displayBuffer(Currentbuf, B_REDRAW_IMAGE); } @@ -20339,7 +20747,7 @@ index b421943..85b0003 100644 { int i; -@@ -6236,7 +6438,7 @@ followTab(TabBuffer * tab) +@@ -6236,7 +6445,7 @@ followTab(TabBuffer * tab) displayBuffer(Currentbuf, B_FORCE_REDRAW); } @@ -20348,7 +20756,7 @@ index b421943..85b0003 100644 { followTab(prec_num ? numTab(PREC_NUM) : NULL); } -@@ -6277,13 +6479,13 @@ tabURL0(TabBuffer * tab, char *prompt, int relative) +@@ -6277,13 +6486,13 @@ tabURL0(TabBuffer * tab, char *prompt, int relative) displayBuffer(Currentbuf, B_FORCE_REDRAW); } @@ -20364,7 +20772,7 @@ index b421943..85b0003 100644 { tabURL0(prec_num ? numTab(PREC_NUM) : NULL, "Goto relative URL on new tab: ", TRUE); -@@ -6328,7 +6530,7 @@ moveTab(TabBuffer * t, TabBuffer * t2, int right) +@@ -6328,7 +6537,7 @@ moveTab(TabBuffer * t, TabBuffer * t2, int right) displayBuffer(Currentbuf, B_FORCE_REDRAW); } @@ -20373,7 +20781,7 @@ index b421943..85b0003 100644 { TabBuffer *tab; int i; -@@ -6338,7 +6540,7 @@ DEFUN(tabR, TAB_RIGHT, "Move current tab right") +@@ -6338,7 +6547,7 @@ DEFUN(tabR, TAB_RIGHT, "Move current tab right") moveTab(CurrentTab, tab ? tab : LastTab, TRUE); } @@ -20382,7 +20790,7 @@ index b421943..85b0003 100644 { TabBuffer *tab; int i; -@@ -6547,7 +6749,7 @@ stopDownload(void) +@@ -6547,7 +6756,7 @@ stopDownload(void) } /* download panel */ @@ -20706,22 +21114,23 @@ index 774b1bd..b0c890d 100644 new_option_menu(&menu, label, &key, NULL); menu.initial = 0; -@@ -2025,7 +2069,6 @@ list_menu(Buffer *buf) +@@ -2024,7 +2068,6 @@ list_menu(Buffer *buf) + } label[nitem] = NULL; - set_menu_frame(); - set_menu_frame(); + set_menu_frame(); new_option_menu(&menu, label, &key, NULL); - menu.initial = 0; diff --git a/mimehead.c b/mimehead.c index 78997e0..d16270c 100644 --- a/mimehead.c +++ b/mimehead.c -@@ -64,12 +64,22 @@ ha2d(char x, char y) +@@ -63,13 +63,23 @@ ha2d(char x, char y) + Str decodeB(char **ww) - { ++{ + struct growbuf gb; + + growbuf_init(&gb); @@ -20731,7 +21140,7 @@ index 78997e0..d16270c 100644 + +void +decodeB_to_growbuf(struct growbuf *gb, char **ww) -+{ + { unsigned char c[4]; char *wp = *ww; char d[3]; @@ -20771,7 +21180,7 @@ index 78997e0..d16270c 100644 Str decodeU(char **ww) - { ++{ + struct growbuf gb; + + growbuf_init(&gb); @@ -20781,7 +21190,7 @@ index 78997e0..d16270c 100644 + +void +decodeU_to_growbuf(struct growbuf *gb, char **ww) -+{ + { unsigned char c1, c2; char *w = *ww; int n, i; @@ -20811,10 +21220,11 @@ index 78997e0..d16270c 100644 } /* RFC2047 (4.2. The "Q" encoding) */ -@@ -165,9 +187,19 @@ decodeQ(char **ww) +@@ -164,10 +186,20 @@ decodeQ(char **ww) + /* RFC2045 (6.7. Quoted-Printable Content-Transfer-Encoding) */ Str decodeQP(char **ww) - { ++{ + struct growbuf gb; + + growbuf_init(&gb); @@ -20824,7 +21234,7 @@ index 78997e0..d16270c 100644 + +void +decodeQP_to_growbuf(struct growbuf *gb, char **ww) -+{ + { char *w = *ww; - Str a = Strnew_size(strlen(w)); @@ -20938,7 +21348,7 @@ index 2f57810..a60a09d 100644 # bugs in the untranslated strings: diff --git a/po/de.po b/po/de.po new file mode 100644 -index 0000000..96489c1 +index 0000000..b4dcd36 --- /dev/null +++ b/po/de.po @@ -0,0 +1,936 @@ @@ -21536,8 +21946,8 @@ index 0000000..96489c1 +msgstr "Datei mit PEM-kodierten Zertifikaten von CAs" + +#: rc.c:205 -+msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" -+msgstr "Liste unzul辰ssiger SSL-Verfahren (2: SSLv2, 3: SSLv3, t: TLSv1)" ++msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" ++msgstr "Liste unzul辰ssiger SSL-Verfahren (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" + +#: rc.c:208 +msgid "Enable cookie processing" @@ -21879,7 +22289,7 @@ index 0000000..96489c1 +msgid "en;q=1.0" +msgstr "de;q=1.0, en;q=0.5" diff --git a/po/ja.po b/po/ja.po -index d67c695..3810d30 100644 +index d67c695..95a5341 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,6 +1,6 @@ @@ -22609,9 +23019,11 @@ index d67c695..3810d30 100644 msgstr "SSL茯荐弱PEM綵√頥惹悟召<ゃ" -#: rc.c:195 +-msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" +-msgstr "篏帥SSL<純鴻(2: SSLv2, 3: SSLv3, t:TLSv1)" +#: rc.c:205 - msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" - msgstr "篏帥SSL<純鴻(2: SSLv2, 3: SSLv3, t:TLSv1)" ++msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" ++msgstr "篏帥SSL<純鴻(2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" -#: rc.c:198 +#: rc.c:208 @@ -23017,7 +23429,7 @@ index d67c695..3810d30 100644 msgid "en;q=1.0" msgstr "ja;q=1.0, en;q=0.5" diff --git a/po/w3m.pot b/po/w3m.pot -index e164b1e..607e26f 100644 +index e164b1e..bf38ef8 100644 --- a/po/w3m.pot +++ b/po/w3m.pot @@ -1,6 +1,6 @@ @@ -23743,8 +24155,9 @@ index e164b1e..607e26f 100644 msgstr "" -#: rc.c:195 +-msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" +#: rc.c:205 - msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" ++msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" msgstr "" -#: rc.c:198 @@ -24152,7 +24565,7 @@ index e164b1e..607e26f 100644 msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 -index 0000000..8cfa8fd +index 0000000..cf25e22 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,916 @@ @@ -24745,8 +25158,8 @@ index 0000000..8cfa8fd +msgstr " PEM 膽 CA 莚箙篁" + +#: rc.c:205 -+msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" -+msgstr "茴胼罩∝ SSL 劫茵 (2: SSLv2, 3: SSLv3, t:TLSv1)" ++msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" ++msgstr "茴胼罩∝ SSL 劫茵 (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" + +#: rc.c:208 +msgid "Enable cookie processing" @@ -25074,7 +25487,7 @@ index 0000000..8cfa8fd +msgstr "zh-CN;q=1.0, zh-Hans;q=0.9, zh;q=0.8, en;q=0.6" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 -index 0000000..954a4d2 +index 0000000..44f7a14 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,916 @@ @@ -25667,8 +26080,8 @@ index 0000000..954a4d2 +msgstr " PEM 膩腆 CA 茘悟罟罅" + +#: rc.c:205 -+msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)" -+msgstr "茴胼罩∝ SSL 劫茵 (2: SSLv2, 3: SSLv3, t:TLSv1)" ++msgid "List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" ++msgstr "茴胼罩∝ SSL 劫茵 (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)" + +#: rc.c:208 +msgid "Enable cookie processing" @@ -26137,7 +26550,7 @@ index f8a7345..ed8f890 100644 - -#include "indep.h" diff --git a/rc.c b/rc.c -index 8441a39..7de87b8 100644 +index 8441a39..3fd84ef 100644 --- a/rc.c +++ b/rc.c @@ -9,7 +9,9 @@ @@ -26181,6 +26594,15 @@ index 8441a39..7de87b8 100644 #define CMT_FTPPASS N_("Password for anonymous FTP (your mail address)") #define CMT_FTPPASS_HOSTNAMEGEN N_("Generate domain part of password for FTP") #define CMT_USERAGENT N_("User-Agent identification string") +@@ -192,7 +202,7 @@ static int OptionEncode = FALSE; + #define CMT_SSL_CA_PATH N_("Path to directory for PEM encoded certificates of CAs") + #define CMT_SSL_CA_FILE N_("File consisting of PEM encoded certificates of CAs") + #endif /* USE_SSL_VERIFY */ +-#define CMT_SSL_FORBID_METHOD N_("List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t:TLSv1)") ++#define CMT_SSL_FORBID_METHOD N_("List of forbidden SSL methods (2: SSLv2, 3: SSLv3, t: TLSv1.0, 5: TLSv1.1)") + #endif /* USE_SSL */ + #ifdef USE_COOKIE + #define CMT_USECOOKIE N_("Enable cookie processing") @@ -390,6 +400,8 @@ struct param_ptr params1[] = { NULL}, {"graphic_char", P_CHARINT, PI_SEL_C, (void *)&UseGraphicChar, @@ -26253,7 +26675,49 @@ index 8441a39..7de87b8 100644 if (AcceptLang == NULL || *AcceptLang == '\0') { /* TRANSLATORS: -@@ -1483,6 +1512,7 @@ panel_set_option(struct parsed_tagarg *arg) +@@ -1250,7 +1279,7 @@ init_rc(void) + if (stat(rc_dir, &st) < 0) { + if (errno == ENOENT) { /* no directory */ + if (do_mkdir(rc_dir, 0700) < 0) { +- fprintf(stderr, "Can't create config directory (%s)!", rc_dir); ++ /* fprintf(stderr, "Can't create config directory (%s)!\n", rc_dir); */ + goto rc_dir_err; + } + else { +@@ -1258,17 +1287,17 @@ init_rc(void) + } + } + else { +- fprintf(stderr, "Can't open config directory (%s)!", rc_dir); ++ /* fprintf(stderr, "Can't open config directory (%s)!\n", rc_dir); */ + goto rc_dir_err; + } + } + if (!S_ISDIR(st.st_mode)) { + /* not a directory */ +- fprintf(stderr, "%s is not a directory!", rc_dir); ++ /* fprintf(stderr, "%s is not a directory!\n", rc_dir); */ + goto rc_dir_err; + } + if (!(st.st_mode & S_IWUSR)) { +- fprintf(stderr, "%s is not writable!", rc_dir); ++ /* fprintf(stderr, "%s is not writable!\n", rc_dir); */ + goto rc_dir_err; + } + no_rc_dir = FALSE; +@@ -1301,6 +1330,11 @@ init_rc(void) + ((tmp_dir = getenv("TMP")) == NULL || *tmp_dir == '\0') && + ((tmp_dir = getenv("TEMP")) == NULL || *tmp_dir == '\0')) + tmp_dir = "/tmp"; ++#ifdef HAVE_MKDTEMP ++ tmp_dir = mkdtemp(Strnew_m_charp(tmp_dir, "/w3m-XXXXXX", NULL)->ptr); ++ if (tmp_dir == NULL) ++ tmp_dir = rc_dir; ++#endif + create_option_search_table(); + goto open_rc; + } +@@ -1483,6 +1517,7 @@ panel_set_option(struct parsed_tagarg *arg) { FILE *f = NULL; char *p; @@ -26261,7 +26725,7 @@ index 8441a39..7de87b8 100644 if (config_file == NULL) { disp_message("There's no config file... config not saved", FALSE); -@@ -1498,14 +1528,17 @@ panel_set_option(struct parsed_tagarg *arg) +@@ -1498,14 +1533,17 @@ panel_set_option(struct parsed_tagarg *arg) if (arg->value) { p = conv_to_system(arg->value); if (set_param(arg->arg, p)) { @@ -26282,7 +26746,7 @@ index 8441a39..7de87b8 100644 sync_with_option(); backBf(); } -@@ -1556,3 +1589,217 @@ helpFile(char *base) +@@ -1556,3 +1594,217 @@ helpFile(char *base) return expandPath(Strnew_m_charp(w3m_help_dir(), "/", base, NULL)->ptr); } #endif @@ -26523,18 +26987,9 @@ index 5bee4b2..93406e8 100644 YIELD(1, c, 7); return 0; diff --git a/scripts/Makefile.in b/scripts/Makefile.in -index 4da9ce5..3384813 100644 +index 4da9ce5..5beb9b0 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in -@@ -34,7 +34,7 @@ CONF_DIR = $(sysconfdir)/$(PACKAGE) - DOCDIRS = @DOCDIRS@ - - AUXBIN_TARGETS = xface2xpm --LIB_TARGETS = dirlist.cgi w3mhelp.cgi w3mmail.cgi -+LIB_TARGETS = dirlist.cgi w3mdict.cgi w3mhelp.cgi w3mmail.cgi - HELP_TARGETS = w3mhelp-funcname.pl w3mhelp-funcdesc-stamp - SUBDIRS = multipart w3mman - .PHONY: $(SUBDIRS) @@ -60,7 +60,7 @@ w3mhelp-funcname.pl: w3mhelp-funcname.pl.in ../funcname.tab $(top_srcdir)/doc/ke @cat $(srcdir)/w3mhelp-funcname.pl.in >> w3mhelp-funcname.pl @echo "done" @@ -26544,6 +26999,24 @@ index 4da9ce5..3384813 100644 @echo "generating w3mhelp-funcdesc*.pl..." @for dirlang in $(DOCDIRS); do \ dir=`expr "$$dirlang" : "\(.*\):.*"`; \ +@@ -87,7 +87,7 @@ install: $(LIB_TARGETS) $(HELP_TARGETS) + do \ + $(INSTALL_SCRIPT) $$file $(DESTDIR)$(AUXBIN_DIR); \ + done +- for file in $(LIB_TARGETS); \ ++ for file in w3mdict.cgi $(LIB_TARGETS); \ + do \ + $(INSTALL_SCRIPT) $$file $(DESTDIR)$(CGIBIN_DIR); \ + done +@@ -105,7 +105,7 @@ uninstall: + do \ + rm -f $(AUXBIN_DIR)/$$file; \ + done +- -for file in $(LIB_TARGETS); \ ++ -for file in w3mdict.cgi $(LIB_TARGETS); \ + do \ + rm -f $(LIB_DIR)/$$file; \ + done diff --git a/scripts/w3mdict.cgi b/scripts/w3mdict.cgi new file mode 100755 index 0000000..6b0e62e @@ -26978,7 +27451,7 @@ index 569e2fc..ad1cffe 100644 > $(distdir)/w3mman.tar.gz -rm -fr $(distdir)/w3mman diff --git a/scripts/w3mman/w3mman.1.in b/scripts/w3mman/w3mman.1.in -index 1c0361d..904fb5d 100644 +index 1c0361d..8c433a7 100644 --- a/scripts/w3mman/w3mman.1.in +++ b/scripts/w3mman/w3mman.1.in @@ -1,4 +1,4 @@ @@ -27057,7 +27530,7 @@ index 1c0361d..904fb5d 100644 .TP .I @libexecdir@/@PACKAGE@/cgi-bin/w3mman2html.cgi -convert manual page to html. -+manual page to HTML convertor. ++manual page to HTML converter. .SH SEE ALSO .BR man (1), .BR w3m (1). @@ -27204,7 +27677,7 @@ index 50475ae..c047c56 100644 buf[i] = (*p == ' ') ? NBSP_CODE : *p; diff --git a/table.c b/table.c -index e1243ff..221db92 100644 +index e1243ff..4f193e1 100644 --- a/table.c +++ b/table.c @@ -188,7 +188,7 @@ dv2sv(double *dv, short *iv, int size) @@ -27320,7 +27793,22 @@ index e1243ff..221db92 100644 setwidth(tbl, mode); feed_table_inline_tag(tbl, line, mode, -1); clearcontentssize(tbl, mode); -@@ -2546,8 +2566,10 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, +@@ -2336,10 +2356,14 @@ feed_table_block_tag(struct table *tbl, + if (mode->indent_level < MAX_INDENT_LEVEL) + tbl->indent -= INDENT_INCR; + } ++ if (tbl->indent < 0) ++ tbl->indent = 0; + offset = tbl->indent; + if (cmd == HTML_DT) { + if (mode->indent_level > 0 && mode->indent_level <= MAX_INDENT_LEVEL) + offset -= INDENT_INCR; ++ if (offset < 0) ++ offset = 0; + } + if (tbl->indent > 0) { + check_minimum0(tbl, 0); +@@ -2546,8 +2570,10 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, } } #ifdef ID_EXT @@ -27332,7 +27820,7 @@ index e1243ff..221db92 100644 #endif /* ID_EXT */ tbl->trattr = align | valign; break; -@@ -2572,7 +2594,7 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, +@@ -2572,7 +2598,7 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, } tbl->col++; check_row(tbl, tbl->row); @@ -27341,7 +27829,7 @@ index e1243ff..221db92 100644 tbl->col++; } if (tbl->col > MAXCOL - 1) { -@@ -2600,12 +2622,16 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, +@@ -2600,12 +2626,16 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, if ((tbl->row + rowspan) >= tbl->max_rowsize) check_row(tbl, tbl->row + rowspan); } @@ -27358,7 +27846,7 @@ index e1243ff..221db92 100644 if (parsedtag_get_value(tag, ATTR_ALIGN, &i)) { switch (i) { case ALIGN_LEFT: -@@ -2878,6 +2904,14 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, +@@ -2878,6 +2908,14 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, tmp = process_input(tag); feed_table1(tbl, tmp, mode, width); break; @@ -27373,7 +27861,7 @@ index e1243ff..221db92 100644 case HTML_SELECT: tmp = process_select(tag); if (tmp) -@@ -3010,7 +3044,6 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, +@@ -3010,7 +3048,6 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, break; case HTML_TABLE_ALT: id = -1; @@ -27407,7 +27895,7 @@ index f9b7b76..f5a2c30 100644 /fieldset HTML_N_FIELDSET iframe HTML_IFRAME diff --git a/terms.c b/terms.c -index 7a3c987..3d2ffd7 100644 +index 7a3c987..a636ac0 100644 --- a/terms.c +++ b/terms.c @@ -12,6 +12,7 @@ @@ -27700,6 +28188,33 @@ index 7a3c987..3d2ffd7 100644 #ifdef USE_MOUSE #define W3M_TERM_INFO(name, title, mouse) name, title, mouse #define NEED_XTERM_ON (1) +@@ -563,7 +823,7 @@ ttymode_set(int mode, int imode) + while (TerminalSet(tty, &ioval) == -1) { + if (errno == EINTR || errno == EAGAIN) + continue; +- printf("Error occured while set %x: errno=%d\n", mode, errno); ++ printf("Error occurred while set %x: errno=%d\n", mode, errno); + reset_error_exit(SIGNAL_ARGLIST); + } + #endif +@@ -584,7 +844,7 @@ ttymode_reset(int mode, int imode) + while (TerminalSet(tty, &ioval) == -1) { + if (errno == EINTR || errno == EAGAIN) + continue; +- printf("Error occured while reset %x: errno=%d\n", mode, errno); ++ printf("Error occurred while reset %x: errno=%d\n", mode, errno); + reset_error_exit(SIGNAL_ARGLIST); + } + #endif /* __MINGW32_VERSION */ +@@ -601,7 +861,7 @@ set_cc(int spec, int val) + while (TerminalSet(tty, &ioval) == -1) { + if (errno == EINTR || errno == EAGAIN) + continue; +- printf("Error occured: errno=%d\n", errno); ++ printf("Error occurred: errno=%d\n", errno); + reset_error_exit(SIGNAL_ARGLIST); + } + } @@ -634,7 +894,8 @@ reset_tty(void) writestr(T_se); /* reset terminal */ flush_tty(); @@ -27737,6 +28252,15 @@ index 7a3c987..3d2ffd7 100644 } else #endif +@@ -2019,7 +2282,7 @@ sleep_till_anykey(int sec, int purge) + } + er = TerminalSet(tty, &ioval); + if (er == -1) { +- printf("Error occured: errno=%d\n", errno); ++ printf("Error occurred: errno=%d\n", errno); + reset_error_exit(SIGNAL_ARGLIST); + } + return ret; @@ -2027,8 +2290,8 @@ sleep_till_anykey(int sec, int purge) #ifdef USE_MOUSE @@ -27749,7 +28273,7 @@ index 7a3c987..3d2ffd7 100644 #define CYGWIN_OFF {fputs("\033[?1000l",ttyf); flush_tty();} diff --git a/url.c b/url.c -index ed6062e..0378913 100644 +index ed6062e..d759383 100644 --- a/url.c +++ b/url.c @@ -121,6 +121,7 @@ static struct table2 DefaultGuess[] = { @@ -27768,9 +28292,14 @@ index ed6062e..0378913 100644 option = SSL_OP_ALL; if (ssl_forbid_method) { if (strchr(ssl_forbid_method, '2')) -@@ -337,7 +339,15 @@ openSSLHandle(int sock, char *hostname, char **p_cert) +@@ -336,8 +338,20 @@ openSSLHandle(int sock, char *hostname, char **p_cert) + option |= SSL_OP_NO_TLSv1; if (strchr(ssl_forbid_method, 'T')) option |= SSL_OP_NO_TLSv1; ++ if (strchr(ssl_forbid_method, '4')) ++ option |= SSL_OP_NO_TLSv1; ++ if (strchr(ssl_forbid_method, '5')) ++ option |= SSL_OP_NO_TLSv1_1; } +#ifdef SSL_OP_NO_COMPRESSION + option |= SSL_OP_NO_COMPRESSION; @@ -27784,7 +28313,7 @@ index ed6062e..0378913 100644 #ifdef USE_SSL_VERIFY /* derived from openssl-0.9.5/apps/s_{client,cb}.c */ #if 1 /* use SSL_get_verify_result() to verify cert */ -@@ -444,6 +454,8 @@ baseURL(Buffer *buf) +@@ -444,6 +458,8 @@ baseURL(Buffer *buf) /* <BASE> tag is defined in the document */ return buf->baseURL; } @@ -27793,7 +28322,7 @@ index ed6062e..0378913 100644 else return &buf->currentURL; } -@@ -638,16 +650,21 @@ openSocket(char *const hostname, +@@ -638,16 +654,21 @@ openSocket(char *const hostname, #define COPYPATH_SPC_ALLOW 0 #define COPYPATH_SPC_IGNORE 1 #define COPYPATH_SPC_REPLACE 2 @@ -27819,7 +28348,7 @@ index ed6062e..0378913 100644 break; case COPYPATH_SPC_IGNORE: /* do nothing */ -@@ -658,7 +675,7 @@ copyPath(char *orgpath, int length, int option) +@@ -658,7 +679,7 @@ copyPath(char *orgpath, int length, int option) } } else @@ -27828,7 +28357,7 @@ index ed6062e..0378913 100644 orgpath++; length--; } -@@ -668,22 +685,14 @@ copyPath(char *orgpath, int length, int option) +@@ -668,22 +689,14 @@ copyPath(char *orgpath, int length, int option) void parseURL(char *url, ParsedURL *p_url, ParsedURL *current) { @@ -27853,7 +28382,7 @@ index ed6062e..0378913 100644 /* RFC1808: Relative Uniform Resource Locators * 4. Resolving Relative URLs -@@ -694,7 +703,7 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) +@@ -694,7 +707,7 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) goto do_label; } #if defined( __EMX__ ) || defined( __CYGWIN__ ) @@ -27862,7 +28391,7 @@ index ed6062e..0378913 100644 p_url->scheme = SCM_LOCAL; p += 17 - 1; url += 17 - 1; -@@ -802,19 +811,20 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) +@@ -802,19 +815,20 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) /* scheme://user:pass@host or * scheme://host:port */ @@ -27887,7 +28416,7 @@ index ed6062e..0378913 100644 tmp = Strnew_charp_n(q, p - q); p_url->port = atoi(tmp->ptr); /* *p is one of ['\0', '/', '?', '#'] */ -@@ -822,15 +832,19 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) +@@ -822,15 +836,19 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) case '@': /* scheme://user@... */ p_url->user = copyPath(q, p - q, COPYPATH_SPC_IGNORE); @@ -27910,7 +28439,7 @@ index ed6062e..0378913 100644 break; } analyze_file: -@@ -956,12 +970,16 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) +@@ -956,12 +974,16 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current) p_url->label = NULL; } @@ -27929,10 +28458,11 @@ index ed6062e..0378913 100644 p->scheme = q->scheme; p->port = q->port; p->is_nocache = q->is_nocache; -@@ -1280,9 +1298,23 @@ getURLScheme(char **url) +@@ -1279,10 +1301,24 @@ getURLScheme(char **url) + return scheme; } - static char * ++static char * +schemeNumToName(int scheme) +{ + int i; @@ -27944,7 +28474,7 @@ index ed6062e..0378913 100644 + return NULL; +} + -+static char * + static char * otherinfo(ParsedURL *target, ParsedURL *current, char *referer) { Str s = Strnew(); @@ -27953,7 +28483,7 @@ index ed6062e..0378913 100644 Strcat_charp(s, "User-Agent: "); if (UserAgent == NULL || *UserAgent == '\0') -@@ -1306,7 +1338,12 @@ otherinfo(ParsedURL *target, ParsedURL *current, char *referer) +@@ -1306,7 +1342,12 @@ otherinfo(ParsedURL *target, ParsedURL *current, char *referer) Strcat_charp(s, "Pragma: no-cache\r\n"); Strcat_charp(s, "Cache-control: no-cache\r\n"); } @@ -27967,7 +28497,7 @@ index ed6062e..0378913 100644 #ifdef USE_SSL if (current && current->scheme == SCM_HTTPS && target->scheme != SCM_HTTPS) { /* Don't send Referer: if https:// -> http:// */ -@@ -1314,6 +1351,7 @@ otherinfo(ParsedURL *target, ParsedURL *current, char *referer) +@@ -1314,6 +1355,7 @@ otherinfo(ParsedURL *target, ParsedURL *current, char *referer) else #endif if (referer == NULL && current && current->scheme != SCM_LOCAL && @@ -27975,7 +28505,7 @@ index ed6062e..0378913 100644 (current->scheme != SCM_FTP || (current->user == NULL && current->pass == NULL))) { char *p = current->label; -@@ -1384,7 +1422,6 @@ HTTPrequest(ParsedURL *pu, ParsedURL *current, HRequest *hr, TextList *extra) +@@ -1384,7 +1426,6 @@ HTTPrequest(ParsedURL *pu, ParsedURL *current, HRequest *hr, TextList *extra) { Str tmp; TextListItem *i; @@ -27983,7 +28513,7 @@ index ed6062e..0378913 100644 #ifdef USE_COOKIE Str cookie; #endif /* USE_COOKIE */ -@@ -1400,7 +1437,6 @@ HTTPrequest(ParsedURL *pu, ParsedURL *current, HRequest *hr, TextList *extra) +@@ -1400,7 +1441,6 @@ HTTPrequest(ParsedURL *pu, ParsedURL *current, HRequest *hr, TextList *extra) for (i = extra->first; i != NULL; i = i->next) { if (strncasecmp(i->ptr, "Authorization:", sizeof("Authorization:") - 1) == 0) { @@ -27991,7 +28521,7 @@ index ed6062e..0378913 100644 #ifdef USE_SSL if (hr->command == HR_COMMAND_CONNECT) continue; -@@ -1430,20 +1466,20 @@ HTTPrequest(ParsedURL *pu, ParsedURL *current, HRequest *hr, TextList *extra) +@@ -1430,20 +1470,20 @@ HTTPrequest(ParsedURL *pu, ParsedURL *current, HRequest *hr, TextList *extra) #endif /* USE_COOKIE */ if (hr->command == HR_COMMAND_POST) { if (hr->request->enctype == FORM_ENCTYPE_MULTIPART) { @@ -28016,7 +28546,7 @@ index ed6062e..0378913 100644 if (header_string) Strcat(tmp, header_string); Strcat_charp(tmp, "\r\n"); -@@ -1603,7 +1639,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, +@@ -1603,7 +1643,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, pu->host != NULL && !check_no_proxy(pu->host)) { hr->flag |= HR_FLAG_PROXY; sock = openSocket(FTP_proxy_parsed.host, @@ -28025,7 +28555,7 @@ index ed6062e..0378913 100644 FTP_proxy_parsed.port); if (sock < 0) return uf; -@@ -1645,15 +1681,15 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, +@@ -1645,15 +1685,15 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, } else if (pu->scheme == SCM_HTTPS) { sock = openSocket(HTTPS_proxy_parsed.host, @@ -28045,7 +28575,7 @@ index ed6062e..0378913 100644 #ifdef USE_SSL sslh = NULL; } -@@ -1685,8 +1721,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, +@@ -1685,8 +1725,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, } } else { @@ -28055,7 +28585,7 @@ index ed6062e..0378913 100644 if (sock < 0) { *status = HTST_MISSING; return uf; -@@ -1750,7 +1785,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, +@@ -1750,7 +1789,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, pu->host != NULL && !check_no_proxy(pu->host)) { hr->flag |= HR_FLAG_PROXY; sock = openSocket(GOPHER_proxy_parsed.host, @@ -28064,7 +28594,7 @@ index ed6062e..0378913 100644 GOPHER_proxy_parsed.port); if (sock < 0) return uf; -@@ -1758,8 +1793,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, +@@ -1758,8 +1797,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current, tmp = HTTPrequest(pu, current, hr, extra_header); } else { @@ -28074,7 +28604,7 @@ index ed6062e..0378913 100644 if (sock < 0) return uf; if (pu->file == NULL) -@@ -2049,7 +2083,7 @@ filename_extension(char *path, int is_url) +@@ -2049,7 +2087,7 @@ filename_extension(char *path, int is_url) break; } if (*last_dot == '.') { @@ -28083,7 +28613,7 @@ index ed6062e..0378913 100644 if (is_url && !IS_ALNUM(last_dot[i])) break; } -@@ -2234,3 +2268,66 @@ schemeToProxy(int scheme) +@@ -2234,3 +2272,66 @@ schemeToProxy(int scheme) } return pu; } @@ -29206,7 +29736,7 @@ index 36e3b62..f1e8d97 100644 #include <gdk-pixbuf/gdk-pixbuf.h> #include "fb.h" diff --git a/w3mimg/fb/fb_w3mimg.c b/w3mimg/fb/fb_w3mimg.c -index d3ae5a9..fb323f5 100644 +index d3ae5a9..62511f0 100644 --- a/w3mimg/fb/fb_w3mimg.c +++ b/w3mimg/fb/fb_w3mimg.c @@ -153,10 +153,15 @@ check_tty_console(char *tty) @@ -29231,8 +29761,8 @@ index d3ae5a9..fb323f5 100644 - if (!check_tty_console(getenv("W3M_TTY")) && strcmp("jfbterm", getenv("TERM")) != 0) { + if (!check_tty_console(getenv("W3M_TTY")) && -+ strcmp("jfbterm", getenv("TERM")) != 0 && -+ strncmp("jfbterm-", getenv("TERM"), 8) != 0) { ++ strncmp("fbterm", getenv("TERM"), 6) != 0 && ++ strncmp("jfbterm", getenv("TERM"), 7) != 0) { fprintf(stderr, "w3mimgdisplay/fb: tty is not console\n"); goto error; } |