/usr/share/slrn/macros/t-prot.sl is in t-prot 3.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | % $Id: t-prot.sl,v 1.20 2012/02/07 11:19:57 jochen Exp $
% Copyright (c) 2003-2005 Jochen Striepe <t-prot@tolot.escape.de>
%
% This file is provided as an example implemention for articles to be
% filtered through t-prot before displayed. They are still filtered if
% you reply to such a message so you will have to deactivate this if
% you want to include quotes of the original article.
%
% Activate this macro by adding
% interpret t-prot.sl
% to your ~/.slrnrc.
%
% If you are not happy with the suggested t-prot default parameters,
% put something like
% variable t_prot_params = "-c -emtS";
% variable t_prot_tmpdir = "$HOME/.tmpdir";
% variable t_prot_qp = "";
% into ~/.slrn/t-prot-cfg and add
% interpret .slrn/t-prot-cfg
% to your ~/.slrnrc (after 'interpret t-prot.sl'). If "mimedecode" is
% installed on your system you might want to use
% variable t_prot_qp = "mimedecode";
% You can get mimedecode at
% http://packages.debian.org/stable/mail/mimedecode.html
%
% However, please keep in mind that the path of the temp directory should
% NOT be readable to other users -- otherwise it might reveal information on
% what you read, and probably even be a security hole. Please see t-prot's
% man page for details on command line parameters.
%
% If you want to toggle t-prot filtering on/off without leaving slrn,
% you may want to add something like
% setkey article register_t_prot "\e6"
% setkey article unregister_t_prot "\e7"
% to your ~/.slrnrc -- press ESC-6 to activate t-prot filtering, and
% ESC-7 to disable it (this will take effect on the next article you
% read, see the package's TODO file).
%
% Requirements/Bugs: tr(1) and rm(1) are POSIX and should be available
% on any Unix-like system, mktemp(1) should be available on any recent
% OpenBSD or Debian Linux system -- you can get the sources there
% if your system happens to lack this program. This macro has been
% written for S-Lang v2.x (and will definitely fail with S-Lang v1.x).
% As always, bug reports, patches (preferrably in unified diff format),
% comments and suggestions are welcome.
%
% License: This file is part of the t-prot package and therefore
% available under the same conditions. See t-prot's man page for
% details.
% these should be reasonable defaults (they work fine for me, SCNR):
variable t_prot_params = "-aeklmtc -S --diff --bigq -L$HOME/.slrn/mlfooters -A$HOME/.slrn/adfooters";
variable t_prot_tmpdir = "$HOME/tmp/slrn"; % you better make sure it exists
variable t_prot_qp = "perl -i -p -e '$p=1 if /^Content-Transfer-Encoding: quoted-printable/i; if ($p==1) { s/=([0-9a-f][0-9a-f])/chr(hex($1))/egi; s/=\n//eg; };'";
define t_prot () {
variable art, f, fname, line, qp;
art = "";
% Keep in mind that the path should NOT be readable to other users --
% otherwise it might reveal information on what you read, and probably
% even be a security hole:
f = popen ("mktemp -q "+t_prot_tmpdir+"/t-prot.sl.XXXXXX | tr -d '\n'", "r");
if (f == NULL) return;
if (-1 == fgets (&fname, f)) return;
pclose (f);
if (t_prot_qp != "") { qp = t_prot_qp+"|"; } else { qp = ""; }
f = popen (qp+"t-prot "+t_prot_params+" >"+fname, "w");
if (f == NULL) {
message ("Unable to filter article to "+fname);
return;
}
() = fputs (article_as_string(), f);
() = pclose (f);
f = fopen (fname, "r");
if (f == NULL) {
message (fname+" could not be opened.");
return;
}
while (-1 != fgets (&line, f)) {
art = art + line;
}
fclose (f);
if (0 != remove(fname)) message ("Unable to remove "+fname);
replace_article (art);
}
define register_t_prot () {
if (1 == register_hook("read_article_hook", "t_prot")) {
message ("t-prot filtering activated");
}
else {
message ("t-prot filtering NOT activated");
}
}
define unregister_t_prot () {
if (1 == unregister_hook("read_article_hook", "t_prot")) {
message ("t-prot filtering deactivated");
}
else {
message ("t-prot filtering NOT deactivated");
}
}
% filtering is enabled by default:
register_hook("read_article_hook", "t_prot");
|