#!/usr/local/bin/perl -w
print "Content-Type: text/html\n\n";
$book = int($ARGV[0] || 1) || 1;
$chapter = int($ARGV[1] || 0) || 0;
$page = int($ARGV[2] || 0) || 0;
$xonly = int($ARGV[3] || 0) || 0;
open(TEMP, "template.html");
sub
chaplen {
$c = shift;
$c = sprintf("%02d", $c);
$b = shift || $book;
$b2 = sprintf("%03d", $b);
@foo = glob("books/$b/$c/*.jpg");
$f = pop @foo;
if (defined $f) {
$f =~ s!\.jpg$!!;
$f =~ s!.*/mn_${b2}_${c}_0*!!;
} else {
$f = 0;
}
@bar = glob("books/$b/$c/*.xtra");
$g = pop @bar;
if (defined $g) {
$g =~ s!\.xtra$!!;
$g =~ s!.*/mn_${b2}_${c}_0*!!;
} else {
$g = 0;
}
return $f if ($f > $g);
return $g;
}
sub
booklen {
$b = shift;
@foo = glob("books/$b/*");
@foo = grep(/^books\/$b\/[0-9]*$/, @foo);
return $#foo;
}
sub
chapters {
$b = shift;
@foo = glob("books/$b/*");
@foo = map { s!books/$b/!!; $_; } grep(/^books\/$b\/[0-9]*$/, @foo);
return @foo;
}
sub
booktitle {
$b = shift;
open(TITLE, "books/$b/title");
my $title =
;
chomp $title;
return $title;
}
sub
chaptertitle {
$c = shift;
$c = sprintf("%02d", $c);
$b = shift || $book;
open(TITLE, "books/$b/$c/title");
my $title = || "";
chomp $title;
return $title;
}
sub
nbooks {
@foo = glob("books/*");
@foo = grep(/^books\/[0-9]*$/, @foo);
return scalar @foo;
}
@chapters = chapters($book);
if ($page >= chaplen($chapter)) {
if ($chapter >= $chapters[-1]) {
if ($book >= nbooks()) {
$next = "index.shtml";
} else {
$n = $book + 1;
$c = $chapter + 1;
$next = "template.cgi?$n+$c+0";
}
} else {
$n = $chapter + 1;
$next = "template.cgi?$book+$n+0";
}
} else {
$n = $page + 1;
$next = "template.cgi?$book+$chapter+$n";
}
if ($page == 0) {
if ($chapter == $chapters[0]) {
if ($book == 1) {
$prev = "index.shtml";
} else {
$p = $book - 1;
$c = $chapter - 1;
$p2 = chaplen($c, $p);
$prev = "template.cgi?$p+$c+$p2";
}
} else {
$p = $chapter - 1;
$p2 = chaplen($p);
$prev = "template.cgi?$book+$p+$p2";
}
} else {
$p = $page - 1;
$prev = "template.cgi?$book+$chapter+$p";
}
$this = "template.cgi?$book+$chapter+$page";
$pic = sprintf("books/%d/%02d/mn_%03d_%02d_%02d.jpg",
$book, $chapter, $book, $chapter, $page);
$xtra = sprintf("books/%d/%02d/mn_%03d_%02d_%02d.xtra",
$book, $chapter, $book, $chapter, $page);
$comment = sprintf("books/%d/%02d/mn_%03d_%02d_%02d.comment",
$book, $chapter, $book, $chapter, $page);
while () {
if (//) {
s,,prev :: next,;
}
if (//) {
my $t = booktitle($book);
s,,$t,;
}
if (//) {
my $t = chaptertitle($chapter, $book);
s,,$t,;
}
if (//) {
if ($page > 0) {
s,,(Page $page),;
} else {
s,,,;
}
}
if (//) {
$r = "";
$r = "\n\n";
foreach $i (0..chaplen($chapter, $book)) {
$r .= " $i | \n";
if ($i % 6 == 5) {
$r .= "
\n\n";
}
}
$r .= "
\n
";
s,,$r,;
}
if (//) {
if ($xonly) {
$p = &xtra;
} elsif (-f $pic) {
$p = "";
#$p = "";
} else {
$p = "No page here
";
}
s,,$p,;
}
if (//) {
if ( -f $comment) {
open(COMMENT, "$comment");
$comment_text = join("", );
s,,$comment_text,;
}
}
if (//) {
if (-f $xtra && !$xonly) {
if (-f $pic) {
$p = "Extra content";
} else {
$p = &xtra;
}
} else {
if ($xonly) {
$p = "Main page";
} else {
$p = "";
}
}
s,,$p,;
}
print;
}
sub
xtra {
open(XTRA, $xtra);
@xtra = ;
close XTRA;
return join("\n", @xtra);
}