summaryrefslogtreecommitdiffstats
path: root/PACKAGE
diff options
context:
space:
mode:
Diffstat (limited to 'PACKAGE')
-rw-r--r--PACKAGE/debian/changelog71
-rw-r--r--PACKAGE/debian/compat1
-rw-r--r--PACKAGE/debian/control21
-rw-r--r--PACKAGE/debian/copyright103
-rw-r--r--PACKAGE/debian/doc-base10
-rw-r--r--PACKAGE/debian/lynx-dev.lintian-overrides15
-rw-r--r--PACKAGE/debian/menu2
-rw-r--r--PACKAGE/debian/mime2
-rw-r--r--PACKAGE/debian/postinst27
-rw-r--r--PACKAGE/debian/prerm12
-rwxr-xr-xPACKAGE/debian/rules195
-rw-r--r--PACKAGE/debian/source/format1
-rw-r--r--PACKAGE/debian/watch4
-rw-r--r--PACKAGE/lynx-curses.iss12
-rw-r--r--PACKAGE/lynx-curssl.iss14
-rw-r--r--PACKAGE/lynx-default.iss11
-rw-r--r--PACKAGE/lynx-newssl.iss14
-rw-r--r--PACKAGE/lynx-oldssl.iss14
-rw-r--r--PACKAGE/lynx-slang.iss13
-rw-r--r--PACKAGE/lynx.iss604
-rw-r--r--PACKAGE/lynx.nsi241
-rw-r--r--PACKAGE/lynx.spec137
-rw-r--r--PACKAGE/version.iss9
23 files changed, 1533 insertions, 0 deletions
diff --git a/PACKAGE/debian/changelog b/PACKAGE/debian/changelog
new file mode 100644
index 0000000..048e3cf
--- /dev/null
+++ b/PACKAGE/debian/changelog
@@ -0,0 +1,71 @@
+lynx-dev (2.9.0) unstable; urgency=high
+
+ * new release
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 14 Jan 2024 17:15:53 -0500
+
+lynx-dev (2.8.8dev.16) unstable; urgency=high
+
+ * changes for dev.16
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Tue, 30 Apr 2013 04:32:34 -0400
+
+lynx-dev (2.8.8dev.15) unstable; urgency=high
+
+ * changes for dev.15
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 08 Nov 2012 17:39:36 -0500
+
+lynx-dev (2.8.8dev.14) unstable; urgency=high
+
+ * fix regression in dev.13
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 22 Aug 2012 06:22:28 -0400
+
+lynx-dev (2.8.8dev.13) unstable; urgency=low
+
+ * changes for dev.13
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 07 Jul 2012 10:55:34 -0400
+
+lynx-dev (2.8.8dev.12) unstable; urgency=low
+
+ * changes for dev.12
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 22 Feb 2012 20:23:20 -0500
+
+lynx-dev (2.8.8dev.11) unstable; urgency=low
+
+ * changes for dev.11
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 15 Feb 2012 18:43:49 -0500
+
+lynx-dev (2.8.8dev.10) unstable; urgency=low
+
+ * changes for dev.10
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 06 Oct 2011 18:19:01 -0400
+
+lynx-dev (2.8.8dev.9) unstable; urgency=low
+
+ * changes for dev.9
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 27 Apr 2011 19:38:05 -0400
+
+lynx-dev (2.8.8dev.8) unstable; urgency=low
+
+ * changes for dev.8
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 19 Dec 2010 18:49:04 -0500
+
+lynx-dev (2.8.8dev.7) unstable; urgency=low
+
+ * changes for dev.7
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Mon, 01 Nov 2010 17:32:06 -0400
+
+lynx-dev (2.8.8dev.6) unstable; urgency=low
+
+ * add build-script for testing, adapted from Debian lynx-cur package.
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 18 Sep 2010 07:14:46 -0400
diff --git a/PACKAGE/debian/compat b/PACKAGE/debian/compat
new file mode 100644
index 0000000..f599e28
--- /dev/null
+++ b/PACKAGE/debian/compat
@@ -0,0 +1 @@
+10
diff --git a/PACKAGE/debian/control b/PACKAGE/debian/control
new file mode 100644
index 0000000..1875ece
--- /dev/null
+++ b/PACKAGE/debian/control
@@ -0,0 +1,21 @@
+Source: lynx-dev
+Section: web
+Priority: optional
+Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
+Homepage: https://invisible-island.net/lynx/
+Build-Depends: debhelper (>= 7), dpatch, po-debconf, libncursesw5-dev, zlib1g-dev, gettext, libgnutls-dev, sharutils, telnet, openssh-client, libbsd-dev, libidn11-dev
+Standards-Version: 3.8.2
+
+Package: lynx-dev
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: www-browser, news-reader
+Recommends: mime-support
+Description: Text-mode WWW Browser with NLS support (development version)
+ Lynx is a fully-featured World Wide Web (WWW) client for users running
+ cursor-addressable, character-cell display devices. It is very fast and easy
+ to use. It will display HTML documents containing links to files residing on
+ the local system, as well as files residing on remote systems running Gopher,
+ HTTP, FTP, WAIS, and NNTP servers.
+ .
+ This package contains a development version of lynx.
diff --git a/PACKAGE/debian/copyright b/PACKAGE/debian/copyright
new file mode 100644
index 0000000..0a4f461
--- /dev/null
+++ b/PACKAGE/debian/copyright
@@ -0,0 +1,103 @@
+Upstream source https://lynx.invisible-island.net/current/
+
+Current maintainer: Thomas Dickey <dickey@invisible-island.net>
+
+-------------------------------------------------------------------------------
+
+Copyright 1997-2023,2024 Thomas E. Dickey
+Copyright (C) 1995 University of Kansas.
+
+Most of the content of the lynx release (and corresponding copyright) is
+the work of developers on the lynx-dev mailing list, who have agreed to
+distribute their work under the terms and conditions of the GNU General
+Public License (Version 2). Note that the License text after the terms
+and conditions is advisory in nature, and contains neither terms nor
+conditions. You may choose to follow that advice.
+
+Any licensing questions should be directed to the mailing list:
+
+ lynx-dev@nongnu.org
+
+or to the maintainer (Thomas E. Dickey):
+
+ dickey@invisible-island.net
+
+-------------------------------------------------------------------------------
+
+Files: aclocal.m4
+License: other-BSD
+Copyright: 1997-2023,2024 by Thomas E. Dickey
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose and without fee is hereby granted,
+ provided that the above copyright notice appear in all copies and that
+ both that copyright notice and this permission notice appear in
+ supporting documentation, and that the name of the above listed
+ copyright holder(s) not be used in advertising or publicity pertaining
+ to distribution of the software without specific, written prior
+ permission.
+
+ THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
+ TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
+ LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Files: install-sh
+Copyright: 1994 X Consortium
+License: other-BSD
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+ FSF changes to this file are in the public domain.
+
+ Calling this script install-sh is preferred over install.sh, to prevent
+ `make' implicit rules from creating a file called install from it
+ when there is no Makefile.
+
+ This script is compatible with the BSD install script, but was written
+ from scratch. It can only install one file at a time, a restriction
+ shared with many OS's install programs.
+
+Files: debian/*
+Copyright: 2010-2019,2020 Thomas E. Dickey
+License: other-BSD
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose and without fee is hereby granted,
+ provided that the above copyright notice appear in all copies and that
+ both that copyright notice and this permission notice appear in
+ supporting documentation, and that the name of the above listed
+ copyright holder(s) not be used in advertising or publicity pertaining
+ to distribution of the software without specific, written prior
+ permission.
+
+ THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
+ TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
+ LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in '/usr/share/common-licenses/GPL-2'
diff --git a/PACKAGE/debian/doc-base b/PACKAGE/debian/doc-base
new file mode 100644
index 0000000..ef651b7
--- /dev/null
+++ b/PACKAGE/debian/doc-base
@@ -0,0 +1,10 @@
+Document: lynx-dev
+Title: Debian Lynx Manual
+Author: Michael Grobe <grobe@ukans.edu> et al.
+Abstract: This manual describes what lynx-dev is
+ and how it can be used on Debian systems.
+Section: Network/Web Browsing
+
+Format: HTML
+Index: /usr/share/doc/lynx-dev/help_dir/lynx_help_main.html.gz
+Files: /usr/share/doc/lynx-dev/help_dir/*.html.gz
diff --git a/PACKAGE/debian/lynx-dev.lintian-overrides b/PACKAGE/debian/lynx-dev.lintian-overrides
new file mode 100644
index 0000000..9b0aa40
--- /dev/null
+++ b/PACKAGE/debian/lynx-dev.lintian-overrides
@@ -0,0 +1,15 @@
+# This is intentional because it is referenced from the documentation.
+lynx-dev: extra-license-file usr/share/doc/lynx-dev/COPYING
+
+lynx-dev: national-encoding usr/share/doc/lynx-dev/test/ALT88592.html
+lynx-dev: national-encoding usr/share/doc/lynx-dev/test/iso-8859-1.html
+lynx-dev: national-encoding usr/share/doc/lynx-dev/test/iso-8859-2.html
+
+# These are a known problem with lintian:
+# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891301
+lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/ALT88592.html [<link rev="owner" href="http://mail.gnu.org/mailman/listinfo/lynx-dev/">] (http://mail.gnu.org/mailman/listinfo/lynx-dev/)
+lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/bad-html.html [<link rev="owner" href="http://mail.gnu.org/mailman/listinfo/lynx-dev/">] (http://mail.gnu.org/mailman/listinfo/lynx-dev/)
+lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/cp-1252.html [<link rev="owner" href="http://mail.gnu.org/mailman/listinfo/lynx-dev/">] (http://mail.gnu.org/mailman/listinfo/lynx-dev/)
+lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/cp-1252a.html [<link rev="owner" href="http://mail.gnu.org/mailman/listinfo/lynx-dev/">] (http://mail.gnu.org/mailman/listinfo/lynx-dev/)
+lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/iso-8859-2.html [<link rev="owner" href="http://mail.gnu.org/mailman/listinfo/lynx-dev/">] (http://mail.gnu.org/mailman/listinfo/lynx-dev/)
+lynx-dev: privacy-breach-generic usr/share/doc/lynx-dev/test/iso-8859-2a.html [<link rev="owner" href="http://mail.gnu.org/mailman/listinfo/lynx-dev/">] (http://mail.gnu.org/mailman/listinfo/lynx-dev/)
diff --git a/PACKAGE/debian/menu b/PACKAGE/debian/menu
new file mode 100644
index 0000000..6421345
--- /dev/null
+++ b/PACKAGE/debian/menu
@@ -0,0 +1,2 @@
+?package(lynx-dev):needs="text" section="Applications/Network/Web Browsing"\
+ title="Lynx-dev" command="lynx-dev"
diff --git a/PACKAGE/debian/mime b/PACKAGE/debian/mime
new file mode 100644
index 0000000..4777956
--- /dev/null
+++ b/PACKAGE/debian/mime
@@ -0,0 +1,2 @@
+text/html; /usr/bin/lynx -force_html %s; needsterminal; description=HTML Text; nametemplate=%s.html; priority=3
+text/html; /usr/bin/lynx -dump -force_html %s; copiousoutput; description=HTML Text; nametemplate=%s.html; priority=2
diff --git a/PACKAGE/debian/postinst b/PACKAGE/debian/postinst
new file mode 100644
index 0000000..89955d4
--- /dev/null
+++ b/PACKAGE/debian/postinst
@@ -0,0 +1,27 @@
+#! /bin/sh
+# postinst script for lynx
+
+set -e
+
+PRI=50
+ALT=lynx
+PKG=lynx-dev
+
+BINDIR=/usr/bin
+MANDIR=/usr/share/man/man1
+
+if [ $1 != "upgrade" ]
+then
+
+ update-alternatives \
+ --install \
+ $BINDIR/$ALT $ALT \
+ $BINDIR/$PKG $PRI \
+ --slave $MANDIR/$ALT.1.gz $ALT.1.gz \
+ $MANDIR/$PKG.1.gz
+
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/PACKAGE/debian/prerm b/PACKAGE/debian/prerm
new file mode 100644
index 0000000..a79bf38
--- /dev/null
+++ b/PACKAGE/debian/prerm
@@ -0,0 +1,12 @@
+#! /bin/sh
+# prerm script for lynx
+
+set -e
+
+if [ $1 != "upgrade" ]; then
+ update-alternatives --remove lynx /usr/bin/lynx-dev
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/PACKAGE/debian/rules b/PACKAGE/debian/rules
new file mode 100755
index 0000000..908ed5e
--- /dev/null
+++ b/PACKAGE/debian/rules
@@ -0,0 +1,195 @@
+#!/usr/bin/make -f
+# $LynxId: rules,v 1.19 2024/01/15 01:16:07 tom Exp $
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+PKG_SUFFIX = -dev
+
+PACKAGE := $(shell dpkg-parsechangelog| \
+ sed -n 's/^Source: \(.*\)$$/\1/p')
+
+docdir := /usr/share/doc/$(PACKAGE)
+helpdir := $(docdir)/help_dir
+
+DSTDIR := $(CURDIR)/debian/$(PACKAGE)
+DOCDIR := $(DSTDIR)$(docdir)
+
+CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
+CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
+LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+DEBOP=--enable-debug
+else
+DEBOP=
+endif
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+ INSTALL_PROGRAM += -s
+endif
+
+# This package adds the following not in Debian lynx-cur:
+# --enable-htmlized-cfg
+# --enable-local-docs
+# --with-cfg-path
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+
+ CPPFLAGS="$(CPPFLAGS)" \
+ CFLAGS="$(CFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" \
+ env cf_cv_SYSTEM_MAIL=/usr/sbin/sendmail \
+ COMPRESS=/usr/bin/compress \
+ BZIP2=/bin/bzip2 \
+ UNZIP=/usr/bin/unzip \
+ ZIP=/usr/bin/zip \
+ LIBS="-lbsd" \
+ ./configure \
+ --host=$(DEB_HOST_GNU_TYPE) \
+ --build=$(DEB_BUILD_GNU_TYPE) \
+ --program-suffix=$(PKG_SUFFIX) \
+ --prefix=/usr \
+ --libexecdir=\$${prefix}/lib \
+ --mandir=\$${prefix}/share/man \
+ --sysconfdir=/etc/$(PACKAGE) \
+ --with-cfg-path=/etc/$(PACKAGE):$(docdir)/samples \
+ --localstatedir=/var \
+ --disable-rpath-hack \
+ --libdir=/etc/$(PACKAGE) \
+ --enable-8bit-toupper \
+ --enable-cgi-links \
+ --enable-change-exec \
+ --enable-charset-choice \
+ --enable-cjk \
+ --enable-default-colors \
+ --enable-exec-links \
+ --enable-exec-scripts \
+ --enable-externs \
+ --enable-font-switch \
+ --enable-forms-options \
+ --enable-gzip-help \
+ --enable-htmlized-cfg \
+ --enable-internal-links \
+ --enable-ipv6 \
+ --enable-chinese-utf8 \
+ --enable-japanese-utf8 \
+ --enable-justify-elts \
+ --enable-kbd-layout \
+ --enable-local-docs \
+ --enable-nested-tables \
+ --enable-nls \
+ --enable-nsl-fork \
+ --enable-partial \
+ --enable-persistent-cookies \
+ --enable-prettysrc \
+ --enable-read-eta \
+ --enable-scrollbar \
+ --enable-source-cache \
+ --enable-syslog \
+ --enable-warnings \
+ --with-gnutls=/usr \
+ --with-screen=ncursesw6dev \
+ --with-textdomain=$(PACKAGE) \
+ --without-included-gettext \
+ ${DEBOP}
+
+ $(MAKE) preinstall \
+ docdir=$(docdir) \
+ helpdir=$(helpdir)
+
+ touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+ dh_testdir
+
+ $(MAKE) \
+ docdir=$(docdir) \
+ helpdir=$(helpdir)
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ [ ! -f Makefile ] || $(MAKE) clean
+
+ rm -f configure-stamp build-stamp install-stamp \
+ config.cache config.h config.status config.log makefile
+
+ rm -f *.o lynx
+
+ dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs
+
+ $(MAKE) install \
+ DESTDIR=$(CURDIR)/debian/$(PACKAGE) \
+ docdir=$(docdir) \
+ helpdir=$(helpdir)
+
+ touch install-stamp
+
+install: install-indep install-arch
+install-indep:
+
+install-arch:
+ dh_testdir
+ dh_testroot
+ dh_prep -s
+ dh_installdirs -s
+
+ $(MAKE) install-full \
+ DESTDIR=$(DSTDIR) \
+ docdir=$(docdir) \
+ helpdir=$(helpdir)
+
+ cd $(DOCDIR) && rm -f COPY*.asc CHANGES
+
+# Build architecture-independent files here.
+binary-indep: build install
+# No binary-indep target.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_lintian
+ dh_installdebconf
+ dh_installdocs
+ dh_installmenu
+ dh_installmime
+ dh_installexamples
+ dh_installchangelogs CHANGES
+ dh_install
+ dh_link
+ dh_strip
+ dh_compress -XCOPY -X.lss
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install install-stamp
diff --git a/PACKAGE/debian/source/format b/PACKAGE/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/PACKAGE/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/PACKAGE/debian/watch b/PACKAGE/debian/watch
new file mode 100644
index 0000000..f833931
--- /dev/null
+++ b/PACKAGE/debian/watch
@@ -0,0 +1,4 @@
+version=3
+
+opts=passive https://invisible-island.net/lynx/archives/lynx-cur\.tgz \
+ debian uupdate
diff --git a/PACKAGE/lynx-curses.iss b/PACKAGE/lynx-curses.iss
new file mode 100644
index 0000000..7710893
--- /dev/null
+++ b/PACKAGE/lynx-curses.iss
@@ -0,0 +1,12 @@
+; $LynxId: lynx-curses.iss,v 1.6 2018/03/14 08:34:56 tom Exp $
+;
+; This is an installer for the "color-style" flavor of Lynx.
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer (see "lynx.lss" for details).
+
+#define NoScreenDll
+#define SetupBaseName "lynx-cs"
+#define SourceExeName "lynx-cs.exe"
+
+#include "lynx.iss"
diff --git a/PACKAGE/lynx-curssl.iss b/PACKAGE/lynx-curssl.iss
new file mode 100644
index 0000000..3182257
--- /dev/null
+++ b/PACKAGE/lynx-curssl.iss
@@ -0,0 +1,14 @@
+; $LynxId: lynx-curssl.iss,v 1.1 2022/12/29 00:38:46 tom Exp $
+;
+; This is an installer for Lynx built with "current" OpenSSL (3.0.x).
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer (see "lynx.lss" for details).
+
+#define NoScreenDll
+#define SslGlob1 "'libssl-3*.dll'"
+#define SslGlob2 "'libcrypto-3*.dll'"
+#define SetupBaseName "lynx-curssl"
+#define SourceExeName "lynx-curssl.exe"
+
+#include "lynx.iss"
diff --git a/PACKAGE/lynx-default.iss b/PACKAGE/lynx-default.iss
new file mode 100644
index 0000000..f39b9b5
--- /dev/null
+++ b/PACKAGE/lynx-default.iss
@@ -0,0 +1,11 @@
+; $LynxId: lynx-default.iss,v 1.1 2018/03/13 09:10:08 tom Exp $
+;
+; This is an installer for the "default" flavor of Lynx.
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer (see "lynx.lss" for details).
+
+#define NoScreenDll
+#define SourceExeName "lynx-default.exe"
+
+#include "lynx.iss"
diff --git a/PACKAGE/lynx-newssl.iss b/PACKAGE/lynx-newssl.iss
new file mode 100644
index 0000000..fb57286
--- /dev/null
+++ b/PACKAGE/lynx-newssl.iss
@@ -0,0 +1,14 @@
+; $LynxId: lynx-newssl.iss,v 1.7 2024/01/15 21:35:29 tom Exp $
+;
+; This is an installer for Lynx built with "new" OpenSSL (1.1.x).
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer (see "lynx.lss" for details).
+
+#define NoScreenDll
+#define SslGlob1 "'libssl-3*.dll'"
+#define SslGlob2 "'libcrypto-3*.dll'"
+#define SetupBaseName "lynx-newssl"
+#define SourceExeName "lynx-newssl.exe"
+
+#include "lynx.iss"
diff --git a/PACKAGE/lynx-oldssl.iss b/PACKAGE/lynx-oldssl.iss
new file mode 100644
index 0000000..92575d2
--- /dev/null
+++ b/PACKAGE/lynx-oldssl.iss
@@ -0,0 +1,14 @@
+; $LynxId: lynx-oldssl.iss,v 1.6 2024/01/15 21:35:19 tom Exp $
+;
+; This is an installer for Lynx built with "old" OpenSSL (before 1.1.x).
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer (see "lynx.lss" for details).
+
+#define NoScreenDll
+#define SslGlob1 "'libssl-1*.dll'"
+#define SslGlob2 "'libcrypto-1*.dll'"
+#define SetupBaseName "lynx-oldssl"
+#define SourceExeName "lynx-oldssl.exe"
+
+#include "lynx.iss"
diff --git a/PACKAGE/lynx-slang.iss b/PACKAGE/lynx-slang.iss
new file mode 100644
index 0000000..e5a8185
--- /dev/null
+++ b/PACKAGE/lynx-slang.iss
@@ -0,0 +1,13 @@
+; $LynxId: lynx-slang.iss,v 1.3 2018/03/14 08:34:56 tom Exp $
+;
+; This is an installer for the "color-style" flavor of Lynx.
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer (see "lynx.lss" for details).
+
+#define NoScreenDll
+#define SetupBaseName "lynx-sl"
+#define SourceExeName "lynx-slang.exe"
+#define ScreenDllName "wslang32.dll"
+
+#include "lynx.iss"
diff --git a/PACKAGE/lynx.iss b/PACKAGE/lynx.iss
new file mode 100644
index 0000000..2353067
--- /dev/null
+++ b/PACKAGE/lynx.iss
@@ -0,0 +1,604 @@
+; $LynxId: lynx.iss,v 1.41 2024/01/15 23:28:41 tom Exp $
+; vile:ts=4 sw=4 notabinsert fk=8bit
+;
+; This is the BASE script for different flavors of the installer for Lynx.
+; It can be overridden to select different source-executables (and their associated
+; screen library, e.g., pdcurses or slang).
+;
+; The script assumes environment variables have been set, e.g., to point to
+; data which is used by the installer:
+;
+; LYNX_BINDIR - directory containing lynx.exe (or different names)
+; LYNX_DLLSDIR - directory containing curses or slang dlls.
+; LYNX_DOCSDIR - files and subdirectories installed from Unix with "make install-doc"
+; LYNX_HELPDIR - files and subdirectories installed from Unix with "make install-help"
+
+#include "version.iss"
+
+#ifndef MyAppExeName
+#define MyAppExeName "lynx.exe"
+#endif
+
+#if Ver < 0x5060100
+#define MySendTo '{sendto}\' + myAppName + '.lnk'
+#else
+#define MySendTo '{usersendto}\' + myAppName + '.lnk'
+#endif
+#define MyQuickLaunch '{userappdata}\Microsoft\Internet Explorer\Quick Launch\' + myAppName + '.lnk'
+
+#ifndef SourceExeName
+#define SourceExeName "lynx-default.exe"
+#endif
+
+#ifndef NoScreenDll
+#ifndef ScreenDllName
+#define ScreenDllName "pdcurses.dll"
+#endif
+#endif
+
+#ifndef BzipDllName
+#define BzipDllName "libbz2.dll"
+#endif
+
+#ifndef ZlibDllName
+#define ZlibDllName "zlib1.dll"
+#endif
+
+#ifndef BzipExeName
+#define BzipExeName "bzip2.exe"
+#endif
+
+#ifndef GzipExeName
+#define GzipExeName "gzip.exe"
+#endif
+
+#ifndef SetupBaseName
+#define SetupBaseName "lynx"
+#endif
+
+#ifndef BinsSrcDir
+#define BinsSrcDir GetEnv("LYNX_BINDIR")
+#if BinsSrcDir == ""
+#define BinsSrcDir "..\bin"
+#endif
+#endif
+
+#ifndef DllsSrcDir
+#define DllsSrcDir GetEnv("LYNX_DLLSDIR")
+#if DllsSrcDir == ""
+#define DllsSrcDir "..\bin"
+#endif
+#endif
+
+#ifndef DocsSrcDir
+#define DocsSrcDir GetEnv("LYNX_DOCSDIR")
+#if DocsSrcDir == ""
+#define DocsSrcDir "..\docs"
+#endif
+#endif
+
+#ifndef HelpSrcDir
+#define HelpSrcDir GetEnv("LYNX_HELPDIR")
+#if HelpSrcDir == ""
+#define HelpSrcDir "..\lynx_help"
+#endif
+#endif
+
+[Setup]
+AppName={#MyAppName}
+#emit 'AppVersion=' + LYNX_VERSION
+#emit 'VersionInfoDescription=Setup for "' + MyAppName + '"'
+#emit 'VersionInfoVersion=' + LYNX_VERSION
+AppVerName={#MyAppVerName}
+AppPublisher={#MyAppPublisher}
+AppCopyright=© 1997-2023,2024, Thomas E. Dickey
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={pf}\{#MyAppName}
+DefaultGroupName={#MyAppName}
+AllowNoIcons=yes
+LicenseFile=..\COPYHEADER
+InfoBeforeFile=..\README
+OutputDir=..\PACKAGE\lynx-setup
+#emit 'OutputBaseFilename=' + SetupBaseName + LYNX_VERSION + '-setup'
+Compression=lzma
+SolidCompression=yes
+PrivilegesRequired=none
+SetupLogging=no
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Components]
+Name: main; Description: The Lynx executable; types: full custom compact
+Name: explorer; Description: Windows Explorer integration; types: full custom
+
+[Tasks]
+Name: for_all_users; Description: Install for all users on this machine; GroupDescription: Configuration Settings; Components: main; Check: isGuru; Flags: unchecked
+Name: register_vars; Description: Use registry for environment variables; GroupDescription: Configuration Settings; Components: main; Flags: unchecked
+Name: use_sendto; Description: Add Send To Entry; GroupDescription: Windows Explorer; Components: explorer; Flags: unchecked
+Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Components: main; Flags: unchecked
+Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Components: main; Flags: unchecked
+
+
+[Dirs]
+Name: "{app}\doc"
+Name: "{app}\doc\samples"
+Name: "{app}\doc\test"
+Name: "{app}\help"
+Name: "{app}\help\keystrokes"
+Name: "{app}\icon"
+
+[Files]
+#emit 'Source: "' + BinsSrcDir + '\' + SourceExeName + '"; DestDir: "{app}"; DestName: ' + MyAppExeName + '; AfterInstall: myPostExecutable; Flags: ignoreversion'
+#ifndef NoScreenDll
+#emit 'Source: "' + DllsSrcDir + '\' + ScreenDllName + '"; DestDir: "{app}"; DestName: ' + ScreenDllName + '; Flags: ignoreversion'
+#endif
+#emit 'Source: "' + DllsSrcDir + '\' + BzipExeName + '"; DestDir: "{app}"; DestName: ' + BzipExeName + '; Flags: ignoreversion'
+#emit 'Source: "' + DllsSrcDir + '\' + GzipExeName + '"; DestDir: "{app}"; DestName: ' + GzipExeName + '; Flags: ignoreversion'
+#emit 'Source: "' + DocsSrcDir + '\*.*"; DestDir: "{app}\doc"; Flags: '
+#emit 'Source: "' + DocsSrcDir + '\samples\*.*"; DestDir: "{app}\doc\samples"; Flags: '
+#emit 'Source: "' + DocsSrcDir + '\test\*.*"; DestDir: "{app}\doc\test"; Flags: '
+#emit 'Source: "' + HelpSrcDir + '\*.*"; DestDir: "{app}\help"; Flags: '
+#emit 'Source: "' + HelpSrcDir + '\keystrokes\*.*"; DestDir: "{app}\help\keystrokes"; Flags: '
+
+; some of these data files are from an earlier installer by Claudio Santambrogio
+Source: "..\lynx.cfg"; DestDir: "{app}" ; AfterInstall: myCustomCfg; Flags: ignoreversion
+Source: "..\lynx.man"; DestDir: "{app}"
+Source: "..\samples\*.lss"; DestDir: "{app}"
+Source: "..\samples\home.htm"; DestDir: "{app}"
+Source: "..\samples\jumps.htm"; DestDir: "{app}"
+Source: "..\samples\lynx-demo.cfg"; DestDir: "{app}"
+Source: "..\samples\lynx.bat"; DestDir: "{app}"
+Source: "..\samples\lynx.ico"; DestDir: "{app}\icon"
+Source: "..\samples\lynx_bookmarks.htm"; DestDir: "{app}"
+Source: "..\samples\oldlynx.bat"; DestDir: "{app}"
+; NOTE: Don't use "Flags: ignoreversion" on any shared system files
+
+[Icons]
+Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
+Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
+Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
+
+[Run]
+Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent
+
+[UninstallDelete]
+Type: files; Name: {app}\.lynx_cookies
+Type: dirifempty; Name: {app}
+#emit 'Type: files; Name: ' + mySendTo
+#emit 'Type: files; Name: ' + myQuickLaunch
+
+[Code]
+#emit 'const MY_APP_NAME = ''{app}\' + myAppProg + '.exe'';'
+
+
+function isGuru(): Boolean;
+begin
+ Result := isAdminLoggedOn();
+end;
+
+function environRootKey(): Integer;
+begin
+ Result := HKEY_CURRENT_USER;
+end;
+
+function appKey(): string;
+begin
+ Result := 'Software\Lynx';
+end;
+
+function envSubKey(): string;
+begin
+ Result := 'Environment';
+end;
+
+function appSubKey(): string;
+begin
+ Result := appKey() + '\' + envSubKey();
+end;
+
+function envSysKey(): string;
+begin
+ Result := 'System\CurrentControlSet\Control\Session Manager\Environment';
+end;
+
+// Set the environment variable ValueName.
+procedure addVarToEnv(const RootKey: Integer; const SubKeyName, ValueName, toAdd: String);
+var
+ Updated : string;
+begin
+ Updated := ExpandConstant(toAdd);
+ RegWriteStringValue(RootKey, SubKeyName, ValueName, Updated);
+ Log('Added ' + toAdd + ' to ' + ValueName);
+ // MsgBox('addVarToEnv: ' #13#13 + ValueName + '="' + Updated + '"', mbInformation, MB_OK)
+end;
+
+// Remove the given environment variable ValueName.
+function removeVarFromEnv(const RootKey: Integer; const SubKeyName, ValueName: String): Boolean;
+var
+ Current : string;
+begin
+ Result := False;
+ if RegQueryStringValue(RootKey, SubKeyName, ValueName, Current) then
+ begin
+ RegDeleteValue(RootKey, SubKeyName, ValueName);
+ Result := True;
+ Log('Removed ' + ValueName);
+ // MsgBox('removeVarFromEnv: ' #13#13 + ValueName + '="' + Current + '"', mbInformation, MB_OK)
+ end;
+end;
+
+function selectedVarsRootKey(): Integer;
+begin
+ if isTaskSelected('for_all_users') then
+ Result := HKEY_LOCAL_MACHINE
+ else
+ Result := HKEY_CURRENT_USER;
+end;
+
+function selectedVarsSubKey(): String;
+begin
+ if isTaskSelected('for_all_users') then
+ begin
+ if isTaskSelected('register_vars') then
+ Result := appSubKey()
+ else
+ Result := envSysKey();
+ end else
+ begin
+ if isTaskSelected('register_vars') then
+ Result := appSubKey()
+ else
+ Result := envSubKey();
+ end;
+end;
+
+procedure addAnyVariable(const ValueName, newValue: String);
+begin
+ addVarToEnv(selectedVarsRootKey(), selectedVarsSubKey(), ValueName, NewValue);
+end;
+
+// FIXME: should only remove if it matches the installer's value
+procedure removeAnyVariable(const ValueName: String);
+begin
+ removeVarFromEnv(HKEY_CURRENT_USER, envSubKey(), ValueName);
+ removeVarFromEnv(HKEY_CURRENT_USER, appSubKey(), ValueName);
+ removeVarFromEnv(HKEY_LOCAL_MACHINE, appSubKey(), ValueName);
+ removeVarFromEnv(HKEY_LOCAL_MACHINE, envSysKey(), ValueName);
+end;
+
+// http://www.delphidabbler.com/articles?article=12
+procedure AddSendTo();
+begin
+ CreateShellLink(
+#emit 'ExpandConstant(''' + MySendTo + '''),'
+#emit '''SendTo link for ' + myAppName + ''','
+ ExpandConstant(MY_APP_NAME), // program
+ '', // option(s) will be followed by pathname
+ '', // no target directory
+ '', // no icon filename
+ -1, // no icon index
+ SW_SHOWNORMAL);
+end;
+
+procedure AddQuickLaunch();
+begin
+ CreateShellLink(
+#emit 'ExpandConstant(''' + MyQuickLaunch + '''),'
+#emit '''SendTo link for ' + myAppName + ''','
+ ExpandConstant(MY_APP_NAME), // program
+ '', // option(s) will be followed by pathname
+ '', // no target directory
+ '', // no icon filename
+ -1, // no icon index
+ SW_SHOWNORMAL);
+end;
+
+// This is called after installing the executable.
+procedure myPostExecutable();
+var
+ Keypath : String;
+ AppDir : String;
+begin
+ Keypath := appKey();
+ AppDir := ExpandConstant('{app}');
+ Log('Setting registry key "' + Keypath + '" to "' + AppDir + '"');
+ if not RegWriteStringValue(selectedVarsRootKey(), Keypath, '', AppDir) then
+ Log('Failed to set key');
+
+ if isTaskSelected('use_sendto') then
+ begin
+ AddSendTo();
+ Log('** added Send-To link');
+ end;
+
+ if isTaskSelected('quicklaunchicon') then
+ begin
+ AddQuickLaunch();
+ Log('** added Quick-launch link');
+ end;
+end;
+
+// This is called after installing the lynx.cfg file.
+procedure myCustomCfg();
+var
+ AppDir : String;
+ CfgFile : String;
+begin
+ AppDir := ExpandConstant('{app}');
+ CfgFile := AppDir + '\lynx.cfg';
+
+ addAnyVariable('LYNX_CFG', CfgFile);
+ Log('** set LYNX_CFG=' + CfgFile);
+
+ SaveStringToFile(CfgFile, 'HELPFILE:' + AppDir + '/help/Lynx_help_main.html.gz' + #10, True);
+ SaveStringToFile(CfgFile, 'COLOR_STYLE:' + AppDir + '/lynx.lss' + #10, True);
+
+ SaveStringToFile(CfgFile, 'CHMOD_PATH:' + #10, True);
+ SaveStringToFile(CfgFile, 'COPY_PATH:' + #10, True);
+ SaveStringToFile(CfgFile, 'MKDIR_PATH:' + #10, True);
+ SaveStringToFile(CfgFile, 'MV_PATH:' + #10, True);
+ SaveStringToFile(CfgFile, 'RMDIR_PATH:' + #10, True);
+ SaveStringToFile(CfgFile, 'RM_PATH:' + #10, True);
+ SaveStringToFile(CfgFile, 'TOUCH_PATH:' + #10, True);
+
+ Log('** customized ' + CfgFile);
+
+ if isTaskSelected('use_sendto') then
+ begin
+ AddSendTo();
+ Log('** added Send-To link');
+ end;
+end;
+
+function CleanupMyKey(const theRootKey: Integer): Boolean;
+var
+ Path : String;
+ Value : String;
+begin
+ Result := False;
+ if RegQueryStringValue(theRootKey, appKey(), '', Value) then
+ begin
+ if Value <> '' then
+ begin
+ Result := True;
+ Log('Deleting value of "' + appKey() + '" = "' + Value + '"');
+ if not RegDeleteValue(theRootKey, appKey(), '') then
+ Log('Failed to delete value');
+
+ Path := appKey() + '\Environment';
+ Log('Checking for subkey "' + Path + '"');
+ if RegValueExists(theRootKey, Path, '') then
+ begin
+ if RegDeleteKeyIncludingSubkeys(theRootKey, Path) then
+ Log('Deleted key "' + Path + '"')
+ else
+ Log('Failed to delete key "' + Path + '"');
+ end;
+
+ if RegDeleteKeyIfEmpty(theRootKey, appKey()) then
+ Log('Deleted key "' + appKey() + '"')
+ else
+ Log('Failed to delete key "' + appKey() + '"');
+ end
+ end
+end;
+
+#ifdef SslGlob1
+#emit "const SslGlob1 = " + SslGlob1 + ";"
+#emit "const SslGlob2 = " + SslGlob2 + ";"
+var
+ SslDirPage : TInputFileWizardPage;
+ SslLibraryPath : String;
+
+function DirContains(const PathList: string; const PathItem: string): Boolean;
+var
+ myList : string;
+ myItem : string;
+ myPart : string;
+ offset : integer;
+begin
+ Result := False;
+ myList := Uppercase(PathList);
+ myItem := Uppercase(RemoveBackslashUnlessRoot(PathItem));
+ offset := Pos(myItem, myList);
+ if offset <> 0 then
+ begin
+ myPart := Copy( myList, offset + Length(myItem), Length(myList) );
+ if ( Length(myPart) = 0 ) or ( Pos(';', myPart) = 1 ) or ( Pos('\;', myPart) = 1 ) then
+ begin
+ Result := True;
+ end;
+ end;
+end;
+
+function PathCat(const head, tail: string): string;
+begin
+ Result := RemoveBackslashUnlessRoot(head) + '\' + tail;
+end;
+
+procedure CopyFromTo(const source, target, name: string);
+var
+ FailExists : Boolean;
+ Status: Boolean;
+begin
+ Log('Copy from: ' + PathCat(source, name));
+ Log('Copy to: ' + PathCat(target, name));
+ FailExists := False;
+ Status := FileCopy(PathCat(source, name), PathCat(target, name), FailExists);
+ if not Status then
+ begin
+ MsgBox('Failed to copy ' + name, mbError, MB_OK);
+ Abort();
+ end;
+end;
+
+procedure ReallyDelete(const fullPath: string);
+begin
+ if FileExists( fullpath ) then
+ begin
+ if DeleteFile( fullPath ) then
+ Log( '...successful' )
+ else
+ begin
+ MsgBox('Failed to delete ' + fullPath, mbError, MB_OK);
+ end;
+ end;
+end;
+
+procedure DeleteAppFile(const name: string);
+var
+ AppDir : string;
+ fullPath : string;
+ findRec : TFindRec;
+begin
+ AppDir := ExpandConstant('{app}');
+ fullPath := PathCat( AppDir, name );
+ Log( 'Deleting ' + fullPath );
+ if Pos('*', fullPath) <> 0 then
+ begin
+ if FindFirst(fullPath, findRec) then
+ begin
+ ReallyDelete( PathCat( AppDir, findRec.name ) );
+ while FindNext( findRec ) do
+ ReallyDelete( PathCat( AppDir, findRec.name ) );
+ end
+ end
+ else
+ begin
+ ReallyDelete( fullPath );
+ end;
+end;
+
+function checkSslDir(): Boolean;
+begin
+ Result := True;
+ SslLibraryPath := Trim( SslDirPage.Values[0] );
+ if ( Length( SslLibraryPath ) = 0 ) or ( not FileExists( SslLibraryPath ) ) then
+ begin
+ MsgBox('No SSL library found', mbError, MB_OK)
+ Result := False;
+ end;
+end;
+
+procedure copySslDlls();
+var
+ SslDirectory : String;
+ SslFilename : String;
+ TargetDir : String;
+begin
+ Log('Copying SSL DLLs');
+ SslDirectory := ExtractFilePath(SslLibraryPath);
+
+ // If the directory is not already in the PATH, copy the DLLs to
+ // the application directory.
+ if DirContains( GetEnv('PATH'), SslDirectory) then
+ Log( 'PATH contains SSL directory' )
+ else
+ begin
+ TargetDir := ExpandConstant('{app}');
+ CreateDir(TargetDir);
+ if DirExists(TargetDir) then
+ begin
+ SslFilename := Lowercase( ExtractFileName( SslLibraryPath ) );
+ CopyFromTo( SslDirectory, TargetDir, SslFilename );
+ Log( 'comparing: ' + SslFilename + ' to ' + SslGlob1 );
+ if CompareText( SslFilename, SslGlob1 ) = 0 then
+ // old-ssl is literal, new is a glob...
+ CopyFromTo( SslDirectory, TargetDir, SslGlob2 )
+ else
+ // new-ssl matches "libssl-x-x-z", s/libssl/libcrypto/
+ SslFilename := 'libcrypto' + Copy(SslFilename, 7, Length(SslFilename));
+ CopyFromTo( SslDirectory, TargetDir, SslFilename );
+#ifdef RuntimeBundle
+ // older releases of OpenSSL bundled the Visual Studio runtime
+ SslFilename := SslDirectory + '\' + 'msvcr120.dll' ;
+ if FileExists(SslFilename) then
+ begin
+ CopyFromTo( SslDirectory, TargetDir, 'msvcr120.dll' );
+ end
+#endif
+ end
+ else
+ begin
+ MsgBox( 'Cannot create application directory', mbError, MB_OK )
+ Abort();
+ end
+ end;
+ Log('done - Copying SSL DLLs');
+end;
+
+procedure RegisterPreviousData(PreviousDataKey: Integer);
+begin
+ SetPreviousData( PreviousDataKey, 'SSL PATH', SslLibraryPath );
+end;
+
+function NextButtonClick(CurPageId: integer): Boolean;
+begin
+ Result := True;
+ if CurPageId = SslDirPage.Id then
+ begin
+ Result := checkSslDir();
+ end;
+end;
+
+procedure CurStepChanged(CurStep: TSetupStep);
+begin
+ if CurStep = ssInstall then
+ begin
+ CopySslDlls();
+ end;
+end;
+
+procedure InitializeWizard();
+var
+ myGlob: string;
+begin
+ // Create a page to locate the SSL library
+ SslDirPage := CreateInputFilePage(wpSelectDir,
+ 'Select SSL Library Location',
+ 'Where is the SSL library located?',
+ 'Select it from the directory, then click Next.');
+
+ myGlob := 'SSL dll|' + SslGlob1;
+ Log( 'search for SSL libraries ' + myGlob );
+ SslDirPage.Add( 'Locate SSL library:', myGlob, '*.dll' );
+ SslDirPage.Values[0] := GetPreviousData( 'SSL PATH', '' );
+end;
+#endif
+
+// On uninstall, we do not know which registry setting was selected during install, so we remove all.
+procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
+begin
+ case CurUninstallStep of
+ usUninstall:
+ begin
+ Log('CurUninstallStepChanged:' + 'Uninstall is about to start.')
+ // ...insert code to perform pre-uninstall tasks here...
+#ifdef SslGlob1
+ DeleteAppFile( SslGlob1 );
+ DeleteAppFile( SslGlob2 );
+ DeleteAppFile( 'msvcr120.dll' );
+#endif
+ end;
+ usPostUninstall:
+ begin
+ removeAnyVariable('LYNX_CFG');
+ {
+ If we don't find the settings in the current user, try the local machine.
+ The setup program cannot pass the all-users flag to the uninstaller, so we
+ have to try both.
+ }
+ Log('Checking current-user registry key');
+ if not CleanupMyKey(HKEY_CURRENT_USER) then
+ begin
+ Log('Checking local-machine registry key');
+ CleanupMyKey(HKEY_LOCAL_MACHINE);
+ end;
+
+ Log('CurUninstallStepChanged:' + 'Uninstall just finished.');
+ end;
+ end;
+end;
diff --git a/PACKAGE/lynx.nsi b/PACKAGE/lynx.nsi
new file mode 100644
index 0000000..7071db2
--- /dev/null
+++ b/PACKAGE/lynx.nsi
@@ -0,0 +1,241 @@
+; $LynxId: lynx.nsi,v 1.63 2024/01/07 11:13:00 tom Exp $
+; Script originally generated with the Venis Install Wizard, but customized.
+; The Inno Setup script is preferred; but this can be built via cross-compiling.
+
+; Define the application name
+!define APPNAME "Lynx"
+!define EXENAME "lynx.exe"
+
+!define VERSION_EPOCH "2"
+!define VERSION_MAJOR "9"
+!define VERSION_MINOR "0"
+!define VERSION_LEVEL "1013"
+!define VERSION_PATCH "dev.13"
+
+!define SUBKEY "Lynx"
+
+!define INSTALL "Lynx - web browser"
+!define VERSION "${VERSION_EPOCH}.${VERSION_MAJOR}.${VERSION_MINOR}${VERSION_PATCH}"
+
+; Main Install settings
+Name "${INSTALL}"
+InstallDir "$PROGRAMFILES\${INSTALL}"
+InstallDirRegKey HKLM "Software\${SUBKEY}" "$INSTDIR\bin"
+OutFile "NSIS-Output\${APPNAME}-${VERSION}-setup.exe"
+
+CRCCheck on
+SetCompressor /SOLID lzma
+
+VIAddVersionKey ProductName "${SUBKEY}"
+VIAddVersionKey CompanyName "https://invisible-island.net/lynx"
+VIAddVersionKey LegalCopyright "© 1997-2023,2024, Thomas E. Dickey"
+VIAddVersionKey FileDescription "Lynx Installer (MinGW)"
+VIAddVersionKey FileVersion "${VERSION}"
+VIAddVersionKey ProductVersion "${VERSION}"
+VIAddVersionKey Comments "This installer was built with NSIS and cross-compiling to MinGW."
+VIAddVersionKey InternalName "setup-${APPNAME}-${VERSION}.exe"
+VIProductVersion "${VERSION_EPOCH}.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_LEVEL}"
+
+; adapted from http://nsis.sourceforge.net/Readme_Page_Based_on_MUI_License_Page
+!macro MUI_EXTRAPAGE_README UN TheFile
+ !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
+ !insertmacro MUI_${UN}PAGE_LICENSE "${TheFile}"
+!macroend
+!define ReadmeRun "!insertmacro MUI_EXTRAPAGE_README"
+!macro MUI_PAGE_README TheFile
+ ${ReadmeRun} "" "${TheFile}"
+!macroend
+
+; Modern interface settings
+!include "MUI.nsh"
+
+!define MUI_ABORTWARNING
+!define MUI_FINISHPAGE_RUN "$INSTDIR\${EXENAME}"
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "..\COPYHEADER"
+!insertmacro MUI_PAGE_README "..\README"
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Set languages (first is default language)
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_RESERVEFILE_LANGDLL
+
+!define LYNX_CFG "lynx.cfg"
+
+InstType "Full" ; SectionIn 1
+InstType "Typical" ; SectionIn 2
+InstType "Minimal" ; SectionIn 3
+
+Section "${APPNAME}" Section1
+
+ SectionIn 1 2 3
+
+ ; Set Section properties
+ SetOverwrite on
+
+ ; Set Section Files and Shortcuts
+ SetOutPath "$INSTDIR"
+ File /oname=${EXENAME} ".\bin\*${EXENAME}"
+ File ".\bin\bzip2.exe"
+ File ".\bin\gzip.exe"
+ File ".\bin\*.dll"
+
+ ; TODO: bzip2.exe, gzip.exe, *.dll
+
+ CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${EXENAME}"
+ CreateShortCut "$SENDTO\${APPNAME}.lnk" "$INSTDIR\${EXENAME}"
+ CreateDirectory "$SMPROGRAMS\${INSTALL}"
+ CreateShortCut "$SMPROGRAMS\${INSTALL}\${INSTALL}.lnk" "$INSTDIR\${EXENAME}"
+ CreateShortCut "$SMPROGRAMS\${INSTALL}\${APPNAME} - Help.lnk" "$INSTDIR\help\lynx_help_main.html"
+ CreateShortCut "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
+
+ File ".\share\lynx_doc\samples\*.lss"
+
+ ; preinstall lynx.cfg as a temporary file
+ File /oname=${LYNX_CFG} ".\etc\${LYNX_CFG}"
+
+ ; at install-time, append our customization
+ FileOpen $0 "${LYNX_CFG}" a
+ FileSeek $0 0 END
+ FileWrite $0 "HELPFILE:$INSTDIR\help\Lynx_help_main.html.gz$\n"
+ FileWrite $0 "COLOR_STYLE:$INSTDIR\opaque.lss$\n"
+ FileWrite $0 "CHMOD_PATH:$\n"
+ FileWrite $0 "COPY_PATH:$\n"
+ FileWrite $0 "MKDIR_PATH:$\n"
+ FileWrite $0 "MV_PATH:$\n"
+ FileWrite $0 "RMDIR_PATH:$\n"
+ FileWrite $0 "RM_PATH:$\n"
+ FileWrite $0 "TOUCH_PATH:$\n"
+ FileClose $0
+
+ File "..\samples\lynx.bat"
+ File "..\samples\lynx-demo.cfg"
+ File "..\samples\oldlynx.bat"
+
+ File "..\samples\jumps.htm"
+ File "..\samples\home.htm"
+ File "..\samples\lynx_bookmarks.htm"
+
+ SetOutPath "$INSTDIR\icon"
+ File "..\samples\lynx.ico"
+
+ SetOutPath "$INSTDIR\tmp"
+
+SectionEnd
+
+Section "documentation" Section2
+
+ SectionIn 1 2
+
+ ; Set Section properties
+ SetOverwrite on
+
+ ; Set Section Files and Shortcuts
+ SetOutPath "$INSTDIR"
+ File "..\lynx.man"
+
+ SetOutPath "$INSTDIR\doc"
+ File ".\share\lynx_doc\CHANGES*.*"
+ File ".\share\lynx_doc\COPY*.*"
+ File ".\share\lynx_doc\PROBLEM*.*"
+ File ".\share\lynx_doc\README*.*"
+
+ SetOutPath "$INSTDIR\help"
+ File ".\share\lynx_help\*.*"
+
+ SetOutPath "$INSTDIR\help\keystrokes"
+ File ".\share\lynx_help\keystrokes\*.*"
+
+SectionEnd
+
+Section "samples" Section3
+
+ SectionIn 1
+
+ ; Set Section properties
+ SetOverwrite on
+
+ ; Set Section Files and Shortcuts
+ SetOutPath "$INSTDIR\doc\samples"
+ File ".\share\lynx_doc\samples\*.*"
+
+ SetOutPath "$INSTDIR\doc\test"
+ File ".\share\lynx_doc\test\*.*"
+
+SectionEnd
+
+Section -FinishSection
+
+ WriteRegStr HKLM "Software\${SUBKEY}" "" "$INSTDIR"
+ WriteRegStr HKLM "Software\${SUBKEY}" "Environment" ""
+ WriteRegStr HKLM "Software\${SUBKEY}\Environment" "LYNX_CFG" "$INSTDIR\${LYNX_CFG}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "DisplayName" "${INSTALL} ${VERSION}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "UninstallString" "$INSTDIR\uninstall.exe"
+ WriteUninstaller "$INSTDIR\uninstall.exe"
+
+SectionEnd
+
+; Modern install component descriptions
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "${SUBKEY}"
+ !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Documentation"
+ !insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Samples and Test-files."
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;Uninstall section
+Section Uninstall
+
+ ;Remove from registry...
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}"
+ DeleteRegKey HKLM "SOFTWARE\${SUBKEY}"
+
+ ; Delete self
+ Delete "$INSTDIR\uninstall.exe"
+
+ ; Delete Shortcuts
+ Delete "$DESKTOP\${APPNAME}.lnk"
+ Delete "$SENDTO\${APPNAME}.lnk"
+ Delete "$SMPROGRAMS\${INSTALL}\${INSTALL}.lnk"
+ Delete "$SMPROGRAMS\${INSTALL}\${APPNAME} - Help.lnk"
+ Delete "$SMPROGRAMS\${INSTALL}\Uninstall.lnk"
+
+ ; Clean up application
+ Delete "$INSTDIR\${EXENAME}"
+ Delete "$INSTDIR\doc\samples\*.*"
+ Delete "$INSTDIR\doc\test\*.*"
+ Delete "$INSTDIR\doc\*.*"
+ Delete "$INSTDIR\help\keystrokes\*.*"
+ Delete "$INSTDIR\help\*.*"
+ Delete "$INSTDIR\icon\*.*"
+ Delete "$INSTDIR\tmp\*.*"
+ Delete "$INSTDIR\bzip2.exe"
+ Delete "$INSTDIR\gzip.exe"
+ Delete "$INSTDIR\*.bat"
+ Delete "$INSTDIR\*.cfg"
+ Delete "$INSTDIR\*.dll"
+ Delete "$INSTDIR\*.htm"
+ Delete "$INSTDIR\*.man"
+ Delete "$INSTDIR\*.lss"
+ Delete "$INSTDIR\*.tmp"
+
+ ; Remove remaining directories
+ RMDir "$SMPROGRAMS\${INSTALL}"
+ RMDir "$INSTDIR\doc\samples"
+ RMDir "$INSTDIR\doc\test"
+ RMDir "$INSTDIR\doc"
+ RMDir "$INSTDIR\help\keystrokes"
+ RMDir "$INSTDIR\help"
+ RMDir "$INSTDIR\icon"
+ RMDir "$INSTDIR\tmp"
+ RMDir "$INSTDIR\"
+
+SectionEnd
+
+; eof \ No newline at end of file
diff --git a/PACKAGE/lynx.spec b/PACKAGE/lynx.spec
new file mode 100644
index 0000000..a11a9a0
--- /dev/null
+++ b/PACKAGE/lynx.spec
@@ -0,0 +1,137 @@
+# $LynxId: lynx.spec,v 1.72 2024/01/15 11:47:26 tom Exp $
+Summary: A text-based Web browser
+Name: lynx-dev
+Version: 2.9.0
+Release: 1
+License: GPLv2
+Group: Applications/Internet
+Source: lynx%{version}.tgz
+URL: https://lynx.invisible-island.net
+Provides: webclient >= 0.0
+Provides: text-www-browser >= 0.0
+
+# Fedora:
+BuildRequires: openssl-devel, pkgconfig, ncurses-devel >= 5.3-5,
+BuildRequires: zlib-devel, gettext
+BuildRequires: libidn-devel
+# BuildRequires: bzip2-devel
+
+# SuSE:
+# BuildRequires: libbz2-devel
+
+Requires: gzip, bzip2, tar, zip, unzip
+
+%description
+Lynx is a fully-featured World Wide Web (WWW) client for users running
+cursor-addressable, character-cell display devices. It is very fast and easy
+to use. It will display HTML documents containing links to files residing on
+the local system, as well as files residing on remote systems running Gopher,
+HTTP, FTP, WAIS, and NNTP servers.
+
+%define lynx_doc %{_defaultdocdir}/%{name}
+%define lynx_etc %{_sysconfdir}/%{name}
+
+%prep
+
+%define debug_package %{nil}
+%setup -q -n lynx%{version}
+
+%build
+%configure \
+ --target %{_target_platform} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --program-suffix=-dev \
+ --datadir=%{lynx_doc} \
+ --libdir=%{lynx_etc} \
+ --mandir=%{_mandir} \
+ --sysconfdir=%{lynx_etc} \
+ --with-cfg-path=%{lynx_etc}:%{lynx_doc}/samples \
+ --with-textdomain=%{name} \
+ --enable-8bit-toupper \
+ --enable-cgi-links \
+ --enable-change-exec \
+ --enable-charset-choice \
+ --enable-cjk \
+ --enable-default-colors \
+ --enable-exec-links \
+ --enable-exec-scripts \
+ --enable-externs \
+ --enable-font-switch \
+ --enable-forms-options \
+ --enable-gzip-help \
+ --enable-htmlized-cfg \
+ --enable-internal-links \
+ --enable-ipv6 \
+ --enable-chinese-utf8 \
+ --enable-japanese-utf8 \
+ --enable-justify-elts \
+ --enable-kbd-layout \
+ --enable-local-docs \
+ --enable-nested-tables \
+ --enable-nls \
+ --enable-nsl-fork \
+ --enable-partial \
+ --enable-persistent-cookies \
+ --enable-prettysrc \
+ --enable-read-eta \
+ --enable-scrollbar \
+ --enable-source-cache \
+ --enable-syslog \
+ --enable-warnings \
+ --with-screen=ncursesw6dev \
+ --with-ssl
+make \
+ docdir=%{lynx_doc}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+chmod -x samples/mailto-form.pl
+
+make install-full \
+ DESTDIR=$RPM_BUILD_ROOT \
+ docdir=%{lynx_doc}
+
+cat >>$RPM_BUILD_ROOT%{lynx_etc}/lynx.cfg <<EOF
+DEFAULT_INDEX_FILE:http://www.google.com/
+LOCALE_CHARSET:TRUE
+EOF
+
+strip $RPM_BUILD_ROOT%{_bindir}/%{name}
+
+%find_lang %{name}
+
+%files -f %{name}.lang
+%defattr(-,root,root,-)
+%{_bindir}/%{name}
+%{_mandir}/*/*
+%{lynx_doc}/*
+%config(noreplace) %{lynx_etc}/*.cfg
+%config(noreplace) %{lynx_etc}/*.lss
+
+%changelog
+
+* Mon Jan 15 2024 Thomas E. Dickey
+- simplified tarball name
+
+* Sun Jan 07 2024 Thomas E. Dickey
+- use rpm #find_lang macro for configuring language files
+- use noreplace flag for *.cfg and *.lss config files
+- remove obsolete #clean section
+
+* Tue Mar 29 2022 Thomas E. Dickey
+- add brotli compression
+
+* Sat Jul 31 2021 Thomas E. Dickey
+- align configure-options with Debian package, removing some which are not
+ needed because they correspond to the default settings.
+
+* Thu May 17 2018 Thomas E. Dickey
+- use "ncursesw6dev", reflecting renaming of ncurses test-packages to avoid
+ conflict with new packages in Fedora.
+
+* Mon Mar 12 2018 Thomas E. Dickey
+- rename to "lynx-dev", add a few dependencies where package names are same.
+
+* Fri Sep 17 2010 Thomas E. Dickey
+- initial version.
diff --git a/PACKAGE/version.iss b/PACKAGE/version.iss
new file mode 100644
index 0000000..e3fe613
--- /dev/null
+++ b/PACKAGE/version.iss
@@ -0,0 +1,9 @@
+; version used for Inno Setup files.
+
+#define LYNX_VERSION "2.9.0"
+
+#define MyAppProg "Lynx"
+#define MyAppName "Lynx - web browser"
+#define MyAppPublisher "Thomas E Dickey"
+#define MyAppURL "https://invisible-island.net/lynx"
+#define MyAppVerName "Lynx " + LYNX_VERSION