Commit Diff


commit - 0f4bb8d5b7459b701c7fa1795d0e89a9a9117ca9
commit + f1ceade9f67fd8e6d5f2b278d97303fffd3f76c1
blob - /dev/null
blob + dfa538482f8b5d692b70ee75776909fed4fadc8e (mode 644)
--- /dev/null
+++ .mblaze/filter
@@ -0,0 +1,2 @@
+application/pgp-signature: ./filter-ignore
+application: ./filter-export
blob - c1bbd22f8fa8221f8b916581587c019662354c13
blob + bf6ca9f2b573e71a41fcd7ef97791b936c9fc5f6
--- Makefile
+++ Makefile
@@ -11,8 +11,9 @@ all: .mblaze dirs assets
 		${ENV} ./mexp | ${ENV} ./mkindex > ${OUTDIR}/index.html
 
 dirs:
-	mkdir -p ${OUTDIR}/thread/
 	mkdir -p ${OUTDIR}/mbox/
+	mkdir -p ${OUTDIR}/parts/
+	mkdir -p ${OUTDIR}/thread/
 
 assets: dirs got.png style.css
 	cp got.png ${OUTDIR}/got@2x.png
blob - /dev/null
blob + 7bb747882cbad7cfd7a8435398ad492d42d41cd5 (mode 755)
--- /dev/null
+++ filter-export
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+path="$(cd $OUTDIR && mktemp parts/$MESSAGE_ID.XXXXXXXXXX)"
+
+# save the input
+cat > "$OUTDIR/$path"
+
+ftype="$(file "$OUTDIR/$path")"
+echo "<li><a href='/$path'>${ftype#*:}</a></li>" >> parts.html
+exit 0
blob - /dev/null
blob + c52d3c26b35fd40696a3bd45f3aab0663ed0d4d9 (mode 755)
--- /dev/null
+++ filter-ignore
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exit 0
blob - 36fb387384baf992962694d9168505bc1f28231d
blob + 72c6a0607706032218ca0b1fdc2f00e262a4c498
--- mexp
+++ mexp
@@ -87,6 +87,11 @@ while (<>) {
 
 	say $fh $hdr =~ s/TITLE/$subj/r;
 
+	# prepare the parts listing file
+	$ENV{'MESSAGE_ID'} = $mid;
+	open(my $parts, '+>', "parts.html")
+	    or die "can't create parts.html: $!";
+
 	open(my $mshow, "-|", "mshow", "-nNA", "text/plain", $fname)
 	    or die "can't exec mshow: $!";
 
@@ -124,10 +129,24 @@ while (<>) {
 	print $fh san($body // "");
 	print $fh "</pre>";
 
+	# generate the listing for the exported parts
+	my $part_seen = 0;
+	while (<$parts>) {
+		if (!$part_seen) {
+			$part_seen = 1;
+			say $fh "<ul class='parts'>";
+		}
+		print $fh $_;
+	}
+	say $fh "</ul>" if $part_seen;
+
 	print $fh $foot;
 
 	close($mshow);
+	close($parts);
 	close($fh);
 
 	# exit(0);
 }
+
+unlink "parts.html";