diff options
| -rw-r--r-- | Makefile.in | 4 | ||||
| -rw-r--r-- | acinclude.m4 | 2 | ||||
| -rw-r--r-- | anchor.c | 37 | ||||
| -rwxr-xr-x | config.guess | 1091 | ||||
| -rw-r--r-- | config.h.in | 1 | ||||
| -rwxr-xr-x | config.sub | 483 | ||||
| -rwxr-xr-x | configure | 2 | ||||
| -rw-r--r-- | display.c | 2 | ||||
| -rw-r--r-- | doc-jp/README | 4 | ||||
| -rw-r--r-- | doc-jp/README.siteconf | 60 | ||||
| -rw-r--r-- | doc/README | 4 | ||||
| -rw-r--r-- | doc/README.siteconf | 60 | ||||
| -rw-r--r-- | entity.c | 2 | ||||
| -rw-r--r-- | file.c | 385 | ||||
| -rw-r--r-- | fm.h | 22 | ||||
| -rw-r--r-- | form.c | 31 | ||||
| -rw-r--r-- | frame.c | 9 | ||||
| -rw-r--r-- | func.c | 88 | ||||
| -rw-r--r-- | history.c | 2 | ||||
| -rw-r--r-- | html.c | 37 | ||||
| -rw-r--r-- | html.h | 31 | ||||
| -rw-r--r-- | indep.c | 14 | ||||
| -rw-r--r-- | indep.h | 1 | ||||
| -rw-r--r-- | istream.c | 10 | ||||
| -rw-r--r-- | istream.h | 4 | ||||
| -rw-r--r-- | keybind.c | 2 | ||||
| -rw-r--r-- | linein.c | 4 | ||||
| -rw-r--r-- | main.c | 173 | ||||
| -rw-r--r-- | map.c | 27 | ||||
| -rw-r--r-- | menu.c | 12 | ||||
| -rw-r--r-- | po/ja.po | 4 | ||||
| -rw-r--r-- | proto.h | 30 | ||||
| -rw-r--r-- | rc.c | 222 | ||||
| -rw-r--r-- | scripts/w3mman/w3mman2html.cgi.in | 8 | ||||
| -rw-r--r-- | table.c | 8 | ||||
| -rw-r--r-- | tagtable.tab | 1 | ||||
| -rw-r--r-- | terms.c | 4 | ||||
| -rw-r--r-- | url.c | 122 | ||||
| -rw-r--r-- | version.c.in | 2 | ||||
| -rw-r--r-- | w3mbookmark.c | 2 | ||||
| -rw-r--r-- | w3mimg/Makefile.in | 2 | 
41 files changed, 2060 insertions, 949 deletions
| diff --git a/Makefile.in b/Makefile.in index 7d692f9..339c95e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -150,7 +150,7 @@ parsetagx.o: html.c  funcname.tab: $(DEFUNS)  	(echo '#define DEFUN(x,y,z) x y';\ -	 sed -ne '/^DEFUN/{p;n;/^[ 	]/p;}' $(DEFUNS)) | $(CPP) - | \ +	 sed -ne '/^DEFUN/{p;n;/^[ 	]/p;}' $(DEFUNS)) | $(CPP) $(CPPFLAGS) - | \  	 awk '$$1 ~ /^[_A-Za-z]/ { \  	       for (i=2;i<=NF;i++) { print $$i, $$1} \  	 }' > $@.tmp @@ -199,7 +199,7 @@ dummy.o: entity.c  	$(CC) $(CFLAGS) -DDUMMY -c -o $@ $?  $(IMGDISPLAY): w3mimgdisplay.o $(ALIB) w3mimg/w3mimg.a -	$(IMGLINK) $(CFLAGS) -o $(IMGDISPLAY) w3mimgdisplay.o w3mimg/w3mimg.a $(LDFLAGS) $(LIBS) $(IMGLDFLAGS) +	$(IMGLINK) $(CFLAGS) -o $(IMGDISPLAY) w3mimgdisplay.o w3mimg/w3mimg.a $(LDFLAGS) $(LIBS) -lX11 $(IMGLDFLAGS)  w3mimgdisplay.o: w3mimgdisplay.c w3mimg/w3mimg.h  	$(CC) $(CFLAGS) $(IMGCFLAGS) -o $@ -c $(srcdir)/w3mimgdisplay.c diff --git a/acinclude.m4 b/acinclude.m4 index e4ccc3d..52c8874 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -866,7 +866,7 @@ AC_MSG_CHECKING(for sys_errlist)  AC_TRY_COMPILE(  changequote(<<,>>)dnl  <<extern char *sys_errlist[];>>, -<<printf(sys_errlist[0]);>>, +<<printf("%s", sys_errlist[0]);>>,  changequote([,])dnl  [have_sys_errlist="yes"; AC_DEFINE(HAVE_SYS_ERRLIST)],  [have_sys_errlist="no"]) @@ -200,10 +200,11 @@ _put_anchor_news(Buffer *buf, char *p1, char *p2, int line, int pos)  	if (*(p2 - 1) == '>')  	    p2--;      } -    tmp = wc_Str_conv_strict(Strnew_charp_n(p1, p2 - p1), InnerCharset, -			     buf->document_charset); -    tmp = Sprintf("news:%s", file_quote(tmp->ptr)); -    return registerHref(buf, tmp->ptr, NULL, NO_REFERER, NULL, '\0', line, +    tmp = Strnew_charp("news:"); +    Strcat_charp_n(tmp, p1, p2 - p1); +    return registerHref(buf, url_encode(tmp->ptr, baseURL(buf), +					buf->document_charset), +			NULL, NO_REFERER, NULL, '\0', line,  			pos);  }  #endif				/* USE_NNTP */ @@ -213,9 +214,10 @@ _put_anchor_all(Buffer *buf, char *p1, char *p2, int line, int pos)  {      Str tmp; -    tmp = wc_Str_conv_strict(Strnew_charp_n(p1, p2 - p1), InnerCharset, -			     buf->document_charset); -    return registerHref(buf, url_quote(tmp->ptr), NULL, NO_REFERER, NULL, +    tmp = Strnew_charp_n(p1, p2 - p1); +    return registerHref(buf, url_encode(tmp->ptr, baseURL(buf), +					buf->document_charset), +			NULL, NO_REFERER, NULL,  			'\0', line, pos);  } @@ -756,7 +758,7 @@ link_list_panel(Buffer *buf)  		p = parsedURL2Str(&pu)->ptr;  		u = html_quote(p);  		if (DecodeURL) -		    p = html_quote(url_unquote_conv(p, buf->document_charset)); +		    p = html_quote(url_decode2(p, buf));  		else  		    p = u;  	    } @@ -787,7 +789,7 @@ link_list_panel(Buffer *buf)  	    p = parsedURL2Str(&pu)->ptr;  	    u = html_quote(p);  	    if (DecodeURL) -		p = html_quote(url_unquote_conv(p, buf->document_charset)); +		p = html_quote(url_decode2(p, buf));  	    else  		p = u;  	    t = getAnchorText(buf, al, a); @@ -809,16 +811,13 @@ link_list_panel(Buffer *buf)  	    p = parsedURL2Str(&pu)->ptr;  	    u = html_quote(p);  	    if (DecodeURL) -		p = html_quote(url_unquote_conv(p, buf->document_charset)); +		p = html_quote(url_decode2(p, buf));  	    else  		p = u;  	    if (a->title && *a->title)  		t = html_quote(a->title); -	    else if (DecodeURL) -		t = html_quote(url_unquote_conv -			       (a->url, buf->document_charset));  	    else -		t = html_quote(a->url); +		t = html_quote(url_decode2(a->url, buf));  	    Strcat_m_charp(tmp, "<li><a href=\"", u, "\">", t, "</a><br>", p,  			   "\n", NULL);  	    a = retrieveAnchor(buf->formitem, a->start.line, a->start.pos); @@ -842,19 +841,13 @@ link_list_panel(Buffer *buf)  		    p = parsedURL2Str(&pu)->ptr;  		    u = html_quote(p);  		    if (DecodeURL) -			p = html_quote(url_unquote_conv(p, -							buf-> -							document_charset)); +			p = html_quote(url_decode2(p, buf));  		    else  			p = u;  		    if (m->alt && *m->alt)  			t = html_quote(m->alt); -		    else if (DecodeURL) -			t = html_quote(url_unquote_conv(m->url, -							buf-> -							document_charset));  		    else -			t = html_quote(m->url); +			t = html_quote(url_decode2(m->url, buf));  		    Strcat_m_charp(tmp, "<li><a href=\"", u, "\">", t,  				   "</a><br>", p, "\n", NULL);  		} diff --git a/config.guess b/config.guess index 51fab47..120cc0d 100755 --- a/config.guess +++ b/config.guess @@ -1,13 +1,12 @@  #! /bin/sh  # 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-2013 Free Software Foundation, Inc. -timestamp='2004-03-12' +timestamp='2013-05-16'  # 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 -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or  # (at your option) any later version.  #  # This program is distributed in the hope that it will be useful, but @@ -16,24 +15,22 @@ timestamp='2004-03-12'  # General Public License for more details.  #  # 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/>.  #  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a  # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Per Bothner <per@bothner.com>. -# Please send patches to <config-patches@gnu.org>.  Submit a context -# diff and a properly formatted ChangeLog entry. +# the same distribution terms that you use for the rest of that +# program.  This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner.  # -# This script attempts to guess a canonical system name similar to -# 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;hb=HEAD  # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# Please send patches with a ChangeLog entry to config-patches@gnu.org. +  me=`echo "$0" | sed -e 's,.*/,,'` @@ -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-2013 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." @@ -66,11 +62,11 @@ Try \`$me --help' for more information."  while test $# -gt 0 ; do    case $1 in      --time-stamp | --time* | -t ) -       echo "$timestamp" ; exit 0 ;; +       echo "$timestamp" ; exit ;;      --version | -v ) -       echo "$version" ; exit 0 ;; +       echo "$version" ; exit ;;      --help | --h* | -h ) -       echo "$usage"; exit 0 ;; +       echo "$usage"; exit ;;      -- )     # Stop option processing         shift; break ;;      - )	# Use stdin as input. @@ -104,7 +100,7 @@ set_cc_for_build='  trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;  trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;  : ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||   { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||   { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||   { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; @@ -123,7 +119,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in  	;;   ,,*)   CC_FOR_BUILD=$CC ;;   ,*,*)  CC_FOR_BUILD=$HOST_CC ;; -esac ;' +esac ; set_cc_for_build= ;'  # This is needed to find uname on a Pyramid OSx when run in the BSD universe.  # (ghazi@noc.rutgers.edu 1994-08-24) @@ -136,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown  UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown  UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) +	# If the system lacks a compiler, then just pick glibc. +	# We could probably try harder. +	LIBC=gnu + +	eval $set_cc_for_build +	cat <<-EOF > $dummy.c +	#include <features.h> +	#if defined(__UCLIBC__) +	LIBC=uclibc +	#elif defined(__dietlibc__) +	LIBC=dietlibc +	#else +	LIBC=gnu +	#endif +	EOF +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` +	;; +esac +  # Note: order is significant - the case branches are not exclusive.  case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in      *:NetBSD:*:*)  	# NetBSD (nbsd) targets should (where applicable) match one or -	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, +	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,  	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently  	# switched to ELF, *-*-netbsd* would select the old  	# object file format.  This provides both forward @@ -158,6 +175,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	    arm*) machine=arm-unknown ;;  	    sh3el) machine=shl-unknown ;;  	    sh3eb) machine=sh-unknown ;; +	    sh5el) machine=sh5le-unknown ;;  	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;  	esac  	# The Operating System including object format, if it has switched @@ -166,7 +184,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	    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 +			| grep -q __ELF__  		then  		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).  		    # Return netbsd for either.  FIX? @@ -176,7 +194,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  		fi  		;;  	    *) -	        os=netbsd +		os=netbsd  		;;  	esac  	# The OS release @@ -196,71 +214,34 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	# contains redundant information, the shorter form:  	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.  	echo "${machine}-${os}${release}" -	exit 0 ;; -    amd64:OpenBSD:*:*) -	echo x86_64-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    amiga:OpenBSD:*:*) -	echo m68k-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    arc:OpenBSD:*:*) -	echo mipsel-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    cats:OpenBSD:*:*) -	echo arm-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    hp300:OpenBSD:*:*) -	echo m68k-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    mac68k:OpenBSD:*:*) -	echo m68k-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    macppc:OpenBSD:*:*) -	echo powerpc-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    mvme68k:OpenBSD:*:*) -	echo m68k-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    mvme88k:OpenBSD:*:*) -	echo m88k-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    mvmeppc:OpenBSD:*:*) -	echo powerpc-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    pegasos:OpenBSD:*:*) -	echo powerpc-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    pmax:OpenBSD:*:*) -	echo mipsel-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    sgi:OpenBSD:*:*) -	echo mipseb-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    sun3:OpenBSD:*:*) -	echo m68k-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; -    wgrisc:OpenBSD:*:*) -	echo mipsel-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; +	exit ;; +    *:Bitrig:*:*) +	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` +	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} +	exit ;;      *:OpenBSD:*:*) -	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} -	exit 0 ;; +	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` +	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} +	exit ;;      *:ekkoBSD:*:*)  	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} -	exit 0 ;; +	exit ;; +    *:SolidBSD:*:*) +	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} +	exit ;;      macppc:MirBSD:*:*) -	echo powerppc-unknown-mirbsd${UNAME_RELEASE} -	exit 0 ;; +	echo powerpc-unknown-mirbsd${UNAME_RELEASE} +	exit ;;      *:MirBSD:*:*)  	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      alpha:OSF1:*:*)  	case $UNAME_RELEASE in  	*4.0)  		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`  		;;  	*5.*) -	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` +		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`  		;;  	esac  	# According to Compaq, /usr/sbin/psrinfo has been available on @@ -306,40 +287,46 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	# A Xn.n version is an unreleased experimental baselevel.  	# 1.2 uses "1.2" for uname -r.  	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -	exit 0 ;; -    Alpha*:OpenVMS:*:*) -	echo alpha-hp-vms -	exit 0 ;; +	# 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;; +	exit ;;      *:[Aa]miga[Oo][Ss]:*:*)  	echo ${UNAME_MACHINE}-unknown-amigaos -	exit 0 ;; +	exit ;;      *:[Mm]orph[Oo][Ss]:*:*)  	echo ${UNAME_MACHINE}-unknown-morphos -	exit 0 ;; +	exit ;;      *:OS/390:*:*)  	echo i370-ibm-openedition -	exit 0 ;; +	exit ;; +    *:z/VM:*:*) +	echo s390-ibm-zvmoe +	exit ;;      *:OS400:*:*) -        echo powerpc-ibm-os400 -	exit 0 ;; +	echo powerpc-ibm-os400 +	exit ;;      arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)  	echo arm-acorn-riscix${UNAME_RELEASE} -	exit 0;; +	exit ;; +    arm*:riscos:*:*|arm*:RISCOS:*:*) +	echo arm-unknown-riscos +	exit ;;      SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)  	echo hppa1.1-hitachi-hiuxmpp -	exit 0;; +	exit ;;      Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)  	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.  	if test "`(/bin/universe) 2>/dev/null`" = att ; then @@ -347,32 +334,51 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	else  		echo pyramid-pyramid-bsd  	fi -	exit 0 ;; +	exit ;;      NILE*:*:*:dcosx)  	echo pyramid-pyramid-svr4 -	exit 0 ;; +	exit ;;      DRS?6000:unix:4.0:6*)  	echo sparc-icl-nx6 -	exit 0 ;; -    DRS?6000:UNIX_SV:4.2*:7*) +	exit ;; +    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)  	case `/usr/bin/uname -p` in -	    sparc) echo sparc-icl-nx7 && exit 0 ;; +	    sparc) echo sparc-icl-nx7; exit ;;  	esac ;; +    s390x:SunOS:*:*) +	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +	exit ;;      sun4H:SunOS:5.*:*)  	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit 0 ;; +	exit ;;      sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)  	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit 0 ;; -    i86pc:SunOS:5.*:*) -	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit 0 ;; +	exit ;; +    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) +	echo i386-pc-auroraux${UNAME_RELEASE} +	exit ;; +    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) +	eval $set_cc_for_build +	SUN_ARCH="i386" +	# If there is a compiler, see if it is configured for 64-bit objects. +	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does. +	# This test works for both compilers. +	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then +	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ +		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ +		grep IS_64BIT_ARCH >/dev/null +	    then +		SUN_ARCH="x86_64" +	    fi +	fi +	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +	exit ;;      sun4*:SunOS:6*:*)  	# According to config.sub, this is the proper way to canonicalize  	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but  	# it's likely to be more like Solaris than SunOS4.  	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -	exit 0 ;; +	exit ;;      sun4*:SunOS:*:*)  	case "`/usr/bin/arch -k`" in  	    Series*|S4*) @@ -381,10 +387,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	esac  	# Japanese Language versions have a version number like `4.1.3-JL'.  	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -	exit 0 ;; +	exit ;;      sun3*:SunOS:*:*)  	echo m68k-sun-sunos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      sun*:*:4.2BSD:*)  	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`  	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 @@ -396,10 +402,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  		echo sparc-sun-sunos${UNAME_RELEASE}  		;;  	esac -	exit 0 ;; +	exit ;;      aushp:SunOS:*:*)  	echo sparc-auspex-sunos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      # The situation for MiNT is a little confusing.  The machine name      # can be virtually everything (everything which is not      # "atarist" or "atariste" at least should have a processor @@ -409,41 +415,41 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in      # MiNT.  But MiNT is downward compatible to TOS, so this should      # be no problem.      atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) -        echo m68k-atari-mint${UNAME_RELEASE} -	exit 0 ;; +	echo m68k-atari-mint${UNAME_RELEASE} +	exit ;;      atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)  	echo m68k-atari-mint${UNAME_RELEASE} -        exit 0 ;; +	exit ;;      *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) -        echo m68k-atari-mint${UNAME_RELEASE} -	exit 0 ;; +	echo m68k-atari-mint${UNAME_RELEASE} +	exit ;;      milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) -        echo m68k-milan-mint${UNAME_RELEASE} -        exit 0 ;; +	echo m68k-milan-mint${UNAME_RELEASE} +	exit ;;      hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) -        echo m68k-hades-mint${UNAME_RELEASE} -        exit 0 ;; +	echo m68k-hades-mint${UNAME_RELEASE} +	exit ;;      *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) -        echo m68k-unknown-mint${UNAME_RELEASE} -        exit 0 ;; +	echo m68k-unknown-mint${UNAME_RELEASE} +	exit ;;      m68k:machten:*:*)  	echo m68k-apple-machten${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      powerpc:machten:*:*)  	echo powerpc-apple-machten${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      RISC*:Mach:*:*)  	echo mips-dec-mach_bsd4.3 -	exit 0 ;; +	exit ;;      RISC*:ULTRIX:*:*)  	echo mips-dec-ultrix${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      VAX*:ULTRIX*:*:*)  	echo vax-dec-ultrix${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      2020:CLIX:*:* | 2430:CLIX:*:*)  	echo clipper-intergraph-clix${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      mips:*:*:UMIPS | mips:*:*:RISCos)  	eval $set_cc_for_build  	sed 's/^	//' << EOF >$dummy.c @@ -467,35 +473,36 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in  	  exit (-1);  	}  EOF -	$CC_FOR_BUILD -o $dummy $dummy.c \ -	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ -	  && exit 0 +	$CC_FOR_BUILD -o $dummy $dummy.c && +	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && +	  SYSTEM_NAME=`$dummy $dummyarg` && +	    { echo "$SYSTEM_NAME"; exit; }  	echo mips-mips-riscos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      Motorola:PowerMAX_OS:*:*)  	echo powerpc-motorola-powermax -	exit 0 ;; +	exit ;;      Motorola:*:4.3:PL8-*)  	echo powerpc-harris-powermax -	exit 0 ;; +	exit ;;      Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)  	echo powerpc-harris-powermax -	exit 0 ;; +	exit ;;      Night_Hawk:Power_UNIX:*:*)  	echo powerpc-harris-powerunix -	exit 0 ;; +	exit ;;      m88k:CX/UX:7*:*)  	echo m88k-harris-cxux7 -	exit 0 ;; +	exit ;;      m88k:*:4*:R4*)  	echo m88k-motorola-sysv4 -	exit 0 ;; +	exit ;;      m88k:*:3*:R3*)  	echo m88k-motorola-sysv3 -	exit 0 ;; +	exit ;;      AViiON:dgux:*:*) -        # DG/UX returns AViiON for all architectures -        UNAME_PROCESSOR=`/usr/bin/uname -p` +	# DG/UX returns AViiON for all architectures +	UNAME_PROCESSOR=`/usr/bin/uname -p`  	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]  	then  	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -508,29 +515,29 @@ EOF  	else  	    echo i586-dg-dgux${UNAME_RELEASE}  	fi - 	exit 0 ;; +	exit ;;      M88*:DolphinOS:*:*)	# DolphinOS (SVR3)  	echo m88k-dolphin-sysv3 -	exit 0 ;; +	exit ;;      M88*:*:R3*:*)  	# Delta 88k system running SVR3  	echo m88k-motorola-sysv3 -	exit 0 ;; +	exit ;;      XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)  	echo m88k-tektronix-sysv3 -	exit 0 ;; +	exit ;;      Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)  	echo m68k-tektronix-bsd -	exit 0 ;; +	exit ;;      *:IRIX*:*:*)  	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -	exit 0 ;; +	exit ;;      ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. -	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id -	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX ' +	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id +	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '      i*86:AIX:*:*)  	echo i386-ibm-aix -	exit 0 ;; +	exit ;;      ia64:AIX:*:*)  	if [ -x /usr/bin/oslevel ] ; then  		IBM_REV=`/usr/bin/oslevel` @@ -538,7 +545,7 @@ EOF  		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}  	fi  	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} -	exit 0 ;; +	exit ;;      *:AIX:2:3)  	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then  		eval $set_cc_for_build @@ -553,15 +560,19 @@ EOF  			exit(0);  			}  EOF -		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 -		echo rs6000-ibm-aix3.2.5 +		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` +		then +			echo "$SYSTEM_NAME" +		else +			echo rs6000-ibm-aix3.2.5 +		fi  	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then  		echo rs6000-ibm-aix3.2.4  	else  		echo rs6000-ibm-aix3.2  	fi -	exit 0 ;; -    *:AIX:*:[45]) +	exit ;; +    *:AIX:*:[4567])  	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`  	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then  		IBM_ARCH=rs6000 @@ -574,28 +585,28 @@ EOF  		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}  	fi  	echo ${IBM_ARCH}-ibm-aix${IBM_REV} -	exit 0 ;; +	exit ;;      *:AIX:*:*)  	echo rs6000-ibm-aix -	exit 0 ;; +	exit ;;      ibmrt:4.4BSD:*|romp-ibm:BSD:*)  	echo romp-ibm-bsd4.4 -	exit 0 ;; +	exit ;;      ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and  	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to -	exit 0 ;;                           # report: romp-ibm BSD 4.3 +	exit ;;                             # report: romp-ibm BSD 4.3      *:BOSX:*:*)  	echo rs6000-bull-bosx -	exit 0 ;; +	exit ;;      DPX/2?00:B.O.S.:*:*)  	echo m68k-bull-sysv3 -	exit 0 ;; +	exit ;;      9000/[34]??:4.3bsd:1.*:*)  	echo m68k-hp-bsd -	exit 0 ;; +	exit ;;      hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)  	echo m68k-hp-bsd4.4 -	exit 0 ;; +	exit ;;      9000/[34678]??:HP-UX:*:*)  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`  	case "${UNAME_MACHINE}" in @@ -604,52 +615,52 @@ EOF  	    9000/[678][0-9][0-9])  		if [ -x /usr/bin/getconf ]; then  		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -                    case "${sc_cpu_version}" in -                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -                      532)                      # CPU_PA_RISC2_0 -                        case "${sc_kernel_bits}" in -                          32) HP_ARCH="hppa2.0n" ;; -                          64) HP_ARCH="hppa2.0w" ;; +		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` +		    case "${sc_cpu_version}" in +		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 +		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 +		      532)                      # CPU_PA_RISC2_0 +			case "${sc_kernel_bits}" in +			  32) HP_ARCH="hppa2.0n" ;; +			  64) HP_ARCH="hppa2.0w" ;;  			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20 -                        esac ;; -                    esac +			esac ;; +		    esac  		fi  		if [ "${HP_ARCH}" = "" ]; then  		    eval $set_cc_for_build -		    sed 's/^              //' << EOF >$dummy.c +		    sed 's/^		//' << EOF >$dummy.c -              #define _HPUX_SOURCE -              #include <stdlib.h> -              #include <unistd.h> +		#define _HPUX_SOURCE +		#include <stdlib.h> +		#include <unistd.h> -              int main () -              { -              #if defined(_SC_KERNEL_BITS) -                  long bits = sysconf(_SC_KERNEL_BITS); -              #endif -                  long cpu  = sysconf (_SC_CPU_VERSION); +		int main () +		{ +		#if defined(_SC_KERNEL_BITS) +		    long bits = sysconf(_SC_KERNEL_BITS); +		#endif +		    long cpu  = sysconf (_SC_CPU_VERSION); -                  switch (cpu) -              	{ -              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -              	case CPU_PA_RISC2_0: -              #if defined(_SC_KERNEL_BITS) -              	    switch (bits) -              		{ -              		case 64: puts ("hppa2.0w"); break; -              		case 32: puts ("hppa2.0n"); break; -              		default: puts ("hppa2.0"); break; -              		} break; -              #else  /* !defined(_SC_KERNEL_BITS) */ -              	    puts ("hppa2.0"); break; -              #endif -              	default: puts ("hppa1.0"); break; -              	} -                  exit (0); -              } +		    switch (cpu) +			{ +			case CPU_PA_RISC1_0: puts ("hppa1.0"); break; +			case CPU_PA_RISC1_1: puts ("hppa1.1"); break; +			case CPU_PA_RISC2_0: +		#if defined(_SC_KERNEL_BITS) +			    switch (bits) +				{ +				case 64: puts ("hppa2.0w"); break; +				case 32: puts ("hppa2.0n"); break; +				default: puts ("hppa2.0"); break; +				} break; +		#else  /* !defined(_SC_KERNEL_BITS) */ +			    puts ("hppa2.0"); break; +		#endif +			default: puts ("hppa1.0"); break; +			} +		    exit (0); +		}  EOF  		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`  		    test -z "$HP_ARCH" && HP_ARCH=hppa @@ -657,9 +668,19 @@ EOF  	esac  	if [ ${HP_ARCH} = "hppa2.0w" ]  	then -	    # avoid double evaluation of $set_cc_for_build -	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build -	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null +	    eval $set_cc_for_build + +	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating +	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler +	    # generating 64-bit code.  GNU and HP use different nomenclature: +	    # +	    # $ CC_FOR_BUILD=cc ./config.guess +	    # => hppa2.0w-hp-hpux11.23 +	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess +	    # => hppa64-hp-hpux11.23 + +	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | +		grep -q __LP64__  	    then  		HP_ARCH="hppa2.0w"  	    else @@ -667,11 +688,11 @@ EOF  	    fi  	fi  	echo ${HP_ARCH}-hp-hpux${HPUX_REV} -	exit 0 ;; +	exit ;;      ia64:HP-UX:*:*)  	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`  	echo ia64-hp-hpux${HPUX_REV} -	exit 0 ;; +	exit ;;      3050*:HI-UX:*:*)  	eval $set_cc_for_build  	sed 's/^	//' << EOF >$dummy.c @@ -699,340 +720,339 @@ EOF  	  exit (0);  	}  EOF -	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 +	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && +		{ echo "$SYSTEM_NAME"; exit; }  	echo unknown-hitachi-hiuxwe2 -	exit 0 ;; +	exit ;;      9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )  	echo hppa1.1-hp-bsd -	exit 0 ;; +	exit ;;      9000/8??:4.3bsd:*:*)  	echo hppa1.0-hp-bsd -	exit 0 ;; +	exit ;;      *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)  	echo hppa1.0-hp-mpeix -	exit 0 ;; +	exit ;;      hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )  	echo hppa1.1-hp-osf -	exit 0 ;; +	exit ;;      hp8??:OSF1:*:*)  	echo hppa1.0-hp-osf -	exit 0 ;; +	exit ;;      i*86:OSF1:*:*)  	if [ -x /usr/sbin/sysversion ] ; then  	    echo ${UNAME_MACHINE}-unknown-osf1mk  	else  	    echo ${UNAME_MACHINE}-unknown-osf1  	fi -	exit 0 ;; +	exit ;;      parisc*:Lites*:*:*)  	echo hppa1.1-hp-lites -	exit 0 ;; +	exit ;;      C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)  	echo c1-convex-bsd -        exit 0 ;; +	exit ;;      C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)  	if getsysinfo -f scalar_acc  	then echo c32-convex-bsd  	else echo c2-convex-bsd  	fi -        exit 0 ;; +	exit ;;      C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)  	echo c34-convex-bsd -        exit 0 ;; +	exit ;;      C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)  	echo c38-convex-bsd -        exit 0 ;; +	exit ;;      C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)  	echo c4-convex-bsd -        exit 0 ;; +	exit ;;      CRAY*Y-MP:*:*:*)  	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit 0 ;; +	exit ;;      CRAY*[A-Z]90:*:*:*)  	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \  	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \  	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \  	      -e 's/\.[^.]*$/.X/' -	exit 0 ;; +	exit ;;      CRAY*TS:*:*:*)  	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit 0 ;; +	exit ;;      CRAY*T3E:*:*:*)  	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit 0 ;; +	exit ;;      CRAY*SV1:*:*:*)  	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit 0 ;; +	exit ;;      *:UNICOS/mp:*:*) -	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -	exit 0 ;; +	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +	exit ;;      F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)  	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -        exit 0 ;; +	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` +	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` +	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +	exit ;;      5000:UNIX_System_V:4.*:*) -        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -	exit 0 ;; +	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` +	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` +	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +	exit ;;      i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)  	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      sparc*:BSD/OS:*:*)  	echo sparc-unknown-bsdi${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:BSD/OS:*:*)  	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:FreeBSD:*:*) -	# Determine whether the default compiler uses glibc. -	eval $set_cc_for_build -	sed 's/^	//' << EOF >$dummy.c -	#include <features.h> -	#if __GLIBC__ >= 2 -	LIBC=gnu -	#else -	LIBC= -	#endif -EOF -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` -	# GNU/KFreeBSD systems have a "k" prefix to indicate we are using -	# FreeBSD's kernel, but not the complete OS. -	case ${LIBC} in gnu) kernel_only='k' ;; esac -	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} -	exit 0 ;; +	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/[-(].*//'` ;; +	esac +	exit ;;      i*:CYGWIN*:*)  	echo ${UNAME_MACHINE}-pc-cygwin -	exit 0 ;; -    i*:MINGW*:*) +	exit ;; +    *:MINGW64*:*) +	echo ${UNAME_MACHINE}-pc-mingw64 +	exit ;; +    *:MINGW*:*)  	echo ${UNAME_MACHINE}-pc-mingw32 -	exit 0 ;; +	exit ;; +    i*: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 ;; +	exit ;; +    *:Interix*:*) +	case ${UNAME_MACHINE} in +	    x86) +		echo i586-pc-interix${UNAME_RELEASE} +		exit ;; +	    authenticamd | genuineintel | EM64T) +		echo x86_64-unknown-interix${UNAME_RELEASE} +		exit ;; +	    IA64) +		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 ;; +	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 ;; +	exit ;;      *:GNU:*:*)  	# the GNU system -	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -	exit 0 ;; +	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` +	exit ;;      *:GNU/*:*:*)  	# other systems with GNU libc and userland -	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} +	exit ;;      i*86:Minix:*:*)  	echo ${UNAME_MACHINE}-pc-minix -	exit 0 ;; +	exit ;; +    aarch64:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    aarch64_be:Linux:*:*) +	UNAME_MACHINE=aarch64_be +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    alpha:Linux:*:*) +	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in +	  EV5)   UNAME_MACHINE=alphaev5 ;; +	  EV56)  UNAME_MACHINE=alphaev56 ;; +	  PCA56) UNAME_MACHINE=alphapca56 ;; +	  PCA57) UNAME_MACHINE=alphapca56 ;; +	  EV6)   UNAME_MACHINE=alphaev6 ;; +	  EV67)  UNAME_MACHINE=alphaev67 ;; +	  EV68*) UNAME_MACHINE=alphaev68 ;; +	esac +	objdump --private-headers /bin/sh | grep -q ld.so.1 +	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    arc:Linux:*:* | arceb:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      arm*:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; +	eval $set_cc_for_build +	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ +	    | grep -q __ARM_EABI__ +	then +	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	else +	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ +		| grep -q __ARM_PCS_VFP +	    then +		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi +	    else +		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf +	    fi +	fi +	exit ;; +    avr32*:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      cris:Linux:*:*) -	echo cris-axis-linux-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-axis-linux-${LIBC} +	exit ;; +    crisv32:Linux:*:*) +	echo ${UNAME_MACHINE}-axis-linux-${LIBC} +	exit ;; +    frv:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    hexagon:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    i*86:Linux:*:*) +	echo ${UNAME_MACHINE}-pc-linux-${LIBC} +	exit ;;      ia64:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      m32r*:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      m68*:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; -    mips:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    mips:Linux:*:* | mips64:Linux:*:*)  	eval $set_cc_for_build  	sed 's/^	//' << EOF >$dummy.c  	#undef CPU -	#undef mips -	#undef mipsel +	#undef ${UNAME_MACHINE} +	#undef ${UNAME_MACHINE}el  	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -	CPU=mipsel +	CPU=${UNAME_MACHINE}el  	#else  	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -	CPU=mips +	CPU=${UNAME_MACHINE}  	#else  	CPU=  	#endif  	#endif  EOF -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` -	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` +	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }  	;; -    mips64:Linux:*:*) -	eval $set_cc_for_build -	sed 's/^	//' << EOF >$dummy.c -	#undef CPU -	#undef mips64 -	#undef mips64el -	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -	CPU=mips64el -	#else -	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -	CPU=mips64 -	#else -	CPU= -	#endif -	#endif -EOF -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` -	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 -	;; -    ppc:Linux:*:*) -	echo powerpc-unknown-linux-gnu -	exit 0 ;; -    ppc64:Linux:*:*) -	echo powerpc64-unknown-linux-gnu -	exit 0 ;; -    alpha:Linux:*:*) -	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -	  EV5)   UNAME_MACHINE=alphaev5 ;; -	  EV56)  UNAME_MACHINE=alphaev56 ;; -	  PCA56) UNAME_MACHINE=alphapca56 ;; -	  PCA57) UNAME_MACHINE=alphapca56 ;; -	  EV6)   UNAME_MACHINE=alphaev6 ;; -	  EV67)  UNAME_MACHINE=alphaev67 ;; -	  EV68*) UNAME_MACHINE=alphaev68 ;; -        esac -	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null -	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi -	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -	exit 0 ;; +    or1k:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    or32:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    padre:Linux:*:*) +	echo sparc-unknown-linux-${LIBC} +	exit ;; +    parisc64:Linux:*:* | hppa64:Linux:*:*) +	echo hppa64-unknown-linux-${LIBC} +	exit ;;      parisc:Linux:*:* | hppa:Linux:*:*)  	# Look for CPU level  	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in -	  PA7*) echo hppa1.1-unknown-linux-gnu ;; -	  PA8*) echo hppa2.0-unknown-linux-gnu ;; -	  *)    echo hppa-unknown-linux-gnu ;; +	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; +	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; +	  *)    echo hppa-unknown-linux-${LIBC} ;;  	esac -	exit 0 ;; -    parisc64:Linux:*:* | hppa64:Linux:*:*) -	echo hppa64-unknown-linux-gnu -	exit 0 ;; +	exit ;; +    ppc64:Linux:*:*) +	echo powerpc64-unknown-linux-${LIBC} +	exit ;; +    ppc:Linux:*:*) +	echo powerpc-unknown-linux-${LIBC} +	exit ;;      s390:Linux:*:* | s390x:Linux:*:*) -	echo ${UNAME_MACHINE}-ibm-linux -	exit 0 ;; +	echo ${UNAME_MACHINE}-ibm-linux-${LIBC} +	exit ;;      sh64*:Linux:*:*) -    	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      sh*:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      sparc:Linux:*:* | sparc64:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-gnu -	exit 0 ;; +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    tile*:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    vax:Linux:*:*) +	echo ${UNAME_MACHINE}-dec-linux-${LIBC} +	exit ;;      x86_64:Linux:*:*) -	echo x86_64-unknown-linux-gnu -	exit 0 ;; -    i*86:Linux:*:*) -	# The BFD linker knows what the default object file format is, so -	# first see if it will tell us. cd to the root directory to prevent -	# problems with other programs or directories called `ld' in the path. -	# Set LC_ALL=C to ensure ld outputs messages in English. -	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ -			 | sed -ne '/supported targets:/!d -				    s/[ 	][ 	]*/ /g -				    s/.*supported targets: *// -				    s/ .*// -				    p'` -        case "$ld_supported_targets" in -	  elf32-i386) -		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" -		;; -	  a.out-i386-linux) -		echo "${UNAME_MACHINE}-pc-linux-gnuaout" -		exit 0 ;; -	  coff-i386) -		echo "${UNAME_MACHINE}-pc-linux-gnucoff" -		exit 0 ;; -	  "") -		# Either a pre-BFD a.out linker (linux-gnuoldld) or -		# one that does not give us useful --help. -		echo "${UNAME_MACHINE}-pc-linux-gnuoldld" -		exit 0 ;; -	esac -	# Determine whether the default compiler is a.out or elf -	eval $set_cc_for_build -	sed 's/^	//' << EOF >$dummy.c -	#include <features.h> -	#ifdef __ELF__ -	# ifdef __GLIBC__ -	#  if __GLIBC__ >= 2 -	LIBC=gnu -	#  else -	LIBC=gnulibc1 -	#  endif -	# else -	LIBC=gnulibc1 -	# endif -	#else -	#ifdef __INTEL_COMPILER -	LIBC=gnu -	#else -	LIBC=gnuaout -	#endif -	#endif -	#ifdef __dietlibc__ -	LIBC=dietlibc -	#endif -EOF -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` -	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 -	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 -	;; +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;; +    xtensa*:Linux:*:*) +	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +	exit ;;      i*86:DYNIX/ptx:4*:*)  	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  	# earlier versions are messed up and put the nodename in both  	# sysname and nodename.  	echo i386-sequent-sysv4 -	exit 0 ;; +	exit ;;      i*86:UNIX_SV:4.2MP:2.*) -        # Unixware is an offshoot of SVR4, but it has its own version -        # number series starting with 2... -        # I am not positive that other SVR4 systems won't match this, +	# Unixware is an offshoot of SVR4, but it has its own version +	# number series starting with 2... +	# I am not positive that other SVR4 systems won't match this,  	# I just have to hope.  -- rms. -        # Use sysv4.2uw... so that sysv4* matches it. +	# Use sysv4.2uw... so that sysv4* matches it.  	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -	exit 0 ;; +	exit ;;      i*86:OS/2:*:*)  	# If we were able to find `uname', then EMX Unix compatibility  	# is probably installed.  	echo ${UNAME_MACHINE}-pc-os2-emx -	exit 0 ;; +	exit ;;      i*86:XTS-300:*:STOP)  	echo ${UNAME_MACHINE}-unknown-stop -	exit 0 ;; +	exit ;;      i*86:atheos:*:*)  	echo ${UNAME_MACHINE}-unknown-atheos -	exit 0 ;; -	i*86:syllable:*:*) +	exit ;; +    i*86:syllable:*:*)  	echo ${UNAME_MACHINE}-pc-syllable -	exit 0 ;; -    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) +	exit ;; +    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)  	echo i386-unknown-lynxos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      i*86:*DOS:*:*)  	echo ${UNAME_MACHINE}-pc-msdosdjgpp -	exit 0 ;; +	exit ;;      i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)  	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -1040,15 +1060,16 @@ EOF  	else  		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}  	fi -	exit 0 ;; -    i*86:*:5:[78]*) +	exit ;; +    i*86:*:5:[678]*) +	# UnixWare 7.x, OpenUNIX and OpenServer 6.  	case `/bin/uname -X | grep "^Machine"` in  	    *486*)	     UNAME_MACHINE=i486 ;;  	    *Pentium)	     UNAME_MACHINE=i586 ;;  	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;  	esac  	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} -	exit 0 ;; +	exit ;;      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 +1087,86 @@ EOF  	else  		echo ${UNAME_MACHINE}-pc-sysv32  	fi -	exit 0 ;; +	exit ;;      pc:*:*:*)  	# Left here for compatibility: -        # uname -m prints for DJGPP always 'pc', but it prints nothing about -        # the processor, so we play safe by assuming i386. -	echo i386-pc-msdosdjgpp -        exit 0 ;; +	# uname -m prints for DJGPP always 'pc', but it prints nothing about +	# the processor, so we play safe by assuming i586. +	# Note: whatever this is, it MUST be the same as what config.sub +	# prints for the "djgpp" host, or else GDB configury will decide that +	# this is a cross-build. +	echo i586-pc-msdosdjgpp +	exit ;;      Intel:Mach:3*:*)  	echo i386-pc-mach3 -	exit 0 ;; +	exit ;;      paragon:*:*:*)  	echo i860-intel-osf1 -	exit 0 ;; +	exit ;;      i860:*:4.*:*) # i860-SVR4  	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then  	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4  	else # Add other i860-SVR4 vendors below as they are discovered.  	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4  	fi -	exit 0 ;; +	exit ;;      mini*:CTIX:SYS*5:*)  	# "miniframe"  	echo m68010-convergent-sysv -	exit 0 ;; +	exit ;;      mc68k:UNIX:SYSTEM5:3.51m)  	echo m68k-convergent-sysv -	exit 0 ;; +	exit ;;      M680?0:D-NIX:5.3:*)  	echo m68k-diab-dnix -	exit 0 ;; -    M68*:*:R3V[567]*:*) -	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; -    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) +	exit ;; +    M68*:*:R3V[5678]*:*) +	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; +    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)  	OS_REL=''  	test -r /etc/.relid \  	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0 +	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; +	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;      3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) -        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -          && echo i486-ncr-sysv4 && exit 0 ;; +	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +	  && { echo i486-ncr-sysv4; exit; } ;; +    NCR*:*:4.2:* | MPRAS*:*:4.2:*) +	OS_REL='.3' +	test -r /etc/.relid \ +	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` +	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; } +	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ +	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } +	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ +	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;      m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)  	echo m68k-unknown-lynxos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      mc68030:UNIX_System_V:4.*:*)  	echo m68k-atari-sysv4 -	exit 0 ;; +	exit ;;      TSUNAMI:LynxOS:2.*:*)  	echo sparc-unknown-lynxos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      rs6000:LynxOS:2.*:*)  	echo rs6000-unknown-lynxos${UNAME_RELEASE} -	exit 0 ;; -    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) +	exit ;; +    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)  	echo powerpc-unknown-lynxos${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      SM[BE]S:UNIX_SV:*:*)  	echo mips-dde-sysv${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      RM*:ReliantUNIX-*:*:*)  	echo mips-sni-sysv4 -	exit 0 ;; +	exit ;;      RM*:SINIX-*:*:*)  	echo mips-sni-sysv4 -	exit 0 ;; +	exit ;;      *:SINIX-*:*:*)  	if uname -p 2>/dev/null >/dev/null ; then  		UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1140,68 +1174,99 @@ EOF  	else  		echo ns32k-sni-sysv  	fi -	exit 0 ;; -    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -                      # says <Richard.M.Bartel@ccMail.Census.GOV> -        echo i586-unisys-sysv4 -        exit 0 ;; +	exit ;; +    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort +			# says <Richard.M.Bartel@ccMail.Census.GOV> +	echo i586-unisys-sysv4 +	exit ;;      *:UNIX_System_V:4*:FTX*)  	# From Gerald Hewes <hewes@openmarket.com>.  	# How about differentiating between stratus architectures? -djm  	echo hppa1.1-stratus-sysv4 -	exit 0 ;; +	exit ;;      *:*:*:FTX*)  	# From seanf@swdc.stratus.com.  	echo i860-stratus-sysv4 -	exit 0 ;; +	exit ;; +    i*86:VOS:*:*) +	# From Paul.Green@stratus.com. +	echo ${UNAME_MACHINE}-stratus-vos +	exit ;;      *:VOS:*:*)  	# From Paul.Green@stratus.com.  	echo hppa1.1-stratus-vos -	exit 0 ;; +	exit ;;      mc68*:A/UX:*:*)  	echo m68k-apple-aux${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      news*:NEWS-OS:6*:*)  	echo mips-sony-newsos6 -	exit 0 ;; +	exit ;;      R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)  	if [ -d /usr/nec ]; then -	        echo mips-nec-sysv${UNAME_RELEASE} +		echo mips-nec-sysv${UNAME_RELEASE}  	else -	        echo mips-unknown-sysv${UNAME_RELEASE} +		echo mips-unknown-sysv${UNAME_RELEASE}  	fi -        exit 0 ;; +	exit ;;      BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.  	echo powerpc-be-beos -	exit 0 ;; +	exit ;;      BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.  	echo powerpc-apple-beos -	exit 0 ;; +	exit ;;      BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.  	echo i586-pc-beos -	exit 0 ;; +	exit ;; +    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible. +	echo i586-pc-haiku +	exit ;; +    x86_64:Haiku:*:*) +	echo x86_64-unknown-haiku +	exit ;;      SX-4:SUPER-UX:*:*)  	echo sx4-nec-superux${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      SX-5:SUPER-UX:*:*)  	echo sx5-nec-superux${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      SX-6:SUPER-UX:*:*)  	echo sx6-nec-superux${UNAME_RELEASE} -	exit 0 ;; +	exit ;; +    SX-7:SUPER-UX:*:*) +	echo sx7-nec-superux${UNAME_RELEASE} +	exit ;; +    SX-8:SUPER-UX:*:*) +	echo sx8-nec-superux${UNAME_RELEASE} +	exit ;; +    SX-8R:SUPER-UX:*:*) +	echo sx8r-nec-superux${UNAME_RELEASE} +	exit ;;      Power*:Rhapsody:*:*)  	echo powerpc-apple-rhapsody${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:Rhapsody:*:*)  	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:Darwin:*:*) -	case `uname -p` in -	    *86) UNAME_PROCESSOR=i686 ;; -	    powerpc) UNAME_PROCESSOR=powerpc ;; -	esac +	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown +	eval $set_cc_for_build +	if test "$UNAME_PROCESSOR" = unknown ; then +	    UNAME_PROCESSOR=powerpc +	fi +	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 +	    then +		case $UNAME_PROCESSOR in +		    i386) UNAME_PROCESSOR=x86_64 ;; +		    powerpc) UNAME_PROCESSOR=powerpc64 ;; +		esac +	    fi +	fi  	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:procnto*:*:* | *:QNX:[0123456789]*:*)  	UNAME_PROCESSOR=`uname -p`  	if test "$UNAME_PROCESSOR" = "x86"; then @@ -1209,22 +1274,28 @@ EOF  		UNAME_MACHINE=pc  	fi  	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:QNX:*:4*)  	echo i386-pc-qnx -	exit 0 ;; +	exit ;; +    NEO-?:NONSTOP_KERNEL:*:*) +	echo neo-tandem-nsk${UNAME_RELEASE} +	exit ;; +    NSE-*:NONSTOP_KERNEL:*:*) +	echo nse-tandem-nsk${UNAME_RELEASE} +	exit ;;      NSR-?:NONSTOP_KERNEL:*:*)  	echo nsr-tandem-nsk${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:NonStop-UX:*:*)  	echo mips-compaq-nonstopux -	exit 0 ;; +	exit ;;      BS2000:POSIX*:*:*)  	echo bs2000-siemens-sysv -	exit 0 ;; +	exit ;;      DS/*:UNIX_System_V:*:*)  	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -	exit 0 ;; +	exit ;;      *:Plan9:*:*)  	# "uname -m" is not consistent, so use $cputype instead. 386  	# is converted to i386 for consistency with other x86 @@ -1235,36 +1306,55 @@ EOF  	    UNAME_MACHINE="$cputype"  	fi  	echo ${UNAME_MACHINE}-unknown-plan9 -	exit 0 ;; +	exit ;;      *:TOPS-10:*:*)  	echo pdp10-unknown-tops10 -	exit 0 ;; +	exit ;;      *:TENEX:*:*)  	echo pdp10-unknown-tenex -	exit 0 ;; +	exit ;;      KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)  	echo pdp10-dec-tops20 -	exit 0 ;; +	exit ;;      XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)  	echo pdp10-xkl-tops20 -	exit 0 ;; +	exit ;;      *:TOPS-20:*:*)  	echo pdp10-unknown-tops20 -	exit 0 ;; +	exit ;;      *:ITS:*:*)  	echo pdp10-unknown-its -	exit 0 ;; +	exit ;;      SEI:*:*:SEIUX) -        echo mips-sei-seiux${UNAME_RELEASE} -	exit 0 ;; +	echo mips-sei-seiux${UNAME_RELEASE} +	exit ;;      *:DragonFly:*:*)  	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -	exit 0 ;; +	exit ;; +    *:*VMS:*:*) +	UNAME_MACHINE=`(uname -p) 2>/dev/null` +	case "${UNAME_MACHINE}" in +	    A*) echo alpha-dec-vms ; exit ;; +	    I*) echo ia64-dec-vms ; exit ;; +	    V*) echo vax-dec-vms ; exit ;; +	esac ;; +    *:XENIX:*:SysV) +	echo i386-pc-xenix +	exit ;; +    i*86:skyos:*:*) +	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' +	exit ;; +    i*86:rdos:*:*) +	echo ${UNAME_MACHINE}-pc-rdos +	exit ;; +    i*86:AROS:*:*) +	echo ${UNAME_MACHINE}-pc-aros +	exit ;; +    x86_64:VMkernel:*:*) +	echo ${UNAME_MACHINE}-unknown-esx +	exit ;;  esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -  eval $set_cc_for_build  cat >$dummy.c <<EOF  #ifdef _SEQUENT_ @@ -1282,16 +1372,16 @@ main ()  #include <sys/param.h>    printf ("m68k-sony-newsos%s\n",  #ifdef NEWSOS4 -          "4" +	"4"  #else -	  "" +	""  #endif -         ); exit (0); +	); exit (0);  #endif  #endif  #if defined (__arm) && defined (__acorn) && defined (__unix) -  printf ("arm-acorn-riscix"); exit (0); +  printf ("arm-acorn-riscix\n"); exit (0);  #endif  #if defined (hp300) && !defined (hpux) @@ -1380,11 +1470,12 @@ main ()  }  EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && +	{ echo "$SYSTEM_NAME"; exit; }  # Apollos put the system type in the environment. -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }  # Convex versions that predate uname can use getsysinfo(1) @@ -1393,22 +1484,22 @@ then      case `getsysinfo -f cpu_type` in      c1*)  	echo c1-convex-bsd -	exit 0 ;; +	exit ;;      c2*)  	if getsysinfo -f scalar_acc  	then echo c32-convex-bsd  	else echo c2-convex-bsd  	fi -	exit 0 ;; +	exit ;;      c34*)  	echo c34-convex-bsd -	exit 0 ;; +	exit ;;      c38*)  	echo c38-convex-bsd -	exit 0 ;; +	exit ;;      c4*)  	echo c4-convex-bsd -	exit 0 ;; +	exit ;;      esac  fi @@ -1419,7 +1510,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 -    ftp://ftp.gnu.org/pub/gnu/config/ +  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and +  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD  If the version you run ($0) is already up to date, please  send the following data and any information you think might be diff --git a/config.h.in b/config.h.in index 2f41eed..59997b4 100644 --- a/config.h.in +++ b/config.h.in @@ -25,6 +25,7 @@  #define PASSWD_FILE	RC_DIR "/passwd"  #define PRE_FORM_FILE	RC_DIR "/pre_form" +#define SITECONF_FILE	RC_DIR "/siteconf"  #define USER_MAILCAP	RC_DIR "/mailcap"  #define SYS_MAILCAP	CONF_DIR "/mailcap"  #define USER_MIMETYPES	"~/.mime.types" @@ -1,42 +1,40 @@  #! /bin/sh  # Configuration validation subroutine script. -#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -#   2000, 2001, 2002, 2003 Free Software Foundation, Inc. +#   Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2004-03-12' +timestamp='2013-04-24' -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine.  It does not imply ALL GNU software can. -# -# 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 -# the Free Software Foundation; either version 2 of the License, or +# 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 +# the Free Software Foundation; either version 3 of the License, or  # (at your option) any later version.  # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +# General Public License for more details.  #  # 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/>. +#  # As a special exception to the GNU General Public License, if you  # distribute this file as part of a program that contains a  # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program.  This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to <config-patches@gnu.org>.  Submit a context -# diff and a properly formatted ChangeLog entry. + +# Please send patches with a ChangeLog entry to config-patches@gnu.org.  #  # Configuration subroutine to validate and canonicalize a configuration type.  # Supply the specified configuration type as an argument.  # If it is invalid, we print an error message on stderr and exit with code 1.  # 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;hb=HEAD +  # 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. @@ -70,8 +68,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-2013 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." @@ -83,11 +80,11 @@ Try \`$me --help' for more information."  while test $# -gt 0 ; do    case $1 in      --time-stamp | --time* | -t ) -       echo "$timestamp" ; exit 0 ;; +       echo "$timestamp" ; exit ;;      --version | -v ) -       echo "$version" ; exit 0 ;; +       echo "$version" ; exit ;;      --help | --h* | -h ) -       echo "$usage"; exit 0 ;; +       echo "$usage"; exit ;;      -- )     # Stop option processing         shift; break ;;      - )	# Use stdin as input. @@ -99,7 +96,7 @@ while test $# -gt 0 ; do      *local*)         # First pass through any local machine types.         echo $1 -       exit 0;; +       exit ;;      * )         break ;; @@ -118,11 +115,18 @@ esac  # Here we must recognize all the valid KERNEL-OS combinations.  maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`  case $maybe_os in -  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ -  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) +  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ +  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ +  knetbsd*-gnu* | netbsd*-gnu* | \ +  kopensolaris*-gnu* | \ +  storm-chaos* | os2-emx* | rtmk-nova*)      os=-$maybe_os      basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`      ;; +  android-linux) +    os=-linux-android +    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown +    ;;    *)      basic_machine=`echo $1 | sed 's/-[^-]*$//'`      if [ $basic_machine != $1 ] @@ -145,10 +149,13 @@ case $os in  	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\  	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \  	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -	-apple | -axis) +	-apple | -axis | -knuth | -cray | -microblaze*)  		os=  		basic_machine=$1  		;; +	-bluegene*) +		os=-cnk +		;;  	-sim | -cisco | -oki | -wec | -winbond)  		os=  		basic_machine=$1 @@ -163,13 +170,17 @@ case $os in  		os=-chorusos  		basic_machine=$1  		;; - 	-chorusrdb) - 		os=-chorusrdb +	-chorusrdb) +		os=-chorusrdb  		basic_machine=$1 - 		;; +		;;  	-hiux*)  		os=-hiuxwe2  		;; +	-sco6) +		os=-sco5v6 +		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +		;;  	-sco5)  		os=-sco3.2v5  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -186,6 +197,10 @@ case $os in  		# Don't forget version if it is 3.2v4 or newer.  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`  		;; +	-sco5v6*) +		# Don't forget version if it is 3.2v4 or newer. +		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +		;;  	-sco*)  		os=-sco3.2v2  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -203,6 +218,12 @@ case $os in  	-isc*)  		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`  		;; +	-lynx*178) +		os=-lynxos178 +		;; +	-lynx*5) +		os=-lynxos5 +		;;  	-lynx*)  		os=-lynxos  		;; @@ -227,57 +248,106 @@ case $basic_machine in  	# Some are omitted here because they have special meanings below.  	1750a | 580 \  	| a29k \ +	| aarch64 | aarch64_be \  	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \  	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \  	| am33_2.0 \ -	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ +	| arc | arceb \ +	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ +	| avr | avr32 \ +	| be32 | be64 \ +	| bfin \  	| c4x | clipper \  	| d10v | d30v | dlx | dsp16xx \ -	| fr30 | frv \ +	| epiphany \ +	| fido | fr30 | frv \  	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +	| hexagon \  	| i370 | i860 | i960 | ia64 \  	| ip2k | iq2000 \ -	| m32r | m32rle | m68000 | m68k | m88k | mcore \ +	| le32 | le64 \ +	| lm32 \ +	| m32c | m32r | m32rle | m68000 | m68k | m88k \ +	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \  	| mips | mipsbe | mipseb | mipsel | mipsle \  	| mips16 \  	| mips64 | mips64el \ -	| mips64vr | mips64vrel \ +	| mips64octeon | mips64octeonel \  	| mips64orion | mips64orionel \ +	| mips64r5900 | mips64r5900el \ +	| mips64vr | mips64vrel \  	| mips64vr4100 | mips64vr4100el \  	| mips64vr4300 | mips64vr4300el \  	| mips64vr5000 | mips64vr5000el \ +	| mips64vr5900 | mips64vr5900el \  	| mipsisa32 | mipsisa32el \  	| mipsisa32r2 | mipsisa32r2el \  	| mipsisa64 | mipsisa64el \  	| mipsisa64r2 | mipsisa64r2el \  	| mipsisa64sb1 | mipsisa64sb1el \  	| mipsisa64sr71k | mipsisa64sr71kel \ +	| mipsr5900 | mipsr5900el \  	| mipstx39 | mipstx39el \  	| mn10200 | mn10300 \ +	| moxie \ +	| mt \  	| msp430 \ +	| nds32 | nds32le | nds32be \ +	| nios | nios2 | nios2eb | nios2el \  	| ns16k | ns32k \ -	| openrisc | or32 \ +	| open8 \ +	| or1k | or32 \  	| pdp10 | pdp11 | pj | pjl \ -	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ +	| powerpc | powerpc64 | powerpc64le | powerpcle \  	| pyramid \ -	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ +	| rl78 | rx \ +	| score \ +	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \  	| sh64 | sh64le \ -	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ -	| strongarm \ -	| tahoe | thumb | tic4x | tic80 | tron \ -	| v850 | v850e \ +	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ +	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +	| spu \ +	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ +	| ubicom32 \ +	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \  	| we32k \ -	| x86 | xscale | xstormy16 | xtensa \ -	| z8k) +	| x86 | xc16x | xstormy16 | xtensa \ +	| z8k | z80)  		basic_machine=$basic_machine-unknown  		;; -	m6811 | m68hc11 | m6812 | m68hc12) -		# Motorola 68HC11/12. +	c54x) +		basic_machine=tic54x-unknown +		;; +	c55x) +		basic_machine=tic55x-unknown +		;; +	c6x) +		basic_machine=tic6x-unknown +		;; +	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)  		basic_machine=$basic_machine-unknown  		os=-none  		;;  	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)  		;; +	ms1) +		basic_machine=mt-unknown +		;; + +	strongarm | thumb | xscale) +		basic_machine=arm-unknown +		;; +	xgate) +		basic_machine=$basic_machine-unknown +		os=-none +		;; +	xscaleeb) +		basic_machine=armeb-unknown +		;; + +	xscaleel) +		basic_machine=armel-unknown +		;;  	# We use `pc' rather than `unknown'  	# because (1) that's what they normally are, and @@ -293,59 +363,82 @@ case $basic_machine in  	# Recognize the basic CPU types with company name.  	580-* \  	| a29k-* \ +	| aarch64-* | aarch64_be-* \  	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \  	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ +	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \  	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \ -	| avr-* \ -	| bs2000-* \ -	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ -	| clipper-* | cydra-* \ +	| avr-* | avr32-* \ +	| be32-* | be64-* \ +	| bfin-* | bs2000-* \ +	| c[123]* | c30-* | [cjt]90-* | c4x-* \ +	| clipper-* | craynv-* | cydra-* \  	| d10v-* | d30v-* | dlx-* \  	| elxsi-* \ -	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ +	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \  	| h8300-* | h8500-* \  	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ +	| hexagon-* \  	| i*86-* | i860-* | i960-* | ia64-* \  	| ip2k-* | iq2000-* \ -	| m32r-* | m32rle-* \ +	| le32-* | le64-* \ +	| lm32-* \ +	| m32c-* | m32r-* | m32rle-* \  	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -	| m88110-* | m88k-* | mcore-* \ +	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ +	| microblaze-* | microblazeel-* \  	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \  	| mips16-* \  	| mips64-* | mips64el-* \ -	| mips64vr-* | mips64vrel-* \ +	| mips64octeon-* | mips64octeonel-* \  	| mips64orion-* | mips64orionel-* \ +	| mips64r5900-* | mips64r5900el-* \ +	| mips64vr-* | mips64vrel-* \  	| mips64vr4100-* | mips64vr4100el-* \  	| mips64vr4300-* | mips64vr4300el-* \  	| mips64vr5000-* | mips64vr5000el-* \ +	| mips64vr5900-* | mips64vr5900el-* \  	| mipsisa32-* | mipsisa32el-* \  	| mipsisa32r2-* | mipsisa32r2el-* \  	| mipsisa64-* | mipsisa64el-* \  	| mipsisa64r2-* | mipsisa64r2el-* \  	| mipsisa64sb1-* | mipsisa64sb1el-* \  	| mipsisa64sr71k-* | mipsisa64sr71kel-* \ +	| mipsr5900-* | mipsr5900el-* \  	| mipstx39-* | mipstx39el-* \ +	| mmix-* \ +	| mt-* \  	| msp430-* \ -	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ +	| nds32-* | nds32le-* | nds32be-* \ +	| nios-* | nios2-* | nios2eb-* | nios2el-* \ +	| none-* | np1-* | ns16k-* | ns32k-* \ +	| open8-* \  	| orion-* \  	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ +	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \  	| pyramid-* \ -	| romp-* | rs6000-* \ -	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ +	| rl78-* | romp-* | rs6000-* | rx-* \ +	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \  	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ -	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ -	| tahoe-* | thumb-* \ +	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ +	| sparclite-* \ +	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ +	| tahoe-* \  	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +	| tile*-* \  	| tron-* \ -	| v850-* | v850e-* | vax-* \ +	| ubicom32-* \ +	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ +	| vax-* \  	| we32k-* \ -	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ -	| xtensa-* \ +	| x86-* | x86_64-* | xc16x-* | xps100-* \ +	| xstormy16-* | xtensa*-* \  	| ymp-* \ -	| z8k-*) +	| z8k-* | z80-*) +		;; +	# Recognize the basic CPU types without company name, with glob match. +	xtensa*) +		basic_machine=$basic_machine-unknown  		;;  	# Recognize the various machine names and aliases which stand  	# for a CPU type and a company and sometimes even an OS. @@ -363,7 +456,7 @@ case $basic_machine in  		basic_machine=a29k-amd  		os=-udi  		;; -    	abacus) +	abacus)  		basic_machine=abacus-unknown  		;;  	adobe68k) @@ -409,6 +502,10 @@ case $basic_machine in  		basic_machine=m68k-apollo  		os=-bsd  		;; +	aros) +		basic_machine=i386-pc +		os=-aros +		;;  	aux)  		basic_machine=m68k-apple  		os=-aux @@ -417,10 +514,35 @@ case $basic_machine in  		basic_machine=ns32k-sequent  		os=-dynix  		;; +	blackfin) +		basic_machine=bfin-unknown +		os=-linux +		;; +	blackfin-*) +		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` +		os=-linux +		;; +	bluegene*) +		basic_machine=powerpc-ibm +		os=-cnk +		;; +	c54x-*) +		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` +		;; +	c55x-*) +		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` +		;; +	c6x-*) +		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` +		;;  	c90)  		basic_machine=c90-cray  		os=-unicos  		;; +	cegcc) +		basic_machine=arm-unknown +		os=-cegcc +		;;  	convex-c1)  		basic_machine=c1-convex  		os=-bsd @@ -445,13 +567,20 @@ case $basic_machine in  		basic_machine=j90-cray  		os=-unicos  		;; -	cr16c) -		basic_machine=cr16c-unknown +	craynv) +		basic_machine=craynv-cray +		os=-unicosmp +		;; +	cr16 | cr16-*) +		basic_machine=cr16-unknown  		os=-elf  		;;  	crds | unos)  		basic_machine=m68k-crds  		;; +	crisv32 | crisv32-* | etraxfs*) +		basic_machine=crisv32-axis +		;;  	cris | cris-* | etrax*)  		basic_machine=cris-axis  		;; @@ -481,6 +610,14 @@ case $basic_machine in  		basic_machine=m88k-motorola  		os=-sysv3  		;; +	dicos) +		basic_machine=i686-pc +		os=-dicos +		;; +	djgpp) +		basic_machine=i586-pc +		os=-msdosdjgpp +		;;  	dpx20 | dpx20-*)  		basic_machine=rs6000-bull  		os=-bosx @@ -592,7 +729,6 @@ case $basic_machine in  	i370-ibm* | ibm*)  		basic_machine=i370-ibm  		;; -# I'm not sure what "Sysv32" means.  Should this be sysv3.2?  	i*86v32)  		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`  		os=-sysv32 @@ -631,6 +767,14 @@ case $basic_machine in  		basic_machine=m68k-isi  		os=-sysv  		;; +	m68knommu) +		basic_machine=m68k-unknown +		os=-linux +		;; +	m68knommu-*) +		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` +		os=-linux +		;;  	m88k-omron*)  		basic_machine=m88k-omron  		;; @@ -642,10 +786,21 @@ case $basic_machine in  		basic_machine=ns32k-utek  		os=-sysv  		;; +	microblaze*) +		basic_machine=microblaze-xilinx +		;; +	mingw64) +		basic_machine=x86_64-pc +		os=-mingw64 +		;;  	mingw32)  		basic_machine=i386-pc  		os=-mingw32  		;; +	mingw32ce) +		basic_machine=arm-unknown +		os=-mingw32ce +		;;  	miniframe)  		basic_machine=m68000-convergent  		;; @@ -659,10 +814,6 @@ case $basic_machine in  	mips3*)  		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown  		;; -	mmix*) -		basic_machine=mmix-knuth -		os=-mmixware -		;;  	monitor)  		basic_machine=m68k-rom68k  		os=-coff @@ -675,10 +826,21 @@ case $basic_machine in  		basic_machine=i386-pc  		os=-msdos  		;; +	ms1-*) +		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` +		;; +	msys) +		basic_machine=i386-pc +		os=-msys +		;;  	mvs)  		basic_machine=i370-ibm  		os=-mvs  		;; +	nacl) +		basic_machine=le32-unknown +		os=-nacl +		;;  	ncr3000)  		basic_machine=i486-ncr  		os=-sysv4 @@ -743,9 +905,11 @@ case $basic_machine in  	np1)  		basic_machine=np1-gould  		;; -	nv1) -		basic_machine=nv1-cray -		os=-unicosmp +	neo-tandem) +		basic_machine=neo-tandem +		;; +	nse-tandem) +		basic_machine=nse-tandem  		;;  	nsr-tandem)  		basic_machine=nsr-tandem @@ -754,9 +918,8 @@ case $basic_machine in  		basic_machine=hppa1.1-oki  		os=-proelf  		;; -	or32 | or32-*) +	openrisc | openrisc-*)  		basic_machine=or32-unknown -		os=-coff  		;;  	os400)  		basic_machine=powerpc-ibm @@ -778,6 +941,14 @@ case $basic_machine in  		basic_machine=i860-intel  		os=-osf  		;; +	parisc) +		basic_machine=hppa-unknown +		os=-linux +		;; +	parisc-*) +		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` +		os=-linux +		;;  	pbd)  		basic_machine=sparc-tti  		;; @@ -787,6 +958,12 @@ case $basic_machine in  	pc532 | pc532-*)  		basic_machine=ns32k-pc532  		;; +	pc98) +		basic_machine=i386-pc +		;; +	pc98-*) +		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` +		;;  	pentium | p5 | k5 | k6 | nexgen | viac3)  		basic_machine=i586-pc  		;; @@ -816,9 +993,10 @@ case $basic_machine in  		;;  	power)	basic_machine=power-ibm  		;; -	ppc)	basic_machine=powerpc-unknown +	ppc | ppcbe)	basic_machine=powerpc-unknown  		;; -	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` +	ppc-* | ppcbe-*) +		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`  		;;  	ppcle | powerpclittle | ppc-le | powerpc-little)  		basic_machine=powerpcle-unknown @@ -843,6 +1021,14 @@ case $basic_machine in  		basic_machine=i586-unknown  		os=-pw32  		;; +	rdos | rdos64) +		basic_machine=x86_64-pc +		os=-rdos +		;; +	rdos32) +		basic_machine=i386-pc +		os=-rdos +		;;  	rom68k)  		basic_machine=m68k-rom68k  		os=-coff @@ -869,6 +1055,10 @@ case $basic_machine in  	sb1el)  		basic_machine=mipsisa64sb1el-unknown  		;; +	sde) +		basic_machine=mipsisa32-sde +		os=-elf +		;;  	sei)  		basic_machine=mips-sei  		os=-seiux @@ -880,6 +1070,9 @@ case $basic_machine in  		basic_machine=sh-hitachi  		os=-hms  		;; +	sh5el) +		basic_machine=sh5le-unknown +		;;  	sh64)  		basic_machine=sh64-unknown  		;; @@ -901,6 +1094,9 @@ case $basic_machine in  		basic_machine=i860-stratus  		os=-sysv4  		;; +	strongarm-* | thumb-*) +		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` +		;;  	sun2)  		basic_machine=m68000-sun  		;; @@ -957,17 +1153,9 @@ case $basic_machine in  		basic_machine=t90-cray  		os=-unicos  		;; -	tic54x | c54x*) -		basic_machine=tic54x-unknown -		os=-coff -		;; -	tic55x | c55x*) -		basic_machine=tic55x-unknown -		os=-coff -		;; -	tic6x | c6x*) -		basic_machine=tic6x-unknown -		os=-coff +	tile*) +		basic_machine=$basic_machine-unknown +		os=-linux-gnu  		;;  	tx39)  		basic_machine=mipstx39-unknown @@ -1029,9 +1217,16 @@ case $basic_machine in  		basic_machine=hppa1.1-winbond  		os=-proelf  		;; +	xbox) +		basic_machine=i686-pc +		os=-mingw32 +		;;  	xps | xps100)  		basic_machine=xps100-honeywell  		;; +	xscale-* | xscalee[bl]-*) +		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` +		;;  	ymp)  		basic_machine=ymp-cray  		os=-unicos @@ -1040,6 +1235,10 @@ case $basic_machine in  		basic_machine=z8k-unknown  		os=-sim  		;; +	z80-*-coff) +		basic_machine=z80-unknown +		os=-sim +		;;  	none)  		basic_machine=none-none  		os=-none @@ -1059,6 +1258,9 @@ case $basic_machine in  	romp)  		basic_machine=romp-ibm  		;; +	mmix) +		basic_machine=mmix-knuth +		;;  	rs6000)  		basic_machine=rs6000-ibm  		;; @@ -1075,13 +1277,10 @@ case $basic_machine in  	we32k)  		basic_machine=we32k-att  		;; -	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) +	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)  		basic_machine=sh-unknown  		;; -	sh64) -		basic_machine=sh64-unknown -		;; -	sparc | sparcv8 | sparcv9 | sparcv9b) +	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)  		basic_machine=sparc-sun  		;;  	cydra) @@ -1125,9 +1324,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.  	# -solaris* is a basic system type, with this one exception. +	-auroraux) +		os=-auroraux +		;;  	-solaris1 | -solaris1.*)  		os=`echo $os | sed -e 's|solaris1|sunos4|'`  		;; @@ -1148,26 +1350,31 @@ case $os in  	# 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]*\ -	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ +	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ +	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +	      | -sym* | -kopensolaris* | -plan9* \  	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -	      | -aos* \ +	      | -aos* | -aros* \  	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \  	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ +	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +	      | -bitrig* | -openbsd* | -solidbsd* \  	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \  	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \  	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \  	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -	      | -chorusos* | -chorusrdb* \ -	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ +	      | -chorusos* | -chorusrdb* | -cegcc* \ +	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ +	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \ +	      | -uxpv* | -beos* | -mpeix* | -udk* \  	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \  	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \  	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \  	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) +	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)  	# Remember, each alternative MUST END IN *, to match a version number.  		;;  	-qnx*) @@ -1185,7 +1392,7 @@ case $os in  		os=`echo $os | sed -e 's|nto|nto-qnx|'`  		;;  	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ +	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \  	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)  		;;  	-mac*) @@ -1206,7 +1413,7 @@ case $os in  	-opened*)  		os=-openedition  		;; -        -os400*) +	-os400*)  		os=-os400  		;;  	-wince*) @@ -1255,7 +1462,7 @@ case $os in  	-sinix*)  		os=-sysv4  		;; -        -tpf*) +	-tpf*)  		os=-tpf  		;;  	-triton*) @@ -1291,8 +1498,13 @@ case $os in  	-aros*)  		os=-aros  		;; -	-kaos*) -		os=-kaos +	-zvmoe) +		os=-zvmoe +		;; +	-dicos*) +		os=-dicos +		;; +	-nacl*)  		;;  	-none)  		;; @@ -1316,6 +1528,12 @@ else  # system, and we'll never get to this point.  case $basic_machine in +	score-*) +		os=-elf +		;; +	spu-*) +		os=-elf +		;;  	*-acorn)  		os=-riscix1.2  		;; @@ -1325,9 +1543,21 @@ case $basic_machine in  	arm*-semi)  		os=-aout  		;; -    c4x-* | tic4x-*) -        os=-coff -        ;; +	c4x-* | tic4x-*) +		os=-coff +		;; +	hexagon-*) +		os=-elf +		;; +	tic54x-*) +		os=-coff +		;; +	tic55x-*) +		os=-coff +		;; +	tic6x-*) +		os=-coff +		;;  	# This must come before the *-dec entry.  	pdp10-*)  		os=-tops20 @@ -1346,19 +1576,22 @@ case $basic_machine in  		;;  	m68000-sun)  		os=-sunos3 -		# This also exists in the configure program, but was not the -		# default. -		# os=-sunos4  		;;  	m68*-cisco)  		os=-aout  		;; +	mep-*) +		os=-elf +		;;  	mips*-cisco)  		os=-elf  		;;  	mips*-*)  		os=-elf  		;; +	or1k-*) +		os=-elf +		;;  	or32-*)  		os=-coff  		;; @@ -1371,9 +1604,15 @@ case $basic_machine in  	*-be)  		os=-beos  		;; +	*-haiku) +		os=-haiku +		;;  	*-ibm)  		os=-aix  		;; +	*-knuth) +		os=-mmixware +		;;  	*-wec)  		os=-proelf  		;; @@ -1476,7 +1715,7 @@ case $basic_machine in  			-sunos*)  				vendor=sun  				;; -			-aix*) +			-cnk*|-aix*)  				vendor=ibm  				;;  			-beos*) @@ -1539,7 +1778,7 @@ case $basic_machine in  esac  echo $basic_machine$os -exit 0 +exit  # Local variables:  # eval: (add-hook 'write-file-hooks 'time-stamp) @@ -8986,7 +8986,7 @@ extern char *sys_errlist[];  int  main ()  { -printf(sys_errlist[0]); +printf("%s", sys_errlist[0]);    ;    return 0;  } @@ -257,7 +257,7 @@ make_lastline_link(Buffer *buf, char *title, char *url)      parseURL2(url, &pu, baseURL(buf));      u = parsedURL2Str(&pu);      if (DecodeURL) -	u = Strnew_charp(url_unquote_conv(u->ptr, buf->document_charset)); +	u = Strnew_charp(url_decode2(u->ptr, buf));  #ifdef USE_M17N      u = checkType(u, &pr, NULL);  #endif diff --git a/doc-jp/README b/doc-jp/README index 074766f..6fe07a8 100644 --- a/doc-jp/README +++ b/doc-jp/README @@ -123,6 +123,6 @@ w3m ϡƣ§°Ƥޤ  	satodai@w3m.jp  ոۤMLޤǤ -	w3m-dev@sic.med.tohoku.ac.jp (ܸ) -	w3m-dev-en@sic.med.tohoku.ac.jp (Ѹ) +	w3m-dev@w3m.jp (ܸ) +	w3m-dev-en@w3m.jp (Ѹ)  	http://w3m.sourceforge.net/ diff --git a/doc-jp/README.siteconf b/doc-jp/README.siteconf new file mode 100644 index 0000000..58b51c7 --- /dev/null +++ b/doc-jp/README.siteconf @@ -0,0 +1,60 @@ +siteconf: ̥ޥ + +siteconf ϡ URL Υѥȡɳդ줿꤫ޤ +siteconf Ȥȡʸɤꤷ "decode_url" +νϤꡢ Google Υ쥯ǽ +ץ饤Х夵ꤹ뤳ȤǤޤ + +ǥեȤǤ siteconf  ~/.w3m/siteconf ɤ߹ޤޤ + +===== ʸ ===== + +url <url>|/<re-url>/|m@<re-url>@i [exact] +substitute_url "<destination-url>" +url_charset <charset> +no_referer_from on|off +no_referer_to on|off + +˽줿Τͥ褵ޤ + +=====  ===== + +url "http://twitter.com/#!/" +substitute_url "http://mobile.twitter.com/" + +twitter.com Х륵Ȥžޤ + +url "http://your.bookmark.net/" +no_referer_from on + +your.bookmark.net ĥäéݤˡ HTTP referer  +ʤ褦ˤޤ + +url "http://www.google.com/url?" exact +substitute_url "file:///cgi-bin/your-redirector.cgi?" + +Google Υ쥯 local CGI žޤ + +url /^http:\/\/[a-z]*\.wikipedia\.org\// +url_charset utf-8 + +Ʊ "decode_url" ץˤȡ Wikipedia ؤ + UTF-8 Ȥƥǥɤɽޤ + +===== ɽˤĤ ===== + +ɽϤƱ̣ɽޤ + +/http:\/\/www\.example\.com\// +m/http:\/\/www\.example\.com\// +m@http://www\.example\.com/@ +m!http://www\.example\.com/! + +Ǹ 'i' Ҥդȡʸʸ̤˾ȹԤޤ +㤨С m@^http://www\.example\.com/abc/@i ϰʲΤȤפޤ + +http://www.example.com/abc/ +http://www.example.com/Abc/ +http://www.example.com/ABC/ + +ۥ̾ʬϾ˾ʸѴƤӤޤ @@ -116,6 +116,6 @@ Current Maintainer  	satodai@w3m.jp  Feel free to send your opinion to the w3m mailing-lists. -	w3m-dev@sic.med.tohoku.ac.jp (Japanese) -	w3m-dev-en@sic.med.tohoku.ac.jp (English) +	w3m-dev@w3m.jp (Japanese) +	w3m-dev-en@w3m.jp (English)  	http://w3m.sourceforge.net/ diff --git a/doc/README.siteconf b/doc/README.siteconf new file mode 100644 index 0000000..f173087 --- /dev/null +++ b/doc/README.siteconf @@ -0,0 +1,60 @@ +The siteconf: Site-specific preferences  + +The siteconf consists of URL patterns and preferences associated to them. +You can improve "decode_url" feature by giving charsets of URLs site by site, +or bypass Google's redirector for performance and your privacy. + +The siteconf is read from ~/.w3m/siteconf by default. + +===== The syntax ===== + +url <url>|/<re-url>/|m@<re-url>@i [exact] +substitute_url "<destination-url>" +url_charset <charset> +no_referer_from on|off +no_referer_to on|off + +The last match wins. + +===== Examples ===== + +url "http://twitter.com/#!/" +substitute_url "http://mobile.twitter.com/" + +This forwards the twitter.com to its mobile site. + +url "http://your.bookmark.net/" +no_referer_from on + +This prevents HTTP referers from being sent when you follow links +at the your.bookmark.net. + +url "http://www.google.com/url?" exact +substitute_url "file:///cgi-bin/your-redirector.cgi?" + +This forwards the Google's redirector to your local CGI. + +url /^http:\/\/[a-z]*\.wikipedia\.org\// +url_charset utf-8 + +When combinated with "decode_url" option turned on, links to +Wikipedia will be human-readable. + +===== Regular expressions notes ===== + +Following expressions are all equivalent: + +/http:\/\/www\.example\.com\// +m/http:\/\/www\.example\.com\// +m@http://www\.example\.com/@ +m!http://www\.example\.com/! + +With a trailing 'i' modifier, you can specify a case-insensitive match. +For example, m@^http://www\.example\.com/abc/@i matches to: + +http://www.example.com/abc/ +http://www.example.com/Abc/ +http://www.example.com/ABC/ + +Hostnames, however, are always converted to lowercases before compared. + @@ -44,6 +44,8 @@ conv_entity(unsigned int c)  	return " ";      if (c == 0xa0)  	return NBSP; +    if (c == 0xad)		/* SOFT HYPHEN */ +        return "";      if (c < 0x100) {		/* Latin1 (ISO 8859-1) */  	if (UseAltEntity)  	    return alt_latin1[c - 0xa0]; @@ -47,11 +47,11 @@ static JMP_BUF AbortLoading;  static struct table *tables[MAX_TABLE];  static struct table_mode table_mode[MAX_TABLE]; -#ifdef USE_IMAGE +#if defined(USE_M17N) || defined(USE_IMAGE)  static ParsedURL *cur_baseURL = NULL; -#ifdef USE_M17N -static char cur_document_charset;  #endif +#ifdef USE_M17N +static wc_ces cur_document_charset = 0;  #endif  static Str cur_title; @@ -215,7 +215,6 @@ currentLn(Buffer *buf)  static Buffer *  loadSomething(URLFile *f, -	      char *path,  	      Buffer *(*loadproc) (URLFile *, Buffer *), Buffer *defaultbuf)  {      Buffer *buf; @@ -223,17 +222,23 @@ loadSomething(URLFile *f,      if ((buf = loadproc(f, defaultbuf)) == NULL)  	return NULL; -    buf->filename = path;      if (buf->buffername == NULL || buf->buffername[0] == '\0') {  	buf->buffername = checkHeader(buf, "Subject:"); -	if (buf->buffername == NULL) -	    buf->buffername = conv_from_system(lastFileName(path)); +	if (buf->buffername == NULL && buf->filename != NULL) +	    buf->buffername = conv_from_system(lastFileName(buf->filename));      }      if (buf->currentURL.scheme == SCM_UNKNOWN)  	buf->currentURL.scheme = f->scheme; -    buf->real_scheme = f->scheme;      if (f->scheme == SCM_LOCAL && buf->sourcefile == NULL) -	buf->sourcefile = path; +	buf->sourcefile = buf->filename; +    if (loadproc == loadHTMLBuffer +#ifdef USE_IMAGE +	|| loadproc == loadImageBuffer +#endif +       ) +	buf->type = "text/html"; +    else +	buf->type = "text/plain";      return buf;  } @@ -484,28 +489,6 @@ convertLine0(URLFile *uf, Str line, int mode)      return line;  } -/*  - * loadFile: load file to buffer - */ -Buffer * -loadFile(char *path) -{ -    Buffer *buf; -    URLFile uf; -    init_stream(&uf, SCM_LOCAL, NULL); -    examineFile(path, &uf); -    if (uf.stream == NULL) -	return NULL; -    buf = newBuffer(INIT_BUFFER_WIDTH); -    current_content_length = 0; -#ifdef USE_M17N -    content_charset = 0; -#endif -    buf = loadSomething(&uf, path, loadBuffer, buf); -    UFclose(&uf); -    return buf; -} -  int  matchattr(char *p, char *attr, int len, Str *value)  { @@ -1697,13 +1680,15 @@ getLinkNumberStr(int correction)  /*    * loadGeneralFile: load file to buffer   */ +#define DO_EXTERNAL ((Buffer *(*)(URLFile *, Buffer *))doExternal)  Buffer *  loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,  		int flag, FormList *volatile request)  {      URLFile f, *volatile of = NULL;      ParsedURL pu; -    Buffer *b = NULL, *(*volatile proc)() = loadBuffer; +    Buffer *b = NULL; +    Buffer *(*volatile proc)(URLFile *, Buffer *) = loadBuffer;      char *volatile tpath;      char *volatile t = "text/plain", *p, *volatile real_type = NULL;      Buffer *volatile t_buf = NULL; @@ -1730,7 +1715,22 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,      add_auth_cookie_flag = 0;      checkRedirection(NULL); +    load_doc: +    { +	const char *sc_redirect; +	parseURL2(tpath, &pu, current); +	sc_redirect = query_SCONF_SUBSTITUTE_URL(&pu); +	if (sc_redirect && *sc_redirect && checkRedirection(&pu)) { +	    tpath = (char *)sc_redirect; +	    request = NULL; +	    add_auth_cookie_flag = 0; +	    current = New(ParsedURL); +	    *current = pu; +	    status = HTST_NORMAL; +	    goto load_doc; +	} +    }      TRAP_OFF;      url_option.referer = referer;      url_option.flag = flag; @@ -1863,7 +1863,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,  	    /* 302: Found */  	    /* 303: See Other */  	    /* 307: Temporary Redirect (HTTP/1.1) */ -	    tpath = url_quote_conv(p, DocumentCharset); +	    tpath = url_encode(p, NULL, 0);  	    request = NULL;  	    UFclose(&f);  	    current = New(ParsedURL); @@ -2022,7 +2022,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,  	if (f.is_cgi && (p = checkHeader(t_buf, "Location:")) != NULL &&  	    checkRedirection(&pu)) {  	    /* document moved */ -	    tpath = url_quote_conv(remove_space(p), DocumentCharset); +	    tpath = url_encode(remove_space(p), NULL, 0);  	    request = NULL;  	    UFclose(&f);  	    add_auth_cookie_flag = 0; @@ -2123,10 +2123,6 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,      if (real_type == NULL)  	real_type = t;      proc = loadBuffer; -#ifdef USE_IMAGE -    cur_baseURL = New(ParsedURL); -    copyParsedURL(cur_baseURL, &pu); -#endif      current_content_length = 0;      if ((p = checkHeader(t_buf, "Content-Length:")) != NULL) @@ -2197,18 +2193,8 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,  #endif      else if (w3m_backend) ;      else if (!(w3m_dump & ~DUMP_FRAME) || is_dump_text_type(t)) { -	if (!do_download && doExternal(f, -				       pu.real_file ? pu.real_file : pu.file, -				       t, &b, t_buf)) { -	    if (b && b != NO_BUFFER) { -		b->real_scheme = f.scheme; -		b->real_type = real_type; -		if (b->currentURL.host == NULL && b->currentURL.file == NULL) -		    copyParsedURL(&b->currentURL, &pu); -	    } -	    UFclose(&f); -	    TRAP_OFF; -	    return b; +	if (!do_download && searchExtViewer(t) != NULL) { +	    proc = DO_EXTERNAL;  	}  	else {  	    TRAP_OFF; @@ -2232,36 +2218,30 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,      else if (w3m_dump & DUMP_FRAME)  	return NULL; +    if (t_buf == NULL) +	t_buf = newBuffer(INIT_BUFFER_WIDTH); +    copyParsedURL(&t_buf->currentURL, &pu); +    t_buf->filename = pu.real_file ? pu.real_file : +	pu.file ? conv_to_system(pu.file) : NULL;      if (flag & RG_FRAME) { -	if (t_buf == NULL) -	    t_buf = newBuffer(INIT_BUFFER_WIDTH);  	t_buf->bufferprop |= BP_FRAME;      }  #ifdef USE_SSL -    if (t_buf) -	t_buf->ssl_certificate = f.ssl_certificate; +    t_buf->ssl_certificate = f.ssl_certificate;  #endif      frame_source = flag & RG_FRAME_SRC; -    b = loadSomething(&f, pu.real_file ? pu.real_file : pu.file, proc, t_buf); +    if (proc == DO_EXTERNAL) { +	b = doExternal(f, t, t_buf); +    } else { +	b = loadSomething(&f, proc, t_buf); +    }      UFclose(&f);      frame_source = 0; -    if (b) { +    if (b && b != NO_BUFFER) {  	b->real_scheme = f.scheme;  	b->real_type = real_type; -	if (b->currentURL.host == NULL && b->currentURL.file == NULL) -	    copyParsedURL(&b->currentURL, &pu); -	if (is_html_type(t)) -	    b->type = "text/html"; -	else if (w3m_backend) { -	    Str s = Strnew_charp(t); -	    b->type = s->ptr; -	} -#ifdef USE_IMAGE -	else if (proc == loadImageBuffer) -	    b->type = "text/html"; -#endif -	else -	    b->type = "text/plain"; +	if (w3m_backend) +	    b->type = allocStr(t, -1);  	if (pu.label) {  	    if (proc == loadHTMLBuffer) {  		Anchor *a; @@ -2287,10 +2267,11 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,      if (header_string)  	header_string = NULL;  #ifdef USE_NNTP -    if (f.scheme == SCM_NNTP || f.scheme == SCM_NEWS) +    if (b && b != NO_BUFFER && (f.scheme == SCM_NNTP || f.scheme == SCM_NEWS))  	reAnchorNewsheader(b);  #endif -    preFormUpdateBuffer(b); +    if (b && b != NO_BUFFER) +	preFormUpdateBuffer(b);      TRAP_OFF;      return b;  } @@ -2469,6 +2450,7 @@ set_breakpoint(struct readbuffer *obuf, int tag_length)      bcopy((void *)&obuf->anchor, (void *)&obuf->bp.anchor,  	  sizeof(obuf->anchor));      obuf->bp.img_alt = obuf->img_alt; +    obuf->bp.input_alt = obuf->input_alt;      obuf->bp.in_bold = obuf->in_bold;      obuf->bp.in_italic = obuf->in_italic;      obuf->bp.in_under = obuf->in_under; @@ -2486,6 +2468,7 @@ back_to_breakpoint(struct readbuffer *obuf)      bcopy((void *)&obuf->bp.anchor, (void *)&obuf->anchor,  	  sizeof(obuf->anchor));      obuf->img_alt = obuf->bp.img_alt; +    obuf->input_alt = obuf->bp.input_alt;      obuf->in_bold = obuf->bp.in_bold;      obuf->in_italic = obuf->bp.in_italic;      obuf->in_under = obuf->bp.in_under; @@ -2729,7 +2712,7 @@ flushline(struct html_feed_environ *h_env, struct readbuffer *obuf, int indent,      Str line = obuf->line, pass = NULL;      char *hidden_anchor = NULL, *hidden_img = NULL, *hidden_bold = NULL,  	*hidden_under = NULL, *hidden_italic = NULL, *hidden_strike = NULL, -	*hidden_ins = NULL, *hidden = NULL; +	*hidden_ins = NULL, *hidden_input, *hidden = NULL;  #ifdef DEBUG      if (w3m_debug) { @@ -2761,6 +2744,12 @@ flushline(struct html_feed_environ *h_env, struct readbuffer *obuf, int indent,  		hidden = hidden_img;  	}      } +    if (obuf->input_alt.in) { +	if ((hidden_input = has_hidden_link(obuf, HTML_INPUT_ALT)) != NULL) { +	    if (!hidden || hidden_input < hidden) +		hidden = hidden_input; +	} +    }      if (obuf->in_bold) {  	if ((hidden_bold = has_hidden_link(obuf, HTML_B)) != NULL) {  	    if (!hidden || hidden_bold < hidden) @@ -2812,6 +2801,8 @@ flushline(struct html_feed_environ *h_env, struct readbuffer *obuf, int indent,  	Strcat_charp(line, "</a>");      if (obuf->img_alt && !hidden_img)  	Strcat_charp(line, "</img_alt>"); +    if (obuf->input_alt.in && !hidden_input) +	Strcat_charp(line, "</input_alt>");      if (obuf->in_bold && !hidden_bold)  	Strcat_charp(line, "</b>");      if (obuf->in_italic && !hidden_italic) @@ -3022,6 +3013,18 @@ flushline(struct html_feed_environ *h_env, struct readbuffer *obuf, int indent,  	Strcat_charp(tmp, "\">");  	push_tag(obuf, tmp->ptr, HTML_IMG_ALT);      } +    if (!hidden_input && obuf->input_alt.in) { +	Str tmp; +	if (obuf->input_alt.hseq > 0) +	    obuf->input_alt.hseq = - obuf->input_alt.hseq; +	tmp = Sprintf("<INPUT_ALT hseq=\"%d\" fid=\"%d\" name=\"%s\" type=\"%s\" value=\"%s\">", +		     obuf->input_alt.hseq, +		     obuf->input_alt.fid, +		     obuf->input_alt.name->ptr, +		     obuf->input_alt.type->ptr, +		     obuf->input_alt.value->ptr); +	push_tag(obuf, tmp->ptr, HTML_INPUT_ALT); +    }      if (!hidden_bold && obuf->in_bold)  	push_tag(obuf, "<B>", HTML_B);      if (!hidden_italic && obuf->in_italic) @@ -3228,7 +3231,7 @@ process_img(struct parsed_tag *tag, int width)      if (!parsedtag_get_value(tag, ATTR_SRC, &p))  	return tmp; -    p = remove_space(p); +    p = url_encode(remove_space(p), cur_baseURL, cur_document_charset);      q = NULL;      parsedtag_get_value(tag, ATTR_ALT, &q);      if (!pseudoInlines && (q == NULL || (*q == '\0' && ignore_null_img_alt))) @@ -3322,12 +3325,7 @@ process_img(struct parsed_tag *tag, int width)  	    Image image;  	    ParsedURL u; -#ifdef USE_M17N -	    parseURL2(wc_conv(p, InnerCharset, cur_document_charset)->ptr, &u, -		      cur_baseURL); -#else  	    parseURL2(p, &u, cur_baseURL); -#endif  	    image.url = parsedURL2Str(&u)->ptr;  	    if (!uncompressed_file_type(u.file, &image.ext))  		image.ext = filename_extension(u.file, TRUE); @@ -3732,6 +3730,63 @@ process_input(struct parsed_tag *tag)  }  Str +process_button(struct parsed_tag *tag) +{ +    Str tmp = NULL; +    char *p, *q, *r, *qq = ""; +    int qlen, v; + +    if (cur_form_id < 0) { +       char *s = "<form_int method=internal action=none>"; +       tmp = process_form(parse_tag(&s, TRUE)); +    } +    if (tmp == NULL) +       tmp = Strnew(); + +    p = "submit"; +    parsedtag_get_value(tag, ATTR_TYPE, &p); +    q = NULL; +    parsedtag_get_value(tag, ATTR_VALUE, &q); +    r = ""; +    parsedtag_get_value(tag, ATTR_NAME, &r); + +    v = formtype(p); +    if (v == FORM_UNKNOWN) +       return NULL; + +    if (!q) { +       switch (v) { +       case FORM_INPUT_SUBMIT: +       case FORM_INPUT_BUTTON: +           q = "SUBMIT"; +           break; +       case FORM_INPUT_RESET: +           q = "RESET"; +           break; +       } +    } +    if (q) { +       qq = html_quote(q); +       qlen = strlen(q); +    } + +    //    Strcat_charp(tmp, "<pre_int>"); +    Strcat(tmp, Sprintf("<input_alt hseq=\"%d\" fid=\"%d\" type=%s " +                       "name=\"%s\" value=\"%s\">", +                       cur_hseq++, cur_form_id, p, html_quote(r), qq)); +    return tmp; +} + +Str +process_n_button(void) +{ +    Str tmp = Strnew(); +    Strcat_charp(tmp, "</input_alt>"); +    //    Strcat_charp(tmp, "</pre_int>"); +    return tmp; +} + +Str  process_select(struct parsed_tag *tag)  {      Str tmp = NULL; @@ -4084,6 +4139,7 @@ process_form_int(struct parsed_tag *tag, int fid)      parsedtag_get_value(tag, ATTR_METHOD, &p);      q = "!CURRENT_URL!";      parsedtag_get_value(tag, ATTR_ACTION, &q); +    q = url_encode(remove_space(q), cur_baseURL, cur_document_charset);      r = NULL;  #ifdef USE_M17N      if (parsedtag_get_value(tag, ATTR_ACCEPT_CHARSET, &r)) @@ -4861,7 +4917,35 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	    if (i > obuf->bottom_margin)  		obuf->bottom_margin = i;  	} +	if (parsedtag_get_value(tag, ATTR_HSEQ, &hseq)) { +	    obuf->input_alt.hseq = hseq; +	} +	if (parsedtag_get_value(tag, ATTR_FID, &i)) { +	    obuf->input_alt.fid = i; +	} +	if (parsedtag_get_value(tag, ATTR_TYPE, &p)) { +	    obuf->input_alt.type = Strnew_charp(p); +	} +	if (parsedtag_get_value(tag, ATTR_VALUE, &p)) { +	    obuf->input_alt.value = Strnew_charp(p); +	} +	if (parsedtag_get_value(tag, ATTR_NAME, &p)) { +	    obuf->input_alt.name = Strnew_charp(p); +	} +	obuf->input_alt.in = 1;  	return 0; +    case HTML_N_INPUT_ALT: +	if (obuf->input_alt.in) { +	    if (!close_effect0(obuf, HTML_INPUT_ALT)) +		push_tag(obuf, "</input_alt>", HTML_N_INPUT_ALT); +	    obuf->input_alt.hseq = 0; +	    obuf->input_alt.fid = -1; +	    obuf->input_alt.in = 0; +	    obuf->input_alt.type = NULL; +	    obuf->input_alt.name = NULL; +	    obuf->input_alt.value = NULL; +	} +	return 1;      case HTML_TABLE:  	close_anchor(h_env, obuf);  	obuf->table_level++; @@ -4970,6 +5054,16 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)      case HTML_INPUT:  	close_anchor(h_env, obuf);  	tmp = process_input(tag); +       if (tmp) +           HTMLlineproc1(tmp->ptr, h_env); +       return 1; +    case HTML_BUTTON: +       tmp = process_button(tag); +       if (tmp) +           HTMLlineproc1(tmp->ptr, h_env); +       return 1; +    case HTML_N_BUTTON: +       tmp = process_n_button();  	if (tmp)  	    HTMLlineproc1(tmp->ptr, h_env);  	return 1; @@ -5067,11 +5161,10 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	}  	return 1;      case HTML_BASE: -#ifdef USE_IMAGE +#if defined(USE_M17N) || defined(USE_IMAGE)  	p = NULL;  	if (parsedtag_get_value(tag, ATTR_HREF, &p)) { -	    if (!cur_baseURL) -		cur_baseURL = New(ParsedURL); +	    cur_baseURL = New(ParsedURL);  	    parseURL(p, cur_baseURL, NULL);  	}  #endif @@ -5329,6 +5422,13 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  #ifdef MENU_SELECT      Anchor **a_select = NULL;  #endif +#if defined(USE_M17N) || defined(USE_IMAGE) +    ParsedURL *base = baseURL(buf); +#endif +#ifdef USE_M17N +    wc_ces name_charset = url_to_charset(NULL, &buf->currentURL, +					 buf->document_charset); +#endif      if (out_size == 0) {  	out_size = LINELEN; @@ -5523,16 +5623,17 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  		    hseq = 0;  		    id = NULL;  		    if (parsedtag_get_value(tag, ATTR_NAME, &id)) { -			id = url_quote_conv(id, buf->document_charset); +			id = url_quote_conv(id, name_charset);  			registerName(buf, id, currentLn(buf), pos);  		    }  		    if (parsedtag_get_value(tag, ATTR_HREF, &p)) -			p = url_quote_conv(remove_space(p), -					   buf->document_charset); +			p = url_encode(remove_space(p), base, +				       buf->document_charset);  		    if (parsedtag_get_value(tag, ATTR_TARGET, &q))  			q = url_quote_conv(q, buf->document_charset);  		    if (parsedtag_get_value(tag, ATTR_REFERER, &r)) -			r = url_quote_conv(r, buf->document_charset); +			r = url_encode(r, base, +				       buf->document_charset);  		    parsedtag_get_value(tag, ATTR_TITLE, &s);  		    parsedtag_get_value(tag, ATTR_ACCESSKEY, &t);  		    parsedtag_get_value(tag, ATTR_HSEQ, &hseq); @@ -5618,7 +5719,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  			    ParsedURL u;  			    Image *image; -			    parseURL2(a_img->url, &u, cur_baseURL); +			    parseURL2(a_img->url, &u, base);  			    a_img->image = image = New(Image);  			    image->url = parsedURL2Str(&u)->ptr;  			    if (!uncompressed_file_type(u.file, &image->ext)) @@ -5639,7 +5740,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  			    image->map = q;  			    image->ismap = ismap;  			    image->touch = 0; -			    image->cache = getImage(image, cur_baseURL, +			    image->cache = getImage(image, base,  						    IMG_FLAG_SKIP);  			}  			else if (iseq < 0) { @@ -5689,6 +5790,21 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  				putHmarker(buf->hmarklist, currentLn(buf),  					   hpos, hseq - 1);  			} +			else if (hseq < 0) { +			    int h = -hseq - 1; +			    int hpos = pos; +			    if (*str == '[') +				hpos++; +			    if (buf->hmarklist && +				h < buf->hmarklist->nmark && +				buf->hmarklist->marks[h].invalid) { +				buf->hmarklist->marks[h].pos = hpos; +				buf->hmarklist->marks[h].line = currentLn(buf); +				buf->hmarklist->marks[h].invalid = 0; +				hseq = -hseq; +			    } +			} +  			if (!form->target)  			    form->target = buf->baseTarget;  			if (a_textarea && @@ -5761,8 +5877,8 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  			break;  		    if (parsedtag_get_value(tag, ATTR_HREF, &p)) {  			MapArea *a; -			p = url_quote_conv(remove_space(p), -					   buf->document_charset); +			p = url_encode(remove_space(p), base, +				       buf->document_charset);  			t = NULL;  			parsedtag_get_value(tag, ATTR_TARGET, &t);  			q = ""; @@ -5811,11 +5927,14 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  		    break;  		case HTML_BASE:  		    if (parsedtag_get_value(tag, ATTR_HREF, &p)) { -			p = url_quote_conv(remove_space(p), -					   buf->document_charset); +			p = url_encode(remove_space(p), NULL, +				       buf->document_charset);  			if (!buf->baseURL)  			    buf->baseURL = New(ParsedURL);  			parseURL(p, buf->baseURL, NULL); +#if defined(USE_M17N) || defined(USE_IMAGE) +			base = buf->baseURL; +#endif  		    }  		    if (parsedtag_get_value(tag, ATTR_TARGET, &p))  			buf->baseTarget = @@ -5830,8 +5949,8 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  			int refresh_interval = getMetaRefreshParam(q, &tmp);  #ifdef USE_ALARM  			if (tmp) { -			    p = url_quote_conv(remove_space(tmp->ptr), -					       buf->document_charset); +			    p = url_encode(remove_space(tmp->ptr), base, +					   buf->document_charset);  			    buf->event = setAlarmEvent(buf->event,  						       refresh_interval,  						       AL_IMPLICIT_ONCE, @@ -5844,8 +5963,8 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  						       FUNCNAME_reload, NULL);  #else  			if (tmp && refresh_interval == 0) { -			    p = url_quote_conv(remove_space(tmp->ptr), -					       buf->document_charset); +			    p = url_encode(remove_space(tmp->ptr), base, +					   buf->document_charset);  			    pushEvent(FUNCNAME_gorURL, p);  			}  #endif @@ -5929,7 +6048,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)  #ifdef	ID_EXT  		id = NULL;  		if (parsedtag_get_value(tag, ATTR_ID, &id)) { -		    id = url_quote_conv(id, buf->document_charset); +		    id = url_quote_conv(id, name_charset);  		    registerName(buf, id, currentLn(buf), pos);  		}  		if (renderFrameSet && @@ -5982,7 +6101,8 @@ addLink(Buffer *buf, struct parsed_tag *tag)      parsedtag_get_value(tag, ATTR_HREF, &href);      if (href) -	href = url_quote_conv(remove_space(href), buf->document_charset); +	href = url_encode(remove_space(href), baseURL(buf), +			  buf->document_charset);      parsedtag_get_value(tag, ATTR_TITLE, &title);      parsedtag_get_value(tag, ATTR_TYPE, &ctype);      parsedtag_get_value(tag, ATTR_REL, &rel); @@ -6756,6 +6876,12 @@ init_henv(struct html_feed_environ *h_env, struct readbuffer *obuf,      obuf->nobr_level = 0;      bzero((void *)&obuf->anchor, sizeof(obuf->anchor));      obuf->img_alt = 0; +    obuf->input_alt.hseq = 0; +    obuf->input_alt.fid = -1; +    obuf->input_alt.in = 0; +    obuf->input_alt.type = NULL; +    obuf->input_alt.name = NULL; +    obuf->input_alt.value = NULL;      obuf->in_bold = 0;      obuf->in_italic = 0;      obuf->in_under = 0; @@ -6791,6 +6917,15 @@ completeHTMLstream(struct html_feed_environ *h_env, struct readbuffer *obuf)  	push_tag(obuf, "</img_alt>", HTML_N_IMG_ALT);  	obuf->img_alt = NULL;      } +    if (obuf->input_alt.in) { +	push_tag(obuf, "</input_alt>", HTML_N_INPUT_ALT); +	obuf->input_alt.hseq = 0; +	obuf->input_alt.fid = -1; +	obuf->input_alt.in = 0; +	obuf->input_alt.type = NULL; +	obuf->input_alt.name = NULL; +	obuf->input_alt.value = NULL; +    }      if (obuf->in_bold) {  	push_tag(obuf, "</b>", HTML_N_B);  	obuf->in_bold = 0; @@ -6963,8 +7098,6 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)  	image_flag = IMG_FLAG_AUTO;      else  	image_flag = IMG_FLAG_SKIP; -    if (newBuf->currentURL.file) -	cur_baseURL = baseURL(newBuf);  #endif      if (w3m_halfload) { @@ -6987,6 +7120,9 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)  	htmlenv1.f = stdout;      else  	htmlenv1.buf = newTextLineList(); +#if defined(USE_M17N) || defined(USE_IMAGE) +    cur_baseURL = baseURL(newBuf); +#endif      if (SETJMP(AbortLoading) != 0) {  	HTMLlineproc1("<br>Transfer Interrupted!<br>", &htmlenv1); @@ -7048,7 +7184,7 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)  	}  #endif  	lineBuf2 = convertLine(f, lineBuf2, HTML_MODE, &charset, doc_charset); -#if defined(USE_M17N) && defined(USE_IMAGE) +#ifdef USE_M17N  	cur_document_charset = charset;  #endif  	HTMLlineproc0(lineBuf2->ptr, &htmlenv1, internal); @@ -7060,6 +7196,12 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)      obuf.status = R_ST_NORMAL;      completeHTMLstream(&htmlenv1, &obuf);      flushline(&htmlenv1, &obuf, 0, 2, htmlenv1.limit); +#if defined(USE_M17N) || defined(USE_IMAGE) +    cur_baseURL = NULL; +#endif +#ifdef USE_M17N +    cur_document_charset = 0; +#endif      if (htmlenv1.title)  	newBuf->buffername = htmlenv1.title;      if (w3m_halfdump) { @@ -7207,7 +7349,7 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset)  	q = Strnew_m_charp("gopher://", host->ptr, ":", port->ptr,  			   "/", file->ptr, NULL)->ptr;  	Strcat_m_charp(tmp, "<a href=\"", -		       html_quote(url_quote_conv(q, *charset)), +		       html_quote(url_encode(q, NULL, *charset)),  		       "\">", p, html_quote(name->ptr + 1), "</a>\n", NULL);      } @@ -7331,6 +7473,7 @@ loadImageBuffer(URLFile *uf, Buffer *newBuf)      URLFile f;      MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL;      struct stat st; +    const ParsedURL *pu = newBuf ? &newBuf->currentURL : NULL;      loadImage(newBuf, IMG_FLAG_STOP);      image.url = uf->url; @@ -7338,8 +7481,8 @@ loadImageBuffer(URLFile *uf, Buffer *newBuf)      image.width = -1;      image.height = -1;      image.cache = NULL; -    cache = getImage(&image, cur_baseURL, IMG_FLAG_AUTO); -    if (!cur_baseURL->is_nocache && cache->loaded & IMG_FLAG_LOADED && +    cache = getImage(&image, (ParsedURL *)pu, IMG_FLAG_AUTO); +    if (!(pu && pu->is_nocache) && cache->loaded & IMG_FLAG_LOADED &&  	!stat(cache->file, &st))  	goto image_buffer; @@ -7580,8 +7723,11 @@ openGeneralPagerBuffer(InputStream stream)  #ifdef USE_M17N      content_charset = 0;  #endif +    t_buf = newBuffer(INIT_BUFFER_WIDTH); +    copyParsedURL(&t_buf->currentURL, NULL); +    t_buf->currentURL.scheme = SCM_LOCAL; +    t_buf->currentURL.file = "-";      if (SearchHeader) { -	t_buf = newBuffer(INIT_BUFFER_WIDTH);  	readHeader(&uf, t_buf, TRUE, NULL);  	t = checkContentType(t_buf);  	if (t == NULL) @@ -7609,14 +7755,13 @@ openGeneralPagerBuffer(InputStream stream)  #ifdef USE_IMAGE      else if (activeImage && displayImage && !useExtImageViewer &&  	     !(w3m_dump & ~DUMP_FRAME) && !strncasecmp(t, "image/", 6)) { -	cur_baseURL = New(ParsedURL); -	parseURL("-", cur_baseURL, NULL);  	buf = loadImageBuffer(&uf, t_buf);  	buf->type = "text/html";      }  #endif      else { -	if (doExternal(uf, "-", t, &buf, t_buf)) { +	if (searchExtViewer(t)) { +	    buf = doExternal(uf, t, t_buf);  	    UFclose(&uf);  	    if (buf == NULL || buf == NO_BUFFER)  		return buf; @@ -7629,8 +7774,6 @@ openGeneralPagerBuffer(InputStream stream)  	}      }      buf->real_type = t; -    buf->currentURL.scheme = SCM_LOCAL; -    buf->currentURL.file = "-";      return buf;  } @@ -7823,9 +7966,8 @@ save2tmp(URLFile uf, char *tmpf)      return 0;  } -int -doExternal(URLFile uf, char *path, char *type, Buffer **bufp, -	   Buffer *defaultbuf) +Buffer * +doExternal(URLFile uf, char *type, Buffer *defaultbuf)  {      Str tmpf, command;      struct mailcap *mcap; @@ -7834,7 +7976,7 @@ doExternal(URLFile uf, char *path, char *type, Buffer **bufp,      char *header, *src = NULL, *ext = uf.ext;      if (!(mcap = searchExtViewer(type))) -	return 0; +	return NULL;      if (mcap->nametemplate) {  	tmpf = unquote_mailcap(mcap->nametemplate, NULL, "", NULL, NULL); @@ -7867,15 +8009,13 @@ doExternal(URLFile uf, char *path, char *type, Buffer **bufp,  	    UFclose(&uf);  	    myExec(command->ptr);  	} -	*bufp = NO_BUFFER; -	return 1; +	return NO_BUFFER;      }      else  #endif      {  	if (save2tmp(uf, tmpf->ptr) < 0) { -	    *bufp = NULL; -	    return 1; +	    return NULL;  	}      }      if (mcap->flags & (MAILCAP_HTMLOUTPUT | MAILCAP_COPIOUSOUTPUT)) { @@ -7918,14 +8058,13 @@ doExternal(URLFile uf, char *path, char *type, Buffer **bufp,  	buf = NO_BUFFER;      }      if (buf && buf != NO_BUFFER) { -	buf->filename = path; -	if (buf->buffername == NULL || buf->buffername[0] == '\0') -	    buf->buffername = conv_from_system(lastFileName(path)); +	if ((buf->buffername == NULL || buf->buffername[0] == '\0') && +	    buf->filename) +	    buf->buffername = conv_from_system(lastFileName(buf->filename));  	buf->edit = mcap->edit;  	buf->mailcap = mcap;      } -    *bufp = buf; -    return 1; +    return buf;  }  static int @@ -264,6 +264,18 @@ extern int REV_LB[];  #define IMG_FLAG_ERROR		2  #define IMG_FLAG_DONT_REMOVE	4 +#define IS_EMPTY_PARSED_URL(pu) ((pu)->scheme == SCM_UNKNOWN && !(pu)->file) +#define SCONF_RESERVED		0 +#define SCONF_SUBSTITUTE_URL	1 +#define SCONF_URL_CHARSET	2 +#define SCONF_NO_REFERER_FROM	3 +#define SCONF_NO_REFERER_TO	4 +#define SCONF_N_FIELD		5 +#define query_SCONF_SUBSTITUTE_URL(pu) ((const char *)querySiteconf(pu, SCONF_SUBSTITUTE_URL)) +#define query_SCONF_URL_CHARSET(pu) ((const wc_ces *)querySiteconf(pu, SCONF_URL_CHARSET)) +#define query_SCONF_NO_REFERER_FROM(pu) ((const int *)querySiteconf(pu, SCONF_NO_REFERER_FROM)) +#define query_SCONF_NO_REFERER_TO(pu) ((const int *)querySiteconf(pu, SCONF_NO_REFERER_TO)) +  /*    * Macros.   */ @@ -562,6 +574,13 @@ typedef struct _DownloadList {  #define INIT_BUFFER_WIDTH ((_INIT_BUFFER_WIDTH > 0) ? _INIT_BUFFER_WIDTH : 0)  #define FOLD_BUFFER_WIDTH (FoldLine ? (INIT_BUFFER_WIDTH + 1) : -1) +struct input_alt_attr { +  int hseq; +  int fid; +  int in; +  Str type, name, value; +}; +  typedef struct {      int pos;      int len; @@ -569,6 +588,7 @@ typedef struct {      long flag;      Anchor anchor;      Str img_alt; +    struct input_alt_attr input_alt;      char fontstat[FONTSTAT_SIZE];      short nobr_level;      Lineprop prev_ctype; @@ -591,6 +611,7 @@ struct readbuffer {      short nobr_level;      Anchor anchor;      Str img_alt; +    struct input_alt_attr input_alt;      char fontstat[FONTSTAT_SIZE];      char fontstat_stack[FONT_STACK_SIZE][FONTSTAT_SIZE];      int fontstat_sp; @@ -972,6 +993,7 @@ global int BackgroundExtViewer init(TRUE);  global int disable_secret_security_check init(FALSE);  global char *passwd_file init(PASSWD_FILE);  global char *pre_form_file init(PRE_FORM_FILE); +global char *siteconf_file init(SITECONF_FILE);  global char *ftppasswd init(NULL);  global int ftppass_hostnamegen init(TRUE);  global int do_download init(FALSE); @@ -196,7 +196,7 @@ formtype(char *typestr)  	if (!strcasecmp(typestr, _formtypetbl[i]))  	    return i;      } -    return FORM_UNKNOWN; +    return FORM_INPUT_TEXT;  }  void @@ -787,7 +787,7 @@ struct pre_form {  static struct pre_form *PreForm = NULL;  static struct pre_form * -add_pre_form(struct pre_form *prev, char *url, char *name, char *action) +add_pre_form(struct pre_form *prev, char *url, Regex *re_url, char *name, char *action)  {      ParsedURL pu;      struct pre_form *new; @@ -796,21 +796,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); -    if (url && *url == '/') { -	int l = strlen(url); -	if (l > 1 && url[l - 1] == '/') -	    new->url = allocStr(url + 1, l - 2); -	else -	    new->url = url + 1; -	new->re_url = newRegex(new->url, FALSE, NULL, NULL); -	if (!new->re_url) -	    new->url = NULL; -    } -    else if (url) { +    if (url && !re_url) {  	parseURL2(url, &pu, NULL);  	new->url = parsedURL2Str(&pu)->ptr; -	new->re_url = NULL;      } +    else +	new->url = url; +    new->re_url = re_url;      new->name = (name && *name) ? name : NULL;      new->action = (action && *action) ? action : NULL;      new->item = NULL; @@ -834,7 +826,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") || -				strcasecmp(checked, "off") +				!strcasecmp(checked, "off")  				|| !strcasecmp(checked, "no")))  	new->checked = 0;      else @@ -875,6 +867,7 @@ loadPreForm(void)  	return;      while (1) {  	char *p, *s, *arg; +	Regex *re_arg;  	line = Strfgets(fp);  	if (line->length == 0) @@ -890,18 +883,20 @@ loadPreForm(void)  	if (*p == '#' || *p == '\0')  	    continue;		/* comment or empty line */  	s = getWord(&p); -	arg = getWord(&p);  	if (!strcmp(s, "url")) { +	    arg = getRegexWord((const char **)&p, &re_arg);  	    if (!arg || !*arg)  		continue;  	    p = getQWord(&p); -	    pf = add_pre_form(pf, arg, NULL, p); +	    pf = add_pre_form(pf, arg, re_arg, NULL, p);  	    pi = pf->item;  	    continue;  	}  	if (!pf)  	    continue; + +	arg = getWord(&p);  	if (!strcmp(s, "form")) {  	    if (!arg || !*arg)  		continue; @@ -913,7 +908,7 @@ loadPreForm(void)  	    }  	    if (pf->item) {  		struct pre_form *prev = pf; -		pf = add_pre_form(prev, "", s, p); +		pf = add_pre_form(prev, "", NULL, s, p);  		/* copy previous URL */  		pf->url = prev->url;  		pf->re_url = prev->re_url; @@ -91,7 +91,8 @@ newFrame(struct parsed_tag *tag, Buffer *buf)      body->baseURL = baseURL(buf);      if (tag) {  	if (parsedtag_get_value(tag, ATTR_SRC, &p)) -	    body->url = url_quote_conv(remove_space(p), buf->document_charset); +	    body->url = url_encode(remove_space(p), body->baseURL, +				   buf->document_charset);  	if (parsedtag_get_value(tag, ATTR_NAME, &p) && *p != '_')  	    body->name = url_quote_conv(p, buf->document_charset);      } @@ -639,7 +640,7 @@ createFrameFile(struct frameset *f, FILE * f1, Buffer *current, int level,  			case HTML_BASE:  			    /* "BASE" is prohibit tag */  			    if (parsedtag_get_value(tag, ATTR_HREF, &q)) { -				q = url_quote_conv(remove_space(q), charset); +				q = url_encode(remove_space(q), NULL, charset);  				parseURL(q, &base, NULL);  			    }  			    if (parsedtag_get_value(tag, ATTR_TARGET, &q)) { @@ -768,8 +769,8 @@ createFrameFile(struct frameset *f, FILE * f1, Buffer *current, int level,  				if (!tag->value[j])  				    break;  				tag->value[j] = -				    url_quote_conv(remove_space(tag->value[j]), -						   charset); +				    url_encode(remove_space(tag->value[j]), +					       &base, charset);  				tag->need_reconstruct = TRUE;  				parseURL2(tag->value[j], &url, &base);  				if (url.scheme == SCM_UNKNOWN || @@ -8,6 +8,7 @@  #include "fm.h"  #include "func.h"  #include "myctype.h" +#include "regex.h"  #include "funcname.c"  #include "functable.c" @@ -434,6 +435,93 @@ getQWord(char **str)      return tmp->ptr;  } +/* This extracts /regex/i or m@regex@i from the given string. + * Then advances *str to the end of regex. + * If the input does not seems to be a regex, this falls back to getQWord(). + *  + * Returns a word (no matter whether regex or not) in the give string. + * If regex_ret is non-NULL, compiles the regex and stores there. + * + * XXX: Actually this is unrelated to func.c. + */ +char * +getRegexWord(const char **str, Regex **regex_ret) +{ +    char *word = NULL; +    const char *p, *headp, *bodyp, *tailp; +    char delimiter; +    int esc; +    int igncase = 0; + +    p = *str; +    SKIP_BLANKS(p); +    headp = p; + +    /* Get the opening delimiter */ +    if (p[0] == 'm' && IS_PRINT(p[1]) && !IS_ALNUM(p[1]) && p[1] != '\\') { +	delimiter = p[1]; +	p += 2; +    } +    else if (p[0] == '/') { +	delimiter = '/'; +	p += 1; +    } +    else { +	goto not_regex; +    } +    bodyp = p; + +    /* Scan the end of the expression */ +    for (esc = 0; *p; ++p) { +	if (esc) { +	    esc = 0; +	} else { +	    if (*p == delimiter) +		break; +	    else if (*p == '\\') +		esc = 1; +	} +    } +    if (!*p && *headp == '/') +	goto not_regex; +    tailp = p; + +    /* Check the modifiers */ +    if (*p == delimiter) { +	while (*++p && !IS_SPACE(*p)) { +	    switch (*p) { +	    case 'i': +		igncase = 1; +		break; +	    } +	    /* ignore unknown modifiers */ +	} +    } + +    /* Save the expression */ +    word = allocStr(headp, p - headp); + +    /* Compile */ +    if (regex_ret) { +	if (*tailp == delimiter) +	    word[tailp - headp] = 0; +	*regex_ret = newRegex(word + (bodyp - headp), igncase, NULL, NULL); +	if (*tailp == delimiter) +	    word[tailp - headp] = delimiter; +    } +    goto last; + +not_regex: +    p = headp; +    word = getQWord((char **)&p); +    if (regex_ret) +	*regex_ret = NULL; + +last: +    *str = p; +    return word; +} +  #ifdef USE_MOUSE  static MouseAction default_mouse_action = {      NULL, @@ -17,7 +17,7 @@ historyBuffer(Hist *hist)  	for (item = hist->list->last; item; item = item->prev) {  	    q = html_quote((char *)item->ptr);  	    if (DecodeURL) -		p = html_quote(url_unquote_conv((char *)item->ptr, 0)); +		p = html_quote(url_decode2((char *)item->ptr, NULL));  	    else  		p = q;  	    Strcat_charp(src, "<li><a href=\""); @@ -56,6 +56,9 @@ unsigned char ALST_INPUT[] =      ATTR_CORE  };  #define MAXA_INPUT      MAXA_CORE + 12 +unsigned char ALST_BUTTON[] = +    { ATTR_TYPE, ATTR_VALUE, ATTR_NAME, ATTR_CORE }; +#define MAXA_BUTTON	MAXA_CORE + 3  unsigned char ALST_TEXTAREA[] =      { ATTR_COLS, ATTR_ROWS, ATTR_NAME, ATTR_READONLY, ATTR_CORE };  #define MAXA_TEXTAREA   MAXA_CORE + 4 @@ -247,24 +250,24 @@ TagInfo TagMAP[MAX_HTMLTAG] = {      {"/bdo", NULL, 0, TFLG_END},	/* 121 HTML_N_BDO */      {"big", ALST_NOP, MAXA_NOP, 0},		/* 122 HTML_BIG */      {"/big", NULL, 0, TFLG_END},	/* 123 HTML_N_BIG */ -    {"button", ALST_NOP, MAXA_NOP, 0},		/* 124 HTML_BUTTON */ -    {"fieldset", ALST_NOP, MAXA_NOP, 0},	        /* 125 HTML_FIELDSET */ -    {"/fieldset", NULL, 0, TFLG_END},	/* 126 HTML_N_FIELDSET */ -    {"iframe", ALST_NOP, MAXA_NOP, 0},		/* 127 HTML_IFRAME */ -    {"label", ALST_NOP, MAXA_NOP, 0}, 		/* 128 HTML_LABEL */ -    {"/label", NULL, 0, TFLG_END},	/* 129 HTML_N_LABEL */ -    {"legend", ALST_NOP, MAXA_NOP, 0},		/* 130 HTML_LEGEND */ -    {"/legend", NULL, 0, TFLG_END},	/* 131 HTML_N_LEGEND */ -    {"noscript", ALST_NOP, MAXA_NOP, 0},	        /* 132 HTML_NOSCRIPT */ -    {"/noscript", NULL, 0, TFLG_END},	/* 133 HTML_N_NOSCRIPT */ -    {"object", ALST_NOP, MAXA_NOP, 0},		/* 134 HTML_OBJECT */ -    {"optgroup", ALST_NOP, MAXA_NOP, 0},	        /* 135 HTML_OPTGROUP */ -    {"/optgroup", NULL, 0, TFLG_END},	/* 136 HTML_N_OPTGROUP */ -    {"param", ALST_NOP, MAXA_NOP, 0},		/* 137 HTML_PARAM */ -    {"small", ALST_NOP, MAXA_NOP, 0}, 		/* 138 HTML_SMALL */ -    {"/small", NULL, 0, TFLG_END},	/* 139 HTML_N_SMALL */ +    {"button", ALST_BUTTON, MAXA_BUTTON, 0},	/* 124 HTML_BUTTON */ +    {"/button", NULL, 0, TFLG_END},	/* 125 HTML_N_BUTTON */ +    {"fieldset", ALST_NOP, MAXA_NOP, 0},	/* 126 HTML_FIELDSET */ +    {"/fieldset", NULL, 0, TFLG_END},	/* 127 HTML_N_FIELDSET */ +    {"iframe", ALST_NOP, MAXA_NOP, 0},		/* 128 HTML_IFRAME */ +    {"label", ALST_NOP, MAXA_NOP, 0}, 		/* 129 HTML_LABEL */ +    {"/label", NULL, 0, TFLG_END},	/* 130 HTML_N_LABEL */ +    {"legend", ALST_NOP, MAXA_NOP, 0},		/* 131 HTML_LEGEND */ +    {"/legend", NULL, 0, TFLG_END},	/* 132 HTML_N_LEGEND */ +    {"noscript", ALST_NOP, MAXA_NOP, 0},	        /* 133 HTML_NOSCRIPT */ +    {"/noscript", NULL, 0, TFLG_END},	/* 134 HTML_N_NOSCRIPT */ +    {"object", ALST_NOP, MAXA_NOP, 0},		/* 135 HTML_OBJECT */ +    {"optgroup", ALST_NOP, MAXA_NOP, 0},	        /* 136 HTML_OPTGROUP */ +    {"/optgroup", NULL, 0, TFLG_END},	/* 137 HTML_N_OPTGROUP */ +    {"param", ALST_NOP, MAXA_NOP, 0},		/* 138 HTML_PARAM */ +    {"small", ALST_NOP, MAXA_NOP, 0}, 		/* 139 HTML_SMALL */ +    {"/small", NULL, 0, TFLG_END},	/* 140 HTML_N_SMALL */ -    {NULL, NULL, 0, 0},		/* 140 Undefined */      {NULL, NULL, 0, 0},		/* 141 Undefined */      {NULL, NULL, 0, 0},		/* 142 Undefined */      {NULL, NULL, 0, 0},		/* 143 Undefined */ @@ -214,21 +214,22 @@ typedef struct {  #define HTML_BIG        122  #define HTML_N_BIG      123  #define HTML_BUTTON     124 -#define HTML_FIELDSET   125 -#define HTML_N_FIELDSET 126 -#define HTML_IFRAME     127 -#define HTML_LABEL      128 -#define HTML_N_LABEL    129 -#define HTML_LEGEND     130 -#define HTML_N_LEGEND   131 -#define HTML_NOSCRIPT   132 -#define HTML_N_NOSCRIPT 133 -#define HTML_OBJECT     134 -#define HTML_OPTGROUP   135 -#define HTML_N_OPTGROUP 136 -#define HTML_PARAM      137 -#define HTML_SMALL      138 -#define HTML_N_SMALL    139 +#define HTML_N_BUTTON   125 +#define HTML_FIELDSET   126 +#define HTML_N_FIELDSET 127 +#define HTML_IFRAME     128 +#define HTML_LABEL      129 +#define HTML_N_LABEL    130 +#define HTML_LEGEND     131 +#define HTML_N_LEGEND   132 +#define HTML_NOSCRIPT   133 +#define HTML_N_NOSCRIPT 134 +#define HTML_OBJECT     135 +#define HTML_OPTGROUP   136 +#define HTML_N_OPTGROUP 137 +#define HTML_PARAM      138 +#define HTML_SMALL      139 +#define HTML_N_SMALL    140     /* pseudo tag */  #define HTML_SELECT_INT     160 @@ -357,6 +357,20 @@ strcasemstr(char *str, char *srch[], char **ret_ptr)      return -1;  } +int +strmatchlen(const char *s1, const char *s2, int maxlen) +{ +    int i; + +    /* To allow the maxlen to be negatie (infinity), +     * compare by "!=" instead of "<=". */ +    for (i = 0; i != maxlen; ++i) { +	if (!s1[i] || !s2[i] || s1[i] != s2[i]) +	    break; +    } +    return i; +} +  char *  remove_space(char *str)  { @@ -52,6 +52,7 @@ extern int strncasecmp(const char *s1, const char *s2, size_t n);  extern char *strcasestr(const char *s1, const char *s2);  #endif  extern int strcasemstr(char *str, char *srch[], char **ret_ptr); +int strmatchlen(const char *s1, const char *s2, int maxlen);  extern char *remove_space(char *str);  extern int non_null(char *s);  extern void cleanup_line(Str s, int mode); @@ -22,8 +22,8 @@  static void basic_close(int *handle);  static int basic_read(int *handle, char *buf, int len); -static void file_close(struct file_handle *handle); -static int file_read(struct file_handle *handle, char *buf, int len); +static void file_close(struct io_file_handle *handle); +static int file_read(struct io_file_handle *handle, char *buf, int len);  static int str_read(Str handle, char *buf, int len); @@ -114,7 +114,7 @@ newFileStream(FILE * f, void (*closep) ())      stream = New(union input_stream);      init_base_stream(&stream->base, STREAM_BUF_SIZE);      stream->file.type = IST_FILE; -    stream->file.handle = New(struct file_handle); +    stream->file.handle = New(struct io_file_handle);      stream->file.handle->f = f;      if (closep)  	stream->file.handle->close = closep; @@ -658,13 +658,13 @@ basic_read(int *handle, char *buf, int len)  }  static void -file_close(struct file_handle *handle) +file_close(struct io_file_handle *handle)  {      handle->close(handle->f);  }  static int -file_read(struct file_handle *handle, char *buf, int len) +file_read(struct io_file_handle *handle, char *buf, int len)  {      return fread(buf, 1, len, handle->f);  } @@ -20,7 +20,7 @@ struct stream_buffer {  typedef struct stream_buffer *StreamBuffer; -struct file_handle { +struct io_file_handle {      FILE *f;      void (*close) ();  }; @@ -53,7 +53,7 @@ struct base_stream {  struct file_stream {      struct stream_buffer stream; -    struct file_handle *handle; +    struct io_file_handle *handle;      char type;      char iseos;      int (*read) (); @@ -91,7 +91,7 @@ unsigned char EscBKeymap[128] = {      /*  0       1       2       3       4       5       6       7        */      nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd,      /*  8       9       :       ;       <       =       >       ?        */ -    nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, +    nulcmd, nulcmd, nulcmd, nulcmd, sgrmouse, nulcmd, nulcmd, nulcmd,      /*  @       A       B       C       D       E       F       G        */      nulcmd, movU, movD, movR, movL, nulcmd, goLineL, pgFore,      /*  H       I       J       K       L       M       N       O        */ @@ -1026,7 +1026,7 @@ _prev(void)  	strCurrentBuf = strBuf;      }      if (DecodeURL && (cm_mode & CPL_URL) ) -	p = url_unquote_conv(p, 0); +	p = url_decode2(p, NULL);      strBuf = Strnew_charp(p);      CLen = CPos = setStrType(strBuf, strProp);      offset = 0; @@ -1045,7 +1045,7 @@ _next(void)      p = nextHist(hist);      if (p) {  	if (DecodeURL && (cm_mode & CPL_URL) ) -	    p = url_unquote_conv(p, 0); +	    p = url_decode2(p, NULL);  	strBuf = Strnew_charp(p);      }      else { @@ -200,10 +200,12 @@ fusage(FILE * f, int err)  #ifdef USE_M17N      fprintf(f, "    -I charset       document charset\n");      fprintf(f, "    -O charset       display/output charset\n"); +#if 0				/* use -O{s|j|e} instead */      fprintf(f, "    -e               EUC-JP\n");      fprintf(f, "    -s               Shift_JIS\n");      fprintf(f, "    -j               JIS\n");  #endif +#endif      fprintf(f, "    -B               load bookmark\n");      fprintf(f, "    -bookmark file   specify bookmark file\n");      fprintf(f, "    -T type          specify content-type\n"); @@ -248,7 +250,11 @@ fusage(FILE * f, int err)  #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"); +#if 1				/* pager requires -s */ +    fprintf(f, "    -s               squeeze multiple blank lines\n"); +#else      fprintf(f, "    -S               squeeze multiple blank lines\n"); +#endif      fprintf(f, "    -W               toggle wrap search mode\n");      fprintf(f, "    -X               don't use termcap init/deinit\n");      fprintf(f, @@ -311,7 +317,11 @@ wrap_GC_warn_proc(char *msg, GC_word arg)  	    lock = 0;  	}      } +#if GC_VERSION_MAJOR >= 7 && GC_VERSION_MINOR >= 2 +    else if (orig_GC_warn_proc = GC_get_warn_proc()) +#else      else if (orig_GC_warn_proc) +#endif  	orig_GC_warn_proc(msg, arg);      else  	fprintf(stderr, msg, (unsigned long)arg); @@ -530,12 +540,14 @@ main(int argc, char **argv, char **envp)  		    PagerMax = atoi(argv[i]);  	    }  #ifdef USE_M17N +#if 0				/* use -O{s|j|e} instead */  	    else if (!strcmp("-s", argv[i]))  		DisplayCharset = WC_CES_SHIFT_JIS;  	    else if (!strcmp("-j", argv[i]))  		DisplayCharset = WC_CES_ISO_2022_JP;  	    else if (!strcmp("-e", argv[i]))  		DisplayCharset = WC_CES_EUC_JP; +#endif  	    else if (!strncmp("-I", argv[i], 2)) {  		if (argv[i][2] != '\0')  		    p = argv[i] + 2; @@ -703,7 +715,11 @@ main(int argc, char **argv, char **envp)  		accept_cookie = TRUE;  	    }  #endif				/* USE_COOKIE */ +#if 1				/* pager requires -s */ +	    else if (!strcmp("-s", argv[i])) +#else  	    else if (!strcmp("-S", argv[i])) +#endif  		squeezeBlankLine = TRUE;  	    else if (!strcmp("-X", argv[i]))  		Do_not_use_ti_te = TRUE; @@ -833,7 +849,11 @@ main(int argc, char **argv, char **envp)      mySignal(SIGPIPE, SigPipe);  #endif +#if GC_VERSION_MAJOR >= 7 && GC_VERSION_MINOR >= 2 +    GC_set_warn_proc(wrap_GC_warn_proc); +#else      orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc); +#endif      err_msg = Strnew();      if (load_argc == 0) {  	/* no URL specified */ @@ -894,12 +914,17 @@ main(int argc, char **argv, char **envp)  	if (i >= 0) {  	    SearchHeader = search_header;  	    DefaultType = default_type; +	    char *url; +	     +	    url = load_argv[i]; +	    if (getURLScheme(&url) == SCM_MISSING && !ArgvIsURL) +		url = file_to_url(load_argv[i]); +	    else +		url = url_encode(conv_from_system(load_argv[i]), NULL, 0);  	    if (w3m_dump == DUMP_HEAD) {  		request = New(FormList);  		request->method = FORM_METHOD_HEAD; -		newbuf = -		    loadGeneralFile(load_argv[i], NULL, NO_REFERER, 0, -				    request); +		newbuf = loadGeneralFile(url, NULL, NO_REFERER, 0, request);  	    }  	    else {  		if (post_file && i == 0) { @@ -928,9 +953,7 @@ main(int argc, char **argv, char **envp)  		else {  		    request = NULL;  		} -		newbuf = -		    loadGeneralFile(load_argv[i], NULL, NO_REFERER, 0, -				    request); +		newbuf = loadGeneralFile(url, NULL, NO_REFERER, 0, request);  	    }  	    if (newbuf == NULL) {  		/* FIXME: gettextize? */ @@ -945,7 +968,7 @@ main(int argc, char **argv, char **envp)  		break;  	    case SCM_LOCAL:  	    case SCM_LOCAL_CGI: -		unshiftHist(LoadHist, conv_from_system(load_argv[i])); +		unshiftHist(LoadHist, url);  	    default:  		pushHashHist(URLHist, parsedURL2Str(&newbuf->currentURL)->ptr);  		break; @@ -1246,6 +1269,12 @@ dump_extra(Buffer *buf)  #endif  } +static int +cmp_anchor_hseq(const void *a, const void *b) +{ +    return (*((const Anchor **) a))->hseq - (*((const Anchor **) b))->hseq; +} +  static void  do_dump(Buffer *buf)  { @@ -1266,18 +1295,20 @@ do_dump(Buffer *buf)  	int i;  	saveBuffer(buf, stdout, FALSE);  	if (displayLinkNumber && buf->href) { +	    int nanchor = buf->href->nanchor;  	    printf("\nReferences:\n\n"); -	    for (i = 0; i < buf->href->nanchor; i++) { -	        ParsedURL pu; -	        static Str s = NULL; -		if (buf->href->anchors[i].slave) +	    Anchor **in_order = New_N(Anchor *, buf->href->nanchor); +	    for (i = 0; i < nanchor; i++) +		in_order[i] = buf->href->anchors + i; +	    qsort(in_order, nanchor, sizeof(Anchor *), cmp_anchor_hseq); +	    for (i = 0; i < nanchor; i++) { +		ParsedURL pu; +		char *url; +		if (in_order[i]->slave)  		    continue; -	        parseURL2(buf->href->anchors[i].url, &pu, baseURL(buf)); -	        s = parsedURL2Str(&pu); -    	        if (DecodeURL) -		    s = Strnew_charp(url_unquote_conv -				     (s->ptr, Currentbuf->document_charset)); -	        printf("[%d] %s\n", buf->href->anchors[i].hseq + 1, s->ptr); +		parseURL2(in_order[i]->url, &pu, baseURL(buf)); +		url = url_decode2(parsedURL2Str(&pu)->ptr, Currentbuf); +		printf("[%d] %s\n", in_order[i]->hseq + 1, url);  	    }  	}      } @@ -2261,7 +2292,7 @@ DEFUN(movR1, MOVE_RIGHT1,  static wc_uint32  getChar(char *p)  { -    return wc_any_to_ucs(wtf_parse1(&p)); +    return wc_any_to_ucs(wtf_parse1((wc_uchar **)&p));  }  static int @@ -2804,12 +2835,15 @@ loadLink(char *url, char *target, char *referer, FormList *request)      union frameset_element *f_element = NULL;      int flag = 0;      ParsedURL *base, pu; +    const int *no_referer_ptr;      message(Sprintf("loading %s", url)->ptr, 0, 0);      refresh(); +    no_referer_ptr = query_SCONF_NO_REFERER_FROM(&Currentbuf->currentURL);      base = baseURL(Currentbuf); -    if (base == NULL || +    if ((no_referer_ptr && *no_referer_ptr) || +	base == NULL ||  	base->scheme == SCM_LOCAL || base->scheme == SCM_LOCAL_CGI)  	referer = NO_REFERER;      if (referer == NULL) @@ -4055,6 +4089,7 @@ goURL0(char *prompt, int relative)      char *url, *referer;      ParsedURL p_url, *current;      Buffer *cur_buf = Currentbuf; +    const int *no_referer_ptr;      url = searchKeyData();      if (url == NULL) { @@ -4064,11 +4099,8 @@ goURL0(char *prompt, int relative)  	current = baseURL(Currentbuf);  	if (current) {  	    char *c_url = parsedURL2Str(current)->ptr; -	    if (DefaultURLString == DEFAULT_URL_CURRENT) { -		url = c_url; -		if (DecodeURL) -		    url = url_unquote_conv(url, 0); -	    } +	    if (DefaultURLString == DEFAULT_URL_CURRENT) +		url = url_decode2(c_url, NULL);  	    else  		pushHist(hist, c_url);  	} @@ -4077,11 +4109,8 @@ 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) { -		url = a_url; -		if (DecodeURL) -		    url = url_unquote_conv(url, Currentbuf->document_charset); -	    } +	    if (DefaultURLString == DEFAULT_URL_LINK) +		url = url_decode2(a_url, Currentbuf);  	    else  		pushHist(hist, a_url);  	} @@ -4089,15 +4118,22 @@ goURL0(char *prompt, int relative)  	if (url != NULL)  	    SKIP_BLANKS(url);      } -#ifdef USE_M17N -    if (url != NULL) { -	if ((relative || *url == '#') && Currentbuf->document_charset) -	    url = wc_conv_strict(url, InnerCharset, -				 Currentbuf->document_charset)->ptr; +    if (relative) { +	no_referer_ptr = query_SCONF_NO_REFERER_FROM(&Currentbuf->currentURL); +	current = baseURL(Currentbuf); +	if ((no_referer_ptr && *no_referer_ptr) || +	    current == NULL || +	    current->scheme == SCM_LOCAL || current->scheme == SCM_LOCAL_CGI) +	    referer = NO_REFERER;  	else -	    url = conv_to_system(url); +	    referer = parsedURL2Str(&Currentbuf->currentURL)->ptr; +	url = url_encode(url, current, Currentbuf->document_charset); +    } +    else { +	current = NULL; +	referer = NULL; +	url = url_encode(url, NULL, 0);      } -#endif      if (url == NULL || *url == '\0') {  	displayBuffer(Currentbuf, B_FORCE_REDRAW);  	return; @@ -4106,14 +4142,6 @@ goURL0(char *prompt, int relative)  	gotoLabel(url + 1);  	return;      } -    if (relative) { -	current = baseURL(Currentbuf); -	referer = parsedURL2Str(&Currentbuf->currentURL)->ptr; -    } -    else { -	current = NULL; -	referer = NULL; -    }      parseURL2(url, &p_url, current);      pushHashHist(URLHist, parsedURL2Str(&p_url)->ptr);      cmd_loadURL(url, current, referer, NULL); @@ -4510,8 +4538,7 @@ _peekURL(int only_img)  	s = parsedURL2Str(&pu);      }      if (DecodeURL) -	s = Strnew_charp(url_unquote_conv -			 (s->ptr, Currentbuf->document_charset)); +	s = Strnew_charp(url_decode2(s->ptr, Currentbuf));  #ifdef USE_M17N      s = checkType(s, &pp, NULL);      p = NewAtom_N(Lineprop, s->length); @@ -4570,7 +4597,7 @@ DEFUN(curURL, PEEK, "Peek current URL")  	offset = 0;  	s = currentURL();  	if (DecodeURL) -	    s = Strnew_charp(url_unquote_conv(s->ptr, 0)); +	    s = Strnew_charp(url_decode2(s->ptr, NULL));  #ifdef USE_M17N  	s = checkType(s, &pp, NULL);  	p = NewAtom_N(Lineprop, s->length); @@ -5398,6 +5425,58 @@ DEFUN(mouse, MOUSE, "mouse operation")      process_mouse(btn, x, y);  } +DEFUN(sgrmouse, SGRMOUSE, "SGR 1006 mouse operation") +{ +    int btn = 0, x = 0, y = 0; +    unsigned char c; + +    do { +	c = getch(); +	if (IS_DIGIT(c)) +	    btn = btn * 10 + c - '0'; +	else if (c == ';') +	    break; +	else +	    return; +    } while (1); + +#if defined(__CYGWIN__) && CYGWIN_VERSION_DLL_MAJOR < 1005 +    if (cygwin_mouse_btn_swapped) { +	if (btn == MOUSE_BTN2_DOWN) +	    btn = MOUSE_BTN3_DOWN; +	else if (btn == MOUSE_BTN3_DOWN) +	    btn = MOUSE_BTN2_DOWN; +    }; +#endif + +    do { +	c = getch(); +	if (IS_DIGIT(c)) +	    x = x * 10 + c - '0'; +	else if (c == ';') +	    break; +	else +	  return; +    } while (1); + +    do { +	c = getch(); +	if (IS_DIGIT(c)) +	    y = y * 10 + c - '0'; +	else if (c == 'M') +	    break; +	else if (c == 'm') { +	    btn |= 3; +	    break; +	} else +    return; +    } while (1); + +    if (x < 0 || x >= COLS || y < 0 || y > LASTLINE) +	return; +    process_mouse(btn, x, y); +} +  #ifdef USE_GPM  int  gpm_process_mouse(Gpm_Event * event, void *data) @@ -279,7 +279,7 @@ follow_map_panel(Buffer *buf, char *name)  	p = parsedURL2Str(&pu)->ptr;  	q = html_quote(p);  	if (DecodeURL) -	    p = html_quote(url_unquote_conv(p, buf->document_charset)); +	    p = html_quote(url_decode2(p, buf));  	else  	    p = q;  	Strcat_m_charp(mappage, "<tr valign=top><td><a href=\"", q, "\">", @@ -417,10 +417,7 @@ append_map_info(Buffer *buf, Str tmp, FormItemList *fi)  	    continue;  	parseURL2(a->url, &pu, baseURL(buf));  	q = html_quote(parsedURL2Str(&pu)->ptr); -	if (DecodeURL) -	    p = html_quote(url_unquote_conv(a->url, buf->document_charset)); -	else -	    p = html_quote(a->url); +	p = html_quote(url_decode2(a->url, buf));  	Strcat_m_charp(tmp, "<tr valign=top><td>  <td><a href=\"",  		       q, "\">",  		       html_quote(*a->alt ? a->alt : mybasename(a->url)), @@ -457,10 +454,8 @@ append_link_info(Buffer *buf, Str html, LinkList * link)  	    Strcat_charp(html, "[Rev]");  	if (!l->url)  	    url = "(empty)"; -	else if (DecodeURL) -	    url = html_quote(url_unquote_conv(l->url, buf->document_charset));  	else -	    url = html_quote(l->url); +	    url = html_quote(url_decode2(l->url, buf));  	Strcat_m_charp(html, "<td>", url, NULL);  	if (l->ctype)  	    Strcat_m_charp(html, " (", html_quote(l->ctype), ")", NULL); @@ -498,8 +493,7 @@ append_frame_info(Buffer *buf, Str html, struct frameset *set, int level)  		    Strcat_charp(html, p);  		}  		if (DecodeURL) -		    p = html_quote(url_unquote_conv(frame.body->url, -						    buf->document_charset)); +		    p = html_quote(url_decode2(frame.body->url, buf));  		else  		    p = q;  		Strcat_m_charp(html, " ", p, "</a></pre_int><br>\n", NULL); @@ -550,9 +544,7 @@ page_info_panel(Buffer *buf)  #ifdef USE_M17N      Strcat_charp(tmp, "<form method=internal action=charset>");  #endif -    p = parsedURL2Str(&buf->currentURL)->ptr; -    if (DecodeURL) -	p = url_unquote_conv(p, 0); +    p = url_decode2(parsedURL2Str(&buf->currentURL)->ptr, NULL);      Strcat_m_charp(tmp, "<table cellpadding=0>",  		   "<tr valign=top><td nowrap>Title<td>",  		   html_quote(buf->buffername), @@ -589,7 +581,7 @@ page_info_panel(Buffer *buf)  	p = parsedURL2Str(&pu)->ptr;  	q = html_quote(p);  	if (DecodeURL) -	    p = html_quote(url_unquote_conv(p, buf->document_charset)); +	    p = html_quote(url_decode2(p, buf));  	else  	    p = q;  	Strcat_m_charp(tmp, @@ -602,7 +594,7 @@ page_info_panel(Buffer *buf)  	p = parsedURL2Str(&pu)->ptr;  	q = html_quote(p);  	if (DecodeURL) -	    p = html_quote(url_unquote_conv(p, buf->document_charset)); +	    p = html_quote(url_decode2(p, buf));  	else  	    p = q;  	Strcat_m_charp(tmp, @@ -613,10 +605,7 @@ page_info_panel(Buffer *buf)      if (a != NULL) {  	FormItemList *fi = (FormItemList *)a->url;  	p = form2str(fi); -	if (DecodeURL) -	    p = html_quote(url_unquote_conv(p, buf->document_charset)); -	else -	    p = html_quote(p); +	p = html_quote(url_decode2(p, buf));  	Strcat_m_charp(tmp,  		       "<tr valign=top><td nowrap>Method/type of current form <td>",  		       p, NULL); @@ -1365,9 +1365,7 @@ initSelectMenu(void)  		break;  	    default:  		Strcat_char(str, ' '); -		p = parsedURL2Str(&buf->currentURL)->ptr; -		if (DecodeURL) -		    p = url_unquote_conv(p, 0); +		p = url_decode2(parsedURL2Str(&buf->currentURL)->ptr, NULL);  		Strcat_charp(str, p);  		break;  	    } @@ -1513,9 +1511,7 @@ initSelTabMenu(void)  	    case SCM_MISSING:  		break;  	    default: -		p = parsedURL2Str(&buf->currentURL)->ptr; -		if (DecodeURL) -		    p = url_unquote_conv(p, 0); +		p = url_decode2(parsedURL2Str(&buf->currentURL)->ptr, NULL);  		Strcat_charp(str, p);  		break;  	    } @@ -1845,10 +1841,8 @@ link_menu(Buffer *buf)  	    Strcat_charp(str, " ");  	if (!l->url)  	    p = ""; -	else if (DecodeURL) -	    p = url_unquote_conv(l->url, buf->document_charset);  	else -	    p = l->url; +	    p = url_decode2(l->url, buf);  	Strcat_charp(str, p);  	label[i] = str->ptr;  	if (len < str->length) @@ -407,6 +407,10 @@ msgid "File for setting form on loading"  msgstr "文書読込時のフォーム設定用ファイル"  #: rc.c:149 +msgid "File for preferences for each site" +msgstr "サイト別設定のファイル" + +#: rc.c:149  msgid "Password for anonymous FTP (your mail address)"  msgstr "FTPのパスワード(普通は自分のmail addressを使う)" @@ -162,6 +162,24 @@ extern Str searchURIMethods(ParsedURL *pu);  extern void chkExternalURIBuffer(Buffer *buf);  #endif  extern ParsedURL *schemeToProxy(int scheme); +#ifdef USE_M17N +extern wc_ces url_to_charset(const char *url, const ParsedURL *base, +			     wc_ces doc_charset); +extern char *url_encode(const char *url, const ParsedURL *base, +			wc_ces doc_charset); +#if 0 +extern char *url_decode(const char *url, const ParsedURL *base, +			wc_ces doc_charset); +#endif +extern char *url_decode2(const char *url, const Buffer *buf); +#else /* !defined(USE_M17N) */ +#define url_encode(url, base, cs) url_quote(url) +extern char *url_decode0(const char *url); +#if 0 +#define url_decode(url, base, cs) url_decode0(url) +#endif +#define url_decode2(url, buf) url_decode0(url) +#endif /* !defined(USE_M17N) */  extern void examineFile(char *path, URLFile *uf);  extern char *acceptableEncoding();  extern int dir_exist(char *path); @@ -180,7 +198,6 @@ extern void push_symbol(Str str, char symbol, int width, int n);  #ifdef USE_UNICODE  extern void update_utf8_symbol(void);  #endif -extern Buffer *loadFile(char *path);  extern Buffer *loadGeneralFile(char *path, ParsedURL *current, char *referer,  			       int flag, FormList *request);  extern int is_boundary(unsigned char *, unsigned char *); @@ -207,6 +224,8 @@ extern int getImageSize(ImageCache * cache);  extern Str process_img(struct parsed_tag *tag, int width);  extern Str process_anchor(struct parsed_tag *tag, char *tagbuf);  extern Str process_input(struct parsed_tag *tag); +extern Str process_button(struct parsed_tag *tag); +extern Str process_n_button(void);  extern Str process_select(struct parsed_tag *tag);  extern Str process_n_select(void);  extern void feed_select(char *str); @@ -249,8 +268,7 @@ extern Buffer *openPagerBuffer(InputStream stream, Buffer *buf);  extern Buffer *openGeneralPagerBuffer(InputStream stream);  extern Line *getNextPage(Buffer *buf, int plen);  extern int save2tmp(URLFile uf, char *tmpf); -extern int doExternal(URLFile uf, char *path, char *type, Buffer **bufp, -		      Buffer *defaultbuf); +extern Buffer *doExternal(URLFile uf, char *type, Buffer *defaultbuf);  extern int _doFileCopy(char *tmpf, char *defstr, int download);  #define doFileCopy(tmpf, defstr) _doFileCopy(tmpf, defstr, FALSE);  extern int doFileMove(char *tmpf, char *defstr); @@ -507,7 +525,7 @@ extern ParsedURL *baseURL(Buffer *buf);  extern int openSocket(char *hostname, char *remoteport_name,  		      unsigned short remoteport_num);  extern void parseURL(char *url, ParsedURL *p_url, ParsedURL *current); -extern void copyParsedURL(ParsedURL *p, ParsedURL *q); +extern void copyParsedURL(ParsedURL *p, const ParsedURL *q);  extern void parseURL2(char *url, ParsedURL *pu, ParsedURL *current);  extern Str parsedURL2Str(ParsedURL *pu);  extern int getURLScheme(char **url); @@ -611,6 +629,7 @@ extern char *confFile(char *base);  extern char *auxbinFile(char *base);  extern char *libFile(char *base);  extern char *helpFile(char *base); +extern const void *querySiteconf(const ParsedURL *query_pu, int field);  extern Str localCookie(void);  extern Str loadLocalDir(char *dirname);  extern void set_environ(char *var, char *value); @@ -683,6 +702,7 @@ extern void reMark(void);  #ifdef USE_MOUSE  extern void mouse(void); +extern void sgrmouse(void);  extern void mouse_init(void);  extern void mouse_end(void);  extern void mouse_active(void); @@ -723,6 +743,8 @@ extern int getKey(char *s);  extern char *getKeyData(int key);  extern char *getWord(char **str);  extern char *getQWord(char **str); +struct regex; +extern char *getRegexWord(const char **str, struct regex **regex_ret);  #ifdef USE_MOUSE  extern void initMouseAction(void);  #endif @@ -9,7 +9,9 @@  #include <errno.h>  #include "parsetag.h"  #include "local.h" +#include "regex.h"  #include <stdlib.h> +#include <stddef.h>  struct param_ptr {      char *name; @@ -146,6 +148,7 @@ static int OptionEncode = FALSE;  #define CMT_DISABLE_SECRET_SECURITY_CHECK	N_("Disable secret file security check")  #define CMT_PASSWDFILE	 N_("Password file")  #define CMT_PRE_FORM_FILE	N_("File for setting form on loading") +#define CMT_SITECONF_FILE	N_("File for preferences for each site")  #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") @@ -619,6 +622,8 @@ struct param_ptr params9[] = {       CMT_FTPPASS_HOSTNAMEGEN, NULL},      {"pre_form_file", P_STRING, PI_TEXT, (void *)&pre_form_file,       CMT_PRE_FORM_FILE, NULL}, +    {"siteconf_file", P_STRING, PI_TEXT, (void *)&siteconf_file, +     CMT_SITECONF_FILE, NULL},      {"user_agent", P_STRING, PI_TEXT, (void *)&UserAgent, CMT_USERAGENT, NULL},      {"no_referer", P_INT, PI_ONOFF, (void *)&NoSendReferer, CMT_NOSENDREFERER,       NULL}, @@ -1173,6 +1178,8 @@ do_mkdir(const char *dir, long mode)  #endif				/* not __MINW32_VERSION */  #endif				/* not __EMX__ */ +static void loadSiteconf(void); +  void  sync_with_option(void)  { @@ -1199,6 +1206,7 @@ sync_with_option(void)  #endif      loadPasswd();      loadPreForm(); +    loadSiteconf();      if (AcceptLang == NULL || *AcceptLang == '\0') {  	/* TRANSLATORS:  @@ -1556,3 +1564,217 @@ helpFile(char *base)      return expandPath(Strnew_m_charp(w3m_help_dir(), "/", base, NULL)->ptr);  }  #endif + +/* siteconf */ +/* + * url "<url>"|/<re-url>/|m@<re-url>@i [exact] + * substitute_url "<destination-url>" + * url_charset <charset> + * no_referer_from on|off + * no_referer_to on|off + *  + * The last match wins. + */ + +struct siteconf_rec { +    struct siteconf_rec *next; +    char *url; +    Regex *re_url; +    int url_exact; +    unsigned char mask[(SCONF_N_FIELD + 7) >> 3]; + +    char *substitute_url; +#ifdef USE_M17N +    wc_ces url_charset; +#endif +    int no_referer_from; +    int no_referer_to; +}; +#define SCONF_TEST(ent, f) ((ent)->mask[(f)>>3] & (1U<<((f)&7))) +#define SCONF_SET(ent, f) ((ent)->mask[(f)>>3] |= (1U<<((f)&7))) +#define SCONF_CLEAR(ent, f) ((ent)->mask[(f)>>3] &= ~(1U<<((f)&7))) + +static struct siteconf_rec *siteconf_head = NULL; +static struct siteconf_rec *newSiteconfRec(void); + +static struct siteconf_rec * +newSiteconfRec(void) +{ +    struct siteconf_rec *ent; + +    ent = New(struct siteconf_rec); +    ent->next = NULL; +    ent->url = NULL; +    ent->re_url = NULL; +    ent->url_exact = FALSE; +    memset(ent->mask, 0, sizeof(ent->mask)); + +    ent->substitute_url = NULL; +#ifdef USE_M17N +    ent->url_charset = 0; +#endif +    return ent; +} + +static void +loadSiteconf(void) +{ +    char *efname; +    FILE *fp; +    Str line; +    struct siteconf_rec *ent = NULL; + +    siteconf_head = NULL; +    if (!siteconf_file) +	return; +    if ((efname = expandPath(siteconf_file)) == NULL) +	return; +    fp = fopen(efname, "r"); +    if (fp == NULL) +	return; +    while (line = Strfgets(fp), line->length > 0) { +	char *p, *s; + +	Strchop(line); +	p = line->ptr; +	SKIP_BLANKS(p); +	if (*p == '#' || *p == '\0') +	    continue; +	s = getWord(&p); + +	/* The "url" begins a new record. */ +	if (strcmp(s, "url") == 0) { +	    char *url, *opt; +	    struct siteconf_rec *newent; + +	    /* First, register the current record. */ +	    if (ent) { +		ent->next = siteconf_head; +		siteconf_head = ent; +		ent = NULL; +	    } + +	    /* Second, create a new record. */ +	    newent = newSiteconfRec(); +	    url = getRegexWord((const char **)&p, &newent->re_url); +	    opt = getWord(&p); +	    SKIP_BLANKS(p); +	    if (!newent->re_url) { +		ParsedURL pu; +		if (!url || !*url) +		    continue; +		parseURL2(url, &pu, NULL); +		newent->url = parsedURL2Str(&pu)->ptr; +	    } +	    /* If we have an extra or unknown option, ignore this record +	     * for future extensions. */ +	    if (strcmp(opt, "exact") == 0) { +		newent->url_exact = TRUE; +	    } +	    else if (*opt != 0) +		    continue; +	    if (*p) +		continue; +	    ent = newent; +	    continue; +	} + +	/* If the current record is broken, skip to the next "url". */ +	if (!ent) +	    continue; + +	/* Fill the new record. */ +	if (strcmp(s, "substitute_url") == 0) { +	    ent->substitute_url = getQWord(&p); +	    SCONF_SET(ent, SCONF_SUBSTITUTE_URL); +	} +#ifdef USE_M17N +	else if (strcmp(s, "url_charset") == 0) { +	    char *charset = getWord(&p); +	    ent->url_charset = (charset && *charset) ? +		wc_charset_to_ces(charset) : 0; +	    SCONF_SET(ent, SCONF_URL_CHARSET); +	} +#endif /* USE_M17N */ +	else if (strcmp(s, "no_referer_from") == 0) { +	    ent->no_referer_from = str_to_bool(getWord(&p), 0); +	    SCONF_SET(ent, SCONF_NO_REFERER_FROM); +	} +	else if (strcmp(s, "no_referer_to") == 0) { +	    ent->no_referer_to = str_to_bool(getWord(&p), 0); +	    SCONF_SET(ent, SCONF_NO_REFERER_TO); +	} +    } +    if (ent) { +	ent->next = siteconf_head; +	siteconf_head = ent; +	ent = NULL; +    } +    fclose(fp); +} + +const void * +querySiteconf(const ParsedURL *query_pu, int field) +{ +    const struct siteconf_rec *ent; +    Str u; +    char *firstp, *lastp; + +    if (field < 0 || field >= SCONF_N_FIELD) +	return NULL; +    if (!query_pu || IS_EMPTY_PARSED_URL(query_pu)) +	return NULL; +    u = parsedURL2Str((ParsedURL *)query_pu); +    if (u->length == 0) +	return NULL; + +    for (ent = siteconf_head; ent; ent = ent->next) { +	if (!SCONF_TEST(ent, field)) +	    continue; +	if (ent->re_url) { +	    if (RegexMatch(ent->re_url, u->ptr, u->length, 1)) { +		MatchedPosition(ent->re_url, &firstp, &lastp); +		if (!ent->url_exact) +		    goto url_found; +		if (firstp != u->ptr || lastp == firstp) +		    continue; +		if (*lastp == 0 || *lastp == '?' || *(lastp - 1) == '?' || +		    *lastp == '#' || *(lastp - 1) == '#') +		    goto url_found; +	    } +	} else { +	    int matchlen = strmatchlen(ent->url, u->ptr, u->length); +	    if (matchlen == 0 || ent->url[matchlen] != 0) +		continue; +	    firstp = u->ptr; +	    lastp = u->ptr + matchlen; +	    if (*lastp == 0 || *lastp == '?' || *(lastp - 1) == '?' || +		*lastp == '#' || *(lastp - 1) == '#') +		goto url_found; +	    if (!ent->url_exact && (*lastp == '/' || *(lastp - 1) == '/')) +		goto url_found; +	} +    } +    return NULL; + +url_found: +    switch (field) { +    case SCONF_SUBSTITUTE_URL: +	if (ent->substitute_url && *ent->substitute_url) { +	    Str tmp = Strnew_charp_n(u->ptr, firstp - u->ptr); +	    Strcat_charp(tmp, ent->substitute_url); +	    Strcat_charp(tmp, lastp); +	    return tmp->ptr; +	} +	return NULL; +#ifdef USE_M17N +    case SCONF_URL_CHARSET: +	return &ent->url_charset; +#endif +    case SCONF_NO_REFERER_FROM: +	return &ent->no_referer_from; +    case SCONF_NO_REFERER_TO: +	return &ent->no_referer_to; +    } +    return NULL; +} diff --git a/scripts/w3mman/w3mman2html.cgi.in b/scripts/w3mman/w3mman2html.cgi.in index f430307..2e3576c 100644 --- a/scripts/w3mman/w3mman2html.cgi.in +++ b/scripts/w3mman/w3mman2html.cgi.in @@ -126,12 +126,14 @@ while(<F>) {    s/\&/\&/g;    s/\</\</g;    s/\>/\>/g; +  # non ASCII UTF-8 codepoint +  my $utf8="[\300-\337][\200-\277]|[\340-\357][\200-\277]{2}|[\360-\367][\200-\277]{3}|[\370-\373][\200-\277]{4}|[\374\375][\200-\277]{5}"; -  s@([\200-\377].)(\010{1,2}\1)+@<b>$1</b>@g; +  s@($utf8)(\010\1)+@<b>$1</b>@g;    s@(\&\w+;|.)(\010\1)+@<b>$1</b>@g; -  s@__\010{1,2}((\<b\>)?[\200-\377].(\</b\>)?)@<u>$1</u>@g; +  s@_\010((\<b\>)?($utf8)(\</b\>)?)@<u>$1</u>@g;    s@_\010((\<b\>)?(\&\w+\;|.)(\</b\>)?)@<u>$1</u>@g; -  s@((\<b\>)?[\200-\377].(\</b\>)?)\010{1,2}__@<u>$1</u>@g; +  s@((\<b\>)?($utf8)(\</b\>)?)\010_@<u>$1</u>@g;    s@((\<b\>)?(\&\w+\;|.)(\</b\>)?)\010_@<u>$1</u>@g;    s@.\010(.)@$1@g; @@ -2878,6 +2878,14 @@ feed_table_tag(struct table *tbl, char *line, struct table_mode *mode,  	tmp = process_input(tag);  	feed_table1(tbl, tmp, mode, width);  	break; +    case HTML_BUTTON: +       tmp = process_button(tag); +       feed_table1(tbl, tmp, mode, width); +       break; +    case HTML_N_BUTTON: +       tmp = process_n_button(); +       feed_table1(tbl, tmp, mode, width); +       break;      case HTML_SELECT:  	tmp = process_select(tag);  	if (tmp) diff --git a/tagtable.tab b/tagtable.tab index f9b7b76..f5a2c30 100644 --- a/tagtable.tab +++ b/tagtable.tab @@ -176,6 +176,7 @@ bdo		HTML_BDO  big		HTML_BIG  /big		HTML_N_BIG  button		HTML_BUTTON +/button		HTML_N_BUTTON  fieldset	HTML_FIELDSET  /fieldset	HTML_N_FIELDSET  iframe		HTML_IFRAME @@ -2027,8 +2027,8 @@ sleep_till_anykey(int sec, int purge)  #ifdef USE_MOUSE -#define XTERM_ON   {fputs("\033[?1001s\033[?1000h",ttyf); flush_tty();} -#define XTERM_OFF  {fputs("\033[?1000l\033[?1001r",ttyf); flush_tty();} +#define XTERM_ON   {fputs("\033[?1001s\033[?1000h\033[?1006h",ttyf); flush_tty();} +#define XTERM_OFF  {fputs("\033[?1006l\033[?1000l\033[?1001r",ttyf); flush_tty();}  #define CYGWIN_ON  {fputs("\033[?1000h",ttyf); flush_tty();}  #define CYGWIN_OFF {fputs("\033[?1000l",ttyf); flush_tty();} @@ -444,6 +444,8 @@ baseURL(Buffer *buf)  	/* <BASE> tag is defined in the document */  	return buf->baseURL;      } +    else if (IS_EMPTY_PARSED_URL(&buf->currentURL)) +	return NULL;      else  	return &buf->currentURL;  } @@ -638,16 +640,21 @@ openSocket(char *const hostname,  #define COPYPATH_SPC_ALLOW 0  #define COPYPATH_SPC_IGNORE 1  #define COPYPATH_SPC_REPLACE 2 +#define COPYPATH_SPC_MASK 3 +#define COPYPATH_LOWERCASE 4  static char *  copyPath(char *orgpath, int length, int option)  {      Str tmp = Strnew(); -    while (*orgpath && length != 0) { -	if (IS_SPACE(*orgpath)) { -	    switch (option) { +    char ch; +    while ((ch = *orgpath) != 0 && length != 0) { +	if (option & COPYPATH_LOWERCASE) +	    ch = TOLOWER(ch); +	if (IS_SPACE(ch)) { +	    switch (option & COPYPATH_SPC_MASK) {  	    case COPYPATH_SPC_ALLOW: -		Strcat_char(tmp, *orgpath); +		Strcat_char(tmp, ch);  		break;  	    case COPYPATH_SPC_IGNORE:  		/* do nothing */ @@ -658,7 +665,7 @@ copyPath(char *orgpath, int length, int option)  	    }  	}  	else -	    Strcat_char(tmp, *orgpath); +	    Strcat_char(tmp, ch);  	orgpath++;  	length--;      } @@ -668,22 +675,14 @@ copyPath(char *orgpath, int length, int option)  void  parseURL(char *url, ParsedURL *p_url, ParsedURL *current)  { -    char *p, *q; +    char *p, *q, *qq;      Str tmp;      url = url_quote(url);	/* quote 0x01-0x20, 0x7F-0xFF */      p = url; +    copyParsedURL(p_url, NULL);      p_url->scheme = SCM_MISSING; -    p_url->port = 0; -    p_url->user = NULL; -    p_url->pass = NULL; -    p_url->host = NULL; -    p_url->is_nocache = 0; -    p_url->file = NULL; -    p_url->real_file = NULL; -    p_url->query = NULL; -    p_url->label = NULL;      /* RFC1808: Relative Uniform Resource Locators       * 4.  Resolving Relative URLs @@ -694,7 +693,7 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current)  	goto do_label;      }  #if defined( __EMX__ ) || defined( __CYGWIN__ ) -    if (!strncmp(url, "file://localhost/", 17)) { +    if (!strncasecmp(url, "file://localhost/", 17)) {  	p_url->scheme = SCM_LOCAL;  	p += 17 - 1;  	url += 17 - 1; @@ -802,19 +801,20 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current)  	/* scheme://user:pass@host or  	 * scheme://host:port  	 */ -	p_url->host = copyPath(q, p - q, COPYPATH_SPC_IGNORE); +	qq = q;  	q = ++p;  	while (*p && strchr("@/?#", *p) == NULL)  	    p++;  	if (*p == '@') {  	    /* scheme://user:pass@...       */ +	    p_url->user = copyPath(qq, q - 1 - qq, COPYPATH_SPC_IGNORE);  	    p_url->pass = copyPath(q, p - q, COPYPATH_SPC_ALLOW);  	    q = ++p; -	    p_url->user = p_url->host; -	    p_url->host = NULL;  	    goto analyze_url;  	}  	/* scheme://host:port/ */ +	p_url->host = copyPath(qq, q - 1 - qq, +			       COPYPATH_SPC_IGNORE | COPYPATH_LOWERCASE);  	tmp = Strnew_charp_n(q, p - q);  	p_url->port = atoi(tmp->ptr);  	/* *p is one of ['\0', '/', '?', '#'] */ @@ -829,7 +829,8 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current)      case '/':      case '?':      case '#': -	p_url->host = copyPath(q, p - q, COPYPATH_SPC_IGNORE); +	p_url->host = copyPath(q, p - q, +			       COPYPATH_SPC_IGNORE | COPYPATH_LOWERCASE);  	p_url->port = DefaultPort[p_url->scheme];  	break;      } @@ -956,12 +957,16 @@ parseURL(char *url, ParsedURL *p_url, ParsedURL *current)  	p_url->label = NULL;  } -#define initParsedURL(p) bzero(p,sizeof(ParsedURL))  #define ALLOC_STR(s) ((s)==NULL?NULL:allocStr(s,-1))  void -copyParsedURL(ParsedURL *p, ParsedURL *q) +copyParsedURL(ParsedURL *p, const ParsedURL *q)  { +    if (q == NULL) { +	memset(p, 0, sizeof(ParsedURL)); +	p->scheme = SCM_UNKNOWN; +	return; +    }      p->scheme = q->scheme;      p->port = q->port;      p->is_nocache = q->is_nocache; @@ -1283,6 +1288,8 @@ static char *  otherinfo(ParsedURL *target, ParsedURL *current, char *referer)  {      Str s = Strnew(); +    const int *no_referer_ptr; +    int no_referer;      Strcat_charp(s, "User-Agent: ");      if (UserAgent == NULL || *UserAgent == '\0') @@ -1306,7 +1313,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");      } -    if (!NoSendReferer) { +    no_referer = NoSendReferer; +    no_referer_ptr = query_SCONF_NO_REFERER_FROM(current); +    no_referer = NoSendReferer || (no_referer_ptr && *no_referer_ptr); +    no_referer_ptr = query_SCONF_NO_REFERER_TO(target); +    no_referer = no_referer || (no_referer_ptr && *no_referer_ptr); +    if (!no_referer) {  #ifdef USE_SSL          if (current && current->scheme == SCM_HTTPS && target->scheme != SCM_HTTPS) {  	  /* Don't send Referer: if https:// -> http:// */ @@ -1314,6 +1326,7 @@ otherinfo(ParsedURL *target, ParsedURL *current, char *referer)  	else  #endif  	if (referer == NULL && current && current->scheme != SCM_LOCAL && +	    current->scheme != SCM_LOCAL_CGI &&  	    (current->scheme != SCM_FTP ||  	     (current->user == NULL && current->pass == NULL))) {  	    char *p = current->label; @@ -2234,3 +2247,66 @@ schemeToProxy(int scheme)      }      return pu;  } + +#ifdef USE_M17N +wc_ces +url_to_charset(const char *url, const ParsedURL *base, wc_ces doc_charset) +{ +    const ParsedURL *pu; +    ParsedURL pu_buf; +    const wc_ces *csptr; + +    if (url && *url && *url != '#') { +	parseURL2((char *)url, &pu_buf, (ParsedURL *)base); +	pu = &pu_buf; +    } else { +	pu = base; +    } +    if (pu && (pu->scheme == SCM_LOCAL || pu->scheme == SCM_LOCAL_CGI)) +	return SystemCharset; +    csptr = query_SCONF_URL_CHARSET(pu); +    return (csptr && *csptr) ? *csptr : +	doc_charset ? doc_charset : DocumentCharset; +} + +char * +url_encode(const char *url, const ParsedURL *base, wc_ces doc_charset) +{ +    return url_quote_conv((char *)url, +			  url_to_charset(url, base, doc_charset)); +} + +#if 0 /* unused */ +char * +url_decode(const char *url, const ParsedURL *base, wc_ces doc_charset) +{ +    if (!DecodeURL) +	return (char *)url; +    return url_unquote_conv((char *)url, +			    url_to_charset(url, base, doc_charset)); +} +#endif + +char * +url_decode2(const char *url, const Buffer *buf) +{ +    wc_ces url_charset; + +    if (!DecodeURL) +	return (char *)url; +    url_charset = buf ? +	url_to_charset(url, baseURL((Buffer *)buf), buf->document_charset) : +	url_to_charset(url, NULL, 0); +    return url_unquote_conv((char *)url, url_charset); +} + +#else /* !defined(USE_M17N) */ + +char * +url_decode0(const char *url) +{ +    if (!DecodeURL) +	return (char *)url; +    return url_unquote_conv((char *)url, 0); +} +#endif /* !defined(USE_M17N) */ diff --git a/version.c.in b/version.c.in index 31d30e4..07b12c1 100644 --- a/version.c.in +++ b/version.c.in @@ -1,5 +1,5 @@  /* $Id: version.c.in,v 1.49 2012/05/22 09:45:56 inu Exp $ */ -#define CURRENT_VERSION "w3m/0.5.3+cvs" +#define CURRENT_VERSION "w3m/0.5.3+debian-10+"  #ifndef FM_H  char *w3m_version = CURRENT_VERSION; diff --git a/w3mbookmark.c b/w3mbookmark.c index 4355536..fcbad11 100644 --- a/w3mbookmark.c +++ b/w3mbookmark.c @@ -99,7 +99,7 @@ create_new_bookmark(char *bmark, char *section, char *title, char *url,  	fprintf(f, "<body>\n<h1>Bookmarks</h1>\n");  	fprintf(f, "<h2>%s</h2>\n<ul>\n", section);  	fprintf(f, "<li><a href=\"%s\">%s</a>\n", url, title); -	fprintf(f, end_section); +	fprintf(f, "%s", end_section);  	fprintf(f, "</ul>\n</body>\n</html>\n");  	fclose(f);      } diff --git a/w3mimg/Makefile.in b/w3mimg/Makefile.in index dfc550c..0a964a1 100644 --- a/w3mimg/Makefile.in +++ b/w3mimg/Makefile.in @@ -22,6 +22,8 @@ w3mimg.a: $(IMGOBJS)  	$(AR) rv $@ $(IMGOBJS)  	$(RANLIB) $@ +$(IMGOBJS): @IMGTARGETS@ +  w3mimg.o: w3mimg.c  	$(CC) $(CFLAGS) -c $< | 
