--- /dev/null
+#! /usr/bin/perl
+use CGI;
+use HTML::Entities;
+use POSIX;
+use strict;
+use warnings;
+require './config.pm';
+
+my $num_last = 20;
+
+# Find the latest N PNG thumbnails. Somewhat ineffective, but I assume
+# we'll get to that later :-)
+my @thumbnails = (sort { -M $a <=> -M $b } <$pdfweb::config::outputdir/*.png>);
+my $real_num_last = scalar @thumbnails;
+if ($real_num_last > $num_last) {
+ $real_num_last = $num_last;
+}
+
+# Sorry, no HTML templating. I didn't want to pull in yet another
+# dependency :-)
+
+print <<"EOF";
+Content-type: text/html; charset=utf-8
+
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE
+ html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>PDF converter : sesse.net</title>
+ <link rel="stylesheet" href="http://www.sesse.net/sesse.css" type="text/css" />
+ <link rel="stylesheet" href="pdfweb.css" type="text/css" />
+ <link rev="made" href="mailto:sgunderson\@bigfoot.com" />
+ <meta name="MSSmartTagsPreventParsing" content="TRUE" />
+ </head>
+ <body>
+ <h1>Last $real_num_last uploads</h1>
+
+ <p><a href="http://pdf.sesse.net/">Back to the converter</a></p>
+EOF
+
+for my $t (@thumbnails[0..$num_last-1]) {
+ (my $descname = $t) =~ s/\.png$/.desc/;
+ open DESC, "<$descname"
+ or next;
+ chomp (my $desc = <DESC>);
+ close DESC;
+
+ if (length($desc) > 30) {
+ $desc = substr $desc, 0, 30;
+ }
+ $desc = HTML::Entities::encode_entities($desc);
+
+ my $time = (stat($t))[9];
+ my $date = POSIX::strftime("%Y-%m-%d %H:%M", localtime($time));
+ $t =~ s#^.*/##;
+ (my $pdfname = $t) =~ s/\.png$//;
+
+ print <<"EOF";
+<div class="pdfthumbnail">
+ <p class="thumb"><a href="output/$pdfname"><img src="output/$t" alt="PDF thumbnail" /></a></p>
+ <p class="desc">$desc</p>
+ <p class="date">$date</p>
+</div>
+EOF
+}
+
+print <<"EOF";
+
+ <p class="copyright">Web PDF converter, © 2005 <a href="http://www.sesse.net/">Steinar H. Gunderson</a>.</p>
+ </body>
+</html>
+EOF