#!/usr/local/bin/perl
# Generates two Zappa quotes.
# One small one for inclusion on the homepage and one with context for
# the Quote page.
#
# Robbert Heederik, heederik@fwi.uva.nl, 16 April 1995
# chdir "/home/heederik/public_html/zappa/quote";
srand(time() % $$);
# &display_fortune('phrases',1024,'quote.inc','info.inc');
# &display_fortune('phrases',4,'small.inc','none');
# only to standard output (-)
&display_fortune('phrases',1024,'-','-');
sub display_fortune {
local($fortunefile,$maxlines,$output,$output2) = @_;
local($count,$pick,$number,$info);
local(@quote,@info);
open(INPUT, $fortunefile) || die "Couldn't open '$fortunefile': $!\n";
# count fortunes
while () { $count++ if (/^%%$/); }
# rewind
seek(INPUT, 0, 0);
# pick random fortune
$pick = rand($count) + 1;
#printf("get number %d from %d fortunes\n", $pick, $count);
$number = 1;
while () { last if (/^%%$/ && ++$number >= $pick); }
# get quote
while () {
last if (/^%%$/);
if (/^--$/) { $info = 1; last; }
push(@quote, $_);
}
# get info
while () {
last if (! defined($info));
last if (/^%%$/);
push(@info, $_);
}
if ($#quote >= $maxlines) {
return &display_fortune(@_);
}
open(OUTPUT, ">$output") || die "Couldn't write to '$output': $!\n";
for(@quote) { print OUTPUT; }
close(OUTPUT);
if ($output2 ne 'none') {
open(OUTPUT, ">$output2") || die "Couldn't write to '$output2': $!\n";
for(@info) { print OUTPUT; }
close(OUTPUT);
}
}