commit f0fb0f0898465906e605ce59cd2b31d1730d6d8c from: Omar Polo date: Tue Aug 30 11:40:44 2022 UTC urlencode the mail/thread id reminded by semarie@, thanks! commit - 890362cd906d770a9ed8af92b2c281c113f9c18e commit + f0fb0f0898465906e605ce59cd2b31d1730d6d8c blob - 81bae9be0eed05cdf1f2b61fbb63f7e88d4b908d blob + 533da445bdd961874847d9785f922a37c475c766 --- GotMArc.pm +++ GotMArc.pm @@ -9,7 +9,7 @@ use v5.32; use Exporter; our @ISA = qw(Exporter); -our @EXPORT_OK = qw(san parse initpage endpage index_header thread_header); +our @EXPORT_OK = qw(san urlencode parse initpage endpage index_header thread_header); sub san { my $str = shift; @@ -19,6 +19,16 @@ sub san { return $str; } +sub urlencode { + my $str = shift; + unless (defined($str)) { + my ($pkg, $file, $line) = caller 1; + die "bad $pkg / $file:$line"; + } + $str =~ s/([^-_~.A-Za-z0-9])/sprintf("%%%2X", ord($1))/ge; + return $str; +} + sub ssan { my $str = shift; $str =~ s/\s+/ /g; @@ -86,13 +96,16 @@ sub thread_header { my ($fh, $tid, $mid, $e) = @_; my @entries = @$e; + my $enctid = urlencode $tid if defined $tid; + my $encmid = urlencode $mid if defined $mid; + print $fh "
\n"; print $fh "

"; print $fh $small_logo; print $fh "Index"; - print $fh " | Thread" - if defined $tid; + print $fh " | Thread" + if defined $enctid; print $fh "

\n"; say $fh "
"; @@ -103,8 +116,8 @@ sub thread_header { } say $fh "
"; - say $fh "

Download raw body.

" - if defined $mid; + say $fh "

Download raw body.

" + if defined $encmid; say $fh "
\n"; }; blob - acfd9974e463b664ad9b3ba61bb7ddf9d965338e blob + 6b9c9f1df418f69a0e51538f76672171d03ab8c1 --- mexp +++ mexp @@ -15,7 +15,7 @@ use OpenBSD::Pledge; use OpenBSD::Unveil; use lib "."; -use GotMArc qw(parse san initpage endpage thread_header); +use GotMArc qw(parse san urlencode initpage endpage thread_header); my $outdir = $ENV{'OUTDIR'}; die 'Set $OUTDIR' unless defined $outdir; @@ -85,9 +85,12 @@ while (<>) { } say $fh "" if $part_seen; + my $encmid = urlencode $mid; + my $enctid = urlencode $tid; + print $fh "\n"; endpage $fh; blob - ae10febaf5a5454f532b0b0556276cf7fe984f0c blob + 23a471248e697b6a326de2aedfff857e105ee153 --- mkindex +++ mkindex @@ -15,7 +15,7 @@ use OpenBSD::Pledge; use OpenBSD::Unveil; use lib "."; -use GotMArc qw(parse san initpage endpage index_header thread_header); +use GotMArc qw(parse san urlencode initpage endpage index_header thread_header); my $outdir = $ENV{'OUTDIR'}; die 'Set $OUTDIR' unless defined $outdir; @@ -138,14 +138,16 @@ sub nextthread { sub entry { my ($fh, $type, $mid, $date, $from, $subj) = @_; - print $fh "
  • "; + my $encmid = urlencode $mid; + + print $fh "
  • "; print $fh "

    "; print $fh " "; print $fh "$from"; print $fh ":"; print $fh "

    "; print $fh "

    "; - print $fh "$subj"; + print $fh "$subj"; print $fh "

    "; print $fh "
  • \n"; }