summaryrefslogtreecommitdiffstats
path: root/network/elinks
diff options
context:
space:
mode:
Diffstat (limited to 'network/elinks')
-rw-r--r--network/elinks/README46
-rw-r--r--network/elinks/elinks.SlackBuild87
-rw-r--r--network/elinks/elinks.info10
-rw-r--r--network/elinks/option-patches/0010-disable-suspend-pause.patch19
-rw-r--r--network/elinks/option-patches/0020-no-connect-by-default.patch62
-rw-r--r--network/elinks/patches/0002-gopher_index_queries.patch92
-rw-r--r--network/elinks/patches/0003-gopher_directory_links.patch39
-rw-r--r--network/elinks/patches/0004-ssl_cert_verify.patch161
-rw-r--r--network/elinks/patches/0006-gopher-indexes_nocr.patch23
-rw-r--r--network/elinks/patches/0010-force-text-wrap.patch26
-rw-r--r--network/elinks/patches/0020-gopher-html-links.patch (renamed from network/elinks/patches/0001-gopher_html_links.patch)9
-rw-r--r--network/elinks/patches/0030-gopher-index-queries.patch113
-rw-r--r--network/elinks/patches/0040-gopher-directory-links.patch26
-rw-r--r--network/elinks/patches/0050-gopher-newlines-tabs-entity.patch (renamed from network/elinks/patches/0005-gopher_newlines_tabs_entity.patch)58
-rw-r--r--network/elinks/patches/0060-gopher-indexes-nocr.patch19
-rw-r--r--network/elinks/patches/0070-gopher-move-null.patch (renamed from network/elinks/patches/0007-gopher-move_null.patch)10
-rw-r--r--network/elinks/patches/0080-gopher-html-entities.patch (renamed from network/elinks/patches/0008-gopher-encode-html.patch)20
-rw-r--r--network/elinks/patches/0090-fix-lib-path.patch (renamed from network/elinks/patches/0010-fix-lib-path.patch)0
-rw-r--r--network/elinks/slack-desc2
19 files changed, 405 insertions, 417 deletions
diff --git a/network/elinks/README b/network/elinks/README
index 97574a8664..e40cc46f9e 100644
--- a/network/elinks/README
+++ b/network/elinks/README
@@ -1,10 +1,8 @@
-elinks (ELinks - Full-Featured Text WWW Browser)
-
-ELinks is an advanced and well-established feature-rich text mode web
-(HTTP/FTP/..) browser. ELinks can render both frames and tables, is
+Elinks is an advanced and well-established feature-rich text mode web
+(HTTP/FTP/..) browser. Elinks can render both frames and tables, is
highly customizable, and can be extended via Lua or Guile scripts. It
-is very portable and runs on a variety of platforms. It also uses
-SpiderMonkey javascript support.
+is very portable and runs on a variety of platforms. It also has
+(very limited) JavaScript support via SpiderMonkey (js185).
There are a number of options that can be used to add support for
other protocols etc. To enable or disable an option use the following
@@ -14,8 +12,6 @@ MOUSE=no ./elinks.SlackBuild
Several options can be combined together.
-OPTIONS
-
Category Description Default Value
System:
@@ -55,12 +51,40 @@ DATA yes
FSP no
FTP yes
FINGER no
-GOPHER no
+GOPHER (use internal gopher code, see note below) no
NNTP no
SMB no
Note that Unicode combining characters is marked as experimental.
-Optional dependencies apart from scripting languages stated above:
+Contributed Patches:
+
+Thanks goes to B. Watson for the following two patches:
+
+No Suspend Patch
+
+Elinks sometimes has problems resuming if it has been suspended with ^Z.
+To apply a patch that disables ^Z, ^S and ^Q suspend/pause/resume keys
+so that they are available to bind in elinks:
+
+ NO_SUSPEND=yes
+
+No Connect Patch.
+
+Sometimes when quitting and another client is running on the same
+session-ring, the process will freeze and require killing manually.
+This patch solves that by making elinks use '-no-connect 1' by default.
+It won't be possible to open links in new windows with this, but using
+URI passing is a workaround.
+
+ NO_CONNECT=yes
+
+Auto-detected Dependencies:
+
+js185: SpiderMonkey (can be turned off in options).
+tre: regexp support in searches.
-tre: for regex search support
+Other included patches help make the internal gopher support usable. By
+default elinks will hand gopher URLs to lynx if the GOPHER option isn't
+set. Using the internal gopher client has the advantage of having
+combined http and gopher bookmarks, and a more uniform interface.
diff --git a/network/elinks/elinks.SlackBuild b/network/elinks/elinks.SlackBuild
index eafc45eb53..b402bed806 100644
--- a/network/elinks/elinks.SlackBuild
+++ b/network/elinks/elinks.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for elinks
# Copyright 2014 David Woodfall <dave@slackbuilds.org>
@@ -21,10 +21,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=elinks
-VERSION=${VERSION:-git20131231}
-BUILD=${BUILD:-11}
+VERSION=${VERSION:-20170723_f86be65}
+COMMIT=${VERSION#*_}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -34,50 +38,62 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# Added -fno-strict-aliasing -Wno-pointer-sign for a much more peaceful build
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-g0 -O0 -march=i486 -mtune=i686 -fno-strict-aliasing -Wno-pointer-sign"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-g0 -O0 -march=i586 -mtune=i686 -fno-strict-aliasing -Wno-pointer-sign"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-g0 -O0 -march=i686 -mtune=i686 -fno-strict-aliasing -Wno-pointer-sign"
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-g0 -O0 -fPIC -fno-strict-aliasing -Wno-pointer-sign"
- SLKLDFLAGS="-m64"
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
- SLKCFLAGS="-go -O0"
+ SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
+# A much more peaceful build
+SLKCFLAGS="$SLKCFLAGS -fno-strict-aliasing -Wno-pointer-sign"
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$COMMIT
+tar xvf $CWD/$COMMIT.tar.?z || tar xvf $CWD/$PRGNAM-$COMMIT.tar.?z
+cd $PRGNAM-$COMMIT
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# fix documentation generation on 15.0.
+# xmlto needs --skip-validation or it fails.
+sed -i 's/$(XMLTO) -o/$(XMLTO) --skip-validation -o/' doc/Makefile
-for patch in $CWD/patches/*
-do
+for patch in $CWD/patches/*; do
patch --verbose -p1 < $patch
done
+# patches for no suspend (^Z) and -no-connect by default
+# courtesy of B. Watson.
+[ "${NO_SUSPEND:-no}" = "yes" ] &&
+ patch --verbose -p1 -i $CWD/option-patches/0010-*
+[ "${NO_CONNECT:-no}" = "yes" ] &&
+ patch --verbose -p1 -i $CWD/option-patches/0020-*
+
# System
[ "${FASTMEM:-no}" = "yes" ] && fastmem="--enable-fastmem"
[ "${CGI:-no}" = "yes" ] && cgi="--enable-cgi"
@@ -114,8 +130,11 @@ done
[ "${NNTP:-no}" = "yes" ] && nntp="--enable-nntp"
[ "${SMB:-no}" = "yes" ] && smb="--enable-smb"
-autoreconf
-CFLAGS="$SLKCFLAGS -L/usr/lib64" \
+# quiet some more warnings
+sed "s,^aclocal,& -Wnone," -i autogen.sh
+
+./autogen.sh
+CFLAGS="$SLKCFLAGS -L/usr/lib$LIBDIRSUFFIX" \
./configure \
--prefix=/usr \
--libdir=/usr/lib$LIBDIRSUFFIX \
@@ -124,6 +143,7 @@ CFLAGS="$SLKCFLAGS -L/usr/lib64" \
--mandir=/usr/man \
--infodir=/usr/info \
--docdir=/usr/doc/$PRGNAM-$VERSION \
+ --htmldir=/usr/doc/$PRGNAM-$VERSION/html \
$fastmem \
$cgi \
$combining \
@@ -153,23 +173,26 @@ CFLAGS="$SLKCFLAGS -L/usr/lib64" \
--build=$ARCH-slackware-linux
make
+# html doesn't install so we copy it later
+make -C doc html
make install DESTDIR=$PKG
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+strip --strip-unneeded $PKG/usr/bin/$PRGNAM
+gzip -9 $PKG/usr/man/man?/*.?
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS TODO doc/html doc/*txt \
- contrib \
+ AUTHORS BUGS COPYING NEWS README SITES THANKS TODO ChangeLog contrib \
+ doc/*txt doc/manual.html-chunked \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# don't need these
+find $PKG \( -name ".gitignore" -o -name "manual.proc" \) -delete
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/network/elinks/elinks.info b/network/elinks/elinks.info
index 17553cf0cf..e543517b54 100644
--- a/network/elinks/elinks.info
+++ b/network/elinks/elinks.info
@@ -1,10 +1,10 @@
PRGNAM="elinks"
-VERSION="git20131231"
-HOMEPAGE="http://elinks.or.cz"
-DOWNLOAD="http://www.unrealize.co.uk/source/elinks-git20131231.tar.xz"
-MD5SUM="3b3b57ac6b9bafe123d046f342272d17"
+VERSION="20170723_f86be65"
+HOMEPAGE="http://elinks.cz"
+DOWNLOAD="https://repo.or.cz/elinks.git/snapshot/f86be65.tar.gz"
+MD5SUM="660ae64c253f1e2014064dc1a3fbed80"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="David Woodfall"
+MAINTAINER="D Woodfall"
EMAIL="dave@slackbuilds.org"
diff --git a/network/elinks/option-patches/0010-disable-suspend-pause.patch b/network/elinks/option-patches/0010-disable-suspend-pause.patch
new file mode 100644
index 0000000000..9a85ad5669
--- /dev/null
+++ b/network/elinks/option-patches/0010-disable-suspend-pause.patch
@@ -0,0 +1,19 @@
+diff -Naur elinks-git20131231/src/terminal/kbd.c elinks-git20131231.patched/src/terminal/kbd.c
+--- elinks-git20131231/src/terminal/kbd.c 2013-12-18 10:38:57.000000000 -0500
++++ elinks-git20131231.patched/src/terminal/kbd.c 2020-06-25 01:32:29.333043353 -0400
+@@ -263,6 +263,15 @@
+ t.c_lflag |= TOSTOP;
+ #endif
+ t.c_oflag |= OPOST;
++
++ /* 20200625 bkw: patched code disables suspend (normally ^Z),
++ pause (normally ^S) and resume (normally ^Q). This allows
++ us to use those keys for normal keybinds. If we're running
++ elinks in tmux or screen, or in X with multiple terminals,
++ or the Linux console (multiple consoles), we don't really
++ need ^Z anyway. */
++ t.c_cc[VSUSP] = t.c_cc[VSTOP] = t.c_cc[VSTART] = vdisable;
++
+ if (tcsetattr(itrm->in.ctl, TCSANOW, &t)) return -1;
+
+ return 0;
diff --git a/network/elinks/option-patches/0020-no-connect-by-default.patch b/network/elinks/option-patches/0020-no-connect-by-default.patch
new file mode 100644
index 0000000000..e36c9aa006
--- /dev/null
+++ b/network/elinks/option-patches/0020-no-connect-by-default.patch
@@ -0,0 +1,62 @@
+diff -Naur elinks-git20131231/doc/man/man1/elinks.1.in elinks-git20131231.patched/doc/man/man1/elinks.1.in
+--- elinks-git20131231/doc/man/man1/elinks.1.in 2013-12-18 10:38:57.000000000 -0500
++++ elinks-git20131231.patched/doc/man/man1/elinks.1.in 2020-06-25 03:02:54.523412259 -0400
+@@ -141,12 +141,13 @@
+ Look up specified host and print all DNS resolved IP addresses\&.
+ .RE
+ .PP
+-\fB\-no\-connect\fR \fI[0|1]\fR (default: 0)
++\fB\-no\-connect\fR \fI[0|1]\fR (default: 1)
+ .RS 4
+ Run
+ ELinks
+-as a separate instance instead of connecting to an existing instance\&. Note that normally no runtime state files (bookmarks, history, etc\&.) are written to the disk when this option is used\&. See also
+-\-touch\-files\&.
++as a separate instance instead of connecting to an existing instance\&. Enabled
++by default in this build; use \fB\-no\-connect 0\fR to connect to an existing
++instance\&.
+ .RE
+ .PP
+ \fB\-no\-home\fR \fI[0|1]\fR (default: 0)
+@@ -238,13 +239,13 @@
+ Print given URLs in source form to stdout\&.
+ .RE
+ .PP
+-\fB\-touch\-files\fR \fI[0|1]\fR (default: 0)
++\fB\-touch\-files\fR \fI[0|1]\fR (default: 1)
+ .RS 4
+ When enabled, runtime state files (bookmarks, history, etc\&.) are written to disk, even when
+ \-no\-connect
+ or
+ \-session\-ring
+-is used\&. The option has no effect if not used in conjunction with any of these options\&.
++is used\&. The option has no effect if not used in conjunction with any of these options\&. This option is enabled by default; use \fB\-touch\-files 0\fR to disable\&.
+ .RE
+ .PP
+ \fB\-verbose\fR \fI<num>\fR (default: 1)
+diff -Naur elinks-git20131231/src/config/cmdline.c elinks-git20131231.patched/src/config/cmdline.c
+--- elinks-git20131231/src/config/cmdline.c 2013-12-18 10:38:57.000000000 -0500
++++ elinks-git20131231.patched/src/config/cmdline.c 2020-06-25 02:58:31.595442844 -0400
+@@ -848,11 +848,9 @@
+ "addresses.")),
+
+ INIT_OPT_BOOL("", N_("Run as separate instance"),
+- "no-connect", 0, 0,
++ "no-connect", 0, 1,
+ N_("Run ELinks as a separate instance instead of connecting "
+- "to an existing instance. Note that normally no runtime state "
+- "files (bookmarks, history, etc.) are written to the disk "
+- "when this option is used. See also -touch-files.")),
++ "to an existing instance. Enabled by default in this build.")),
+
+ INIT_OPT_BOOL("", N_("Disable use of files in ~/.elinks"),
+ "no-home", 0, 0,
+@@ -921,7 +919,7 @@
+ INIT_OPT_COMMAND("", NULL, "stdin", OPT_HIDDEN, redir_cmd, NULL),
+
+ INIT_OPT_BOOL("", N_("Touch files in ~/.elinks when running with -no-connect/-session-ring"),
+- "touch-files", 0, 0,
++ "touch-files", 0, 1,
+ N_("When enabled, runtime state files (bookmarks, history, "
+ "etc.) are written to disk, even when -no-connect or "
+ "-session-ring is used. The option has no effect if not used "
diff --git a/network/elinks/patches/0002-gopher_index_queries.patch b/network/elinks/patches/0002-gopher_index_queries.patch
deleted file mode 100644
index ce92695a0a..0000000000
--- a/network/elinks/patches/0002-gopher_index_queries.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-#######################################################################
-# elinks by default generates its own search query form when it sees
-# a type 7 index entity. The problem is that it didn't read the
-# served results page and instead generated another search page after
-# you had entered the first. This patch fixes that and in my tests it
-# seems to work so far. I've also added a primitive debug log.
-# dave@slackbuilds.org
-#######################################################################
-diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
---- a/src/protocol/gopher/gopher.c 2020-01-08 05:37:57.443382095 +0000
-+++ b/src/protocol/gopher/gopher.c 2020-01-08 05:36:42.849199857 +0000
-@@ -43,6 +43,34 @@
- #include "util/memory.h"
- #include "util/string.h"
-
-+#ifdef HAVE_FCNTL_H
-+#include <fcntl.h> /* OS/2 needs this after sys/types.h */
-+#endif
-+
-+/* To enable logging for debugging purposes. */
-+#if 0
-+
-+#define LOGFILE "/tmp/log"
-+
-+static void
-+debug_log(unsigned char *data, int NL)
-+{
-+ int fd = open(LOGFILE, O_WRONLY | O_APPEND | O_CREAT, 0622);
-+
-+ if (fd == -1) return;
-+
-+ set_bin(fd);
-+ write(fd, data, strlen(data));
-+ if (NL)
-+ write(fd, "\n", 1);
-+ close(fd);
-+}
-+#undef LOGFILE
-+
-+#else
-+#define debug_log(data, len)
-+#endif
-+
- struct module gopher_protocol_module = struct_module(
- /* name: */ N_("Gopher"),
- /* options: */ NULL,
-@@ -219,11 +247,13 @@
- if (query) selectorlen -= 1;
- query = NULL;
- querylen = 0;
-- } else {
-- query += 1;
-+ } else if (entity == GOPHER_INDEX) {
-+ /* fix query size to not include the search= part */
-+ query += 8;
- querylen = selector + selectorlen - query;
- /* Exclude '?' */
-- selectorlen -= querylen + 1;
-+ /* fix selector length to fit with query */
-+ selectorlen -= querylen + 8;
- if (querylen >= 7 && !c_strncasecmp(query, "search=", 7)) {
- query += 7;
- querylen -= 7;
-@@ -233,9 +263,11 @@
- switch (entity) {
- case GOPHER_INDEX:
- /* No search required? */
-+ /* Don't display the form page */
- if (!query) {
- done_string(command);
-- return init_gopher_index_cache_entry(conn);
-+ add_uri_decoded(command, selector, selectorlen, 0);
-+ break;
- }
-
- add_uri_decoded(command, selector, selectorlen, 0);
-@@ -371,13 +403,14 @@
- add_gopher_search_field(struct string *buffer, const unsigned char *text,
- const unsigned char *addr)
- {
-+ /* Not *every* query is a search */
- add_format_to_string(buffer,
- "<form action=\"%s\">"
- "<table>"
- "<td> </td>"
- "<td>%s:</td>"
- "<td><input maxlength=\"256\" name=\"search\" value=\"\"></td>"
-- "<td><input type=submit value=\"Search\"></td>"
-+ "<td><input type=submit value=\"Submit\"></td>"
- "</table>"
- "</form>",
- addr, text);
diff --git a/network/elinks/patches/0003-gopher_directory_links.patch b/network/elinks/patches/0003-gopher_directory_links.patch
deleted file mode 100644
index 8c61f281bb..0000000000
--- a/network/elinks/patches/0003-gopher_directory_links.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-#######################################################################
-# elinks does not follow links to directories on other servers
-# properly. This adds a '/' before the '1' at the start of a link and
-# removes any trailing 1.
-# dave@slackbuilds.org
-#######################################################################
-diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
---- a/src/protocol/gopher/gopher.c 2020-01-08 04:56:18.809169382 +0000
-+++ b/src/protocol/gopher/gopher.c 2020-01-08 04:52:43.722879240 +0000
-@@ -313,6 +313,9 @@
- unsigned char const* URL = "hURL%3";
- unsigned char const* CURI = "HURI%3";
- unsigned char const* CURL = "HURL%3";
-+ unsigned char *DIR = "1";
-+ unsigned char *SLASHDIR = "/1";
-+ unsigned char *SLASHPOS;
- int selectorlen = conn->uri->datalen;
- struct gopher_entity_info *entity_info;
- size_t size;
-@@ -350,6 +353,19 @@
- selectorlen++;
- }
-
-+ if (entity_info->type == '1') {
-+ if (strstr(selector, DIR) == selector) {
-+ *selector++;
-+ selectorlen--;
-+ }
-+ else {
-+ SLASHPOS = strstr(selector, SLASHDIR);
-+ if (SLASHPOS != NULL && strlen(SLASHPOS) == 2) {
-+ selectorlen--;
-+ }
-+ }
-+ }
-+
- state = add_gopher_command(conn, &command, entity, selector, selectorlen);
- if (!is_in_state(state, S_CONN))
- return state;
diff --git a/network/elinks/patches/0004-ssl_cert_verify.patch b/network/elinks/patches/0004-ssl_cert_verify.patch
deleted file mode 100644
index 0cb51242f7..0000000000
--- a/network/elinks/patches/0004-ssl_cert_verify.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-##############################################################################
-# elinks does not verify ssl host names with openssl
-# This is a modifed version of the patch here that fixes that issue:
-# http://lists.linuxfromscratch.org/pipermail/elinks-dev/2015-June/002099.html
-# This patch turns on verification by default, and differentiates
-# between host verification fail and normal SSL errors, but more needs doing.
-# dave@slackbuilds.org
-##############################################################################
---- a/configure.in 2017-12-21 15:58:12.470247050 +0000
-+++ b/configure.in 2017-12-21 16:10:27.406938487 +0000
-@@ -1132,6 +1132,9 @@
- fi
-
- AC_MSG_RESULT($cf_result)
-+if test "$cf_result" = yes; then
-+ AC_CHECK_FUNCS(X509_VERIFY_PARAM_set1_host)
-+fi
-
- # ---- GNU TLS
-
-diff -Naur a/src/network/ssl/socket.c b/src/network/ssl/socket.c
---- a/src/network/ssl/socket.c 2017-12-21 15:58:12.553249389 +0000
-+++ b/src/network/ssl/socket.c 2017-12-21 16:11:47.532190591 +0000
-@@ -7,6 +7,9 @@
- #ifdef CONFIG_OPENSSL
- #include <openssl/ssl.h>
- #include <openssl/x509v3.h>
-+#ifdef HAVE_X509_VERIFY_PARAM_SET1_HOST
-+#include <openssl/x509_vfy.h>
-+#endif
- #define USE_OPENSSL
- #elif defined(CONFIG_NSS_COMPAT_OSSL)
- #include <nss_compat_ossl/nss_compat_ossl.h>
-@@ -168,6 +171,30 @@
-
- #ifdef USE_OPENSSL
-
-+#ifdef HAVE_X509_VERIFY_PARAM_SET1_HOST
-+/* activate the OpenSSL-provided host name check */
-+static int
-+ossl_set_hostname(void *ssl, unsigned char *server_name)
-+{
-+ int ret = -1;
-+
-+ X509_VERIFY_PARAM *vpm = X509_VERIFY_PARAM_new();
-+ if (vpm) {
-+ if (X509_VERIFY_PARAM_set1_host(vpm, (char *) server_name, 0)
-+ && SSL_set1_param(ssl, vpm))
-+ {
-+ /* successfully activated the OpenSSL host name check */
-+ ret = 0;
-+ }
-+
-+ X509_VERIFY_PARAM_free(vpm);
-+ }
-+
-+ return ret;
-+}
-+
-+#else /* HAVE_X509_VERIFY_PARAM_SET1_HOST */
-+
- /** Checks whether the host component of a URI matches a host name in
- * the server certificate.
- *
-@@ -360,6 +387,7 @@
- mem_free(host_in_uri);
- return matched;
- }
-+#endif /* HAVE_X509_VERIFY_PARAM_SET1_HOST */
-
- #endif /* USE_OPENSSL */
-
-@@ -389,7 +417,10 @@
-
- default:
- socket->no_tls = !socket->no_tls;
-- socket->ops->retry(socket, connection_state(S_SSL_ERROR));
-+ if (SSL_VERIFY_FAIL_IF_NO_PEER_CERT != NULL)
-+ socket->ops->retry(socket, connection_state(S_SSL_CERTFAIL));
-+ else
-+ socket->ops->retry(socket, connection_state(S_SSL_ERROR));
- }
- }
-
-@@ -400,6 +431,9 @@
- int ret;
- unsigned char *server_name;
- struct connection *conn = socket->conn;
-+#ifdef USE_OPENSSL
-+ int (*verify_callback_ptr)(int, X509_STORE_CTX *);
-+#endif /* USE_OPENSSL */
-
- /* TODO: Recode server_name to UTF-8. */
- server_name = get_uri_string(conn->proxied_uri, URI_HOST);
-@@ -418,6 +452,23 @@
- return -1;
- }
-
-+#ifdef USE_OPENSSL
-+#ifdef HAVE_X509_VERIFY_PARAM_SET1_HOST
-+ /* activate the OpenSSL-provided host name check */
-+ if (ossl_set_hostname(socket->ssl, server_name)) {
-+ mem_free_if(server_name);
-+ socket->ops->done(socket, connection_state(S_SSL_ERROR));
-+ return -1;
-+ }
-+
-+ /* verify_callback() is not needed with X509_VERIFY_PARAM_set1_host() */
-+ verify_callback_ptr = NULL;
-+#else
-+ /* use our own callback implementing the host name check */
-+ verify_callback_ptr = verify_callback;
-+#endif
-+#endif /* USE_OPENSSL */
-+
- mem_free_if(server_name);
-
- if (socket->no_tls)
-@@ -429,7 +480,7 @@
- if (get_opt_bool("connection.ssl.cert_verify", NULL))
- SSL_set_verify(socket->ssl, SSL_VERIFY_PEER
- | SSL_VERIFY_FAIL_IF_NO_PEER_CERT,
-- verify_callback);
-+ verify_callback_ptr);
-
- if (get_opt_bool("connection.ssl.client_cert.enable", NULL)) {
- unsigned char *client_cert;
-diff -Naur a/src/network/ssl/ssl.c b/src/network/ssl/ssl.c
---- a/src/network/ssl/ssl.c 2017-12-21 15:58:12.553249389 +0000
-+++ b/src/network/ssl/ssl.c 2017-12-21 16:11:03.378949490 +0000
-@@ -109,7 +109,7 @@
-
- static union option_info openssl_options[] = {
- INIT_OPT_BOOL("connection.ssl", N_("Verify certificates"),
-- "cert_verify", 0, 0,
-+ "cert_verify", 0, 1,
- N_("Verify the peer's SSL certificate. Note that this "
- "needs extensive configuration of OpenSSL by the user.")),
-
-diff -Naur a/src/network/state.c b/src/network/state.c
---- a/src/network/state.c 2017-12-21 15:58:12.553249389 +0000
-+++ b/src/network/state.c 2017-12-21 16:10:20.579746621 +0000
-@@ -88,6 +88,7 @@
-
- #ifdef CONFIG_SSL
- {S_SSL_ERROR, N_("SSL error")},
-+ {S_SSL_CERTFAIL, N_("SSL Host Verification Failed.")},
- #else
- {S_SSL_ERROR, N_("This version of ELinks does not contain SSL/TLS support")},
- #endif
-diff -Naur a/src/network/state.h b/src/network/state.h
---- a/src/network/state.h 2017-12-21 15:58:12.553249389 +0000
-+++ b/src/network/state.h 2017-12-21 16:10:03.057254202 +0000
-@@ -67,6 +67,7 @@
- S_ENCODE_ERROR = -100017,
- S_SSL_ERROR = -100018,
- S_NO_FORCED_DNS = -100019,
-+ S_SSL_CERTFAIL = -100020,
-
- S_HTTP_ERROR = -100100,
- S_HTTP_204 = -100101,
diff --git a/network/elinks/patches/0006-gopher-indexes_nocr.patch b/network/elinks/patches/0006-gopher-indexes_nocr.patch
deleted file mode 100644
index 797c9a8b55..0000000000
--- a/network/elinks/patches/0006-gopher-indexes_nocr.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-#######################################################################
-# Fixes index listings with only LF and no CRs.
-# dave@slackbuilds.org
-#######################################################################
-diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
---- a/src/protocol/gopher/gopher.c 2020-01-08 07:39:33.403725857 +0000
-+++ b/src/protocol/gopher/gopher.c 2020-01-08 07:40:30.587406965 +0000
-@@ -779,6 +779,15 @@
- switch (gopher->entity->type) {
- case GOPHER_DIRECTORY:
- case GOPHER_INDEX:
-+ /* Lines with no carriage returns */
-+ if (strchr(rb->data, ASCII_CR) == NULL) {
-+ unsigned char *tmp = malloc(rb->length + 3);
-+ tmp[0] = 'i';
-+ tmp = stpcpy(stpcpy(stpcpy(tmp, rb->data), '\r'), '\n');
-+ rb->length += 3;
-+ memcpy(rb->data, tmp, rb->length);
-+ free(tmp);
-+ }
- state = read_gopher_directory_data(conn, rb);
- break;
-
diff --git a/network/elinks/patches/0010-force-text-wrap.patch b/network/elinks/patches/0010-force-text-wrap.patch
new file mode 100644
index 0000000000..4705cb0893
--- /dev/null
+++ b/network/elinks/patches/0010-force-text-wrap.patch
@@ -0,0 +1,26 @@
+# This wraps <pre> text too when "W" is pressed.
+# (main toggle-wrap-text)
+diff --git a/src/document/html/renderer.c b/src/document/html/renderer.c
+index 6470c54..a40a4ef 100644
+--- a/src/document/html/renderer.c
++++ b/src/document/html/renderer.c
+@@ -1801,7 +1801,7 @@ put_chars(struct html_context *html_context, unsigned char *chars, int charslen)
+
+ renderer_context.nobreak = 0;
+
+- if (!(html_context->options->wrap || html_is_preformatted())) {
++ if (html_context->options->wrap || !html_is_preformatted()) {
+ while (part->cx > overlap(par_format)
+ && part->cx > par_format.leftmargin) {
+ int x = split_line(html_context);
+@@ -1822,9 +1822,7 @@ put_chars(struct html_context *html_context, unsigned char *chars, int charslen)
+ int_lower_bound(&part->max_width, part->xa
+ + par_format.leftmargin + par_format.rightmargin
+ - (chars[charslen - 1] == ' '
+- && !html_is_preformatted()));
+- return;
+-
++ && (html_context->options->wrap || !html_is_preformatted())));
+ }
+
+ #undef overlap
diff --git a/network/elinks/patches/0001-gopher_html_links.patch b/network/elinks/patches/0020-gopher-html-links.patch
index e2a927f9c8..38a2dd0b10 100644
--- a/network/elinks/patches/0001-gopher_html_links.patch
+++ b/network/elinks/patches/0020-gopher-html-links.patch
@@ -1,8 +1,5 @@
################################################################
-# There is a problem that html links that contain URL:http://
-# aren't being followed. This fixes that issue and also chtml.
-# Normally those kind of links go to a redirect page that the
-# server generates, which then sends you on your way.
+# Fix for HTML links that contain URL:http://
# dave@slackbuilds.org
###############################################################
diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
@@ -25,13 +22,13 @@ diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
+ if(strstr(selector, URL) != NULL || strstr(selector, URI) != NULL) {
+ entity = GOPHER_HTML;
-+ *selector++;
++ selector++;
+ selectorlen--;
+ }
+
+ if(strstr(selector, CURL) != NULL || strstr(selector, CURI) != NULL) {
+ entity = GOPHER_CHTML;
-+ *selector++;
++ selector++;
+ selectorlen--;
+ }
+
diff --git a/network/elinks/patches/0030-gopher-index-queries.patch b/network/elinks/patches/0030-gopher-index-queries.patch
new file mode 100644
index 0000000000..662fd13a7f
--- /dev/null
+++ b/network/elinks/patches/0030-gopher-index-queries.patch
@@ -0,0 +1,113 @@
+#######################################################################
+# Fix for type 7 entities.
+# dave@slackbuilds.org
+#######################################################################
+diff -Naur '--exclude=.git' bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
+--- bb/src/protocol/gopher/gopher.c 2020-01-13 22:35:13.663935305 +0000
++++ cc/src/protocol/gopher/gopher.c 2020-01-13 23:16:00.053003768 +0000
+@@ -197,7 +197,7 @@
+ command->length = strlen(command->source);
+ }
+
+-static struct connection_state init_gopher_index_cache_entry(struct connection *conn);
++/* static struct connection_state init_gopher_index_cache_entry(struct connection *conn); */
+
+ static struct connection_state
+ add_gopher_command(struct connection *conn, struct string *command,
+@@ -205,7 +205,7 @@
+ unsigned char *selector, int selectorlen)
+ {
+ unsigned char *query;
+- int querylen;
++ int querylen = 0;
+
+ if (!init_string(command))
+ return connection_state(S_OUT_OF_MEM);
+@@ -218,13 +218,14 @@
+ /* Exclude '?' */
+ if (query) selectorlen -= 1;
+ query = NULL;
+- querylen = 0;
+- } else {
+- query += 1;
++ } else if (entity == GOPHER_INDEX) {
++ /* fix query size to not include the search= part */
++ query += 8;
+ querylen = selector + selectorlen - query;
+ /* Exclude '?' */
+- selectorlen -= querylen + 1;
+- if (querylen >= 7 && !c_strncasecmp(query, "search=", 7)) {
++ /* fix selector length to fit with query */
++ selectorlen -= querylen + 8;
++ if (querylen >= 7 && !c_strncasecmp(query, "submit=", 7)) {
+ query += 7;
+ querylen -= 7;
+ }
+@@ -233,9 +234,11 @@
+ switch (entity) {
+ case GOPHER_INDEX:
+ /* No search required? */
++ /* Don't display the form page */
+ if (!query) {
+ done_string(command);
+- return init_gopher_index_cache_entry(conn);
++ add_uri_decoded(command, selector, selectorlen, 0);
++ break;
+ }
+
+ add_uri_decoded(command, selector, selectorlen, 0);
+@@ -371,13 +374,14 @@
+ add_gopher_search_field(struct string *buffer, const unsigned char *text,
+ const unsigned char *addr)
+ {
++ /* Not *every* query is a search! */
+ add_format_to_string(buffer,
+ "<form action=\"%s\">"
+ "<table>"
+ "<td> </td>"
+ "<td>%s:</td>"
+- "<td><input maxlength=\"256\" name=\"search\" value=\"\"></td>"
+- "<td><input type=submit value=\"Search\"></td>"
++ "<td><input maxlength=\"256\" name=\"submit\" value=\"\"></td>"
++ "<td><input type=submit value=\"Submit\"></td>"
+ "</table>"
+ "</form>",
+ addr, text);
+@@ -662,6 +666,7 @@
+ }
+
+ /* Display a Gopher Index document. */
++/* Use the page that the gopher site sends us
+ static struct connection_state
+ init_gopher_index_cache_entry(struct connection *conn)
+ {
+@@ -674,9 +679,9 @@
+
+ where = get_uri_string(conn->uri, URI_PUBLIC);
+
+- /* TODO: Use different function when using UTF-8
++ TODO: Use different function when using UTF-8
+ * in terminal (decode_uri_for_display replaces
+- * bytes of UTF-8 characters width '*'). */
++ * bytes of UTF-8 characters width '*'). *
+ if (where) decode_uri_for_display(where);
+
+ add_format_to_string(&buffer,
+@@ -695,7 +700,7 @@
+
+ mem_free_if(where);
+
+- /* FIXME: I think this needs a form or something */
++ * FIXME: I think this needs a form or something *
+
+ add_fragment(conn->cached, conn->from, buffer.source, buffer.length);
+ conn->from += buffer.length;
+@@ -707,7 +712,7 @@
+ ? connection_state(S_OK)
+ : connection_state(S_OUT_OF_MEM);
+ }
+-
++*/
+
+ static void
+ read_gopher_response_data(struct socket *socket, struct read_buffer *rb)
diff --git a/network/elinks/patches/0040-gopher-directory-links.patch b/network/elinks/patches/0040-gopher-directory-links.patch
new file mode 100644
index 0000000000..15a89fac2f
--- /dev/null
+++ b/network/elinks/patches/0040-gopher-directory-links.patch
@@ -0,0 +1,26 @@
+#######################################################################
+# Fix remote directory links.
+# dave@slackbuilds.org
+#######################################################################
+diff -Naur -x .git bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
+--- bb/src/protocol/gopher/gopher.c 2020-01-13 23:22:18.918292198 +0000
++++ cc/src/protocol/gopher/gopher.c 2020-01-13 23:21:00.631960039 +0000
+@@ -321,6 +321,18 @@
+ selectorlen++;
+ }
+
++ if (entity_info->type == '1') {
++ if (strchr(selector, '1') == (char *) selector) {
++ selector++;
++ selectorlen--;
++ }
++ else {
++ if ((char *) selector == "/1") {
++ selectorlen--;
++ }
++ }
++ }
++
+ state = add_gopher_command(conn, &command, entity, selector, selectorlen);
+ if (!is_in_state(state, S_CONN))
+ return state;
diff --git a/network/elinks/patches/0005-gopher_newlines_tabs_entity.patch b/network/elinks/patches/0050-gopher-newlines-tabs-entity.patch
index f27b655cc6..b255fb4f98 100644
--- a/network/elinks/patches/0005-gopher_newlines_tabs_entity.patch
+++ b/network/elinks/patches/0050-gopher-newlines-tabs-entity.patch
@@ -1,13 +1,13 @@
#####################################################################
-# Some fixes for having line feeds in text without a carriage return.
+# Fix line feeds without carriage returns.
# Make sure that only lines with tabs are treated as links.
# Support links that don't begin with a '/'.
# dave@slackbuilds.org
#####################################################################
-diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
---- a/src/protocol/gopher/gopher.c 2020-01-08 05:43:40.148408539 +0000
-+++ b/src/protocol/gopher/gopher.c 2020-01-08 05:43:26.357005028 +0000
-@@ -322,7 +322,7 @@
+diff -Naur -x .git bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
+--- bb/src/protocol/gopher/gopher.c 2020-01-14 03:19:39.956296190 +0000
++++ cc/src/protocol/gopher/gopher.c 2020-01-14 03:20:05.295045232 +0000
+@@ -290,7 +290,7 @@
/* Get entity type, and selector string. */
/* Pick up gopher_entity */
@@ -16,42 +16,36 @@ diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
entity = *selector++;
selectorlen--;
}
-@@ -472,6 +472,7 @@
- unsigned char *host = NULL;
- unsigned char *port = NULL;
- enum gopher_entity entity = *name++;
-+ int link = 0;
-
- if (!entity) {
- add_char_to_string(buffer, '\n');
-@@ -481,6 +482,7 @@
- if (*name) {
- selector = strchr(name, ASCII_TAB);
- if (selector) {
-+ link = 1;
- /* Terminate name */
- *selector++ = '\0';
-
-@@ -551,7 +553,7 @@
- switch (entity) {
- case GOPHER_WWW:
- /* Gopher pointer to W3 */
-- if (selector) {
-+ if (selector && link == 1) {
- add_gopher_link(buffer, name, selector);
- break;
+@@ -333,6 +333,18 @@
}
-@@ -603,7 +605,8 @@
+ }
+
++ if (entity_info->type == '1') {
++ if (strchr(selector, '1') == (char *) selector) {
++ selector++;
++ selectorlen--;
++ }
++ else {
++ if ((char *) selector == "/1") {
++ selectorlen--;
++ }
++ }
++ }
++
+ state = add_gopher_command(conn, &command, entity, selector, selectorlen);
+ if (!is_in_state(state, S_CONN))
+ return state;
+@@ -570,7 +582,8 @@
} else if (address.length > 0
&& strlcmp(address.source, address.length - 1,
- "gopher://error.host:1/", -1)) {
+ "gopher://error.host:1/", -1)
-+ && link == 1) {
++ && selector) {
add_gopher_link(buffer, name, address.source);
} else {
-@@ -623,7 +626,7 @@
+@@ -590,7 +603,7 @@
get_gopher_line_end(unsigned char *data, int datalen)
{
for (; datalen > 1; data++, datalen--)
diff --git a/network/elinks/patches/0060-gopher-indexes-nocr.patch b/network/elinks/patches/0060-gopher-indexes-nocr.patch
new file mode 100644
index 0000000000..9e4a441db6
--- /dev/null
+++ b/network/elinks/patches/0060-gopher-indexes-nocr.patch
@@ -0,0 +1,19 @@
+#######################################################################
+# Fix index listings with only LF and no CRs.
+# dave@slackbuilds.org
+#######################################################################
+diff -Naur '--exclude=.git' bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
+--- bb/src/protocol/gopher/gopher.c 2020-01-14 06:42:11.030536586 +0000
++++ cc/src/protocol/gopher/gopher.c 2020-01-14 06:42:26.710000886 +0000
+@@ -757,6 +757,11 @@
+ switch (gopher->entity->type) {
+ case GOPHER_DIRECTORY:
+ case GOPHER_INDEX:
++ /* Lines with no carriage returns */
++ if (strchr(rb->data, ASCII_CR) == NULL) {
++ strncat(rb->data, "\r\n", 2);
++ rb->length += 3;
++ }
+ state = read_gopher_directory_data(conn, rb);
+ break;
+
diff --git a/network/elinks/patches/0007-gopher-move_null.patch b/network/elinks/patches/0070-gopher-move-null.patch
index 01751c497a..8f259e55cf 100644
--- a/network/elinks/patches/0007-gopher-move_null.patch
+++ b/network/elinks/patches/0070-gopher-move-null.patch
@@ -1,11 +1,11 @@
###################################################################
-# Move the added null terminator one char forwards
+# Move the null terminator one char forwards.
# dave@slackbuilds.org
###################################################################
-diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
---- a/src/protocol/gopher/gopher.c 2020-01-08 06:52:23.491455711 +0000
-+++ b/src/protocol/gopher/gopher.c 2020-01-08 06:51:41.160210431 +0000
-@@ -638,7 +638,7 @@
+diff -Naur -x .git bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
+--- bb/src/protocol/gopher/gopher.c 2020-01-14 03:24:11.259323801 +0000
++++ cc/src/protocol/gopher/gopher.c 2020-01-14 03:24:49.452454019 +0000
+@@ -615,7 +615,7 @@
assert(line < end);
/* Just to be safe NUL terminate the line */
diff --git a/network/elinks/patches/0008-gopher-encode-html.patch b/network/elinks/patches/0080-gopher-html-entities.patch
index 21486ff1a4..750d1a49de 100644
--- a/network/elinks/patches/0008-gopher-encode-html.patch
+++ b/network/elinks/patches/0080-gopher-html-entities.patch
@@ -1,7 +1,10 @@
-diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
---- a/src/protocol/gopher/gopher.c 2020-01-09 09:19:54.983674477 +0000
-+++ b/src/protocol/gopher/gopher.c 2020-01-09 09:21:58.885286474 +0000
-@@ -663,6 +663,25 @@
+###################################################################
+# Encode < > to HTML.
+###################################################################
+diff -Naur '--exclude=.git' bb/src/protocol/gopher/gopher.c cc/src/protocol/gopher/gopher.c
+--- bb/src/protocol/gopher/gopher.c 2020-01-14 03:26:41.791778387 +0000
++++ cc/src/protocol/gopher/gopher.c 2020-01-14 06:19:56.964025440 +0000
+@@ -620,6 +620,25 @@
return line[0] == '.' && !line[1] ? NULL : line;
}
@@ -10,7 +13,7 @@ diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
+str_replace(char * in_string, char * s_string, char * r_string)
+{
+ /* max == replace all characters */
-+ char temp[strlen(in_string) * (strlen(r_string) - strlen(s_string))];
++ char temp[strlen(in_string) * (strlen(r_string) - strlen(s_string)) + 1];
+ char * pos;
+
+ if (!(pos = strstr(in_string, s_string)))
@@ -18,7 +21,7 @@ diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
+
+ strncpy(temp, in_string, pos - in_string);
+ temp[pos - in_string] = 0;
-+ sprintf(temp + (pos - in_string), "%s%s", r_string, pos + strlen(s_string));
++ sprintf(temp + (pos - in_string), "%s%s", r_string, pos + 1);
+ in_string[0] = 0;
+ strcpy(in_string, temp);
+ return str_replace(in_string, s_string, r_string);
@@ -27,7 +30,7 @@ diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
/* Parse a Gopher Menu document */
static struct connection_state
read_gopher_directory_data(struct connection *conn, struct read_buffer *rb)
-@@ -682,6 +701,17 @@
+@@ -639,6 +658,14 @@
return connection_state(S_OUT_OF_MEM);
}
@@ -38,9 +41,6 @@ diff -Naur a/src/protocol/gopher/gopher.c b/src/protocol/gopher/gopher.c
+ if (strstr(rb->data, ">")) {
+ str_replace(rb->data, ">", "&gt;");
+ }
-+ if (strstr(rb->data, "\"")) {
-+ str_replace(rb->data, "\"", "&quot;");
-+ }
+
while ((end = get_gopher_line_end(rb->data, rb->length))) {
unsigned char *line = check_gopher_last_line(rb->data, end);
diff --git a/network/elinks/patches/0010-fix-lib-path.patch b/network/elinks/patches/0090-fix-lib-path.patch
index 2cdee67fbd..2cdee67fbd 100644
--- a/network/elinks/patches/0010-fix-lib-path.patch
+++ b/network/elinks/patches/0090-fix-lib-path.patch
diff --git a/network/elinks/slack-desc b/network/elinks/slack-desc
index 13590c62fd..7ae5ceddeb 100644
--- a/network/elinks/slack-desc
+++ b/network/elinks/slack-desc
@@ -13,7 +13,7 @@ elinks: web (HTTP/FTP/..) browser. ELinks can render both frames and tables,
elinks: is highly customizable, and can be extended via Lua or Guile scripts.
elinks: It is very portable and runs on a variety of platforms.
elinks:
-elinks: For more information, see: http://elinks.or.cz
+elinks: Homepage: http://elinks.cz
elinks:
elinks:
elinks: