Web reader for ebooks text files.
#!/usr/local/bin/perl # # E-book reader 1.0 # Copyright (C) 1998-2000 Roan Soldaini <roan @qbit .it> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or any later version. # # All copyright notices must remain intact in the scripts and in the outputted HTML # --- Parameters ------------------------------------------------------------ $datafile = "bibbia.txt"; $outfile = "./bibbia/"; $createfile = 0; # 1: Create multiple files $usefile = 0; # 0: Use datafile - 1: Use multiple files # --------------------------------------------------------------------------- &CGI_Form; $ql = $FORM{ql}; $qc = $FORM{qc}; $qv = $FORM{qv}; print "Content-type: text/html\n\n"; $script = $ENV{'DOCUMENT_URI'}; $script = $ENV{'SCRIPT_NAME'} if !$script; $datafile = "$outfile$ql.txt" if $ql && $usefile; $newlibro = $libro = $ql; open INDEX, ">$outfile"."index.txt" if $createfile; open FILE, $datafile; while(<FILE>) { next if /^\n/; chop($_); if (/^\t/) { print "$vv<hr size=1>",$vi=$vf=$vv='' if /^\t\[/ && $vv; $vi=$vf=$vv='' if /^\t\[/; @av = m|\[(\d+)\]|g; $vi = $av[0] if $vi eq ''; $vf = "-$av[-1]" if $#av > 0; if ($newlibro) { print "<h1><a href=\"$script?ql=$libro\"><center>$libro</center></a></h1>"; $newlibro=''; close OUT if OUT; open OUT, ">$outfile$libro.txt" if $createfile; print INDEX "$libro\n" if INDEX; } if ($newcap) { print "<h2><a href=\"$script?ql=$libro&qc=$cap\">Capitolo $cap</a></h2>";; $newcap=''; print OUT "$cap\n" if OUT; } if (OUT) { print OUT "$_\n" if OUT; } next if ($qc ne $cap) || ($ql ne $libro); next if $qv && ($qv < $vi); next if $qv && $vf && ($qv > -$vf); next if $qv && !$vf && ($qv > $vi); $vv = "(<a href=\"$script?ql=$libro\">$libro</a> <a href=\"$script?ql=$libro&qc=$cap\">$cap</a>, <a href=\"$script?ql=$libro&qc=$cap&qv=$vi\">$vi$vf</a>)"; $_ =~ s|\[(\d+\w?)\]|<sup><small>$1</small></sup>|g; $_ = ' '.$_; print "<p>$_</p>"; } else{ print "$vv<hr size=1>",$vi=$vf=$vv='' if $vv; if (/^\d/) { $cap = $_; next if !$ql && !$createfile; next if $ql && ($libro ne $ql); next if $qc && ($cap ne $qc); $newcap = true; } elsif (/^\w/) { $libro = $_; $cap = ''; next if $ql && ($libro ne $ql); $newlibro = true; } } } print $vv if $vv; print '<div align="right"><small>Powered by <a href="http://www.qbit.it/">Ebook-reader</a></small></div>'; close FILE; # --------------------------------------------------------------------------- sub CGI_Form{ if($ENV{'REQUEST_METHOD'} eq 'GET' || $ENV{'REQUEST_METHOD'} eq 'HEAD'){ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/<([^>]|\n)*>//g; $value =~ s/\n/<br>/g; # ; # $FORM{$name} = $value; } } # ---------------------------------------------------------------------------