pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

slrn: Updated to current stable version.



Module Name:	pkgsrc-wip
Committed By:	Michael Baeuerle <michael.baeuerle%stz-e.de@localhost>
Pushed By:	micha
Date:		Mon Jul 30 17:03:53 2018 +0200
Changeset:	e0d84036e4d8172f6bec1607de4a7a10f38cd9a5

Added Files:
	slrn/DESCR
	slrn/Makefile
	slrn/PLIST
	slrn/README
	slrn/TODO
	slrn/distinfo
	slrn/options.mk
	slrn/patches/patch-changes.txt
	slrn/patches/patch-doc_manual.txt
	slrn/patches/patch-doc_slrn.rc
	slrn/patches/patch-po_Makefile.in.in
	slrn/patches/patch-src_art.c
	slrn/patches/patch-src_misc.c
	slrn/patches/patch-src_misc.h
	slrn/patches/patch-src_post.c
	slrn/patches/patch-src_slrnfeat.hin
	slrn/patches/patch-src_startup.c
	slrn/patches/patch-src_version.c
	slrn/slrn.rc

Log Message:
slrn: Updated to current stable version.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=e0d84036e4d8172f6bec1607de4a7a10f38cd9a5

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 slrn/DESCR                           |   9 +
 slrn/Makefile                        |  29 ++
 slrn/PLIST                           |  61 ++++
 slrn/README                          |   6 +
 slrn/TODO                            |   1 +
 slrn/distinfo                        |  17 ++
 slrn/options.mk                      |  37 +++
 slrn/patches/patch-changes.txt       |  29 ++
 slrn/patches/patch-doc_manual.txt    |  32 ++
 slrn/patches/patch-doc_slrn.rc       |  28 ++
 slrn/patches/patch-po_Makefile.in.in |  15 +
 slrn/patches/patch-src_art.c         |  60 ++++
 slrn/patches/patch-src_misc.c        |  15 +
 slrn/patches/patch-src_misc.h        |  14 +
 slrn/patches/patch-src_post.c        |  66 +++++
 slrn/patches/patch-src_slrnfeat.hin  |  16 +
 slrn/patches/patch-src_startup.c     |  17 ++
 slrn/patches/patch-src_version.c     |  18 ++
 slrn/slrn.rc                         | 560 +++++++++++++++++++++++++++++++++++
 19 files changed, 1030 insertions(+)

diffs:
diff --git a/slrn/DESCR b/slrn/DESCR
new file mode 100644
index 0000000000..af299fc6ee
--- /dev/null
+++ b/slrn/DESCR
@@ -0,0 +1,9 @@
+slrn ('S-Lang read news') is a newsreader, i.e. a program that accesses a
+newsserver to read messages from the Internet News service (also known as
+'Usenet'). It runs in console mode on various Unix-like systems (including
+Linux), 32-bit Windows, OS/2, BeOS and VMS. Beside the usual features of a
+newsreader slrn supports scoring rules to highlight, sort or kill articles
+based on information from their header. It is highly customizable, allows
+free key-bindings and can easily be extended using the sophisticated
+S-Lang macro language. Offline reading is possible by using either
+slrnpull (shipped with slrn) or a local newsserver (like leafnode or INN).
diff --git a/slrn/Makefile b/slrn/Makefile
new file mode 100644
index 0000000000..bee3b3f09f
--- /dev/null
+++ b/slrn/Makefile
@@ -0,0 +1,29 @@
+# $NetBSD$
+
+DISTNAME=	slrn-1.0.3
+CATEGORIES=	news
+MASTER_SITES=	${MASTER_SITE_SOURCEFORGE:=slrn/}
+EXTRACT_SUFX=	a.tar.bz2
+
+MAINTAINER=	pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=	http://slrn.sourceforge.net/
+COMMENT=	Highly customizable threaded newsreader
+LICENSE=	gnu-gpl-v2
+
+MAKE_JOBS_SAFE=	no
+
+USE_PKGLOCALEDIR=	yes
+GNU_CONFIGURE=		yes
+CONFIGURE_ARGS+=	--disable-inews --with-slrnpull --enable-spool \
+			--enable-grouplens --with-libdir=${PREFIX}/lib/slrn \
+			--enable-mid-cache \
+			--with-slang=${BUILDLINK_PREFIX.libslang2} \
+			--with-localedir=${PREFIX}/${PKGLOCALEDIR}/locale
+
+.include "options.mk"
+
+LDFLAGS.SunOS+=	-lsocket -lnsl
+
+.include "../../devel/libslang2/buildlink3.mk"
+.include "../../devel/gettext-lib/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/slrn/PLIST b/slrn/PLIST
new file mode 100644
index 0000000000..f8b1d47158
--- /dev/null
+++ b/slrn/PLIST
@@ -0,0 +1,61 @@
+@comment $NetBSD: PLIST,v 1.11 2014/08/23 09:34:48 obache Exp $
+bin/slrn
+bin/slrnpull
+man/man1/slrn.1
+man/man1/slrnpull.1
+share/doc/slrn/COPYING
+share/doc/slrn/COPYRIGHT
+share/doc/slrn/FAQ
+share/doc/slrn/FIRST_STEPS
+share/doc/slrn/README
+share/doc/slrn/README.GroupLens
+share/doc/slrn/README.SSL
+share/doc/slrn/README.macros
+share/doc/slrn/README.multiuser
+share/doc/slrn/THANKS
+share/doc/slrn/changes.txt
+share/doc/slrn/help.txt
+share/doc/slrn/manual.txt
+share/doc/slrn/score.sl
+share/doc/slrn/score.txt
+share/doc/slrn/slrn-doc.html
+share/doc/slrn/slrn.rc
+share/doc/slrn/slrnfuns.txt
+share/doc/slrn/slrnpull/README
+share/doc/slrn/slrnpull/README.offline
+share/doc/slrn/slrnpull/SETUP
+share/doc/slrn/slrnpull/score
+share/doc/slrn/slrnpull/setgid.txt
+share/doc/slrn/slrnpull/slrn.rc
+share/doc/slrn/slrnpull/slrnpull.conf
+share/doc/slrn/slrnpull/slrnpull.sh
+share/locale/be/LC_MESSAGES/slrn.mo
+share/locale/da/LC_MESSAGES/slrn.mo
+share/locale/de/LC_MESSAGES/slrn.mo
+share/locale/es/LC_MESSAGES/slrn.mo
+share/locale/fi/LC_MESSAGES/slrn.mo
+share/locale/fr/LC_MESSAGES/slrn.mo
+share/locale/it/LC_MESSAGES/slrn.mo
+share/locale/ko/LC_MESSAGES/slrn.mo
+share/locale/nl/LC_MESSAGES/slrn.mo
+share/locale/pl/LC_MESSAGES/slrn.mo
+share/locale/ru/LC_MESSAGES/slrn.mo
+share/locale/sv/LC_MESSAGES/slrn.mo
+share/locale/tr/LC_MESSAGES/slrn.mo
+share/slrn/slang/color.sl
+share/slrn/slang/gsort.sl
+share/slrn/slang/ispell.sl
+share/slrn/slang/latin2.sl
+share/slrn/slang/mailcap.sl
+share/slrn/slang/mime.sl
+share/slrn/slang/multipart.sl
+share/slrn/slang/nn.sl
+share/slrn/slang/posthook.sl
+share/slrn/slang/search.sl
+share/slrn/slang/slrn.sl
+share/slrn/slang/tin-art.sl
+share/slrn/slang/tin-group.sl
+share/slrn/slang/ttyprint.sl
+share/slrn/slang/util.sl
+share/slrn/slang/varset.sl
+share/slrn/slang/xcomment.sl
diff --git a/slrn/README b/slrn/README
new file mode 100644
index 0000000000..9505dc4ddf
--- /dev/null
+++ b/slrn/README
@@ -0,0 +1,6 @@
+This package contains slrn 1.0.3a patched for the libcanlock V3 API.
+pkgsrc option "canlock" added.
+
+The Cancel-Lock hash algorithm can now be configured with the "canlock_algo"
+variable (default value: SHA256).
+Updated documentation is installed (see Section 6.7.1 of manual).
diff --git a/slrn/TODO b/slrn/TODO
new file mode 100644
index 0000000000..f7138acaa7
--- /dev/null
+++ b/slrn/TODO
@@ -0,0 +1 @@
+Needs testing.
diff --git a/slrn/distinfo b/slrn/distinfo
new file mode 100644
index 0000000000..115acbeb78
--- /dev/null
+++ b/slrn/distinfo
@@ -0,0 +1,17 @@
+$NetBSD: distinfo,v 1.17 2015/11/02 23:49:47 agc Exp $
+
+SHA1 (slrn-1.0.3a.tar.bz2) = 898d09685f5fe159f23829cd21e15308f5dce822
+RMD160 (slrn-1.0.3a.tar.bz2) = dd5f5df5d508b8e0c5b136093f24121af31d3432
+SHA512 (slrn-1.0.3a.tar.bz2) = 11cef2dfe41f441af15acc22fb675cf607e932f0dd6d4a998e51ecda05c9a50d7abf10a3e693ffc857ad77e09634f460404e4d5b289169e7bbffdaf5d6d565a3
+Size (slrn-1.0.3a.tar.bz2) = 997138 bytes
+SHA1 (patch-changes.txt) = 185a9b2f918f15b1b66f492412883d77e57bab40
+SHA1 (patch-doc_manual.txt) = 216f8696b44b59c56a83655a868116932fe76e1d
+SHA1 (patch-doc_slrn.rc) = b2a3cf7c21f291c9b75f27596ae31e268a8275e8
+SHA1 (patch-po_Makefile.in.in) = 7b9507c68cefa913ebeb0e44c4ca0ad70956a3bd
+SHA1 (patch-src_art.c) = 70e4408827d3c67010ccb5b515c8d037f3f3b6b8
+SHA1 (patch-src_misc.c) = db64dad237e7eb348e32b772e1546e8b5440593c
+SHA1 (patch-src_misc.h) = a65145ecf87e7a9380940963aaeb81c35b9cb3b5
+SHA1 (patch-src_post.c) = e2f16323b2b0119e8d76779619f774dc0df663af
+SHA1 (patch-src_slrnfeat.hin) = a115a2f7de61acd5c296fb3696a3cb97226ea121
+SHA1 (patch-src_startup.c) = bab29e395d2710acb7f9db4911873b5c8073aff8
+SHA1 (patch-src_version.c) = d622ec61fbd1c8db2a124bae63f68251a7885327
diff --git a/slrn/options.mk b/slrn/options.mk
new file mode 100644
index 0000000000..0d324ab67b
--- /dev/null
+++ b/slrn/options.mk
@@ -0,0 +1,37 @@
+# $NetBSD$
+
+PKG_OPTIONS_VAR=		PKG_OPTIONS.slrn
+PKG_SUPPORTED_OPTIONS=		canlock ssl uulib
+PKG_SUGGESTED_OPTIONS=		canlock ssl
+
+.include "../../mk/bsd.options.mk"
+
+###
+### canlock support
+###
+.if !empty(PKG_OPTIONS:Mcanlock)
+.  include "../../wip/libcanlock/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-canlock=${BUILDLINK_PREFIX.libcanlock}
+.else
+CONFIGURE_ARGS+=	--without-canlock
+.endif
+
+###
+### SSL support
+###
+.if !empty(PKG_OPTIONS:Mssl)
+.  include "../../security/openssl/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-ssl=${SSLBASE:Q}
+.else
+CONFIGURE_ARGS+=	--without-ssl
+.endif
+
+###
+### uulib support
+###
+.if !empty(PKG_OPTIONS:Muulib)
+.  include "../../converters/uulib/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-uu=${BUILDLINK_PREFIX.uulib}
+.else
+CONFIGURE_ARGS+=	--without-uu
+.endif
diff --git a/slrn/patches/patch-changes.txt b/slrn/patches/patch-changes.txt
new file mode 100644
index 0000000000..53581c40e8
--- /dev/null
+++ b/slrn/patches/patch-changes.txt
@@ -0,0 +1,29 @@
+$NetBSD$
+
+Changelog updated.
+
+--- changes.txt.orig	2016-10-23 22:34:16.000000000 +0000
++++ changes.txt
+@@ -1,4 +1,12 @@
+ -*- mode: text; mode: fold -*-
++
++Changes since 1.0.3
++1. Cancel-Locks now using API version 3 of the canlock library (--with-canlock).
++   The hash algorithm can be configured with the new variable "canlock_algo".
++   (Michael Baeuerle)
++
++{{{ Previous Versions
++
+ Changes since 1.0.2
+ 1. src/parse2822.c: A quoted-string in the display portion of an
+    address was not being marked as allowing mime-encoded text.
+@@ -30,9 +38,6 @@ Changes since 1.0.2
+ 15. Updates for mingw and cygwin 32 and 64 bit systems.
+ 16. src/mime.c: rfc1522_encode_word: max_nbytes was not being properly
+     limit checked.
+-
+-{{{ Previous Versions
+-
+ Changes since 1.0.1
+ 1. src/misc.c: slrn_verror needed va_copy when writing to the log file.
+ 2. src/post.c: Move the cursor to the end of the line when querying
diff --git a/slrn/patches/patch-doc_manual.txt b/slrn/patches/patch-doc_manual.txt
new file mode 100644
index 0000000000..2d292ea0d9
--- /dev/null
+++ b/slrn/patches/patch-doc_manual.txt
@@ -0,0 +1,32 @@
+$NetBSD$
+
+Added documentation for new config option "canlock_algo".
+
+--- doc/manual.txt.orig	2016-10-23 22:34:16.000000000 +0000
++++ doc/manual.txt
+@@ -63,6 +63,7 @@
+      6.5 beep
+      6.6 broken_xref
+      6.7 cansecret_file
++     6.7.1 canlock_algo
+      6.8 cc_followup
+      6.9 cc_post_string
+      6.10 charset
+@@ -1652,6 +1653,17 @@
+   canlock) and that cancel locks only have an effect if the server
+   supports them.
+ 
++  6.7.1.  canlock_algo
++
++  Type: string
++  Default: "SHA256"
++
++  If slrn is configured to put cancel-locks into the articles you post,
++  then this variable is used to select the hash algorithm for <scheme>
++  and HMAC (used as recommended in Section 4 of RFC 8315).
++
++  The default value is the mandatory hash algorithm defined by RFC 8315.
++
+   6.8.  cc_followup
+ 
+   Type: integer
diff --git a/slrn/patches/patch-doc_slrn.rc b/slrn/patches/patch-doc_slrn.rc
new file mode 100644
index 0000000000..e0e6f090ac
--- /dev/null
+++ b/slrn/patches/patch-doc_slrn.rc
@@ -0,0 +1,28 @@
+$NetBSD$
+
+Example rc file extended with Cancel-Lock related options.
+
+--- doc/slrn.rc.orig	2016-10-23 22:34:16.000000000 +0000
++++ doc/slrn.rc
+@@ -540,3 +540,21 @@ setkey readline trim		 "<Esc>/"	% Trim w
+ setkey readline quoted_insert	 "^Q"		% Quoted insert
+ setkey readline complete	 "<Tab>"	% Complete filename
+ setkey readline cycle		 " "		% Cycle among filenames
++
++%
++%% Cancel-Lock related
++%
++
++% The Message-ID is required to calculate Cancel-Locks. One option is to enable
++% "generate_message_id" option above. "posting_host" can be set if your machine
++% has no FQDN.
++%posting_host "domain.example"			% Domain under your control
++
++% File containing the secret. This file can be shared with other newsreaders
++% that use the recommended algorithm from Section 4 of RFC 8315.
++%set cansecret_file "/home/user/.cancelsecret"
++
++% Hash algorithm to use for <scheme> and HMAC according to RFC 8315.
++% Supported values: "SHA1", "SHA256", "SHA512".
++% If this option is not specified, "SHA256" is used as default.
++%set canlock_algo "SHA256"
diff --git a/slrn/patches/patch-po_Makefile.in.in b/slrn/patches/patch-po_Makefile.in.in
new file mode 100644
index 0000000000..c181e5a105
--- /dev/null
+++ b/slrn/patches/patch-po_Makefile.in.in
@@ -0,0 +1,15 @@
+$NetBSD$
+
+Directly use INSTALL_DATA as ${mkdir_p}.
+
+--- po/Makefile.in.in.orig	2008-02-11 19:04:23.000000000 +0100
++++ po/Makefile.in.in
+@@ -46,7 +46,7 @@ INSTALL_DATA = @INSTALL_DATA@
+ # versions, $(mkinstalldirs) and $(install_sh) are unused.
+ #mkinstalldirs = $(SHELL) @install_sh@ -d
+ #install_sh = $(SHELL) @install_sh@
+-mkdir_p = @mkdir_p@
++mkdir_p = $(INSTALL_DATA) -m 755 -d
+ 
+ GMSGFMT_ = @GMSGFMT@
+ GMSGFMT_no = @GMSGFMT@
diff --git a/slrn/patches/patch-src_art.c b/slrn/patches/patch-src_art.c
new file mode 100644
index 0000000000..2d0be701e6
--- /dev/null
+++ b/slrn/patches/patch-src_art.c
@@ -0,0 +1,60 @@
+$NetBSD$
+
+Switched <c-key> element generation to libcanlock API V3.
+
+--- src/art.c.orig	2016-10-23 22:34:16.000000000 +0000
++++ src/art.c
+@@ -74,7 +74,7 @@
+ #include "decode.h"
+ 
+ #if SLRN_HAS_CANLOCK
+-# include <canlock.h>
++# include <libcanlock-3/canlock.h>
+ #endif
+ 
+ #if SLRN_HAS_GROUPLENS
+@@ -3660,6 +3660,7 @@ static char* gen_cancel_key (char* msgid
+    char *buf, *cankey;
+    unsigned int filelen;
+    char canfile[SLRN_MAX_PATH_LEN];
++   cl_hash_version algo;
+ 
+    if (0 == *Slrn_User_Info.cancelsecret)
+      return NULL;
+@@ -3686,14 +3687,30 @@ static char* gen_cancel_key (char* msgid
+      }
+    (void) fseek (cansecret, 0, SEEK_SET);
+    (void) fread (buf, filelen, 1, cansecret);
++   (void) fclose (cansecret);
+ 
+-# if 0
+-   cankey = md5_key (buf, filelen, msgid, strlen(msgid));
+-# else /* by default we use SHA-1 */
+-   cankey = sha_key ((unsigned char *) buf, filelen, (unsigned char *)msgid, strlen(msgid));
+-# endif
++   /* Fixme: This check is used twice, should be moved to a central location */
++   if (0 == slrn_case_strcmp (Slrn_User_Info.canlock_algo, "SHA1"))
++   {
++      algo = CL_SHA1;
++   }
++   else if (0 == slrn_case_strcmp (Slrn_User_Info.canlock_algo, "SHA256"))
++   {
++      algo = CL_SHA256;
++   }
++   else if (0 == slrn_case_strcmp (Slrn_User_Info.canlock_algo, "SHA512"))
++   {
++      algo = CL_SHA512;
++   }
++   else
++   {
++      slrn_error (_("Cancel-Lock algorithm not supported: %s"), Slrn_User_Info.canlock_algo);
++      return NULL;
++   }
++   cankey = cl_get_key (algo, (unsigned char *) buf, filelen, (unsigned char *)msgid, strlen(msgid));
++   /* Try to overwrite secret in memory */
++   cl_clear_secret((void *) buf, filelen, filelen+1);
+ 
+-   fclose (cansecret);
+    slrn_free (buf);
+    return cankey;
+ }
diff --git a/slrn/patches/patch-src_misc.c b/slrn/patches/patch-src_misc.c
new file mode 100644
index 0000000000..54a30b035a
--- /dev/null
+++ b/slrn/patches/patch-src_misc.c
@@ -0,0 +1,15 @@
+$NetBSD$
+
+Added default value for new config option "canlock_algo".
+
+--- src/misc.c.orig	2016-10-23 22:34:16.000000000 +0000
++++ src/misc.c
+@@ -2828,6 +2828,8 @@ void slrn_get_user_info (void) /*{{{*/
+ 
+ #if SLRN_HAS_CANLOCK
+    Slrn_User_Info.cancelsecret = slrn_safe_strmalloc ("");
++   /* SHA256 ist the mandatory algorithm defined by RFC 8315 */
++   Slrn_User_Info.canlock_algo = slrn_safe_strmalloc ("SHA256");
+ #endif
+ #ifdef SLRN_SENDMAIL_COMMAND
+    Slrn_SendMail_Command = slrn_safe_strmalloc (SLRN_SENDMAIL_COMMAND);
diff --git a/slrn/patches/patch-src_misc.h b/slrn/patches/patch-src_misc.h
new file mode 100644
index 0000000000..4bcba8f5f9
--- /dev/null
+++ b/slrn/patches/patch-src_misc.h
@@ -0,0 +1,14 @@
+$NetBSD$
+
+Added config structure element for Cancel-Lock hash algorithm.
+
+--- src/misc.h.orig	2016-10-23 22:34:16.000000000 +0000
++++ src/misc.h
+@@ -80,6 +80,7 @@ typedef struct
+    char *signature;
+ #if SLRN_HAS_CANLOCK
+    char *cancelsecret;
++   char *canlock_algo;
+ #endif
+    char *posting_host;		       /* FQDN or NULL */
+    char *login_name;
diff --git a/slrn/patches/patch-src_post.c b/slrn/patches/patch-src_post.c
new file mode 100644
index 0000000000..839101ad89
--- /dev/null
+++ b/slrn/patches/patch-src_post.c
@@ -0,0 +1,66 @@
+$NetBSD$
+
+Switched <c-lock> element generation to libcanlock API V3.
+
+--- src/post.c.orig	2016-10-23 22:34:16.000000000 +0000
++++ src/post.c
+@@ -50,7 +50,7 @@
+ #endif
+ 
+ #if SLRN_HAS_CANLOCK
+-# include <canlock.h>
++# include <libcanlock-3/canlock.h>
+ #endif
+ 
+ #include "slrn.h"
+@@ -821,7 +821,7 @@ static int prepare_header (VFILE *vp, un
+ 
+    if ((NULL == (tmp = slrn_gen_date_header ()))
+        || (NULL == slrn_append_to_header (a, tmp, 1))
+-       || (NULL == (tmp = slrn_strdup_printf("User-Agent: slrn/%s (%s)", Slrn_Version_String, system_os_name)))
++       || (NULL == (tmp = slrn_strdup_printf("User-Agent: slrn/%s (Patched for libcanlock3) (%s)", Slrn_Version_String, system_os_name)))
+        || (NULL == slrn_append_to_header (a, tmp, 1))
+        || (NULL == slrn_append_to_header (a, NULL,0)))   /* separator */
+      {
+@@ -1297,6 +1297,7 @@ static char *gen_cancel_lock (char *msgi
+    char *buf, *canlock;
+    unsigned int filelen;
+    char canfile[SLRN_MAX_PATH_LEN];
++   cl_hash_version algo;
+ 
+    cansecret = slrn_open_home_file (file, "r", canfile, SLRN_MAX_PATH_LEN, 0);
+    if (cansecret == NULL)
+@@ -1323,11 +1324,28 @@ static char *gen_cancel_lock (char *msgi
+    (void) fread (buf, filelen, 1, cansecret);
+    (void) fclose(cansecret);
+ 
+-# if 0
+-   canlock = md5_lock(buf, filelen, msgid, strlen(msgid));
+-# else /* by default we use SHA-1 */
+-   canlock = sha_lock ((unsigned char *) buf, filelen, (unsigned char *)msgid, strlen(msgid));
+-# endif
++   /* Fixme: This check is used twice, should be moved to a central location */
++   if (0 == slrn_case_strcmp (Slrn_User_Info.canlock_algo, "SHA1"))
++   {
++      algo = CL_SHA1;
++   }
++   else if (0 == slrn_case_strcmp (Slrn_User_Info.canlock_algo, "SHA256"))
++   {
++      algo = CL_SHA256;
++   }
++   else if (0 == slrn_case_strcmp (Slrn_User_Info.canlock_algo, "SHA512"))
++   {
++      algo = CL_SHA512;
++   }
++   else
++   {
++      slrn_error (_("Cancel-Lock algorithm not supported: %s"), Slrn_User_Info.canlock_algo);
++      return NULL;
++   }
++   canlock = cl_get_lock (algo, (unsigned char *) buf, filelen, (unsigned char *)msgid, strlen(msgid));
++   /* Try to overwrite secret in memory */
++   cl_clear_secret((void *) buf, filelen, filelen+1);
++
+    slrn_free (buf);
+    return canlock;
+ }
diff --git a/slrn/patches/patch-src_slrnfeat.hin b/slrn/patches/patch-src_slrnfeat.hin
new file mode 100644
index 0000000000..dfbd864c17
--- /dev/null
+++ b/slrn/patches/patch-src_slrnfeat.hin
@@ -0,0 +1,16 @@
+$NetBSD$
+
+Fix compiled-in default path to sendmail; it should be /usr/sbin/sendmail
+on essentially all even halfway modern systems.
+
+--- src/slrnfeat.hin~	2008-02-09 18:32:17.000000000 +0000
++++ src/slrnfeat.hin
+@@ -179,7 +179,7 @@
+ #   define SLRN_SIGNATURE_FILE		".signature"
+   /* Changing these here has no effect when using ./configure */
+ #   ifndef SLRN_SENDMAIL_COMMAND
+-#    define SLRN_SENDMAIL_COMMAND	"/usr/lib/sendmail -oi -t -oem -odb"
++#    define SLRN_SENDMAIL_COMMAND	"/usr/sbin/sendmail -oi -t -oem -odb"
+ #   endif
+ #  endif			       /* unix */
+ # endif				       /* os2 */
diff --git a/slrn/patches/patch-src_startup.c b/slrn/patches/patch-src_startup.c
new file mode 100644
index 0000000000..c91c1a310e
--- /dev/null
+++ b/slrn/patches/patch-src_startup.c
@@ -0,0 +1,17 @@
+$NetBSD$
+
+Added variable for Cancel-Lock hash algorithm.
+
+--- src/startup.c.orig	2016-10-23 22:34:16.000000000 +0000
++++ src/startup.c
+@@ -731,8 +731,10 @@ Slrn_Str_Var_Type Slrn_Str_Variables [] 
+ #endif
+ #if SLRN_HAS_CANLOCK
+      {"cansecret_file", &Slrn_User_Info.cancelsecret, NULL},
++     {"canlock_algo", &Slrn_User_Info.canlock_algo, NULL},
+ #else
+      {"cansecret_file", NULL, NULL},
++     {"canlock_algo", NULL, NULL},
+ #endif
+      {"art_help_line", &Slrn_Art_Help_Line, NULL},
+      {"art_status_line", &Slrn_Art_Status_Line, NULL},
diff --git a/slrn/patches/patch-src_version.c b/slrn/patches/patch-src_version.c
new file mode 100644
index 0000000000..e00380e96a
--- /dev/null
+++ b/slrn/patches/patch-src_version.c
@@ -0,0 +1,18 @@
+$NetBSD$
+
+Added notes that this is a modified version.
+
+--- src/version.c.orig	2016-10-23 22:34:16.000000000 +0000
++++ src/version.c
+@@ -132,6 +132,11 @@ void slrn_show_version (FILE *fp) /*{{{*
+    fprintf (fp, "slrn %s\n", Slrn_Version_String);
+    if (*Slrn_Version_String == 'p')
+      fprintf (fp, _("\t* Note: This version is a developer preview.\n"));
++
++   /* To be removed if patch is accepted upstream */
++   fprintf (fp, _("\t* Note: This is a modified version! (do not bother the author with questions)\n"));
++   fprintf (fp, _("\t* Patched to support libcanlock3 (see documentation)\n"));
++
+    fprintf (fp, _("S-Lang Library Version: %s\n"), SLang_Version_String);
+    if (SLANG_VERSION != SLang_Version)
+      {
diff --git a/slrn/slrn.rc b/slrn/slrn.rc
new file mode 100644
index 0000000000..38e5626a83
--- /dev/null
+++ b/slrn/slrn.rc
@@ -0,0 +1,560 @@
+% -*- slang -*-
+
+%% This is a sample startup file for the slrn newsreader and meant as a
+%% template for your personal startup file; it is not a full reference
+%% of slrn's config options -- please see the reference manual for this.
+
+%% The percent character is used for comments.
+
+%
+%% 1. Tell slrn about your identity (name, email address and such)
+%
+
+% The "From:" header will be generated from the following three variables.
+% With the example settings, it would read "John Doe <john%doe.com@localhost>"
+%set username "john"
+%set hostname "doe.com"
+%set realname "John Doe"
+
+% Set this if you want replies to your articles to go to a address different
+% from the one in "From:".
+%set replyto  "John Doe <jdoe%something.com@localhost>"
+
+% What to put into the "Organization:" header line.
+%set organization "Doe inc."
+
+% The name of your signature file.  If "", no signature is added.
+%set signature ".signature"
+
+%
+%% 2. Server specific settings
+%
+
+% Tell slrn which newsrc file it should use for which server.
+% Note: This does *not* set the default server; you need to set the
+%       NNTPSERVER environment variable for this.
+%server "news.doe.com" ".jnewsrc-doe"
+
+% If a server requires authentication, add a nnrpaccess line for it.
+% If you leave username and/or password empty, slrn will prompt for it.
+%nnrpaccess "news.doe.com" "john" "secret"
+
+% Some servers require authentication, but don't ask for it.
+% To offer your authentication data "voluntarily", set this variable to 1.
+%set force_authentication 0
+
+% This can either be set to "nntp" (read online) or "spool" (use local spool)
+%set server_object "nntp"
+
+% This can be "nntp" (post directly to the server), "inews" (use external
+% program for posting) or "slrnpull" (spool message for slrnpull to send).
+%set post_object "nntp"
+
+% Set this to zero if you want to leave Message-ID generation to your server
+% or your system does not have a proper unique hostname.
+%set generate_message_id 1
+
+% If non-zero, slrn reads the active file on each startup.  You might want to
+% use this if your network connection is fast or the server has few groups.
+%set read_active 0
+
+% The following variables are only meaningful when using spool mode:
+
+% Basic directory settings
+%set spool_inn_root "/var/lib/news"
+%set spool_root "/var/spool/news"
+%set spool_nov_root "/var/spool/news/over.view"
+
+% These are relative to spool_inn_root unless they start with "/".
+%set spool_active_file "data/active"
+%set spool_activetimes_file "data/active.times"
+%set spool_newsgroups_file "data/newsgroups"
+
+% This value is relative to the directories under spool_nov_root:
+%set spool_nov_file ".overview"
+
+% Whether to check for each article when reading an overview file (slower,
+% but may save you from lots of "article not available" errors).
+%set spool_check_up_on_nov 0
+
+%
+%% 3. Which external programs do you want to use?
+%
+
+% Note OS/2 and Win32 users: 
+%   To separate directories you can either use a single '/' or
+%   double '\\'. Single backslashes are not supported.  For example, use
+%   "C:\\home\\file.txt" or "C:/home/file.txt" but NOT "C:\home\file.txt"
+
+% Set your favourite editor.  Use %s for the file name and %d for the line
+% where the cursor should be placed (usually at the beginning of the body).
+%set editor_command "jed '%s' -g %d -tmp"
+%set editor_command "vim -c %d '%s'"
+
+% You can have separate commands for editing posts, mail, and score files.
+%set mail_editor_command "jed '%s' -g %d -tmp --mail-mode"
+%set post_editor_command "jed '%s' -g %d -tmp --mail-mode"
+%set score_editor_command "jed '%s' -g %d -tmp --score-arrange-score"
+
+% If non-zero, abort posting or email operation if the file was not modified
+% by the editor.
+%set abort_unmodified_edits 0
+
+% In case we need metamail to display an article:
+%set metamail_command "metamail"
+
+% WWW browser to use. Xbrowser is used when the DISPLAY environment variable
+% is set; non_Xbrowser otherwise.
+%set non_Xbrowser "lynx '%s'"
+%set Xbrowser "firefox '%s' &"
+
+% Command to use for printing
+% Note: On Win32, this variable defines the name of the printer queue to use.
+%set printer_name "lpr -Plp"
+
+% In case you want to use another mailer than sendmail.  Be sure that it
+% implements the same interface, though!
+%set sendmail_command "/usr/lib/sendmail -oi -t -oem -odb"
+
+% Set this to one if you want the "From:" header in e-mails to be generated
+% from the hostname / username / realname variable.
+% Note: Not all MTAs are configured to allow this.
+%set generate_email_from 0
+
+%
+%% 4. Directory / file names
+%
+
+% Note: All filenames in this section are relative to HOME unless they start
+%       with a '/'.
+
+% Filename where articles / email you sent are archived.
+% Note: If these are unset, slrn does not keep a copy of outgoing messages.
+%set save_posts "News/My_Posts"
+%set save_replies "News/My_Replies"
+
+% File where failed posts are appended.  Use "" to disable saving.
+%set failed_posts_file "dead.letter"
+
+% Name of score file.
+%set scorefile "News/Score"
+
+% Name of directory where decoded files are placed.
+%set decode_directory "News"
+  
+% Directory where all other files are saved.
+%set save_directory "News"
+
+% Directory where postponed articles are placed. Please make sure it exists.
+%set postpone_directory "News/postponed"
+
+% Whether to put temporary files for postings, followups and replies in the
+% directory specified by the TMPDIR environment variable or /tmp.
+%set use_tmpdir 0
+
+%
+%% 5. Attribution lines / custom headers
+%
+
+% This sets the attribution lines for follow-ups and replies.  The following
+% format specifiers are recognized:
+%  %d:date, %D:date (formatted), %r:real name, %R:first name,
+%  %f:email address, %s:subject, %m:msgid, %n:newsgroups, %%: percent
+%set followup_string "On %D, %r <%f> wrote:"
+%set reply_string "In %n, you wrote:"
+
+% Custom headers to add to *new* posts
+%set custom_headers "Mail-Copies-To: nobody"
+
+% Custom headers for followup/reply/supersedes.  These can use format
+% specifiers as in the 'followup_string' variable.
+%set followup_custom_headers "Mail-Copies-To: nobody"
+%set reply_custom_headers "X-newsgroup: %n\nX-realname: %r"
+%set supersedes_custom_headers "X-Superseded-Date: %d"
+
+% This is inserted when sending email CCs of your postings.
+%set cc_post_string "[This message has also been posted to %n.]"
+
+%
+%% 6. Character mapping / MIME support
+%
+
+% Character set used for the display or terminal; valid values include:
+%   utf-8, iso-8859-1, ibm850, ibm852, koi8,
+%charset display "utf-8"
+
+% the character set used for outgoing articles
+%charset outgoing "utf-8"
+
+% If non-zero, call metamail for MIME formats slrn cannot handle.
+%set use_metamail 1
+
+%
+%% 7. Some preferences for the header window (see the manual for more)
+%
+
+% These sorting methods are available:
+% If 0, do not sort.  If 1, perform threading.  If 2, sort by subject.
+% If 3, thread then sort result by subject.
+% If 4, sort by score.  If 5, thread then sort by score.
+% If 6, sort by score and subject.
+% If 7, thread, then sort by score and subject.
+% If 8, sort by date with most recent first.
+% If 9, thread, then sort by date with most recent first.
+% If 10, sort by date with most recent last.
+% If 11, thread then sort by date with most recent last.
+% If 12, use the value of the custom_sort_order variable.
+%set sorting_method 3
+
+% If non-zero, a header with a new subject will start a new thread.
+%set new_subject_breaks_threads 0
+
+%
+%% 8. Some preferences for the article pager (see the manual for more)
+%
+
+% Which headers do you want to see by default?
+% You can also match all headers starting with a given string and exclude
+% specific headers by preceding them with "!" (e.g. use "X-,!X-Trace:" to
+% display all the "X-"headers except "X-Trace:").
+%visible_headers "From:,Subject:,Newsgroups:,Followup-To:,Reply-To:"
+
+% If non-zero, #v+ and #v- will be interpreted as markers of verbatim lines.
+%set process_verbatim_marks 1
+
+% If non-zero, hide #v+/#v- verbatim marks.
+%set hide_verbatim_marks 0
+  
+% If non-zero, hide signature in articles.
+%set hide_signature 0
+
+% If non-zero, hide PGP signature in articles.
+%set hide_pgpsignature 0
+
+% Set the starting score for an article that has headers that are invalid,
+% e.g., an invalid From header.
+%set invalid_header_score -1000
+
+%
+%% 9. Display / color settings
+%
+
+% If non-zero, slrn will draw the thread tree using simple ascii characters
+%set simulate_graphic_chars 0
+
+% Enable xterm/win32 mouse support: 1 to enable, 0 to disable
+%set mouse 0
+
+% Draw cursor bar ala tin instead of slrn "->" cursor?
+%set display_cursor_bar	0
+
+% Set to 1 to have slrn scroll by full page instead of by line.
+%set scroll_by_page 0
+
+% Should color be used to indicate the score of an article?
+% (0) scores do not influence colors (1) scores are colored by their value
+% (2) subjects are colored by score  (3) both are colored by score
+%set color_by_score 3
+
+% If non-zero, the subjects of unread articles are highlighted
+%set highlight_unread_subjects 1
+
+% If non-zero, URLs are highlighted.
+%set highlight_urls 1
+
+% Enables blinking in monochrome mode and allows bright backgrounds in some
+% color terminals:
+%set use_blink 1
+
+% This color object is only used when highlight_unread_subjects is set to 2
+% (see the reference manual for details):
+color unread_subject	"white"		"black"	"bold"
+mono  unread_subject	"bold"
+
+% These settings are used for color terminals:
+color article		"lightgray"	"black"
+color author		"magenta"	"black"
+color boldtext		"brightblue"	"black"	"bold"
+color box		"black"		"white"
+color cursor		"brightgreen"	"black"
+color date		"lightgray"	"black"  
+color description	"lightgray"	"black"
+color error		"red"		"black"	"blink"
+color frame		"yellow"	"blue"
+color from_myself	"brightmagenta"	"black"	"bold"
+color group		"lightgray"	"black"	"bold"
+color grouplens_display	"lightgray"	"black"
+color header_name	"green"		"black"	"bold"
+color header_number	"green"		"black"
+color headers		"brightcyan"	"black"
+color neg_score		"green"		"black"
+color pos_score		"blue"		"black"
+color high_score	"red"		"black"	"bold"
+color italicstext	"magenta"	"black"	"bold"
+color menu		"yellow"	"blue"
+color menu_press	"lightgray"	"yellow"
+color message		"lightgray"	"black"
+color normal		"lightgray"	"black"
+color pgpsignature	"lightgray"	"black"
+color quotes		"red"		"black"
+color quotes1		"magenta"	"black"
+color quotes2		"brown"		"black"
+color quotes3		"brown"		"black"
+color quotes4		"brown"		"black"
+color quotes5		"brown"		"black"
+color quotes6		"brown"		"black"
+color quotes7		"brown"		"black"
+color response_char	"green"		"black"	"bold"
+color signature		"red"		"black"
+color selection		"yellow"	"blue"	"bold"
+color status		"yellow"	"blue"
+color subject		"lightgray"	"black"
+color thread_number	"lightgray"	"black"	"bold"
+color tilde		"green"		"black"	"bold"
+color tree		"red"		"black"	"bold"
+color underlinetext	"cyan"		"black"	"underline"
+color url		"white"		"black"	"bold"
+color verbatim		"green"		"black"
+
+% These attributes are for terminals that cannot display color:
+mono article		"none"
+mono author		"none"
+mono boldtext		"bold"
+mono cursor		"bold"	"reverse"
+mono date		"none"
+mono description	"none"
+mono error		"blink"
+mono frame		"reverse"
+mono from_myself	"bold"
+mono group		"bold"
+mono grouplens_display	"none"
+mono header_name	"bold"
+mono header_number	"none"
+mono headers		"none"
+mono high_score		"bold"
+mono italicstext	"bold"
+mono menu		"reverse"
+mono menu_press		"none"
+mono neg_score		"none"
+mono normal		"none"
+mono pgpsignature	"none"
+mono pos_score		"reverse"
+mono quotes		"none"
+mono quotes1		"none"
+mono quotes2		"none"
+mono quotes3		"none"
+mono quotes4		"none"
+mono quotes5		"none"
+mono quotes6		"none"
+mono quotes7		"none"
+mono response_char	"bold"
+mono selection		"bold"  
+mono signature		"none"
+mono status		"reverse"
+mono subject		"none"
+mono thread_number	"bold"
+mono tilde		"bold"
+mono tree		"none"
+mono underlinetext	"underline"
+mono url		"bold"
+mono verbatim	        "none"
+
+%
+%% 10. Group mode key bindings
+%
+
+% Cursor movement:
+setkey group line_down        "<Down>"   % Go to the next group
+setkey group line_down        "^N"
+setkey group line_up          "<Up>"   % Go to the previous group
+setkey group line_up          "^P"
+setkey group page_down        "^V"     % Scroll to the next page
+setkey group page_down        "<PageDown>"
+setkey group page_down        "^D"
+setkey group page_up          "<Esc>V"    % Scroll to the previous page
+setkey group page_up          "<PageUp>"
+setkey group page_up          "^U"
+setkey group bob              "<Esc><"    % Go to the bottom of the list
+setkey group bob              "^K<Up>"
+setkey group eob              "<Esc>>"    % Go to the top of the list
+setkey group eob              "^K<Down>"
+setkey group group_search_backward "\\"% Group keyword search backward
+setkey group group_search_forward  "/" % Group keyword search forward
+
+% Actions:
+setkey group select_group     "<Space>"      % Enter the current newsgroup
+setkey group select_group     "<Return>"
+setkey group post             "P"      % Post an article
+setkey group post_postponed   "<Esc>P"    % Post or edit a postponed article
+setkey group refresh_groups   "G"      % Get new news from server
+setkey group toggle_scoring   "K"      % Select scoring mode
+setkey group repeat_last_key  "."      % Repeat last key sequence
+setkey group evaluate_cmd     "^X<Esc>"   % Read line and interpret it as S-Lang
+setkey group suspend          "^Z"     % Suspend slrn
+setkey group quit             "Q"      % Quit slrn
+
+% Group management:
+setkey group catchup          "C"      % Mark all articles as read
+setkey group uncatchup        "<Esc>u"    % Mark all articles as unread
+setkey group add_group        "a"      % Add a new newsgroup
+setkey group subscribe        "S"      % Subscribe to the current newsgroup
+setkey group unsubscribe      "U"      % Unsubscribe from the current newsgroup
+setkey group move_group       "m"      % Move newsgroup to a different location
+setkey group transpose_groups "^X^T"   % Transpose position of groups
+setkey group save_newsrc      "X"      % Force a save of the newsrc file
+
+% Display:
+setkey group toggle_group_formats "<Esc>A" % Toggle group display formats
+setkey group toggle_hidden    "l"      % Toggle display of hidden groups
+setkey group toggle_list_all  "L"      % Toggle listing of unsubscribed groups
+setkey group redraw           "^L"     % Redraw the screen
+setkey group redraw           "^R"
+setkey group help             "?"      % Display a help screen
+
+%
+%% 11. Article mode key bindings
+%
+
+% General movement:
+setkey article next                    "n"  % next unread article
+setkey article previous                "p"  % previous unread article
+setkey article skip_to_next_group      "N"  % go to the next group
+setkey article skip_to_next_group      "<Esc><Right>"
+setkey article skip_to_previous_group  "<Esc><Left>"  % go to the previous group
+setkey article next_high_score         "!"  % next article with high score
+setkey article next_same_subject       "="  % next article with same subject
+setkey article goto_last_read          "L"  % go to the last read article
+
+% Actions:
+setkey article post                 "P"		% Post a new article
+setkey article post_postponed       "<Esc>P"	% Post/edit a postponed article
+setkey article followup             "f"		% Post a followup
+setkey article reply                "r"		% Reply to poster
+setkey article forward              "F"		% Forward posting via mail
+setkey article supersede            "<Esc>^S"	% Supersede article
+setkey article cancel               "<Esc>^C"	% Cancel article
+setkey article save                 "O"		% Save article
+setkey article pipe                 "|"		% Pipe article
+setkey article print                "y"		% Print article
+setkey article decode               ":"		% Decode article
+setkey article suspend              "^Z"	% Suspend slrn
+setkey article quit                 "q"		% Quit slrn
+setkey article fast_quit            "Q"		% Quit slrn immediately
+
+% Moving in the article pager:
+setkey article article_line_down    "<Esc><Down>"	% Scroll article down one line
+setkey article article_line_down    "<Return>"
+setkey article article_line_up      "<Esc><Up>"	% Scroll article up one line
+setkey article article_page_down    "<Space>"	% Scroll article down one page
+setkey article article_page_up      "<Backspace>"	% Scroll article up one page
+setkey article article_page_up      "b"		% Scroll article up one page
+setkey article article_eob          ">"		% Move to the end of the article
+setkey article article_bob          "<"		% Move to the beginning
+setkey article article_left         "<Left>"	% Pan article to the left
+setkey article article_right        "<Right>"	% Pan article to the right
+setkey article article_search       "/"		% Search forward in the article
+setkey article skip_quotes          "<Tab>"	% Skip beyond quoted text
+setkey article forward_digest       "g"		% Skip to next digest
+
+% Moving in the header display:
+setkey article header_line_down      "<Down>"	% Move to next article
+setkey article header_line_down      "^N"
+setkey article header_line_up        "<Up>"	% Move to previous article
+setkey article header_line_up        "^P"
+setkey article header_page_down      "^V"       % Scroll down one page
+setkey article header_page_down      "<PageDown>"
+setkey article header_page_down      "^D"
+setkey article header_page_up        "<Esc>V"	% Scroll up one page
+setkey article header_page_up        "<PageUp>"
+setkey article header_page_up        "^U"
+setkey article header_eob            "<Esc>>"	% Go to last article in group
+setkey article header_bob            "<Esc><"	% Go to first article in group
+setkey article goto_article          "j"	% Move to article (number)
+setkey article author_search_forward   "a"	% Author search forward
+setkey article author_search_backward  "A"	% Author search backward
+setkey article subject_search_forward  "s"	% Subject search forward
+setkey article subject_search_backward "S"	% Subject search backward
+
+% Marking as read/unread:
+setkey article delete                  "d"	% Mark article as read
+setkey article undelete                "u"	% Mark article as unread
+setkey article delete_thread           "<Esc>d"	% Mark (Sub-)Thread as read
+setkey article catchup_all             "c"	% Mark all articles as read
+setkey article catchup_all             "<Esc>c"
+setkey article catchup                 "<Esc>C"	% Catchup (up to this article)
+setkey article uncatchup_all           "<Esc>u"	% Mark all articles as unread
+setkey article uncatchup               "<Esc>U"	% Uncatchup (up to this article)
+setkey article expunge                 "x"	% Remove all read articles
+
+% Display properties:
+setkey article toggle_headers          "t"	% Full headers (on/off)
+setkey article toggle_rot13            "<Esc>R"	% Toggle ROT-13 decryption
+setkey article toggle_quotes           "T"	% Display quoted lines (on/off)
+setkey article toggle_signature        "\\"	% Show signature (on/off)
+setkey article wrap_article            "W"	% Wrap long lines (on/off)
+setkey article show_spoilers           "<Esc>?"	% Reveal spoilers (on/off)
+setkey article toggle_pgpsignature     "]"	% Show PGP signature (on/off)
+setkey article toggle_verbatim_marks   "["	% Show verbatim marks (on/off)
+setkey article enlarge_article_window  "^"	% Enlarge the article window
+setkey article shrink_article_window   "^^"	% Shrink the article window
+setkey article zoom_article_window     "z"	% Maximize/Unmaximize article
+setkey article hide_article            "h"	% Hide/Show the article window
+setkey article browse_url              "U"	% Search for URL and follow it
+setkey article toggle_sort             "<Esc>S"	% Select threading method
+setkey article toggle_collapse_threads "<Esc>t"	% Collapse/Uncollapse thread
+setkey article toggle_header_formats   "<Esc>a"	% Toggle header display formats
+setkey article redraw                  "^L"	% Redraw screen
+setkey article redraw                  "^R"	% Redraw screen
+setkey article help                    "?"	% Display help screen
+
+% Miscellaneous actions:
+setkey article create_score            "K"	% Create a scorefile entry
+setkey article view_scores             "v"      % Show which rules matched
+setkey article locate_article          "<Esc>l"	% Locate article by Message-ID
+setkey article get_children_headers    "<Esc>^P"	% Find all children
+setkey article get_parent_header       "<Esc>p"	% Reconstruct thread
+setkey article mark_spot               ";"	% Mark current article position
+setkey article exchange_mark           ","	% Return to marked article
+setkey article tag_header              "#"	% Numerically tag article
+setkey article untag_headers           "<Esc>#"	% Remove all numerical tags
+setkey article toggle_header_tag       "*"	% Set/remove header tag
+setkey article repeat_last_key         "."	% Repeat last key sequence
+setkey article grouplens_rate_article  "0"	% Rate article with grouplens
+setkey article evaluate_cmd            "^X<Esc>"   % Interpret line as S-Lang
+
+%
+%% Command prompt key bindings
+%
+
+setkey readline bol		 "^A"		% Beginning of line
+setkey readline eol		 "^E"		% End of line
+setkey readline right		 "<Right>"	% Move right
+setkey readline left		 "<Left>"	% Move left
+setkey readline bdel		 "^H"		% Delete backward
+setkey readline bdel		 "^?"		% Delete Backward
+setkey readline del		 "^D"		% Delete Foreword
+setkey readline delbol		 "^U"		% Delete to Beginning of line
+setkey readline delbow		 "^W"		% Delete to Beginning of word
+setkey readline deleol		 "^K"		% Delete to End of line
+setkey readline trim		 "<Esc>/"	% Trim whitespace
+setkey readline quoted_insert	 "^Q"		% Quoted insert
+setkey readline complete	 "<Tab>"	% Complete filename
+setkey readline cycle		 " "		% Cycle among filenames
+
+%
+%% Cancel-Lock related
+%
+
+% The Message-ID is required to calculate Cancel-Locks. One option is to enable
+% "generate_message_id" option above. "posting_host" can be set if your machine
+% has no FQDN.
+%posting_host "domain.example"			% Domain under your control
+
+% File containing the secret. This file can be shared with other newsreaders
+% that use the recommended algorithm from Section 4 of RFC 8315.
+%set cansecret_file "/home/user/.cancelsecret"
+
+% Hash algorithm to use for <scheme> and HMAC according to RFC 8315.
+% Supported values: "SHA1", "SHA256", "SHA512".
+% If this option is not specified, "SHA256" is used as default.
+%set canlock_algo "SHA256"



Home | Main Index | Thread Index | Old Index