summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/contrib/whatsnew/whatsnew.pl
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/contrib/whatsnew/whatsnew.pl')
-rwxr-xr-xdebian/htdig/htdig-3.2.0b6/contrib/whatsnew/whatsnew.pl365
1 files changed, 365 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/contrib/whatsnew/whatsnew.pl b/debian/htdig/htdig-3.2.0b6/contrib/whatsnew/whatsnew.pl
new file mode 100755
index 00000000..e27e744c
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/contrib/whatsnew/whatsnew.pl
@@ -0,0 +1,365 @@
+#!/usr/local/bin/perl
+#
+# whatsnew.pl v1.1 (C) 1996 Iain Lea
+# modified 26 Oct 1998 (c) 1998 Jacques Reynes
+#
+# ChangeLog
+# 960321 IL Reversed sorting to show newest documents first
+# 981026 JR Modified to work with Berkeley DB2.
+# 980204 GRH Modified to work with changes in ht://Dig db format
+#
+# Produces a HTML 'Whats New' page with custom header and footer.
+#
+# Title
+# Descriptions
+# URL
+# Last modification date (in ctime format)
+#
+# The date is specified as yyyymmdd
+#
+# Usage: whatsnew.pl [options]
+# -h help
+# -d date base date [default: $DefDate]
+# -n days list documents newer than days old [default: $DefDays]
+# -f file database index [default: $DefIndex]
+# -F file HTML footer
+# -H file HTML header
+# -o file HTML generated file
+# -v verbose
+
+use BerkeleyDB;
+require 'timelocal.pl';
+require 'getopts.pl';
+
+$DefIndex = ' your data base .docdb';
+$DefOutputFile = ' your result file URL created in your web server whatsnew.html';
+$TmpFile = "/tmp/whatsnew.$$";
+$DefFooter = '';
+$DefHeader = '';
+$Verbose = 0;
+$NewNum = 0;
+$DefDays = 3;
+chop (($DefDate = '19'.`date +%y%m%d`));
+
+&ParseCmdLine;
+
+$DefDate =~ /([0-9]{4})([0-9]{2})([0-9]{2})/;
+$When = timelocal (0, 0, 0, $3, $2 - 1, $1 - 1900)- ($DefDays * 86400);
+$NewDate = localtime ($When);
+$dbfile = $DefIndex;
+
+print "Generating 'Whats New' for documents newer than '$NewDate'...\n" if $Verbose;
+
+&ReadDatabase ($DefIndex, $TmpFile);
+&WriteWhatsNew ($TmpFile, $DefOutputFile, $DefHeader, $DefFooter);
+
+exit 1;
+
+#############################################################################
+# Subroutines
+#
+
+sub ParseCmdLine
+{
+ &Getopts ('d:f:F:hH:n:o:v');
+
+ if ($opt_h ne "") {
+ print <<EndOfHelp
+Produce an HTML 'Whats New' page with custom header & footer for database.
+
+Usage: $0 [options]
+ -h help
+ -d date base date [default: $DefDate]
+ -n days list documents newer than days old [default: $DefDays]
+ -f file database index [default: $DefIndex]
+ -F file HTML footer
+ -H file HTML header
+ -o file HTML generated file
+ -v verbose
+
+EndOfHelp
+;
+ exit 0;
+ }
+ $DefDate = $opt_d if ($opt_d ne "");
+ $DefDays = $opt_n if ($opt_n ne "");
+ $DefIndex = $opt_f if ($opt_f ne "");
+ $DefFooter = $opt_F if ($opt_H ne "");
+ $DefHeader = $opt_H if ($opt_H ne "");
+ $DefOutputFile = $opt_o if ($opt_o ne "");
+ $Verbose = 1 if ($opt_v ne "");
+}
+
+sub ReadDatabase
+{
+ my ($Index, $TmpFile) = @_;
+
+ tie %docdb, 'BerkeleyDB::Btree', -Filename => $Index, -Flags => DB_RDONLY || die "Error: $Index - $!";
+
+ open (TMP, ">$TmpFile") || die "Error: $TmpFile - $!\n";
+
+ while (($key, $value) = each %docdb)
+ {
+ next if $key =~ /^nextDocID/;
+ %rec = parse_ref_record ($value);
+ if ($rec{'TIME'} >= $When)
+ {
+ $Line = "$rec{'TIME'}|$rec{'URL'}|$rec{'TITLE'}|$rec{'DESCRIPTIONS'}\n";
+ print $Line if $Verbose;
+ print TMP $Line;
+ $NewNum++;
+ }
+ }
+
+ close (TMP);
+}
+
+sub WriteWhatsNew
+{
+ my ($InFile, $OutFile, $Header, $Footer) = @_;
+
+ open (URLS, "sort -r $InFile |") || die "Error: $InFile - $!\n";
+ open (HTML, ">$OutFile") || die "Error: $OutFile - $!\n";
+
+ &PrintBoilerPlate ($Header, 1);
+
+ while (<URLS>) {
+ chop;
+ ($Time, $URL, $Title, $Description) = split ('\|');
+ $Ctime = localtime ($Time);
+ if ($Verbose) {
+ print <<EOT
+Title: $Title
+Description: $Description
+URL: $URL
+Modified: $Ctime
+
+EOT
+;
+ }
+ print HTML <<EOT
+<strong>Title:</strong> <a href="$URL">$Title</a>
+<strong>Description:</strong> $Description
+<strong>URL:</strong> $URL
+<strong>Modified:</strong> $Ctime
+
+EOT
+;
+ }
+
+ &PrintBoilerPlate ($Footer, 0);
+
+ close (HTML);
+ close (URLS);
+
+ unlink ($InFile);
+}
+
+sub PrintBoilerPlate
+{
+ my ($File, $IsHeader) = @_;
+
+ if ($File ne "" && -e $File) {
+ open (FILE, $File) || die "Error: $File - $!\n";
+ while (<FILE>) {
+ print HTML;
+ }
+ close (FILE);
+ } else {
+ if ($IsHeader) {
+ print HTML <<EOT
+<html>
+<head>
+<title>Whats New!</title>
+</head>
+<body>
+<h2>Whats New!</h2>
+<center>
+<a href="/whatsnew.html"><img src="/new.gif"></a>
+<a href="/"><img src="/home.gif"></a>
+<a href="/intranet.html"><img src="/search.gif"></a>
+<a href="mailto:Iain.Lea\@sbs.de"><img src="/contact.gif"></a>
+</center>
+<hr>
+<strong>Found $NewNum documents newer than '$NewDate'</strong>
+<pre>
+EOT
+;
+ } else {
+ print HTML <<EOT
+</pre>
+<hr>
+<center>
+<a href="/whatsnew.html"><img src="/new.gif"></a>
+<a href="/"><img src="/home.gif"></a>
+<a href="/intranet.html"><img src="/search.gif"></a>
+<a href="mailto:Iain.Lea\@sbs.de"><img src="/contact.gif"></a>
+</center>
+</body>
+</html>
+EOT
+;
+ }
+ }
+}
+
+
+sub parse_ref_record
+{
+ local($value) = @_;
+ local(%rec, $length, $count, $result);
+
+ while (length($value) > 0)
+ {
+ $what = unpack("C", $value);
+ $value = substr($value, 1);
+ if ($what == 0)
+ {
+ # ID
+ $rec{"ID"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 1)
+ {
+ # TIME
+ $rec{"TIME"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 2)
+ {
+ # ACCESSED
+ $rec{"ACCESSED"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 3)
+ {
+ # STATE
+ $rec{"STATE"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 4)
+ {
+ # SIZE
+ $rec{"SIZE"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 5)
+ {
+ # LINKS
+ $rec{"LINKS"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 6)
+ {
+ # IMAGESIZE
+ $rec{"IMAGESIZE"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 7)
+ {
+ # HOPCOUNT
+ $rec{"HOPCOUNT"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 8)
+ {
+ # URL
+ $length = unpack("i", $value);
+ $rec{"URL"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 9)
+ {
+ # HEAD
+ $length = unpack("i", $value);
+ $rec{"HEAD"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 10)
+ {
+ # TITLE
+ $length = unpack("i", $value);
+ $rec{"TITLE"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 11)
+ {
+ # DESCRIPTIONS
+ $count = unpack("i", $value);
+ $value = substr($value, 4);
+ $result = "";
+ foreach (1 .. $count)
+ {
+ $length = unpack("i", $value);
+ $result = $result . unpack("x4 A$length", $value) . "";
+ $value = substr($value, 4 + $length);
+ }
+ chop $result;
+ $rec{"DESCRIPTIONS"} = $result;
+ }
+ elsif ($what == 12)
+ {
+ # ANCHORS
+ $count = unpack("i", $value);
+ $value = substr($value, 4);
+ $result = "";
+ foreach (1 .. $count)
+ {
+ $length = unpack("i", $value);
+ $result = $result . unpack("x4 A$length", $value) . "";
+ $value = substr($value, 4 + $length);
+ }
+ chop $result;
+ $rec{"ANCHORS"} = $result;
+ }
+ elsif ($what == 13)
+ {
+ # EMAIL
+ $length = unpack("i", $value);
+ $rec{"EMAIL"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 14)
+ {
+ # NOTIFICATION
+ $length = unpack("i", $value);
+ $rec{"NOTIFICATION"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 15)
+ {
+ # SUBJECT
+ $length = unpack("i", $value);
+ $rec{"SUBJECT"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 16)
+ {
+ # STRING (ignore, but unpack)
+ $length = unpack("i", $value);
+ $rec{"STRING"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 17)
+ {
+ # METADSC
+ $length = unpack("i", $value);
+ $rec{"METADSC"} = unpack("x4 A$length", $value);
+ $value = substr($value, 4 + $length);
+ }
+ elsif ($what == 18)
+ {
+ # BACKLINKS
+ $rec{"BACKLINKS"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ elsif ($what == 19)
+ {
+ # SIGNATURE
+ $rec{"SIG"} = unpack("i", $value);
+ $value = substr($value, 4);
+ }
+ }
+ return %rec;
+}
+