-DirectoryIndex Index.html.pl
+<IfModule mod_dir.c>
+ DirectoryIndex _NOTEXISTS
+ IndexOptions NameWidth=*
+</IfModule>
+
+Options None
+<IfModule !mod_perl.c>
+ Options +Indexes
+ # For "*.shtml" as "./project/Islet/Islet/Islet.shtml" etc.
+ Options +Includes
+ # Prevent: Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden
+ Options +SymLinksIfOwnerMatch
+</IfModule>
-AddType text/html .shtml
AddHandler server-parsed .shtml
+AddHandler cgi-script .cgi
+
AddType "text/html; charset=us-ascii" .html
AddType "text/html; charset=us-ascii" .shtml
AddType "text/plain; charset=us-ascii" .txt
AddType "text/plain; charset=us-ascii" .asc
-Options Indexes Includes FollowSymLinks
-<FilesMatch "\.(gz|Z|bz|bz2|zip)$">
- RemoveEncoding .gz .Z .bz .bz2 .zip
- AddType application/x-gzip .gz
- AddType application/x-compress .Z
- AddType application/x-bzip .bz
- AddType application/x-bzip2 .bz2
- AddType application/zip .zip
-</FilesMatch>
-
-AddHandler cgi-script .cgi
-IndexOptions NameWidth=*
AddType application/x-rpm .rpm
AddType application/x-nokia-9000-communicator-add-on-software .aos
-<IfModule mod_php4.c>
+AddType application/vnd.symbian.install .sis
+
+RemoveEncoding .gz .Z .bz .bz2 .zip
+AddType application/x-gzip .gz
+AddType application/x-compress .Z
+AddType application/x-bzip .bz
+AddType application/x-bzip2 .bz2
+AddType application/zip .zip
+
+# Do not: text/javascript
+# as it does not look as registered, at least according to: MIME::Types $VERSION 1.15
+# "application/javascript" so far standardized till 2005-12-08 by:
+# http://www.ietf.org/internet-drafts/draft-hoehrmann-script-types-03.txt
+AddType application/javascript .js
+
+<IfModule mod_php.c>
php_flag short_open_tag off
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
</IfModule>
-<Files "kocky">
- RewriteEngine on
- RewriteRule ^(/home/short/www/www.jankratochvil.net/)?kocky/*(.*)$ http://kocky.vellum.cz/$2 [R=301] [L]
-</Files>
-<FilesMatch "^(4c|4cinfo)$">
- RewriteEngine on
- RewriteRule ^(/home/short/www/www.jankratochvil.net/)?(4cinfo|4c)/*(.*)$ http://4c.jankratochvil.net/$3 [R=301] [L]
-</FilesMatch>
-<Files "cgi">
+<IfModule mod_rewrite.c>
+ # Do not: [R=301] [L]
+ # as any non-1st brackets' contents would get ignored!
+ # Use always suffix: ?${unescape:%{QUERY_STRING}}
+ # as $QUERY_STRING gets otherwise double-escaped (or if "NE" the path gets unescaped).
+ # FIXME: Should be applied also for the "P" rules?
+ # WARNING: Requires server/virtualhost definition: RewriteMap unescape int:unescape
RewriteEngine on
- # $1 $2$3 $4
- RewriteRule ^(/home/short/www/www.jankratochvil.net/)?cgi/viewcvs(/(.*))?([?].*)?$ http://cvs.jankratochvil.net/viewcvs/$3$4 [R=301] [L]
- RewriteRule ^(/home/short/www/www.jankratochvil.net/)?cgi/*(.*)$ http://www.jankratochvil.net/cgi-bin/$2 [R=301] [L]
-</Files>
-<Files "sw">
- RewriteEngine on
- RewriteRule ^(/home/short/www/www.jankratochvil.net/)?sw/*(.*)$ http://www.jankratochvil.net/project/ [R=301] [L]
-</Files>
-<Files "projects">
- RewriteEngine on
- RewriteRule ^(/home/short/www/www.jankratochvil.net/)?projects/*(.*)$ http://www.jankratochvil.net/project/$2 [R=301] [L]
-</Files>
-
-<IfDefine SSL>
- <Files "*.pl">
- RewriteEngine on
- RewriteRule ^.*?/www[.]jankratochvil[.]net/(.*)$ http://localhost:7680/$1 [P]
- </Files>
-</IfDefine>
-<IfDefine !SSL>
- Options +ExecCGI
-</IfDefine>
+ RewriteRule ^kocky(|/.*)$ http://kocky.vellum.cz/$1?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteRule ^(4cinfo|4c)(|/.*)$ http://4c.jankratochvil.net/$2?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteRule ^sw(|/.*)$ http://%{SERVER_NAME}/project$1?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteRule ^projects(|/.*)$ http://%{SERVER_NAME}/project$1?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteRule ^(mailman|pipermail|priv|phorum|project/captive/dist)(|/.*)$ http://www2.jankratochvil.net/$1$2?${unescape:%{QUERY_STRING}} [R=302,L]
+ <IfModule !mod_perl.c>
+ RewriteRule ^favicon[.]ico$ /My/Status.pm?code=404 [P,L]
+ RewriteRule ^(.*)[.]html[.]pl(|/.*)$ /$1.pm$2?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteRule ^resume/Resume-JanKratochvil.pm(|/.*)$ /resume/ResumeJanKratochvil.pm$1?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteRule ^(.*?)/+Index[.]pm$ /$1/?${unescape:%{QUERY_STRING}} [R=301,L]
+ RewriteCond %{REQUEST_FILENAME}/Index.pm -f
+ # It may be "" for the root directory:
+ RewriteRule ^(|(.*?/)/*)$ http://localhost:7680/$2Index.pm [P,L]
+ RewriteRule ^(.*[.]pm(|/.*))$ http://localhost:7680/$1 [P,L]
+ </IfModule>
+</IfModule>
--- /dev/null
+/* $Id$
+ * CSS of Contact page
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+table.contact { border-collapse: collapse; border-style: solid; border-width: 1px; }
+table.contact td { vertical-align: top; }
+table.contact A[href] { text-decoration: inherit; /* revoke underline */ }
+.contact[-lace-inherit="margin-center"] {}
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Contact page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package Contact;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-use vars qw($VERSION $CVS_ID);
-$VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-$CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-require CGI;
-
-
-my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "title"=>"Contact",
- "section"=>"Contact",
- "head_css"=>"
-table.contact td { vertical-align: top; }
-table.contact { border-collapse: collapse; border-style: solid; border-width: 1px; margin: 8px; }
-table.contact A[href] { text-decoration: inherit; /* revoke underline */ }
-",
- );
-My::Web->heading();
-
-
-my $mailme=(map({ a_href("mailto:$_",$_); } 'web@jankratochvil.net'))[0];
-
-print <<"HERE";
-<table width="100%" style="border-style: none;"><tr><td align="center"><table class="contact">
-<tr><td class="tab-head">Name </td><td>Jan Kratochvil</td></tr>
-<tr><td class="tab-head">e-mail </td><td>$mailme</td></tr>
-<tr><td class="tab-head">WWW </td><td>@{[ a_href('http://www.jankratochvil.net/') ]}</td></tr>
-<tr><td class="tab-head">OpenPGP </td><td style="font-family: monospace;">@{[ a_href '/pgp-JanKratochvil.txt',''
- .'pub 1024D/44FC7632 2002-10-07 Jan Kratochvil <pgp-44FC7632@jankratochvil.net><br />'
- .'sub 2048g/D9F5F44B 2002-10-07 [expires 2004-10-06]' ]}</span></td></tr>
-</table></td></tr></table>
-
-HERE
-
-
-My::Web->footer();
--- /dev/null
+# $Id$
+# Contact page Perl template.
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+#
+# 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; exactly version 2 of June 1991 is required
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+package Contact;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+use vars qw($VERSION $CVS_ID);
+$VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+$CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+use My::Web;
+Wrequire 'resume::ResumeJanKratochvil';
+use Carp qw(confess cluck);
+
+
+sub handler
+{
+my $W=My::Web->init(
+ "title"=>"Contact",
+ "section"=>"Contact",
+ "css_push"=>"./Contact.css",
+ );
+My::Web->heading();
+
+
+print <<"HERE";
+<table border="0" class="contact">
+HERE
+my @contact=resume::ResumeJanKratochvil->Contact();
+my %keys=map(($_=>1),qw(Name eMail Projects OpenPGP));
+while (@contact) {
+ my $key=shift @contact;
+ my $val=shift @contact;
+ next if !$keys{$key};
+ delete $keys{$key};
+ print <<"HERE";
+<tr>
+ <td class="tab-head">$key</td>
+ <td@{[ ($key ne "OpenPGP" ? '' : ' style="font-family: monospace;"') ]}>$val</td>
+</tr>
+HERE
+ }
+cluck join(" ","Not found keys:",keys(%keys)) if keys(%keys);
+print <<"HERE";
+</table>
+
+HERE
+
+
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Main page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-use Apache::Constants qw(MOVED);
+use Apache2::Const qw(HTTP_MOVED_PERMANENTLY);
+
+our $HTML_TEST="download";
+our $HTML_TEST_RC=HTTP_MOVED_PERMANENTLY;
-my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "header_only"=>1,
- );
-$W->{"r"}->status(MOVED);
-$W->{"r"}->header_out("Location"=>"http://".&{$W->{"web_hostname_sub"}}."/project/");
+sub handler
+{
+my $W=My::Web->init();
+My::Web->http_moved("./project/",HTTP_MOVED_PERMANENTLY);
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Mailman page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
use URI::Escape;
require LWP::Simple;
+our $HTML_TEST=0; # TODO: Provide some real URLs for download/translation.
+our $HTML_TEST_QUERY_STRING="list=html_test";
+
+sub handler
+{
my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>"Mailman Interface",
"no_job"=>1,
"args_check"=>{
"list"=>['^[-\w]+$'],
"back"=>'',
},
+ "http_safe"=>0, # LWP downloads.
+ # Mailman does not produce valid XHTML.
+ "content_type"=>"text/html",
);
My::Web->heading();
for my $list (@{$W->{"args"}{"list"}}) {
print "<h1>List <i>$list</i></h1><blockquote>\n";
- my $url_base=&{$W->{"mailman_url_sub"}}()."/subscribe/$list";
- my $t=LWP::Simple::get("$url_base?"
- .join('&',
- "list=$list",
- map({ $_."=".uri_escape($W->{"args"}{$_}); } qw(email pw pw-conf))));
+ my $url_base=$W->{"mailman_url"}."/subscribe/$list";
+ my $url=URI->new($url_base);
+ $url->query_form(
+ "list"=>$list,
+ map(($_=>$W->{"args"}{$_}),qw(email pw pw-conf)),
+ );
+ my $t=LWP::Simple::get($url);
$t=($t=~m#^.*<body\b[^>]*>(.*?)</body>#is)[0];
$t=~s#(href=")(../[^"]*)(")#$1$url_base/$2$3#gi;
print $t;
}
-My::Web->footer();
+exit;
+}
+1;
# Set all needed variables to their empty values to prevent "variable `...' not defined"
# Any further settings should be done exclusively by += operator
EXTRA_DIST=
-BUILT_SOURCES=
CLEANFILES=
MAINTAINERCLEANFILES=
-noinst_DATA=
+TESTS=
# Force delete of target file if command fails.
# Generally better behaviour but it requires GNU make. Harmless otherwise.
.DELETE_ON_ERROR:
-%.ppm: %.fig Makefile
- fig2dev -L ppm -S4 -m1.75 -b10 $< | pnmgamma 0.4 >$@
+# This target is used for "httpd.conf.pl" generator.
+MODPERL_PM=
+EXTRA_DIST+=$(MODPERL_PM)
+MODPERL_PM-print: $(MODPERL_PM)
+ @echo "MODPERL_PM:$(subdir):$(MODPERL_PM)"
+ @for subdir in . $(SUBDIRS);do \
+ if test "$$subdir" = . -o "$$subdir" = intl -o "$$subdir" = po -o "$$subdir" = m4;then :;else \
+ (cd "$$subdir" && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
+ fi; \
+ done
-%.gif: %.ppm
- ppmquant -quiet 256 $< | ppmtogif -quiet -sort >$@
+# PiNG is our exchange format. Prevent: make: Circular %.ppm <- %.EXT dependency dropped.
-# Prevent: make: Circular %.ppm <- %.gif dependency dropped.
-#%.ppm: %.gif
-# giftopnm $< >$@
+# Prevent gs(1) EPIPE as it writes about 2x more data out: ( ... ;cat >/dev/null)
+%.png: %.fig Makefile
+ $(PATH_FIG2DEV) -L ppm -S4 -m1.75 -b10 $< | ($(PATH_PNMGAMMA) 0.4;cat >/dev/null) | $(PATH_PNMTOPNG) >$@
-%.png: %.ppm
- pnmtopng $< >$@
+%.png: %-badgamma.ppm
+ $(PATH_PNMGAMMA) 0.4 <$< | $(PATH_PNMTOPNG) >$@
-%.ppm: %.png
- pngtopnm $< >$@
+%.gif: %.png
+ $(PATH_PNGTOPNM) $< | $(PATH_PPMQUANT) -quiet 256 | $(PATH_PPMTOGIF) -quiet -sort >$@
%.png: %.dia $(top_srcdir)/dia-w.sh
$(top_srcdir)/dia-w.sh --nosplash --export $@ $<
endif
+CLEANFILES+=httpd.conf
+EXTRA_DIST+=httpd.conf.pl
+
+httpd.conf: httpd.conf.pl Makefile project/Makefile
+ perl -I$$PWD ./$< >$@
+
+TESTS+=html-test
+
+html-test:
+ ./$@.pl
+
EXTRA_DIST+= \
- Index.html.pl \
- WebConfig.pm \
- Redirect.pl \
- have_js.js.pl \
- robots.txt \
- SendMsg.pl \
- Contact.html.pl \
- Mailman.pl
+ WebConfig.pm \
+ robots.txt \
+ html-test.pl
+
+MODPERL_PM+= \
+ Index.pm \
+ Contact.pm \
+ Mailman.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# URL redirector of &My::Web::a_href Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package Redirect;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-use Apache::Constants qw(MOVED);
-
-
-my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "header_only"=>1,
- "args_check"=>{
- "location"=>'^\w+://',
- },
- );
-$W->{"r"}->status(MOVED);
-$W->{"r"}->header_out("Location"=>$W->{"args"}{"location"});
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Quick Send Message
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package SendMsg;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-use Apache::Constants qw(HTTP_NO_CONTENT);
-require Mail::Send;
-
-
-my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "header_only"=>1,
- "args_check"=>{
- "msgscript"=>'', # If 'text/javascript' is supported.
- "msghtml"=>'', # No 'text/javascript' available.
- },
- );
-my $msg=$W->{"args"}{"msghtml"} || $W->{"args"}{"msgscript"};
-if ($msg) {
-
- my $subject=$msg.' @'.$W->{"r"}->uri();
- print STDERR "Message: $subject\n";
-
- my $send=Mail::Send->new();
- $send->to(split /,/,$W->{"SendMsg_to"});
- $send->subject($subject);
- my $fh=$send->open();
- print $fh "$subject\n\n";
- for (sort keys %ENV) {
- print $fh $_."=".$ENV{$_}."\n";
- }
- $fh->close(); # send it here
-
- }
-$W->{"r"}->status(HTTP_NO_CONTENT);
@EXPORT=qw(%WebConfig);
use My::Web;
-require CGI;
-my $resume_url="/resume/Resume-JanKratochvil.html.pl/Resume-JanKratochvil.html";
+my $resume_url="/resume/ResumeJanKratochvil.pm/ResumeJanKratochvil.html";
+# Only to be used privately by My::Web !
our %WebConfig=(
"admin_mail"=>'web-www.jankratochvil.net@jankratochvil.net',
- "SendMsg_to"=>'web-www.jankratochvil.net@jankratochvil.net',
- "cvs_id_author"=>sub {
+ "cvs_id_author_sub"=>sub {
my($name)=@_;
return My::Web::a_href("http://www.jankratochvil.net/","Jan Kratochvil") if 0
|| $name eq "short"
|| $name eq "lace";
- return CGI::escapeHTML($name);
+ return escapeHTML($name);
},
+ "viewcvs_My"=>"http://cvs.jankratochvil.net/viewcvs/MyWeb/",
"viewcvs"=>"http://cvs.jankratochvil.net/viewcvs/www/www.jankratochvil.net/",
"title_prefix"=>"Jan Kratochvil",
- "footer_mailme"=>0,
"project_viewcvs"=>"http://cvs.jankratochvil.net/viewcvs/",
"pserver"=>':pserver:pserver:@cvs.jankratochvil.net',
"pserver_path"=>"/cvs",
"resume_url"=>$resume_url,
- "web_hostname_sub"=>sub () { return "www.jankratochvil.net"; }, # $My::Web::W->{"r"}->hostname()
- "mailman_url_sub" =>sub () { return "http://".&{$My::Web::W->{"web_hostname_sub"}}."/mailman/"; },
- "pipermail_url_sub"=>sub () { return "http://".&{$My::Web::W->{"web_hostname_sub"}}."/pipermail/"; },
+ "mailman_url" =>sub { return "http://".$My::Web::W->{"web_hostname"}."/mailman/"; },
+ "pipermail_url"=>sub { return "http://".$My::Web::W->{"web_hostname"}."/pipermail/"; },
"heading"=>sub () {
- print '<table border="0" align="center" style="font-size: larger;">'."\n";
-# print '<col width="20%">'."\n";
-# print '<col width="50%">'."\n";
-# print '<col width="20%">'."\n";
- print '<tr>'."\n";
- print '<td>'."\n";
- print '<table border="1" align="center"' # align="left"
- .' style="border-collapse: collapse; border-style: solid; border-width: 2px;">'."\n";
- print '<tr>'."\n";
- print '<td style="padding: 5px; font-weight: bold;">'."\n";
- print 'Jan Kratochvil';
-# print My::Web::a_href('http://www.jankratochvil.net/','Jan Kratochvil',
+ my $r="";
+ $r.='<table border="0" style="font-size: larger;" class="margin-center"><tr>'."\n";
+ # Do not: <col width="20%" /><col width="50%" /><col width="20%" />
+ # as the constant are always bad.
+ $r.='<td>'."\n";
+ $r.='<table border="1"'
+ .' style="border-collapse: collapse; border-style: solid; border-width: 2px;">'
+ .'<tr><td style="padding: 5px; font-weight: bold;">'."\n";
+ $r.='Jan Kratochvil';
+# $r.=My::Web::a_href('http://www.jankratochvil.net/','Jan Kratochvil',
# "attr"=>'style="text-decoration: inherit; /* revoke underline */;"');
- print '</td>'."\n";
- print '</tr>'."\n";
- print '</table>';
- print '</td>'."\n";
- print '<td>'."\n";
- print '<table border="1" align="center"'
- .' style="border-collapse: collapse; border-style: solid; border-width: 2px;">'."\n";
- print '<tr>'."\n";
- my @sections=(
- "/project/"=>"Projects",
- "http://cvs.jankratochvil.net/"=>"CVS",
-# "/News.html.pl"=>"News",
- $resume_url=>"Resume",
- "/Contact.html.pl"=>"Contact",
- );
- while (@sections) {
- my $section_path=shift @sections;
- my $section_name=shift @sections;
- print '<td style="padding: 5px;">';
- print(($My::Web::W->{"section"} || "") eq $section_name ? "<b>$section_name</b>"
- : My::Web::a_href($section_path,$section_name,
- "attr"=>'style="text-decoration: inherit; /* revoke underline */;"'));
- print "</td>\n";
- }
- print '</tr>'."\n";
- print '</table>'."\n";
- print '</td>'."\n";
- print '</tr>'."\n";
- print '</table>'."\n";
- if (!$My::Web::W->{"WebConfig::heading_novskip"}) {
- print "<hr />\n";
- print My::Web::vskip("6ex");
+ $r.='</td></tr></table>';
+ $r.='</td>'."\n";
+ $r.='<td>'."\n";
+ $r.='<table border="1"'
+ .' style="text-align: center; border-collapse: collapse; border-style: solid; border-width: 2px;">'
+ .'<tr>'."\n";
+ my @sections=(
+ "/project/"=>"Projects",
+ "http://cvs.jankratochvil.net/"=>"CVS",
+# "/News.pm"=>"News",
+ $resume_url=>"Resume",
+ "/Contact.pm"=>"Contact",
+ );
+ while (@sections) {
+ my $section_path=shift @sections;
+ my $section_name=shift @sections;
+ $r.='<td style="padding: 5px;">';
+ $r.=(($My::Web::W->{"section"} || "") eq $section_name ? "<b>$section_name</b>"
+ : My::Web::a_href($section_path,$section_name,
+ "attr"=>'style="text-decoration: inherit; /* revoke underline */;"'));
+ $r.="</td>\n";
+ }
+ $r.='</tr></table>'."\n";
+ $r.='</td>'."\n";
+ $r.='</tr></table>'."\n";
+ if (!$My::Web::W->{"heading_novskip"}) {
+ $r.="<hr />\n";
+ $r.=My::Web::vskip("6ex");
}
+ return $r;
},
- "footing"=>sub () {
-# print "<h1>footing</h1>\n";
- },
- "footing_delimit"=>sub () {
+ ###"footing"=>"<h1>footing</h1>\n",
+ "footing_delimit_sub_push"=>sub () {
return if $My::Web::W->{"no_job"};
print <<"HERE";
<table border="0" style="margin: 4ex; padding: 2ex; background: #552222;">
HERE
},
"no_job"=>1,
+ "css_inherit"=>1,
);
1;
"clean"=>[qw(
.xvpics
./ChangeLog.bak
+ ./httpd.conf
./INSTALL
./dia-w.sh
+ ./project/SUBDIRS
./project/Nokia61/Nokia61
./project/Nokia61/Nokia61_23.cache
./project/line9k/line9k.png
./resume/*.aux
./resume/*.log
./resume/*.out
- ./resume/Resume-JanKratochvil-face.pdf
./etmms/*.dia~
./project/TraceFS/*.gif
./project/pgsqlsubstr/*.gif
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-AC_INIT(./Makefile-head.am)
+AC_INIT(./project/ChangeLog.pm)
AM_INIT_AUTOMAKE(www.jankratochvil.net,1.0cvs)
AM_MAINTAINER_MODE
+AC_DEFUN([PATH_PROG_CHECKED],
+[
+ AC_PATH_PROG($1,$2)
+ eval 'echo $'$1|grep >/dev/null . || AC_MSG_ERROR([Program '$2' not found.])
+])
+
AC_PATH_PROG(PATH_XVNC,Xvnc)
AC_PATH_PROG(PATH_BC,bc)
-AC_PATH_PROG(PATH_DIA,dia)
+PATH_PROG_CHECKED(PATH_DIA,dia)
+PATH_PROG_CHECKED(PATH_FLOCK,flock)
+PATH_PROG_CHECKED(PATH_FIG2DEV,fig2dev)
+PATH_PROG_CHECKED(PATH_PPMQUANT,ppmquant)
+PATH_PROG_CHECKED(PATH_PPMTOGIF,ppmtogif)
+PATH_PROG_CHECKED(PATH_PNMTOPNG,pnmtopng)
+PATH_PROG_CHECKED(PATH_PNGTOPNM,pngtopnm)
+PATH_PROG_CHECKED(PATH_PNMGAMMA,pnmgamma)
dnl "Makefile" output files MUST have pathnames incl./excl. "./" prefix as specified!
AC_OUTPUT([
./dia-w.sh
./macros/Makefile
./My/Makefile
+./My/Hash/Makefile
./resume/Makefile
./etmms/Makefile
./project/Makefile
-#! /usr/bin/perl
-#
# $Id$
# Contact page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package Contact;
+package etmms::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
use vars qw($VERSION $CVS_ID);
$VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+sub handler
+{
my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>"MMS Center Debugging",
);
My::Web->heading();
{
my($name)=@_;
- my %name_item=( My::Project->one_item_list_read($name) );
- return a_href "/project/$name/",$name_item{"name"}.': '.$name_item{"summary"};
+ my $name_item=project::Lib->name_to_hashref($name);
+ return a_href "/project/$name/",$name_item->{"name"}.': '.$name_item->{"summary"};
};
<li style="font-size: larger;">@{[ project 'etherealwsp' ]}</li>
</ul>
-
-
-
-
-
-
-
-
-
-
-
-
HERE
-My::Web->footer();
+exit;
+}
+1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+=
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# JavaScript detection scriptlet Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package have_js;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-
-
-my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "title"=>'Homepage of Jan Kratochvil',
- );
-# Do not: My::Web->heading();
-$W->{"r"}->send_http_header("text/javascript");
-
-# Prevent redirection of some top (referring) foreign webpage as it
-# may not pass "have_js=1" to us anyway. (for example Google cache)
-print ""
- .'if (0'."\n"
- ."\t\t".'|| window.location.hostname=="'.$W->{"r"}->hostname().'" && window.location.port== 80'."\n"
- ."\t\t".'|| window.location.hostname=="'.'localhost' .'" && window.location.port==7680)'."\n";
-print <<'HERE';
- {
- var searchN=window.location.search;
- if (searchN=="" || searchN=="?")
- searchN="?";
- else
- searchN+="&";
- searchN+="have_js=1";
-
- window.location.href
- =window.location.protocol+"//"
- +window.location.hostname
- +(window.location.port==80 ? "" : ":"+window.location.port)
- +window.location.pathname
- +window.location.hash
- +searchN;
- }
-HERE
-
-# Do not: My::Web->footer();
--- /dev/null
+#! /usr/bin/perl
+#
+# $Id$
+
+
+use strict;
+use warnings;
+use My::ModPerlPm;
+require LWP::UserAgent;
+require HTTP::Status;
+require LWP;
+use Carp qw(confess cluck);
+use Getopt::Long;
+use Sys::Hostname::Long;
+use URI::Escape;
+
+
+my $URL_BASE="http://".hostname_long().":7680";
+my $URL_VALIDATOR_BASE="http://validator.w3.org/check?uri=";
+my $URL_VALIDATOR_BASE_LOCAL="http://localhost/cgi-bin/check.cgi?uri=";
+
+
+my $opt_validate;
+my $opt_local;
+die if !GetOptions(
+ "validate!",\$opt_validate,
+ "local!",\$opt_local,
+ );
+
+my($first_pattern)=@ARGV;
+die if @ARGV>=2;
+
+
+$|=1;
+
+my $UA=LWP::UserAgent->new();
+$UA->env_proxy();
+
+my $first_seen=!$first_pattern;
+My::ModPerlPm->list("sub"=>sub {
+ my($p)=@_;
+ require $p->{"file"};
+ eval 'require '.$p->{"module"}.'; 1;'
+ or cluck "Error loading module ".$p->{"module"}.": $@";
+ my $HTML_TEST=eval '$'.$p->{"module"}.'::HTML_TEST;';
+ return if defined $HTML_TEST && !$HTML_TEST;
+ my $validate=$opt_validate;
+ $validate=0 if $HTML_TEST && $HTML_TEST eq "download";
+ my $HTML_TEST_QUERY_STRING=eval '$'.$p->{"module"}.'::HTML_TEST_QUERY_STRING;';
+ for my $query_string ("ARRAY" eq ref $HTML_TEST_QUERY_STRING ? @$HTML_TEST_QUERY_STRING : $HTML_TEST_QUERY_STRING) {
+ my $url=$URL_BASE.$p->{"url"}.(!$query_string ? "" : "?".$query_string);
+ my $url_matches=1 if $first_pattern && $url=~/$first_pattern/o;
+ die "Pattern amiguous on: $url\n" if $first_seen && $url_matches;
+ if (!$first_seen && !($first_seen=($url=~/$first_pattern/o))) {
+ print "_";
+ next;
+ }
+ print ".";
+ if ($validate) {
+ $url=($opt_local ? $URL_VALIDATOR_BASE_LOCAL : $URL_VALIDATOR_BASE).uri_escape($url);
+ }
+ my $request=HTTP::Request->new("GET",$url);
+ $request->header("Cache-control"=>"no-cache");
+ # Do not: ...->request(...);
+ # as it would follow our tested 403 redirect responses.
+ my $response=$UA->simple_request($request);
+ my $HTML_TEST_RC=eval '$'.$p->{"module"}.'::HTML_TEST_RC;';
+ $HTML_TEST_RC=HTTP::Status::RC_OK() if !defined $HTML_TEST_RC;
+ if ($response->code()==$HTML_TEST_RC) {
+ next if !$validate;
+ local $_=$response->content();
+ my $valid=/\bclass="valid"\s*>/;
+ my $invalid=/\bclass="invalid"\s*>/;
+ die "\nUnexpected response: $url\n" if $valid==$invalid;
+ next if $valid;
+ die "\n$url\n";
+ }
+ die "\n$url: ".$response->code()."\n";
+ }
+ }) for (0,($opt_validate ? 1 : ()));
+print "\n";
+die "Nothing seen for: $first_pattern\n" if !$first_seen;
--- /dev/null
+#! /usr/bin/perl
+#
+# $Id$
+
+
+use strict;
+use warnings;
+use My::ModPerlPm;
+
+
+print <<"HERE";
+# Auto-generated from: @{[ '$Id$' ]}
+# DO NOT EDIT!
+
+
+PerlOptions +GlobalRequest
+
+HERE
+print <<'HERE';
+<Perl>
+ use Carp qw(confess cluck);
+ $SIG{"__WARN__"}=sub { $_[0]=~/\n./ ? warn @_ : cluck @_; };
+ $SIG{"__DIE__" }=sub { $_[0]=~/\n./ ? die @_ : confess @_; };
+</Perl>
+
+<Directory "/">
+ Order Allow,Deny
+ Deny from all
+</Directory>
+HERE
+
+
+My::ModPerlPm->list("sub"=>sub {
+ my($p)=@_;
+ print <<"HERE"
+
+PerlModule @{[ $p->{"module"} ]}
+<Location "@{[ $p->{"url"} ]}">
+ SetHandler modperl
+ PerlResponseHandler @{[ $p->{"module"} ]}
+ Order Deny,Allow
+ Allow from localhost
+</Location>
+HERE
+ });
+
+print <<"HERE";
+
+# EOF
+HERE
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::332'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::332::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::332::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"332",
+ "platform"=>"unixdevel",
+ "priority"=>630,
+ "icon"=>"332-front-icon.jpeg",
+ # FIXME: Relative 'download':
+ "download-sources without patched core"=>"/project/332/332-noexec.tar.gz",
+ "summary"=>"AmigaOS kernel port to embedded Motorola 68332",
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "sponsorship"=>sub { return a_href('http://www.geoinvest.cz/','Geoinvest'); },
+ "language"=>"680x0 asm, C",
+ "description"=><<"HERE",
+<p>Core of the AmigaOS kernel (exec.library) ported to embedded Motorola 68332 computer.
+Reusable as OS for your embedded device suitable for developers with AmigaOS experience.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
+
print <<"HERE";
<p>Project was destined as the kernel for GPS-tracking device.
Used Motorola 68332 computer features 1.25MB of RAM and 512KB of FlashEPROM.
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::332' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::332::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"332",
- "platform"=>"unixdevel",
- "priority"=>630,
- "icon"=>"332-front-icon.jpeg",
- # FIXME: Relative 'download':
- "download-sources without patched core"=>"/project/332/332-noexec.tar.gz",
- "summary"=>"AmigaOS kernel port to embedded Motorola 68332",
- "license"=>"PD",
- "maintenance"=>"ready",
- "sponsorship"=>@{[ a_href('http://www.geoinvest.cz/','Geoinvest') ]},
- "language"=>"680x0 asm, C",
- "description"=><<"HERE",
-<p>Core of the AmigaOS kernel (exec.library) ported to embedded Motorola 68332 computer.
-Reusable as OS for your embedded device suitable for developers with AmigaOS experience.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::AutoGen'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::AutoGen::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::AutoGen::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::AutoGen::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::AutoGen' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::AutoGen'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::AutoGen::ListItem;
+package project::AutoGen::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"platform"=>"unixdevel",
"priority"=>540,
"cvs"=>"macros",
- "link-Documentation"=>'/project/Pod2Html.html.pl?cvs=macros/AutoGen.pm',
+ "link-Documentation"=>'/project/Pod2Html.pm?cvs=macros/AutoGen.pm',
# FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
"link-Source file"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/macros/AutoGen.pm?rev=HEAD",
"summary"=>"autogen.sh while supporting CVS/.rpm/.deb",
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::CasioA'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::CasioA::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::CasioA::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::CasioA::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-@{[ centerimg "Casio-A","Casio-A Snapshot" ]}
-@{[ vskip "1ex" ]}
-@{[ centerimg "CasioSchema","Casio-A Interface Scheme" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::CasioA' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::CasioA'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::CasioA::ListItem;
+package project::CasioA::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"obsolete-Casio SF-A10 diary and AmigaOS are no longer being used.",
"language"=>"680x0 asm",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Casio-A is a software for backup/restore of Casio SF-A10 personal digital
diary. Its development involved reverse-engineering the Casio communication
protocol by sniffing serial communication of the vendor's MS-DOS backup tool.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+@{[ centerimg "Casio-A","Casio-A Snapshot" ]}
+@{[ vskip "1ex" ]}
+@{[ centerimg "CasioSchema","Casio-A Interface Scheme" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ Index.pm
+
EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
- Casio-A.png
+ Casio-A.png
+
-#! /usr/bin/perl
-#
# $Id$
# URL redirector of &My::Web::a_href Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-use Apache::Constants qw(MOVED);
+our $HTML_TEST="download";
+our $HTML_TEST_QUERY_STRING="cvs=MyWeb";
+
+sub handler
+{
my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"header_only"=>1,
"args_check"=>{
- "cvs"=>'^[\w\d][\w\d/.]*$',
+ "cvs"=>'^[\w\d][-\w\d/.]*$',
},
+ "content_type"=>"text/plain",
+ "http_safe"=>0, # cvs(1) downloads.
);
+My::Web->heading();
+
-$W->{"r"}->send_http_header("text/plain");
local *F;
open F,""
."cvs -n -q -d ".$W->{"pserver"}.":".$W->{"pserver_path"}." rlog ".$W->{"args"}{"cvs"}
." |perl -p -e 's#^RCS file: ".$W->{"pserver_path"}.'/(.*?)(?:/Attic/|/)?([^/]*),v$#$&\nWorking file: $1/$2#;'."'"
- ." |cvs2cl --stdin --stdout --window 3600 --separate-header --no-wrap --usermap ".top_dir_disk()."/cvs2cl-usermap"
+ ." |cvs2cl --stdin --stdout --window 3600 --separate-header --no-wrap --usermap ".path_abs_disk("/cvs2cl-usermap")
." |";
-print while <F>;
+print $_ while <F>;
close F;
+
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::FordFulk'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::FordFulk::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::FordFulk::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::FordFulk::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<iframe src="FordFulk/" width="90%" height="500" />
-<a href="FordFulk/">Program on-line</a>.
-</iframe>
-
-@{[ vskip "3ex" ]}
-
-@{[ centerimg "FordFulk","Applet Screenshot" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::FordFulk' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::FordFulk'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::FordFulk::ListItem;
+package project::FordFulk::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<!--iframe src="FordFulk/" width="90%" height="500"-->
+<p>@{[ a_href 'FordFulk/','Program on-line.' ]}</p>
+<!--/iframe-->
+
+@{[ vskip "3ex" ]}
+
+@{[ centerimg "FordFulk","Applet Screenshot" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::Heat'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::Heat::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::Heat::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::Heat::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<iframe src="Heat/" width="90%" height="500" />
-<a href="Heat/">Program on-line</a>.
-</iframe>
-
-@{[ vskip "3ex" ]}
-
-@{[ centerimg "Heat","Applet Screenshot" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::Heat' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::Heat'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::Heat::ListItem;
+package project::Heat::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<!--iframe src="Heat/" width="90%" height="500"-->
+<p>@{[ a_href 'Heat/','Program on-line.' ]}</p>
+<!--/iframe-->
+
+@{[ vskip "3ex" ]}
+
+@{[ centerimg "Heat","Applet Screenshot" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# List of projects Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+use Carp qw(confess cluck);
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Project List',
"section"=>"Projects",
-# "rel_up"=>top_dir(), # TODO:homepage
-# "rel_start"=>top_dir(), # TODO:homepage
+# "rel_up"=>"/", # TODO:homepage
+# "rel_start"=>"/", # TODO:homepage
"footer_ids"=>0,
);
My::Web->heading();
-print My::Project->views("Detailed");
-print My::Project->platforms(undef(),"novskip"=>1);
+print(project::Lib->views("Detailed"));
+print(project::Lib->platforms(undef(),"novskip"=>1));
-my %item=( My::Project::item_hash_read() );
+my %item=project::Lib->name_to_hashref();
-my @platforms=@My::Project::platforms;
+my @platforms=@project::Lib::platforms;
while (@platforms) {
my $platform_sym =shift @platforms;
my $platform_name=shift @platforms;
- print '<a name="'.$platform_sym.'">';
- print "<h2>$platform_name</h2>";
- print '</a>'."\n";
+ print '<h2 id="'.$platform_sym.'">'.$platform_name.'</h2>'."\n";
my @projects=sort {
($item{$b}{"priority"} <=> $item{$a}{"priority"})
or
}
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::Islet'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::Islet::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::Islet::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::Islet::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<iframe src="Islet/" width="90%" height="500" />
-<a href="Islet/">Program on-line</a>.
-</iframe>
-
-@{[ centerimg "Islet","Applet demo screen" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::Islet' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::Islet'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::Islet::ListItem;
+package project::Islet::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<!--iframe src="Islet/" width="90%" height="500"-->
+<p>@{[ a_href 'Islet/','Program on-line.' ]}</p>
+<!--/iframe-->
+
+@{[ centerimg "Islet","Applet demo screen" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::LaserGame'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::LaserGame::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::LaserGame::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::LaserGame::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-@{[ centerimg "hw.jpeg","LaserGame Hardware" ]}
-@{[ vskip "1ex" ]}
-@{[ centerimg "LaserComm","LaserComm Utility" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::LaserGame' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::LaserGame'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::LaserGame::ListItem;
+package project::LaserGame::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"obsolete-Config tool is written for the discontinued Amiga platform.",
"language"=>"i8051 asm, 680x0 asm",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>LaserGame is a clone of commercial shoot'n'run game. Each player has its
own hardware with multiple infra detecting sensor and one laser/infra gun.
Shooting is visually targeting by red laser diode while the shooting
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+@{[ centerimg "hw.jpeg","LaserGame Hardware" ]}
+@{[ vskip "1ex" ]}
+@{[ centerimg "LaserComm","LaserComm Utility" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ Index.pm
+
EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
- LaserGame.png
+ LaserGame.png
+
--- /dev/null
+/* $Id$
+ * CSS of project functions for HTML/XHTML output generation
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+table.print_project td { vertical-align: top; }
--- /dev/null
+# $Id$
+# Common functions for HTML/XHTML output generation
+# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+#
+# 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; exactly version 2 of June 1991 is required
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+package project::Lib;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+our $CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+use My::Web;
+use Carp qw(cluck confess);
+
+use Exporter;
+our @EXPORT=qw();
+our @ISA=qw(My::Web Exporter);
+
+
+sub LIST_FILENAME()
+{
+ # Do not: path_abs_disk("/project/SUBDIRS");
+ # as we would need $W->{"r"} for the possibly relative path resolving.
+ return My::Web::dir_top_abs_disk()."/project/SUBDIRS";
+}
+
+
+sub print_project
+{
+my($class,$ListItem)=@_;
+
+ print "<h1>".$class->title($ListItem)."</h1>\n";
+ do { print $_ if $_; } for ($W->{"project_text_after_title"});
+ print $ListItem->{"description"};
+ print "<hr />\n";
+ print($W->{"before_project_data"}||"");
+ return if $W->{"no_project_data"};
+ my @table=(
+ {"key"=>"summary","text"=>"Summary"},
+ {"key"=>"license","text"=>"License","format"=>sub ($) {
+ my %known=(
+ "PD"=>"Public Domain",
+ "GPL"=>a_href("http://www.gnu.org/licenses/gpl.html","GNU General Public License"),
+ "LGPL"=>a_href("http://www.gnu.org/licenses/lgpl.html","GNU Lesser General Public License"),
+ "com"=>"Commercial"
+ );
+ return $known{$_[0]};
+ }},
+ {"key"=>"maintenance","text"=>"State","format"=>sub ($) {
+ my %known=(
+ "active"=>"Ready to use. Project is now actively developed.",
+ "ready"=>"Ready to use. Maintained.",
+ "dead"=>"Dead code, no longer supported.",
+ "merge"=>"Functions belong to existing other project.",
+ "obsolete"=>"Obsoleted.",
+ "update"=>"Package needs updating to recent software.",
+ "accepted"=>"This patch got already integrated by the original package maintainer.",
+ "pending"=>"Patch is ready to be applied to the mainstream.",
+ "ignored"=>"Patch was ignored. It is not applied in the mainstream.",
+ ""=>"",
+ );
+ my @r;
+ for ($known{($_[0]=~/^([^-]*)-?/)[0] || ""}) {
+ push @r,$_ if $_;
+ push @r," $'" if $';
+ }
+ return join(" ",@r);
+ }},
+ {"key"=>"aminet","text"=>a_href('http://www.aminet.net/','Aminet'),"format"=>sub ($) {
+ return join(" ",
+ a_href('http://www.aminet.net/'.$_[0].".lha",$_[0].".lha"),
+ "(".a_href('http://www.aminet.net/'.$_[0].".readme","readme").")");
+ }},
+ {"key"=>qr(^download\b),"text"=>sub ($) {
+ $_[0]=~s/^download//;
+ $_[0]=~s/^-/ /;
+ return "Download".$_[0];
+ },
+ "format"=>sub ($) {
+ return a_href($_[0],escapeHTML(File::Basename::basename($_[0])),"size"=>2);
+ }},
+ {"key"=>qr(^link\b),"text"=>sub ($) {
+ $_[0]=~s/^link-//;
+ return $_[0];
+ },
+ "format"=>sub ($) {
+ return($_[0]=~/^<a\b/ ? $_[0] : a_href($_[0],escapeHTML($_[0])));
+ }},
+ {"key"=>qr(^cvs\b),"text"=>sub ($) {
+ $_[0]=~s/^cvs//;
+ $_[0]=~s/^-/ /;
+ return "CVS".$_[0];
+ },
+ "format"=>sub ($$) {
+ my($val,$key)=@_;
+ $key=~s/^cvs//;
+ $key=~s/^-/ /;
+ my $branch="";
+ $branch=$1 if $val=~s/:(.*)//;
+ return join("<br />\n\t\t",
+ escapeHTML("cvs -d ".$W->{"pserver"}.":".$W->{"pserver_path"}." -z3"
+ ." checkout".(!$branch ? "" : " -r $branch -kk")
+ .($val!~m#/# ? "" : " -d ".File::Basename::basename($val))
+ ." $val"),
+ join(" | \n\t\t",
+ map({ a_href($_->[1],$_->[0]); }
+ ["ViewCVS CVS repository",$W->{"project_viewcvs"}.$val."/".(!$branch ? "" : '?only_with_tag='.$branch)],
+ ["Download CVS snapshot" ,
+ $W->{"project_viewcvs"}.$val."/".File::Basename::basename($val).".tar.gz?tarball=1"
+ .(!$branch ? "" : '&only_with_tag='.$branch)],
+ ["CVS ChangeLog" ,"/project/ChangeLog.pm?cvs=$val"])));
+ }},
+ {"key"=>"ownership","text"=>"Ownership"},
+ {"key"=>"sponsorship","text"=>"Sponsorship"},
+ {"key"=>"language","text"=>"Programming language","format"=>sub ($) {
+ return a_href("http://java.sun.com/",escapeHTML($_[0]))
+ if $_[0]=~/^Java\b/;
+ return a_href("http://www.php.net/",escapeHTML($_[0]))
+ if $_[0]=~/^PHP\b/;
+ return undef();
+ }},
+ );
+
+sub tableit_func
+{
+my($tableit,$val,$key,$ListItem)=@_;
+
+ my $r="";
+ $r.="<tr>";
+ if ($tableit->{"text"}) {
+ $r.="<td>";
+ $r.=(!ref $_ ? $_ : &{$_}($key)) for ($tableit->{"text"});
+ $r.="</td>";
+ }
+ if ($tableit->{"format"}) {
+ do { $val=$_ if defined $_; } for (&{$tableit->{"format"}}($val,$key));
+ }
+ return join("",map("<tr><td>".$_->[0]."</td><td>".$_->[1]."</td></tr>\n",@$val))
+ if ref $val;
+ $r.="<td>$val</td>";
+ $r.="</tr>\n";
+}
+
+ my %used_key;
+ print '<table border="0" class="print_project">'."\n";
+ for my $tableit (@table) {
+ if (!ref $tableit->{"key"}) {
+ print tableit_func($tableit,$ListItem->{$tableit->{"key"}},$tableit->{"key"},$ListItem)
+ if $ListItem->{$tableit->{"key"}} && !$used_key{$tableit->{"key"}}++;
+ }
+ else {
+ for my $key (@{$ListItem->{"keys_array"}}) {
+ my $keyregex=$tableit->{"key"};
+ next if $key!~/$keyregex/;
+ print tableit_func($tableit,$ListItem->{$key},$key,$ListItem);
+ }
+ }
+ }
+ print "</table>\n";
+ print vskip;
+}
+
+sub hashlikearray_get_keys(@)
+{
+my(@hashlikearray)=@_;
+
+ my @r;
+ while (@hashlikearray) {
+ push @r,shift @hashlikearray; # key
+ shift @hashlikearray; # val
+ }
+ return @r;
+}
+
+sub project_arrayref_to_hashref($$)
+{
+my($self,$arrayref)=@_;
+
+ Wrequire 'My::Hash';
+ return My::Hash->new({
+ @$arrayref,
+ "keys_array"=>[ hashlikearray_get_keys(@$arrayref) ],
+ },"My::Hash::Sub","My::Hash::Readonly");
+}
+
+sub title ($$)
+{
+my($class,$hashref)=@_;
+
+ cluck if !$hashref->{"name"} || !$hashref->{"summary"};
+ return $hashref->{"name"}.": ".$hashref->{"summary"},
+}
+
+# Returns: hashref if !wantarray(), list if wantarray().
+sub list($)
+{
+my($self)=@_;
+
+ # This cache is "headers_in" hits safe - only local files reading.
+ our %list_cache;
+ our @list_cache;
+ if (!@list_cache) {
+ My::Web->make_file(LIST_FILENAME());
+ local *F;
+ open F,LIST_FILENAME() or do {
+ cluck "Error opening \"".LIST_FILENAME()."\": $!";
+ return;
+ };
+ my @r=split(" ",do { undef $/; <F>; });
+ close F or cluck "Error closing \"".LIST_FILENAME()."\": $!";
+ cluck "No projects found?" if !@r;
+ @list_cache=@r;
+ %list_cache=map(($_=>1),@list_cache);
+ }
+ return \%list_cache if !wantarray();
+ return @list_cache;
+}
+
+# Returns: hashlist of hashrefs if !$name.
+sub name_to_hashref($;$)
+{
+my($class,$name)=@_;
+
+ cluck if !wantarray() && !$name;
+ # Do not cache the result to get all the items &Wrequire-mapped.
+ return map(($_=>$class->name_to_hashref($_)),$class->list()) if !$name;
+ cluck join(" ","Project name \"$name\" not listed in 'list_cache':",$class->list())
+ if !$class->list()->{$name};
+ # Never cache anything to be stable for "headers_in" hits.
+ Wrequire "project::${name}::Index";
+ my $arrayref=eval('\@project::'.$name.'::Index::ListItem');
+ do { warn "Broken project/$name/Index.pm"; return undef(); } if !@$arrayref;
+ return $class->project_arrayref_to_hashref($arrayref);
+}
+
+# $args{"ListItem"}=\%...;
+sub init($%)
+{
+my($class,%args)=@_;
+
+ $args{"__PACKAGE__"}||=caller();
+ $args{"project_name"}||=($args{"__PACKAGE__"}=~/^project::(\w+)::Index$/)[0]
+ or cluck "Error finding project name of the package: ".$args{"__PACKAGE__"};
+ my $ListItem=$class->name_to_hashref($args{"project_name"});
+ my $W=$class->SUPER::init(
+ "title"=>My::Web->a_href_inhibit(sub { return $class->title($ListItem); }),
+ map(("rel_$_"=>'/project/Rel.pm?rel='.$_.'&project='.$args{"project_name"}),qw(prev next)),
+ "rel_up"=>'/project/',
+# "rel_start"=>"/", # TODO:homepage
+ "css_push"=>"/project/Lib.css",
+ %args,
+ "heading_novskip"=>1,
+ );
+ $class->heading();
+ print $class->platforms($ListItem->{"platform"});
+ $class->print_project($ListItem,%args);
+ return $W;
+}
+
+our @platforms=(
+ "unixuser"=>"UNIX",
+ "unixdevel"=>"UNIX-devel",
+ "web"=>"Web",
+ "amiga"=>"Amiga",
+ "w32"=>"MS-Windows",
+ "dos"=>"MS-DOS",
+ "patch"=>"Patches",
+ );
+
+sub views ($$)
+{
+my($class,$view_selected)=@_;
+
+ my $view=sub ($$)
+ {
+ my($current,$href,$content)=@_;
+
+ return a_href($href,$content) if $current ne $view_selected;
+ return "<b>".$content."</b> (current)";
+ };
+
+ return <<"HERE";
+<h1>Project List of @{[ a_href 'http://www.jankratochvil.net/','Jan Kratochvil' ]}</h1>
+
+<ul>
+ <li>@{[ &{$view}('Detailed' ,'/project/','Detailed project listing per platform') ]}</li>
+ <li>@{[ &{$view}('BriefPlatform','/project/List.pm?platform=platform',
+ 'Brief project listing per platform') ]}</li>
+ <li>@{[ &{$view}('BriefUnified' ,'/project/List.pm',
+ 'Unified brief project listing') ]}</li>
+</ul>
+@{[ vskip "1ex" ]}
+HERE
+}
+
+sub platforms ($;$%)
+{
+my($class,$platform_selected,%args)=@_;
+
+ my $r="";
+ $r.='<table border="0" class="margin-center"><tr>'."\n";
+ $r.='<td>';
+ $r.='<table border="1" style="border-collapse: collapse; border-style: solid; border-width: 1px;">'."\n";
+ $r.='<tr>'."\n";
+ $r.='<td style="padding: 5px; font-weight: bold;">'."\n";
+ $r.='Projects';
+ $r.='</td>'."\n";
+ $r.='</tr>'."\n";
+ $r.='</table>';
+ $r.='</td>';
+ $r.='<td>';
+ $r.='<table border="1" style="border-collapse: collapse; border-style: solid;">'."\n";
+ $r.='<tr>'."\n";
+ my @platforms=@platforms;
+ while (@platforms) {
+ my $platform_sym =shift @platforms;
+ my $platform_name=shift @platforms;
+ my $chosen=($platform_selected && $platform_selected eq $platform_sym);
+ $r.='<td style="padding: 5px;">';
+ $r.=a_href((!$platform_selected ? "" : "/project/").'#'.$platform_sym,$platform_name,
+ "attr"=>($chosen
+ ? 'style="text-decoration: underline; font-weight: bold;"'
+ : 'style="text-decoration: inherit; /* revoke underline */"'));
+ $r.="</td>\n";
+ }
+ $r.='</tr>'."\n";
+ $r.='</table>'."\n";
+ $r.='</td>'."\n";
+ $r.='</tr></table>'."\n";
+ if (!$args{"novskip"}) {
+ $r.="<hr />\n";
+ $r.=My::Web::vskip "6ex";
+ }
+ return $r;
+}
+
+sub section ($$)
+{
+my($class,$name)=@_;
+
+ my $item=$class->name_to_hashref($name);
+ my $title=$class->title($item);
+ my $r="";
+
+ print $class->platforms($item->{"platform"},"novskip"=>1);
+
+ $r.='<table border="1" style="border-collapse: collapse; border-style: solid;" class="margin-center">'."\n";
+ $r.='<tr><td style="font-size: larger;">'."\n";
+ $r.=a_href "/project/$name/",$title;
+ $r.='</td></tr>'."\n";
+ $r.='</table>'."\n";
+ $r.=vskip "1ex";
+ return $r;
+}
+
+1;
-#! /usr/bin/perl
-#
# $Id$
# List of projects Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Project List',
"args_check"=>{
"platform"=>'^(?:platform)?$',
},
-# "rel_up"=>top_dir(), # TODO:homepage
-# "rel_start"=>top_dir(), # TODO:homepage
+# "rel_up"=>"/", # TODO:homepage
+# "rel_start"=>"/", # TODO:homepage
"footer_ids"=>0,
);
My::Web->heading();
-my $CGI=CGI->new();
-print My::Project->views(($W->{"args"}{"platform"} ? "BriefPlatform" : "BriefUnified"));
-print My::Project->platforms(undef(),"novskip"=>1) if $W->{"args"}{"platform"};
+print(project::Lib->views(($W->{"args"}{"platform"} ? "BriefPlatform" : "BriefUnified")));
+print(project::Lib->platforms(undef(),"novskip"=>1)) if $W->{"args"}{"platform"};
-my %item=( My::Project::item_hash_read() );
+my %item=project::Lib->name_to_hashref();
# $col{"name"}{"show"}=1
# $col{"name"}{"format"}=sub { "<".$_[0].">"; }
sub format_url ($) { return (!$_[0] ? "" : '<a href="'.$_[0].'">X</a>'); }
$col{"name"}{"format"}=sub {
- $_[0]=~s#<a\s[^>]*>([^<]*)</a>#$1#g;
+ local $_=$_[0];
+ s#<a\s[^>]*>([^<]*)</a>#$1#g;
return "<a href=\"".$_[1]."/\">"
.(!$My::Web::W->{"args"}{"W"} ? "" : $item{$_[1]}{"priority"}.":")
- .$_[0]."</a>";
+ .$_."</a>";
};
$col{"license"}{"format"}=sub {
print '</td>';
}
print '</tr>'."\n";
- if ($CGI->param("description_opt")) {
+ if ($W->{"args"}{"description_opt"}) {
print '<tr><td style="border: none;"></td>';
print '<td colspan="'.(scalar(@col_order)-1).'"><blockquote>'.$item{$row}{"description"}.'</blockquote></td>';
print '</tr>'."\n";
&{$print_one_platform}(undef());
}
else {
- my @platforms=@My::Project::platforms;
+ my @platforms=@project::Lib::platforms;
while (@platforms) {
my $platform_sym =shift @platforms;
my $platform_name=shift @platforms;
- print '<a name="'.$platform_sym.'">';
- print "<h2>$platform_name</h2>";
- print '</a>'."\n";
+ print '<h2 id="'.$platform_sym.'">'.$platform_name.'</h2>'."\n";
&{$print_one_platform}($platform_sym);
}
}
-My::Web->footer();
+exit;
+}
+1;
ntfsprogsgnomevfs \
udpgate
+SUBDIRS: Makefile
+ @echo $(SUBDIRS) >$@
+
+MODPERL_PM+= \
+ Index.pm \
+ ChangeLog.pm \
+ Pod2Html.pm \
+ List.pm \
+ Rel.pm
+
EXTRA_DIST+= \
- Index.html.pl \
- ChangeLog.txt.pl \
- Pod2Html.html.pl \
- List.html.pl \
- Rel.pl
+ Lib.pm \
+ checkListItem.pl
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::MyWeb'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::MyWeb::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::MyWeb::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::MyWeb::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::MyWeb' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::MyWeb'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::MyWeb::ListItem;
+package project::MyWeb::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"cvs"=>"MyWeb",
"cvs-for mod_perl2"=>"MyWeb:apache2",
"cvs-of example web"=>"www/www.jankratochvil.net",
- "link-Example web"=>a_href('http://www.jankratochvil.net/'),
- "summary"=>a_href('http://www.perl.org/','Perl')." web framework",
+ "link-Example web"=>sub { return a_href('http://www.jankratochvil.net/'); },
+ "summary"=>sub { return a_href('http://www.perl.org/','Perl')." web framework"; },
"license"=>"GPL",
"maintenance"=>"ready",
"language"=>"Perl",
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::Nokia61'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::Nokia61::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::Nokia61::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::Nokia61::ListItem::ListItem,
- );
-
-do { My::Web::make("make -s $_") if ! -f $_; } for ("./Nokia61");
-print <<"HERE";
-<table border="0" width="100%">
- <col width="0*" />
- <col width="1*" />
- <tr>
- <td align="left">
-<iframe src="Nokia61.php?base=.%2F" width="500" height="600">
-<a href="Nokia61.php?base=.%2F">Program on-line</a>.
-</iframe>
- </td>
- <td align="center">@{[ img 'Nokia61.jpeg','Illustration' ]}</td>
- </tr>
-</table>
-HERE
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::Nokia61' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::Nokia61'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::Nokia61::ListItem;
+package project::Nokia61::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+My::Web->make_file(path_abs_disk("Nokia61"));
+# FIXME: <col width="0*" />
+# <col width="1*" />
+# What was the reason? Currently it hides the whole <table/> in:
+# Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050719 Galeon/1.3.21
+print <<"HERE";
+<table border="0" width="100%">
+ <tr>
+ <td align="center">
+<!--iframe src="Nokia61.php?base=.%2F" width="500" height="600"-->
+<p>@{[ a_href 'Nokia61.php?base=.%2F','Program on-line.' ]}</p>
+<!--/iframe-->
+ </td>
+ <td align="center">@{[ img 'Nokia61.jpeg','Illustration' ]}</td>
+ </tr>
+</table>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
Nokia61: Nokia61.c
gcc -Wall -ggdb3 -o $@ $<
CLEANFILES+= \
- Nokia61 \
- Nokia61_23.cache
+ Nokia61 \
+ Nokia61_23.cache
+
<?php
- if (!$HTTP_GET_VARS["nohtml"]) {
+ error_reporting(E_ALL);
+
+ if (!isset($HTTP_GET_VARS["nohtml"])) {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
{
global $tables,$bgcolor_head,$bgcolor_body,$HTTP_GET_VARS;
- print "<FORM METHOD=GET ACTION=\"".$HTTP_GET_VARS["base"]."Nokia61.php\"><TABLE BORDER=1 RULES=NONE>\n";
+ print "<FORM METHOD=GET ACTION=\""
+ .(!isset($HTTP_GET_VARS["base"]) ? "./" : $HTTP_GET_VARS["base"])
+ ."Nokia61.php\"><TABLE BORDER=1 RULES=NONE>\n";
print "<TR><TD COLSPAN=3 BGCOLOR=\"".$bgcolor_head."\">";
if ($rw)
print "Input:";
$used[$x]=1;
$filled++;
}
+ // Both popen() and proc_open() require: /bin/sh
+ if ($filled==9 && !is_executable("/bin/sh")) {
+ print "<h1>Current installation environment forbids the execution!</h1>\n";
+ $filled=0;
+ }
if ($filled==9) {
print "<TABLE BORDER=0><TR>";
$cmd="echo -n -e '";
$idx=0;
$output=array();
while (!feof($cmd)) {
- if (3!=fscanf($cmd,"\n %d%d%d",&$output[$idx+0],&$output[$idx+1],&$output[$idx+2]))
+ if (3!=fscanf($cmd,"\n %d%d%d",$output[$idx+0],$output[$idx+1],$output[$idx+2]))
continue;
$idx+=3;
if ($idx<9)
}
table($input,1);
- if (!$HTTP_GET_VARS["nohtml"]) {
+ if (!isset($HTTP_GET_VARS["nohtml"])) {
?>
</BODY></HTML>
<?php
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::PerlMail'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::PerlMail::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::PerlMail::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"PerlMail",
+ "platform"=>"unixuser",
+ "priority"=>640,
+ "cvs"=>"PerlMail",
+ # FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
+ "link-README"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/PerlMail/README?rev=HEAD",
+ "summary"=>sub { return "Perl mail processor - ".a_href('http://www.procmail.org/','procmail')."(1) successor"; },
+ "license"=>"GPL",
+ "maintenance"=>"ready",
+ "language"=>"Perl",
+ "description"=>sub { return <<"HERE"; },
+<p>Successor to @{[ a_href 'http://www.procmail.org/','procmail' ]}(1)
+and @{[ a_href 'http://search.cpan.org/author/SIMON/Mail-Audit-2.1/','Mail::Audit' ]}.
+It supports @{[ a_href 'http://www.perl.org/','Perl' ]}-rules filtering, dynamic client IP,
+mobile SMS forwarding, @{[ a_href 'http://www.mutt.org/','Mutt' ]} integration,
+@{[ a_href 'http://www.nokia.com/phones/9110i','Nokia Communicator' ]} contacts directory integration.</p>
+<p>Use if you like: <span class="quote">
+ @{[ escapeHTML(q{store "=spam" if ($_=mimehead(body_first())->mime_attr("Content-Type")) && m#text/html#i;}) ]}
+ </span></p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
<p>Features list</p>
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::PerlMail' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::PerlMail::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"PerlMail",
- "platform"=>"unixuser",
- "priority"=>640,
- "cvs"=>"PerlMail",
- # FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
- "link-README"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/PerlMail/README?rev=HEAD",
- "summary"=>"Perl mail processor - ".a_href('http://www.procmail.org/','procmail')."(1) successor",
- "license"=>"GPL",
- "maintenance"=>"ready",
- "language"=>"Perl",
- "description"=><<"HERE",
-<p>Successor to @{[ a_href 'http://www.procmail.org/','procmail' ]}(1)
-and @{[ a_href 'http://search.cpan.org/author/SIMON/Mail-Audit-2.1/','Mail::Audit' ]}.
-It supports @{[ a_href 'http://www.perl.org/','Perl' ]}-rules filtering, dynamic client IP,
-mobile SMS forwarding, @{[ a_href 'http://www.mutt.org/','Mutt' ]} integration,
-@{[ a_href 'http://www.nokia.com/phones/9110i','Nokia Communicator' ]} contacts directory integration.</p>
-<p>Use if you like: <span class="quote">
- @{[ CGI::escapeHTML(q{store "=spam" if ($_=mimehead(body_first())->mime_attr("Content-Type")) && m#text/html#i;}) ]}
- </span></p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# URL redirector of &My::Web::a_href Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
+our $HTML_TEST_QUERY_STRING=[
+ "cvs=captive/src/libcaptive/ke/captivesym.pl",
+ "cvs=macros/AutoGen.pm",
+ ];
+
+sub handler
+{
my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "header_only"=>1,
"args_check"=>{
"cvs"=>'^[\w\d][\w\d/.]*$',
},
+ # Requires: Pod::Html patch from: Perl Bug # 37250
+ # From: <rt-3.0.11-37250-122352.19.7520280058314@perl.org>
+ # Do not: "content_type"=>"text/html",
+ # or whatever as pod2html(1) already produces XHTML.
+ "header_only"=>"xml",
+ "header_only"=>1,
+ "http_safe"=>0, # lynx(1) downloads.
);
+My::Web->heading();
+
-$W->{"r"}->send_http_header("text/html");
local *F;
open F,"lynx -source ".$W->{"project_viewcvs"}."*checkout*/".$W->{"args"}{"cvs"}."?rev=HEAD"
- ." |pod2html -"
+ # FIXME: "/tmp" - dangerous, not unique, currently creates: pod2htmd.tmp pod2htmi.tmp
+ ." |pod2html --cachedir=/tmp -"
." |";
-print while <F>;
+print $_ while <F>;
close F;
+
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::PortDiag'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::PortDiag::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::PortDiag::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::PortDiag::ListItem::ListItem,
- );
-
-
-print centerimg "PortDiag","PortDiag Snapshot";
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::PortDiag' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::PortDiag'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::PortDiag::ListItem;
+package project::PortDiag::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"680x0 asm",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>PortDiag is generally used for low-level hardware watching and modifying.
It has support for all the bits of the four CIA ports, digital and analog parts
of the game ports, serial port TXD and RXD signals and selective system
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print centerimg "PortDiag","PortDiag Snapshot";
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ Index.pm
+
EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
- PortDiag.png
+ PortDiag.png
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::QueryDev'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::QueryDev::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::QueryDev::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::QueryDev::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::QueryDev' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::QueryDev'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::QueryDev::ListItem;
+package project::QueryDev::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# List of projects Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::Index;
+package project::Rel;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-use Apache::Constants qw(MOVED);
-Wrequire 'My::Project';
+use Apache2::Const qw(HTTP_MOVED_PERMANENTLY);
+Wrequire 'project::Lib';
+
+our $HTML_TEST="download";
+our $HTML_TEST_RC=HTTP_MOVED_PERMANENTLY;
+our $HTML_TEST_QUERY_STRING='project=MyWeb&rel=next';
+sub handler
+{
my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
- "header_only"=>1,
"args_check"=>{
"rel"=>'^(?:prev|next)$',
"project"=>'^\w+$',
},
+ "header_only"=>1,
);
-my %item=( My::Project::item_hash_read() );
-my @platforms=@My::Project::platforms;
+
+my %item=project::Lib->name_to_hashref();
+my @platforms=@project::Lib::platforms;
my @projects=();
# Do not sort by platforms:
# while (@platforms)
last if $target;
}
-$W->{"r"}->status(MOVED);
-$W->{"r"}->header_out("Location"=>"http://".&{$W->{"web_hostname_sub"}}()
-# .":7680" # DEBUG
- ."/project/".(!$target ? "" : "$target/"));
+My::Web->http_moved("./".(!$target ? "" : "$target/"),HTTP_MOVED_PERMANENTLY);
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::ResRAM'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::ResRAM::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::ResRAM::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::ResRAM::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::ResRAM' for list.cgi.pl
+# Main page of 'My::Project::ResRAM'
# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# This program is free software; you can redistribute it and/or modify
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::ResRAM::ListItem;
+package project::ResRAM::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::SClock'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::SClock::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::SClock::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::SClock::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::SClock' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::SClock'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::SClock::ListItem;
+package project::SClock::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::ShortRel'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::ShortRel::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::ShortRel::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::ShortRel::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::ShortRel' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::ShortRel'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::ShortRel::ListItem;
+package project::ShortRel::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ Index.pm
+
EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
- ShrotRel.lha \
- ShortRel.asm
+ ShortRel.lha \
+ ShortRel.asm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::TraceFS'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::TraceFS::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::TraceFS::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::TraceFS::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-@{[ centerimg "/project/captive/doc/ntdebug-windbg-boot","TraceFS Initialization" ]}
-@{[ vskip "1ex" ]}
-@{[ centerimg "/project/captive/doc/dia/TraceFS","TraceFS Hooking" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::TraceFS' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::TraceFS'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::TraceFS::ListItem;
+package project::TraceFS::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"priority"=>610,
"icon"=>"TraceFS-icon",
"cvs"=>"captive/src/TraceFS",
- "link-Documentation"=>"/project/captive/doc/CacheManager.html.pl#TraceFS",
+ "link-Documentation"=>"/project/captive/doc/CacheManager.pm#TraceFS",
"summary"=>"Microsoft Windows Kernel API Tracer",
"license"=>"GPL",
"maintenance"=>"ready",
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+@{[ centerimg "/project/captive/doc/ntdebug-windbg-boot","TraceFS Initialization" ]}
+@{[ vskip "1ex" ]}
+@{[ centerimg "/project/captive/doc/dia/TraceFS","TraceFS Hooking" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::badblock_guess'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::badblock_guess::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::badblock_guess::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::badblock_guess::ListItem::ListItem,
- );
-
-print <<'HERE';
-<p>It is similiar to:</p>
-<blockquote><code>
-dd if=<src_dev> of=<dst_dev> bs=512 conv=noerror,sync
-</code></blockquote>
-<p>but <code>dd(1)</code> solution can last for many weeks/months on heavily
-corrupted disk.</p>
-<p>This program will not recover data of any sector with failing read command.
-If <code>dd(1)</code> command above finishes for you in a reasonable time, you
-do not need this program.</p>
-HERE
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::badblock_guess' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::badblock_guess'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::badblock_guess::ListItem;
+package project::badblock_guess::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<'HERE';
+<p>It is similiar to:</p>
+<blockquote class="code">
+ <p>dd if=<src_dev> of=<dst_dev> bs=512 conv=noerror,sync</p>
+</blockquote>
+<p>but <code>dd(1)</code> solution can last for many weeks/months on heavily
+corrupted disk.</p>
+<p>This program will not recover data of any sector with failing read command.
+If <span class="code">dd(1)</span> command above finishes for you in a reasonable time, you
+do not need this program.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# CVS page of 'My::Project::captive'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::captive::ListItem';
+Wuse 'project::Lib';
+Wuse 'project::captive::Index';
-my $W=My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::captive::ListItem::ListItem,
- "before_project_data"=>
- '<h2 align="center">'.a_href('./','Captive Main Page').'</h2>'."\n",
+sub handler
+{
+my $W=project::Lib->init(
+ "project_name"=>"captive",
+ "before_project_data"=>sub { return '<h2>'.a_href('./','Captive Main Page').'</h2>'."\n"; },
);
<h2>Download</h2>
-<table border="1" align="center" style="text-align: center;" width="100%"><tr><th>Distribution</th>
- <th>Installation Case #1<br />Filesystem and installer<br />(recommended)</th>
- <th>Installation Case #2<br />Manual installation<br />(filesystem, expert user)</th>
- <th>Installation Case #3<br />Command-line client<br />(no filesystem access)</th></tr>
+<table border="1" class="margin-center"><tr><th>Distribution</th>
+ <th>Installation Case #1<br />Filesystem and installer<br />(recommended)</th>
+ <th>Installation Case #2<br />Manual installation<br />(filesystem, expert user)</th>
+ <th>Installation Case #3<br />Command-line client<br />(no filesystem access)</th></tr>
HERE
my %pkg=(
1=>[qw(captive captive-lufs captive-install lufs gnome-vfs-httpcaptive ntfsprogs ntfsprogs-gnomevfs)],
my $ntfsprogs_after=sub ($) {
my($format)=@_;
- return () if $case!=1;
- return '<hr width="80%" />requirement: '
- .a_href('http://linux-ntfs.sourceforge.net/downloads.html#downloads','ntfsprogs')
- .' '.$format.' ≥ 1.8.0';
+ return if $case!=1;
+ return '<table width="80%" border="0" class="margin-center"><tr><td>'
+ .'<hr />requirement: '
+ .a_href('http://linux-ntfs.sourceforge.net/downloads.html#downloads','ntfsprogs')
+ .' '.$format.' ≥ 1.8.0'
+ .'</td></tr></table>';
};
my @dist=(
);
for my $dist (@dist) {
- print "<a name=".$dist->{"id"}."><tr>";
- print "<td>".$dist->{"name"}."</td>";
+ print '<tr id="'.$dist->{"id"}.'">';
+ print '<td align="center">'.$dist->{"name"}."</td>";
for my $casel (1,2,3) {
$case=$casel;
- print "<td>";
+ print '<td align="center">';
print join("<br />",map({ my $pkg=$_;
my($file,$text)=&{$dist->{"out"}}($pkg,@{$version{$pkg}});
(!defined $text ? ($file) || () : (&$a_href_arch("dist/$file",$text)));
} @{$pkg{$case}}),map({ (!$_ ? () : (&{$_}())); } $dist->{"after"}));
print "</td>";
}
- print "</tr></a>\n";
+ print "</tr>\n";
}
print <<"HERE";
- <tr>
- <td>'captive-static' build<br />system patches for Red Hat 9 Shrike<br />(never needed for a regular build)</td>
- <td colspan="3">
+ <tr>
+ <td>'captive-static' build<br />system patches for Red Hat 9 Shrike<br />(never needed for a regular build)</td>
+ <td colspan="3">
HERE
my $build_static_basename=(map("$_-".$version{$_}.".tar.gz","build-captive-static"))[0];
print a_href "dist/$build_static_basename",$build_static_basename;
<h2>Pending Integrations</h2>
<dl>
- <dt>@{[ a_href $W->{"project_viewcvs"}.'/lufs/','lufs-captive' ]}
- [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/lufs/NEWS.captive?rev=1.1.2.11','NEWS' ]}]
+ <dt>
+ @{[ a_href $W->{"project_viewcvs"}.'/lufs/','lufs-captive' ]}
+ [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/lufs/NEWS.captive?rev=1.1.2.11','NEWS' ]}]
+ </dt>
<dd>
<p>@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]} still has not yet integrated
the Captive-developed patches. No integration schedule is currently known.</p>
HERE
-My::Web->footer();
+exit;
+}
+1;
--- /dev/null
+/* $Id$
+ * CSS of main page of 'My::Project::captive'
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+.reqpkg { font-style: italic; }
+.stuff { font-style: italic; font-size: larger; margin-left: 20%; margin-right: 10%; }
+.re { font-style: italic; }
+table.mailman > * /* FIXME: What is it? */ > tr > th,
+table.mailman > * /* FIXME: What is it? */ > tr > td { padding: 1ex; text-align: center; }
+table.download td { padding: 8px; }
+table.navigate td { padding-bottom: 1ex; padding-left: 15px; padding-right: 15px; }
+.navigate[-lace-inherit="margin-center"] {}
+.download[-lace-inherit="margin-center"] {}
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::captive'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::captive::ListItem';
-
-
-my $lang="";
-# do { $lang="de" if $_ && /^de/i; } for ($ENV{"HTTP_ACCEPT_LANGUAGE"});
-
+Wuse 'project::Lib';
+
+
+our @ListItem=(
+ "name"=>"Captive",
+ "platform"=>"unixuser",
+ "priority"=>666,
+ "summary"=>"The first free NTFS read/write filesystem for GNU/Linux",
+ "license"=>"GPL",
+ "maintenance"=>"update",
+ "language"=>"i386 asm, C, Perl",
+ "icon"=>"captive-install-acquire-icon",
+ "cvs-of main tree"=>"captive",
+ "cvs-of branched ReactOS subdir"=>"reactos:captive",
+ "cvs-of branched LUFS"=>"lufs:captive",
+ "cvs-of 'httpcaptive://' method"=>"gnome-vfs-httpcaptive:captive",
+ "cvs-of 'libntfs://' method"=>"ntfsprogs-gnomevfs",
+ "description"=>sub { return <<"HERE"; },
+<p>Project implements the first full read/write free access to NTFS disk drives.
+You can mount your Microsoft Windows NT, 200x or XP partition as
+a transparently accessible volume for your GNU/Linux.</p>
+<p>This compatibility was achieved in
+the @{[ a_href 'http://www.winehq.com/','Wine' ]} way by using the original
+Microsoft Windows <i>ntfs.sys</i> driver. It emulates the required subsystems of
+the Microsoft Windows kernel by reusing one of the original
+<i>ntoskrnl.exe</i>, @{[ a_href 'http://www.reactos.com/','ReactOS' ]} parts, or
+this project's own reimplementations, on a case by case basis.
+Project includes the first open source MS-Windows kernel API for Free operating systems.
+Involvement of the original driver files was chosen to achieve the best
+and unprecedented filesystem compatibility and safety.</p>
+<p>As opposed to other projects this is currently the only software supporting the full
+read/write access including the possibility to create/delete files, modify directories
+etc.</p>
+HERE
+ );
-my $W=My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::captive::ListItem::ListItem,
+sub handler
+{
+my $W=project::Lib->init(
"no_project_data"=>1,
- "head_css"=>"
-.reqpkg { font-style: italic; }
-.stuff { font-style: italic; font-size: larger; margin-left: 20%; margin-right: 10%; }
-.re { font-style: italic; }
-table.mailman > * /* FIXME: What is it? */ > tr > th,
-table.mailman > * /* FIXME: What is it? */ > tr > td { padding: 1ex; text-align: center; }
-table.download td { padding: 8px; }
-table.navigate td { padding-bottom: 1ex; padding-left: 15px; padding-right: 15px; }
-",
- "project_text_after_title"=>""
- .($lang ne "de" ? "" : "<h1>Captive:"
- ." Das erste kostenlose Programm um auf ein NTFS Dateisystem unter GNU/Linux zu lesen und zu schreiben</h1>")
- .'<table border="0" width="100%"><tr><td align="center">'
- .'<table border="0" class="navigate"><tr>'
- .'<td>• '.a_href('#download','Download').'</td>'
- .'<td>• '.a_href('#news','NEWS').'</td>'
- .'<td>• '.a_href('#testimonials','Testimonials').'</td>'
- .'<td>• '.a_href('#press','Internet Press').'</td>'
- .'<td>• '.a_href('#notes','Installation Notes').'</td>'
- .'<td>• '.a_href('#lists','Mailing Lists').'</td>'
- .'<td>• '.a_href('#seealso','See Also').'</td>'
- .'</tr></table>'
- .'</td></tr></table>',
- ($lang eq "" ? () : ("force_charset"=>"utf-8")),
+ "css_push"=>"./Index.css",
+ "project_text_after_title"=>sub { return ""
+ .'<table border="0" class="navigate"><tr>'
+ .'<td>• '.a_href('#download','Download').'</td>'
+ .'<td>• '.a_href('#news','NEWS').'</td>'
+ .'<td>• '.a_href('#testimonials','Testimonials').'</td>'
+ .'<td>• '.a_href('#press','Internet Press').'</td>'
+ .'<td>• '.a_href('#notes','Installation Notes').'</td>'
+ .'<td>• '.a_href('#lists','Mailing Lists').'</td>'
+ .'<td>• '.a_href('#seealso','See Also').'</td>'
+ .'</tr></table>'
+ },
);
-print <<"HERE" if !$WebConfig::WebConfig{"no_job"};
+print <<"HERE" if !$W->{"no_job"};
@{[ vskip "3ex" ]}
-<table border="0" width="100%"><tr><td align="center">
- <table border="0" style="margin: 3ex; padding: 2ex; background: #bb8888;">
- <tr><td style="font-size: larger;">
- Looking for a challenging job: @{[ a_href $W->{"resume_url"},"My resume" ]}
- </td></tr>
- </table>
+<table border="0" style="margin: 3ex; padding: 2ex; background: #bb8888;" class="margin-center">
+ <tr><td style="font-size: larger;">
+ Looking for a challenging job: @{[ a_href $W->{"resume_url"},"My resume" ]}
+ </td></tr>
</table>
HERE
);
print <<"HERE";
-<a name="download"><h2>Download</h2></a>
+<h2 id="download">Download</h2>
<h3>Choose the one preferred installation format:</h3>
-<table border="0" align="center" width="100%"><tr><td align="center">
-<table border="1" frame="border" rules="rows" align="center" style="text-align: center;" class="download">
+<table border="1" frame="border" rules="rows" style="text-align: center;" class="download">
<tr>
<td>
-HERE
- if ($lang eq "") {
- print "RPM i386 binary<br />tested for distributions:";
- }
- if ($lang eq "de") {
- print "RPM i386 Binärcode<br />getestet für den Betrieb unter:";
- }
-print <<"HERE";
- <table border="0"><tr><td align="left"><ul>
- <li>Red Hat 9 Shrike</li>
- <li>Red Hat 8 Psyche</li>
- <li>SuSE 9.0</li>
- <li>SuSE 9.1</li>
- <li>Mandrake 9.1 Bamboo</li>
- </ul></td></tr></table>
+ <p>RPM i386 binary<br />tested for distributions:</p>
+ <table border="0"><tr><td align="left"><ul>
+ <li>Red Hat 9 Shrike</li>
+ <li>Red Hat 8 Psyche</li>
+ <li>SuSE 9.0</li>
+ <li>SuSE 9.1</li>
+ <li>Mandrake 9.1 Bamboo</li>
+ </ul></td></tr></table>
</td>
<td>@{[ a_href 'dist/captive-static-'.$version{"captive"}[0].'-'.$version{"captive"}[1].'.i386.rpm',
undef(),"size"=>1,"basename"=>1 ]}</td>
</tr>
<tr>
<td>
-HERE
- if ($lang eq "") {
- print ".tar.gz i386 binary<br />(for non-RPM distributions)";
- }
- if ($lang eq "de") {
- print ".tar.gz i386 Binärcode<br />(für Linux Versionen ohne RPM z.B. Knoppix)";
- }
-print <<"HERE";
- </td>
+ <p>.tar.gz i386 binary<br />(for non-RPM distributions)</p>
+ </td>
<td>@{[ a_href 'dist/captive-static-'.$version{"captive"}[0].'.tar.gz',undef(),"size"=>1,"basename"=>1 ]}</td>
</tr>
<tr>
<td>Source archives</td>
- <td>@{[ a_href 'CVS.html.pl#source','download link' ]}</td>
+ <td>@{[ a_href 'CVS.pm#source','download link' ]}</td>
</tr>
</table>
-</td></tr></table>
<h4>Development Status</h4>
<p>Project is no longer developed. The key functionality is reached
by the latest released version. All its resources are available
-@{[ a_href 'CVS.html.pl#source','here' ]} for download.</p>
+@{[ a_href 'CVS.pm#source','here' ]} for download.</p>
<h4>Known Issue</h4>
@{[ vskip "3ex" ]}
-<a name="news"><h2>NEWS</h2></a>
+<h2 id="news">NEWS</h2>
<dl>
<dt>captive-1.1.5 (2004-01-18) [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/captive/NEWS?rev=HEAD','archive' ]}]</dt>
@{[ vskip "3ex" ]}
-<a name="testimonials"><h2>Captive NTFS Testimonials</h2></a>
+<h2 id="testimonials">Captive NTFS Testimonials</h2>
<ul>
<li>Hospital of Castelo Branco - Bruno Santos
requires some administrator interaction). So, we want to install
windows2000 without pressing a key.</p>
- <p>@{[ a_href 'TestimonialBrunoSantos.html.pl','<span style="font-style: italic;">[ more ]</span>' ]}</p>
+ <p>@{[ a_href 'TestimonialBrunoSantos.pm','<span style="font-style: italic;">[ more ]</span>' ]}</p>
</li>
<li>@{[ a_href 'http://www.amunra.co.uk/','Dave "AmunRa" Rigby' ]}
<p>Ok, I'm impressed (@{[ a_href 'http://www.amunra.co.uk/archives/000028.php','Captive Review' ]})</p>
</li>
</ul>
-<a name="press"><h2>@{[ a_href 'Press.html.pl','Internet Press' ]}</h2></a>
+<h2 id="press">@{[ a_href 'Press.pm','Internet Press' ]}</h2>
@{[ vskip "3ex" ]}
-<a name="notes"><h1>
-HERE
- if ($lang eq "") {
- print "Installation Notes";
- }
- if ($lang eq "de") {
- print "Installationsanleitung";
- }
-print <<"HERE";
-</h1></a>
-HERE
- if ($lang eq "") {
- print <<"EOF";
+<h1 id="notes">Installation Notes</h1>
<p>You should first run <b>captive-install-acquire</b> command to check your
available Microsoft Windows drivers versions. Now you can execute:</p>
-EOF
- }
- if ($lang eq "de") {
- print <<"EOF";
-<p>Sie sollten als erstes den Befehl <b>captive-install-acquire</b>
-ausführen um ihre Windows Treiber Version zu überprüfen. Nun können sie folgenden Befehl ausführen:</p>
-EOF
- }
-print <<"HERE";
<blockquote>
<p class="quote" style="white-space: pre;"
</blockquote>
-HERE
- if ($lang eq "") {
- print <<"EOF";
<h2>Overview</h2>
<p>Any errors from '<b>captive-lufs</b>' are written to '<b>/var/log/messages</b>'.</p>
<p>Needed drivers (at least ntoskrnl.exe+ntfs.sys) must be in '<b>/var/lib/captive</b>'.</p>
<p>'<b>captive</b>' package creates '<b>captive</b>' user and '<b>captive</b>' group on your system.</p>
-EOF
- }
- if ($lang eq "de") {
- print <<"EOF";
-<h2>Ãœbersicht</h2>
-
-<p>Jegliche Fehler des '<b>captive-lufs</b>' werden im Ordner '<b>/var/log/messages</b>' aufgelistet.</p>
-<p>Die Dateien ntoskrnl.exe und ntfs.sys müssen in den '<b>/var/lib/captive</b>'-Ordner kopiert werden.
-(Empfehlendswert über ein Wechseldatenträger [CD-ROM, Diskette].)</p>
-<p>Das '<b>captive</b>' Packet erstellt einen '<b>captive</b>' Benutzer und eine '<b>captive</b>' Gruppe auf Ihrem System.</p>
-<p align="right" style="font-size: smaller;">Ãœbersetzung von Botond Beres.</p>
-EOF
- }
-print <<"HERE";
<h2>LUFS Kernel Driver Module</h2>
print <<"HERE";
-<a name="lists"><h2>Mailing Lists</h2></a>
+<h2 id="lists">Mailing Lists</h2>
-<form action="@{[ top_dir("/Mailman.pl") ]}" method="post">
+<form action="@{[ uri_escaped(path_web "/Mailman.pm") ]}" @{[ form_method "post" ]}>
<table border="1" class="mailman" style="border-collapse: collapse; border-style: solid; border-width: 1px;">
<tr>@{[ map('<th>'.$_.'@jankratochvil.net</th>',@lists) ]}</tr>
<tr><td>New version announcements<br />
<td>User support,<br />bug reports</td>
<td>Development</td>
</tr>
- <tr>@{[ map({ "<td>".a_href(&{$W->{"mailman_url_sub"}}()."listinfo/$_",'Mailman Infopage')."</td>"; } @lists) ]}</tr>
- <tr>@{[ map({ "<td>".a_href(&{$W->{"pipermail_url_sub"}}()."$_",'Archive')."</td>"; } @lists) ]}</tr>
+ <tr>@{[ map({ "<td>".a_href($W->{"mailman_url"}."listinfo/$_",'Mailman Infopage')."</td>"; } @lists) ]}</tr>
+ <tr>@{[ map({ "<td>".a_href($W->{"pipermail_url"}."$_",'Archive')."</td>"; } @lists) ]}</tr>
<tr>@{[
map(('<td><input type="checkbox" name="list" value="'.$_.'"'
.($_ ne "captive-announce-list" ? '' : ' checked="checked"')
<tr><td>Your new Mailman password:</td><td><input type="password" name="pw" size="15" /></td></tr>
<tr><td>Reenter your password: </td><td><input type="password" name="pw-conf" size="15" /></td></tr>
</table>
- <p><input type="submit" name="email-button" value="Subscribe me" /></p>
+ <p>
+ <input type="hidden" name="back" value="/project/captive/#lists" />
+ <input type="submit" name="email-button" value="Subscribe me" />
+ </p>
</td></tr>
</table>
-<input type="hidden" name="back" value="/project/captive/#lists" />
</form>
@{[ vskip "3ex" ]}
-<a name="seealso"><h1>See Also</h1></a>
+<h1 id="seealso">See Also</h1>
<ul>
- <li>@{[ a_href 'Preview.html.pl','Technology Preview' ]}</li>
- <li>@{[ a_href 'CVS.html.pl','Download Sources, CVS Repository' ]}</li>
+ <li>@{[ a_href 'Preview.pm','Technology Preview' ]}</li>
+ <li>@{[ a_href 'CVS.pm','Download Sources, CVS Repository' ]}</li>
<li>@{[ a_href 'doc/','Developer Documentation' ]}; highlights:<ul>
- <li>@{[ a_href 'doc/About.html.pl#versions','Microsoft Windows Versions Compatibility' ]}</li>
- <li>@{[ a_href 'doc/Architecture.html.pl#law','Laws and Licensing Conditions' ]}</li>
- <li>@{[ a_href 'doc/Details.html.pl#sandbox','Sandboxing of W32 Filesystem' ]}</li>
- <li>@{[ a_href 'doc/TODO.html.pl#todo_fsck','TODO: Fsck of NTFS' ]}</li>
- <li>@{[ a_href 'doc/TODO.html.pl#todo_surprise','TODO: NTFS Support for Partition Surprise' ]}</li>
- <li>@{[ a_href 'doc/Related.html.pl#LinuxNTFScompet','Related Projects - Linux NTFS' ]}</li>
- <li>@{[ a_href 'doc/Related.html.pl#vmware','Related Projects - VMware Workstation' ]}</li>
- <li>@{[ a_href 'doc/LinuxNTFS.html.pl',"Re: 7.7 Can't we write a wrapper for Windows' driver?" ]}</li>
+ <li>@{[ a_href 'doc/About.pm#versions','Microsoft Windows Versions Compatibility' ]}</li>
+ <li>@{[ a_href 'doc/Architecture.pm#law','Laws and Licensing Conditions' ]}</li>
+ <li>@{[ a_href 'doc/Details.pm#sandbox','Sandboxing of W32 Filesystem' ]}</li>
+ <li>@{[ a_href 'doc/TODO.pm#todo_fsck','TODO: Fsck of NTFS' ]}</li>
+ <li>@{[ a_href 'doc/TODO.pm#todo_surprise','TODO: NTFS Support for Partition Surprise' ]}</li>
+ <li>@{[ a_href 'doc/Related.pm#LinuxNTFScompet','Related Projects - Linux NTFS' ]}</li>
+ <li>@{[ a_href 'doc/Related.pm#vmware','Related Projects - VMware Workstation' ]}</li>
+ <li>@{[ a_href 'doc/LinuxNTFS.pm',"Re: 7.7 Can't we write a wrapper for Windows' driver?" ]}</li>
</ul></li>
<li>@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/captive/TODO?rev=HEAD','Known Bugs' ]}</li>
<li>Man Pages<ul>
}
]}
</ul></li>
- <li>@{[ a_href 'Resources.html.pl','Related Pages' ]}</li>
- <li>@{[ a_href 'Thanks.html.pl','Thanks' ]}</li>
+ <li>@{[ a_href 'Resources.pm','Related Pages' ]}</li>
+ <li>@{[ a_href 'Thanks.pm','Thanks' ]}</li>
</ul>
HERE
-My::Web->footer();
+exit;
+}
+1;
--- /dev/null
+/* $Id$
+ * Common CSS for project Captive
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+.name { font-style: italic; }
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::captive' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::captive::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"Captive",
- "platform"=>"unixuser",
- "priority"=>666,
- "summary"=>"The first free NTFS read/write filesystem for GNU/Linux",
- "license"=>"GPL",
- "maintenance"=>"update",
- "language"=>"i386 asm, C, Perl",
- "icon"=>"captive-install-acquire-icon",
- "cvs-of main tree"=>"captive",
- "cvs-of branched ".a_href('http://www.reactos.com/','reactos')." subdir"=>"reactos:captive",
- "cvs-of branched ".a_href('http://lufs.sourceforge.net/lufs/','lufs')=>"lufs:captive",
- "cvs-of 'httpcaptive://' method"=>"gnome-vfs-httpcaptive:captive",
- "cvs-of 'libntfs://' method"=>"ntfsprogs-gnomevfs",
- "description"=><<"HERE",
-<p>Project implements the first full read/write free access to NTFS disk drives.
-You can mount your Microsoft Windows NT, 200x or XP partition as
-a transparently accessible volume for your GNU/Linux.</p>
-<p>This compatibility was achieved in
-the @{[ a_href 'http://www.winehq.com/','Wine' ]} way by using the original
-Microsoft Windows <i>ntfs.sys</i> driver. It emulates the required subsystems of
-the Microsoft Windows kernel by reusing one of the original
-<i>ntoskrnl.exe</i>, @{[ a_href 'http://www.reactos.com/','ReactOS' ]} parts, or
-this project's own reimplementations, on a case by case basis.
-Project includes the first open source MS-Windows kernel API for Free operating systems.
-Involvement of the original driver files was chosen to achieve the best
-and unprecedented filesystem compatibility and safety.</p>
-<p>As opposed to other projects this is currently the only software supporting the full
-read/write access including the possibility to create/delete files, modify directories
-etc.
-<b>UPDATE 2005-08-16</b>: If you are looking for mount(8) compatibility with recent Linux
-kernel versions, @{[ a_href 'http://linux-ntfs.sourceforge.net','Linux-NTFS' ]}
-project @{[ a_href 'http://www.jankratochvil.net/pipermail/captive-list/2005-August/000732.html','should' ]}
-now also provide the read/write features; be warned it is based on reverse engineered data structures, though.</p>
-HERE
- );
-
-1;
SUBDIRS= \
doc
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
- Thanks.html.pl \
- Resources.html.pl \
- Preview.html.pl \
- CVS.html.pl \
- Press.html.pl
+MODPERL_PM+= \
+ Index.pm \
+ Thanks.pm \
+ Resources.pm \
+ Preview.pm \
+ CVS.pm \
+ Press.pm \
+ TestimonialBrunoSantos.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Captive project Press page Perl template.
-# Copyright (C) 2004 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2004-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Internet Press',
- "head_css"=>"
-.name { font-style: italic; }
-",
- "WebConfig::heading_novskip"=>1,
+ "css_push"=>"./Lib.css",
+ "heading_novskip"=>1,
"no_job"=>1,
+ "charset"=>"utf-8",
);
My::Web->heading();
-print My::Project->section("captive");
+print(project::Lib->section("captive"));
print <<'HERE';
print "\t<li>...</li>\n";
print "</ul>\n";
-My::Web->footer();
+
+exit;
+}
+1;
--- /dev/null
+/* $Id$
+ * CSS of Captive project Preview page.
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+td { padding: 10px; text-align: center; }
+table { border-collapse: collapse; border-style: solid; }
-#! /usr/bin/perl
-#
# $Id$
# Captive project Preview page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Technology Preview',
- "head_css"=>"
-td { padding: 10px; text-align: center; }
-table { border-collapse: collapse; border-style: solid; }
-",
- "WebConfig::heading_novskip"=>1,
+ "css_push"=>"./Preview.css",
+ "heading_novskip"=>1,
);
My::Web->heading();
-print My::Project->section("captive");
+print(project::Lib->section("captive"));
+
print "<h1>Captive NTFS Technology Preview</h1>\n";
my($file_base,$text,$comment)=@_;
return <<"HERE";
-<table border="1" align="center">
-<tr><td>@{[ img $file_base,$text ]}</td></tr>
-<tr><td><b>$text</b>@{[ map((!$_ ? "" : "<br />$_"),$comment) ]}</td></tr>
+<table border="1" class="margin-center">
+ <tr><td>@{[ img $file_base,$text ]}</td></tr>
+ <tr><td><b>$text</b>@{[ map((!$_ ? "" : "<br />$_"),$comment) ]}</td></tr>
</table>
@{[ vskip "3ex" ]}
HERE
print preview_img 'doc/ntdebug-ntfs','WinDbg Remote NT Kernel NTFS Debugging';
print preview_img 'doc/dia/arch-all','Captive Components Architecture',''
- .'<font color="red">Red color</font> indicates Captive components for the most common LUFS use case.<br />'
- .'<font color="violet">Violet color</font> indicates system components for the most common LUFS use case.';
+ .'<span style="color: red;">Red color</span> indicates Captive components for the most common LUFS use case.<br />'
+ .'<span style="color: violet;">Violet color</span> indicates system components for the most common LUFS use case.';
print preview_img 'doc/arch-captive','Captive Subsystems Architecture';
print preview_img 'doc/arch-W32','Original Microsoft Windows Subsystems Architecture';
print preview_img 'doc/ratio','Functions Reusal Ratio';
print preview_img 'captive-install-acquire','Captive Microsoft Windows Drivers Acquire Utility';
-My::Web->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project Resources page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Internet Resources',
- "WebConfig::heading_novskip"=>1,
+ "heading_novskip"=>1,
);
My::Web->heading();
-print My::Project->section("captive");
+print(project::Lib->section("captive"));
print "<h1>Captive NTFS Internet Resources</h1>\n";
for (my @URLa=@URLs;@URLa;) {
my $text=shift @URLa;
my $url=shift @URLa;
- print "\t<li>".a_href($url,CGI::escapeHTML($text))."</li>\n";
+ print "\t<li>".a_href($url,escapeHTML($text))."</li>\n";
}
print "</ul>\n";
-My::Web->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project TestimonialBrunoSantos page Perl template.
-# Copyright (C) 2004 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2004-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS - Hospital of Castelo Branco',
- "head_css"=>"
-.name { font-style: italic; }
-",
- "WebConfig::heading_novskip"=>1,
+ "css_push"=>"./Lib.css",
+ "heading_novskip"=>1,
"no_job"=>1,
);
My::Web->heading();
-print My::Project->section("captive");
+print project::Lib->section("captive");
print <<'HERE';
6000-085 Castelo Branco</p>
HERE
-My::Web->footer();
+
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project Thanks page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
+use Carp qw(cluck confess);
use My::Web;
-Wrequire 'My::Project';
+cluck "No Geo::IP!" if !$My::Web::have_Geo_IP; # For: &a_href_cc
+Wrequire 'project::Lib';
+sub handler
+{
My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Thanks',
- "head_css"=>"
-.name { font-style: italic; }
-",
- "WebConfig::heading_novskip"=>1,
+ "css_push"=>"./Lib.css",
+ "heading_novskip"=>1,
"no_job"=>1,
);
My::Web->heading();
-print My::Project->section("captive");
+print(project::Lib->section("captive"));
print <<'HERE';
print name "Karel Zatoukal",a_href("http://www.sun.com/","Sun Microsystems");
print name "Tim Boudreau",a_href("http://www.sun.com/","Sun Microsystems");
-print name a_href_cz('http://www.itpravo.cz/admin.shtml?x=45480','Jiri Cermak'),
+print name a_href_cc({"CZ"=>'http://www.itpravo.cz/admin.shtml?x=45480'},'Jiri Cermak'),
a_href("http://www.bakernet.com/",'Baker & McKenzie'),
'preflight IT law analysis';
print name a_href('http://www.ucw.cz/~mj/','Martin "MJ" Mares');
print name "Lubomir Bulej";
print name "Tomas Bures";
-print name a_href_cz('http://www.vellum.cz/','Lukas "Klokan" Horalek'),undef(),"services hosting";
+print name a_href_cc({"CZ"=>'http://www.vellum.cz/'},'Lukas "Klokan" Horalek'),undef(),"services hosting";
print name a_href('http://www-troja.fjfi.cvut.cz/~drab/','Martin Drab'),undef(),
"betatesting, ".a_href('http://lufs.sourceforge.net/lufs/','LUFS')." patches";
print name a_href('http://www.pavouk.org/','Pavel "Pavouk" Ruzicka'),a_href('http://www.gtsgroup.cz/','GTS'),
print name "Christian Kristukat",undef(),a_href('http://www.suse.com/','SUSE')." support";
print name "Jesse Glick",a_href("http://www.sun.com/","Sun Microsystems"),"betatesting";
print name "Lew",a_href("http://www.pivovary-staropramen.cz/web/en/","Pivovary Staropramen"),"web";
-print name a_href_cz('http://vellum.cz/~mikc/','Michal "MIKC" Conos'),undef(),
+print name a_href_cc({"CZ"=>'http://vellum.cz/~mikc/'},'Michal "MIKC" Conos'),undef(),
"betatesting";
print name a_href("http://sys.xiloo.com/","Matt Wu"),
a_href("http://sys.xiloo.com/projects/projects.htm#ext2fsd","Ext2fsd")." developer","W32 tips";
HERE
-My::Web->footer();
+
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc APITypes page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: API Functions',
- "rel_prev"=>'Details.html.pl',
- "rel_next"=>'CallType.html.pl',
+ "rel_prev"=>'Details.pm',
+ "rel_next"=>'CallType.pm',
);
print <<"HERE";
-<a name="functype"><h1>API Function Implementation Choices</h1></a>
+<h1 id="functype">API Function Implementation Choices</h1>
<p>For each function exported by W32
<span class="fname">ntoskrnl.exe</span> and imported and called by the
functionality. Currently implemented functionality statistics are provided
below:</p>
- <table border="1" align="center">
- <tr><th>Function type </th><th>Items</th><th>Portion</th></tr>
- <tr><td>@{[ a_href 'APITypes.html.pl#functype_pass','pass' ]} </td><td> 81</td><td> 26%</td></tr>
- <tr><td>@{[ a_href 'APITypes.html.pl#functype_wrap','wrap' ]} </td><td> 2</td><td> 0%</td></tr>
- <tr><td>@{[ a_href 'APITypes.html.pl#functype_native_reactos','native-ReactOS' ]}</td><td> 113</td><td> 36%</td></tr>
- <tr><td>@{[ a_href 'APITypes.html.pl#functype_native_libcaptive','native-own' ]} </td><td> 116</td><td> 38%</td></tr>
+ <table border="1" class="margin-center">
<caption>Function Implementation Types Statistics</caption>
+ <tr><th>Function type </th><th>Items</th><th>Portion</th></tr>
+ <tr><td>@{[ a_href 'APITypes.pm#functype_pass','pass' ]} </td><td> 81</td><td> 26%</td></tr>
+ <tr><td>@{[ a_href 'APITypes.pm#functype_wrap','wrap' ]} </td><td> 2</td><td> 0%</td></tr>
+ <tr><td>@{[ a_href 'APITypes.pm#functype_native_reactos','native-ReactOS' ]}</td><td> 113</td><td> 36%</td></tr>
+ <tr><td>@{[ a_href 'APITypes.pm#functype_native_libcaptive','native-own' ]} </td><td> 116</td><td> 38%</td></tr>
</table>
@{[ doc_img 'ratio','Functions Reusal Ratio' ]}
contain already prepared content at the runtime. There is a problem
with <span class="constant">patched</span> libraries where it is necessary
to also fully implement the data symbol as
- @{[ a_href 'APITypes.html.pl#functype_native','native implementation' ]} since there is no
- possibility to @{[ a_href 'APITypes.html.pl#functype_pass','pass' ]} the data symbol instead of
+ @{[ a_href 'APITypes.pm#functype_native','native implementation' ]} since there is no
+ possibility to @{[ a_href 'APITypes.pm#functype_pass','pass' ]} the data symbol instead of
the original W32 data location and therefore there will be two instances of
such data variable place. As there will be also the uncaught references for
such W32 data location from the <span class="constant">patched</span>
<span class="fname">captivesym</span>-specific source file syntax please
see its documentation:
<span class="fname">@{[ a_href
- '/project/Pod2Html.html.pl?cvs=captive/src/libcaptive/ke/captivesym.pl',
+ '/project/Pod2Html.pm?cvs=captive/src/libcaptive/ke/captivesym.pl',
'src/libcaptive/ke/captivesym.pl' ]}</span>
+ </p>
- <a name="functype_pass"><h2>Direct Pass to Original "ntoskrnl.exe"</h2></a>
+ <h2 id="functype_pass">Direct Pass to Original "ntoskrnl.exe"</h2>
<p>Simple (standalone) functions such as
<span class="function">RtlTimeToSecondsSince1970()</span> can be simply
<span class="constant">GenericTable</span> subsystem or
<span class="constant">LargeMcb</span> handling.</p>
- <a name="functype_pass_fromunix"><h3>Pass from UNIX Code</h3></a>
+ <h3 id="functype_pass_fromunix">Pass from UNIX Code</h3>
<p>Control flow begins in some standard UNIX code. Such code is always
- using @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl call type' ]} for all its
- intracalls. <a href="APITypes.html.pl#functype_native_reactos">Native functions
+ using @{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type' ]} for all its
+ intracalls. <a href="APITypes.pm#functype_native_reactos">Native functions
compiled from <span class="productname">ReactOS</span> sources</a> use
their own @{[ a_href '#calltype','cdecl/stdcall/fastcall' ]} declarations
but these call type modifications are discarded during compilation for
will return to the UNIX jump table relay which will debug dump the
return value and it will finally pass the control back to the UNIX
caller in the standard UNIX
- @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl call type' ]}.</p>
+ @{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type' ]}.</p>
@{[ doc_img 'fig/functype_patched_pass_fromunix',
'Function Type: <span class="constant">pass</span> from UNIX Code' ]}
- <a name="functype_pass_fromw32"><h3>Pass from W32 Code</h3></a>
+ <h3 id="functype_pass_fromw32">Pass from W32 Code</h3>
<p>This function type is similiar to the
- @{[ a_href 'APITypes.html.pl#functype_pass_fromunix','previous one' ]} with the exception
+ @{[ a_href 'APITypes.pm#functype_pass_fromunix','previous one' ]} with the exception
of more complicated entry point. Unfortunately W32 libraries call their
own functions directly, using the <span class="instruction">call</span>
instructions without any patchable jump table. Even the
according to the relocation table record as such library intra-call
instruction has no relocation due to its relative argument offset on
<span class="constant">i386</span>. This time the double-breakpoint
- mechanism @{[ a_href 'APITypes.html.pl#functype_pass_fromunix','described above' ]} gets
+ mechanism @{[ a_href 'APITypes.pm#functype_pass_fromunix','described above' ]} gets
handy since it will catch the entry point when the function gets
called. <span class="constant">SIGSEGV</span> handler gets invoked by
the <span class="instruction">hlt</span> instruction and it will
<p>The jump table relay used for the callers from W32 code is
a different one than the relay being used for the callers
- @{[ a_href 'APITypes.html.pl#functype_pass_fromunix','from UNIX code' ]}. UNIX code always
- uses relay with external @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl call type' ]}
+ @{[ a_href 'APITypes.pm#functype_pass_fromunix','from UNIX code' ]}. UNIX code always
+ uses relay with external @{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type' ]}
but in this case a relay with the appropriate
@{[ a_href '#calltype','cdecl/stdcall/fastcall call type' ]} is used.</p>
@{[ vskip() ]}
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Function Type <span class="constant">pass</span> Characteristics</caption>
<tr><td><span class="fname">captivesym</span> keyword</td><td>pass</td></tr>
<tr><td>Native code function name </td><td>(no implementation)</td></tr>
<tr><td>W32 traced code from UNIX function name </td><td>FUNCNAME</td></tr>
<tr><td>W32 traced code from W32 function name </td><td>FUNCNAME_cdecl/_stdcall/_fastcall</td></tr>
<tr><td>Entry/exit debug tracing from UNIX code </td><td>yes</td></tr>
<tr><td>Entry/exit debug tracing from W32 code </td><td>yes</td></tr>
- <caption>Function Type <span class="constant">pass</span> Characteristics</caption>
</table>
- <a name="functype_wrap"><h2>Wrap of the Original "ntoskrnl.exe" Function</h2></a>
+ <h2 id="functype_wrap">Wrap of the Original "ntoskrnl.exe" Function</h2>
- <a name="functype_wrap_fromunix"><h3>Wrapping of Call from UNIX Code</h3></a>
+ <h3 id="functype_wrap_fromunix">Wrapping of Call from UNIX Code</h3>
<p>The code control flow has no special hardcore features since it is
- very similiar to <a href="APITypes.html.pl#functype_pass_fromunix">the direct pass to
+ very similiar to <a href="APITypes.pm#functype_pass_fromunix">the direct pass to
W32 function from UNIX code</a>. All the wrapping is done in the
- standard UNIX @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl call type' ]} manner.
+ standard UNIX @{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type' ]} manner.
Jump table debug dumping relays are provided twice — the
"outer" one to trace the parameters from the function caller
and the "inner" one to trace the call from the wrapper to the
@{[ doc_img 'fig/functype_patched_wrap_fromunix',
'Function Type: <span class="constant">wrap</span> from UNIX Code' ]}
- <a name="functype_wrap_fromw32"><h3>Wrapping of Call from W32 Code</h3></a>
+ <h3 id="functype_wrap_fromw32">Wrapping of Call from W32 Code</h3>
<p>This scheme is a combination of the
- <a href="APITypes.html.pl#functype_wrap_fromunix">previous wrap of a call from
- UNIX code</a> and the <a href="APITypes.html.pl#functype_pass_fromw32">direct pass from
+ <a href="APITypes.pm#functype_wrap_fromunix">previous wrap of a call from
+ UNIX code</a> and the <a href="APITypes.pm#functype_pass_fromw32">direct pass from
the W32 code</a>. The control is caught and redirected by
<span class="constant">SIGSEGV</span> handler from the breakpoint
placed at the entry to the original W32 function code. The second entry
@{[ vskip() ]}
- <p>Some functions can be <a href="APITypes.html.pl#functype_pass">passed to the original
+ <p>Some functions can be <a href="APITypes.pm#functype_pass">passed to the original
code</a> but they need their parameters to be checked/prepared.
Currently, such wrapping is only needed for the
<span class="function">ExAllocateFromPagedLookasideList()</span> function
differ across different <span class="fname">ntoskrnl.exe</span>
versions.</p>
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Function Type <span class="constant">wrap</span> Characteristics</caption>
<tr><td><span class="fname">captivesym</span> keyword</td><td>wrap</td></tr>
<tr><td>Native UNIX wrapping code function name </td><td>FUNCNAME_wrap</td></tr>
<tr><td>W32 traced wraping code from UNIX func. name </td><td>FUNCNAME</td></tr>
<tr><td>W32 traced original code function name </td><td>FUNCNAME_orig</td></tr>
<tr><td>Entry/exit debug tracing from UNIX code </td><td>yes</td></tr>
<tr><td>Entry/exit debug tracing from W32 code </td><td>yes</td></tr>
- <caption>Function Type <span class="constant">wrap</span> Characteristics</caption>
</table>
- <a name="functype_native"><h2>Native Implementation</h2></a>
+ <h2 id="functype_native">Native Implementation</h2>
- <a name="functype_native_fromunix"><h3>Native Implementation Called from UNIX Code</h3></a>
+ <h3 id="functype_native_fromunix">Native Implementation Called from UNIX Code</h3>
<p>This is the simplest case of a function call as it is fully
handled only by the compiler and/or linker.</p>
the callee are provided with full source file debug information for the
debugger. Also the callee usually debug dumps its entry/exit parameters
by custom debug dumps in the
- <a href="APITypes.html.pl#functype_native_reactos"><span class="productname">ReactOS</span> implementations</a>.
+ <a href="APITypes.pm#functype_native_reactos"><span class="productname">ReactOS</span> implementations</a>.
+ </p>
@{[ doc_img 'fig/functype_native_fromunix',
'Function Type: <span class="constant">native</span> from UNIX Code' ]}
- <a name="functype_native_fromw32"><h3>Native Implementation of
- "unpatched" Library Function Called from W32 Code</h3></a>
+ <h3 id="functype_native_fromw32">Native Implementation of
+ "unpatched" Library Function Called from W32 Code</h3>
@{[ doc_img 'fig/functype_unpatched_native_fromw32',
'Function Type: <span class="constant">native</span> of <span class="constant">unpatched</span> from W32 Code' ]}
code with the appropriate
@{[ a_href '#calltype','cdecl/stdcall/fastcall call type' ]} while the
relay will call the implementation of the native function in the
- standard UNIX @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl call type' ]} manner.</p>
+ standard UNIX @{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type' ]} manner.</p>
- <a name="functype_native_fromw32_patched"><h3>Native Implementation of "patched" Library Function Called from W32 Code</h3></a>
+ <h3 id="functype_native_fromw32_patched">Native Implementation of "patched" Library Function Called from W32 Code</h3>
@{[ doc_img 'fig/functype_patched_native_fromw32',
'Function Type: <span class="constant">native</span> of <span class="constant">patched</span> from W32 Code' ]}
<p>The calling scheme is similiar to the
- <a href="APITypes.html.pl#functype_native_fromw32">previous call of
+ <a href="APITypes.pm#functype_native_fromw32">previous call of
<span class="constant">unpatched</span> library function from W32
code</a> but the call control is redirected from the entry point of the
original W32 binary implementation by the breakpoint and its
<span class="constant">SIGSEGV</span> handler as in
- <a href="APITypes.html.pl#functype_pass_fromw32">the case of passing control from W32
+ <a href="APITypes.pm#functype_pass_fromw32">the case of passing control from W32
call</a>.</p>
<p>The original W32 function implementation located in the original
project is running pure W32 kernel space environment (in $gnulinux user
space!).</p>
- <a name="functype_native_reactos"><h3>Native Implementation
- - <span class="productname">ReactOS</span></h3></a>
+ <h3 id="functype_native_reactos">Native Implementation
+ - <span class="productname">ReactOS</span></h3>
<p>Some functions are already implemented in the $ReactOS
project and they can be used as they are. Although it would be
- possible to <a href="APITypes.html.pl#functype_pass">pass some function calls to the
+ possible to <a href="APITypes.pm#functype_pass">pass some function calls to the
original code</a> it is more handy to provide native implementation as
there is better control of the data handling during debugging sessions
due to the provided debugging symbols.</p>
</blockquote>
<p>Functions that were not possible to
- @{[ a_href 'APITypes.html.pl#functype_pass','pass' ]} were reimplemented by this project
+ @{[ a_href 'APITypes.pm#functype_pass','pass' ]} were reimplemented by this project
and placed in the project's implementation directories
@{[ a_href '#reactos_nocare','instead of extending' ]} $ReactOS code.</p>
- <a name="functype_native_wine"><h3>Native Implementation – <span class="productname">Wine</span></h3></a>
+ <h3 id="functype_native_wine">Native Implementation – <span class="productname">Wine</span></h3>
<p>Even though $Wine only implements the
<span class="productname">Microsoft Windows NT</span> user space, there
still are some common functions which could be copied from the $Wine
project.</p>
- <a name="functype_native_libcaptive"><h3>Native Implementation – Project Specific</h3></a>
+ <h3 id="functype_native_libcaptive">Native Implementation – Project Specific</h3>
<p>As the last resort it was necessary to provide completely own
implementation of some API functions such as PC hardware dependent
@{[ vskip() ]}
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Function Type <span class="constant">native</span> Characteristics</caption>
<tr><td><span class="fname">captivesym</span> keyword</td><td>(none; just the symbol name)</td></tr>
<tr><td>Native code function name </td><td>FUNCTIONNAME</td></tr>
<tr><td>Native traced code from W32 code func. name </td><td>FUNCTIONNAME_cdecl/_std...</td></tr>
<tr><td>Entry/exit debug tracing from UNIX code </td><td>no</td></tr>
<tr><td>Entry/exit debug tracing from W32 code </td><td>yes</td></tr>
- <caption>Function Type <span class="constant">native</span> Characteristics</caption>
</table>
- <a name="functype_undef"><h2>Undefined Function</h2></a>
+ <h2 id="functype_undef">Undefined Function</h2>
<p>Functions not defined by any of the previous function types cannot be
called by any W32 code including the code of the library implementing
<span class="constant">undef</span> type to prevent unresolved symbol
reference.</p>
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Function Type <span class="constant">undef</span> Characteristics</caption>
<tr><td><span class="fname">captivesym</span> keyword</td><td>undef</td></tr>
<tr><td>Native code function name </td><td>(no implementation)</td></tr>
<tr><td>Native traced code function name </td><td>FUNCTIONNAME_cdecl/_stdcall/_fastcall</td></tr>
<tr><td>Debug tracing message from UNIX code </td><td>yes</td></tr>
<tr><td>Debug tracing message from W32 code </td><td>yes</td></tr>
- <caption>Function Type <span class="constant">undef</span> Characteristics</caption>
</table>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc About page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
"__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: About',
- "rel_prev"=>'Index.html.pl',
- "rel_next"=>'Architecture.html.pl',
+ "rel_prev"=>'./',
+ "rel_next"=>'Architecture.pm',
);
<h1>About</h1>
- <a name="reasons"><h2>Reasons for the Implementation</h2></a>
+ <h2 id="reasons">Reasons for the Implementation</h2>
<p>Currently there is no possibility to any of the available $freespeech
($freespeech used in the following text in the meaning of
and
<span class="productname">XP</span> as NT-5.1.)
based operating systems <span class="productname">NTFS</span> is the default
- disk file system type for vendor preinstalled <span class="productname">Microsoft Windows</span>.
+ disk file system type for vendor preinstalled <span class="productname">Microsoft Windows</span>.</p>
<p>Unfortunately the <span class="productname">NTFS</span> filesystem has too
complex data structure to allow a complete reverse enginnering process in
reasonable time. Currently available $freespeech solutions such as $LinuxNTFS
filesystem have already implemented reliable reverse
- engineered read-only access. However <a name="reliability">reliabile</a>
+ engineered read-only access. However <span id="reliability">reliabile</span>
read-write part of the access would require much better
knowledge of the <span class="productname">NTFS</span> data structures.
Currently only rewriting of already existing file data blocks is supported
would require another major reverse engineering effort.</p>
- <a name="challenges"><h2>Challenges of the Project</h2></a>
+ <h2 id="challenges">Challenges of the Project</h2>
- <p>The <a name="NTFSgoal">ultimate goal</a> of this project is definitely the
+ <p>The <span id="NTFSgoal">ultimate goal</span> of this project is definitely the
free implementation of @{[ a_href '#reliability','reliable' ]} read-write <span
class="productname">NTFS</span> filesystem driver. This project chose to
solve this problem in the style of $Wine project by using the original binary
part of W32.</p>
- <a name="versions"><h2>Microsoft Windows Versions Compatibility</h2></a>
+ <h2 id="versions">Microsoft Windows Versions Compatibility</h2>
<p>Currently this project supports only driver files of
<span class="productname">Microsoft Windows XP</span> (NT-5.1)
<span class="productname">Microsoft Windows XP</span> as they are freely
downloadable at:
@{[ a_href 'http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp' ]}</p>
- There may be @{[ a_href 'Architecture.html.pl#law','legal reasons' ]} you would not be allowed
+ <p>There may be @{[ a_href 'Architecture.pm#law','legal reasons' ]} you would not be allowed
to use there files if you own license to a different version of
<span class="productname">Microsoft Windows</span>. Legal rights will very
depending on your country.</p>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Architecture page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: Architecture',
- "rel_prev"=>'About.html.pl',
- "rel_next"=>'Components.html.pl',
+ "rel_prev"=>'About.pm',
+ "rel_next"=>'Components.pm',
);
@{[ doc_img 'arch-W32','Microsoft Windows Subsystems Architecture' ]}
@{[ doc_img 'arch-captive','Captive Subsystems Architecture' ]}
- <a name="existing_emulation"><h2>Existing Emulation Projects</h2></a>
+ <h2 id="existing_emulation">Existing Emulation Projects</h2>
<p>There were two well-known $freespeech projects emulating W32 subsystems
to reach the compatibility with various W32 components:
very well into any role in those two ones. Therefore this project went
its own way of emulation:</p>
- <table align="center" border="1">
+ <table border="1" class="margin-center">
+ <caption>Emulation Projects Characteristics</caption>
<tr>
<th>@{[ a_href '#guestosnote','Guest-OS' ]}</th>
<th>@{[ a_href '#hostosnote' ,'Host-OS' ]}</th>
<td>W32 kernel and user space</td>
<td><span class="fname">ntoskrnl.exe</span></td>
</tr>
- <tr style="height: 1ex;"></tr>
+ <tr style="height: 1ex;"><td colspan="4"></td></tr>
<tr>
<td>this project</td>
<td>$gnulinux</td>
<td>W32 kernel</td>
<td><span class="fname">ntoskrnl.exe</span></td>
</tr>
- <caption>Emulation Projects Characteristics</caption>
</table>
<dl>
- <a name="guestosnote"><dt>Guest-OS</dt></a>
+ <dt id="guestosnote">Guest-OS</dt>
<dd>@{[ a_href 'http://www.vmware.com/support/reference/common/glossary/#guestos','Guest OS' ]}:
An operating system that runs inside a virtual machine.</dd>
- <a name="hostosnote" ><dt>Host OS</dt></a>
+ <dt id="hostosnote">Host OS</dt>
<dd>@{[ a_href 'http://www.vmware.com/support/reference/common/glossary/#hostos' ,'Host OS' ]}:
An operating system that runs on the host machine.</dd>
</dl>
which better suits the needs of this project by its already implemented W32
kernel space emulation.</p>
- <p>The <a name="reactos_nocare">original reasons</a> for developing
+ <p>The <span id="reactos_nocare">original reasons</span> for developing
$ReactOS still make no sense to the author of this project. Free
implementation of W32 platform standalone running on the machine hardware
is no longer free as most od the W32 applications are usually closed source
<span class="constant">i486</span>, ...).</p>
- <a name="law"><h2>Laws and Licensing Conditions</h2></a>
+ <h2 id="law">Laws and Licensing Conditions</h2>
<p>If you are an <span class="productname">authorized user</span> of
<span class="productname">Microsoft Windows NT</span> the laws in some
to agree with the product license forbidding such disassembly as the
country laws override any such license agreement.</p>
- <a name="law_servicepack"><h3>Microsoft Service Pack</h3></a>
+ <h3 id="law_servicepack">Microsoft Service Pack</h3>
<p>Sometimes you may have the legal license for
<span class="productname">Microsoft Windows NT</span>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Cache Manager page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: NT Cache Manager',
- "rel_prev"=>'Reverse.html.pl',
- "rel_next"=>'Details.html.pl',
+ "rel_prev"=>'Reverse.pm',
+ "rel_next"=>'Details.pm',
);
print <<"HERE";
-<a name="cache_manager"><h1>NT Cache Manager</h1></a>
+<h1 id="cache_manager">NT Cache Manager</h1>
<p>Although there exist some 3rd party documents about
<span class="productname">NT Cache Manager</span> W32 subsystem such as
(<span class="type">ImageSectionObject</span>), insufficient system
resources from <span class="productname">NT Memory Manager</span>
or general effort to perform caching features for system performance.</p>
- <span class="productname">NT Cache Manager</span> of this project has much
+ <p><span class="productname">NT Cache Manager</span> of this project has much
simpler goal - it just needs to provide compatible
<span class="productname">NT Cache Manager</span> functionality while
the other goals of its W32 counterpart are left to be successfuly handled
it is permitted to extend mapped size even in the case of existing
(and dirty) Map or Pin mappings.</p>
- <p><span class="type">PCACHE_MANAGER_CALLBACKS</type> argument can be
+ <p><span class="type">PCACHE_MANAGER_CALLBACKS</span> argument can be
safely ignored:</p>
<dl>
as it may be locked by existing
<span class="type">ImageSectionObject</span>
of some file being executed etc.
- <a name="sharedcachemap_leak">It is fatal to destroy
- <span class="type">SharedCacheMap</span></a>
+ <span id="sharedcachemap_leak">It is fatal to destroy
+ <span class="type">SharedCacheMap</span></span>
in the moment you see no other
references to it as the driver will access it for some moment
even after <span class="function">CcUninitializeCacheMap()</span>.
Fortunately it is safe to never destroy
<span class="type">SharedCacheMap</span> and leave it leaked - everything
gets clean in the
- @{[ a_href 'Details.html.pl#sandbox','sandboxed environment' ]} soon anyway.</p>
+ @{[ a_href 'Details.pm#sandbox','sandboxed environment' ]} soon anyway.</p>
<p>There exist Map and Pin type objects for each
<span class="type">SharedCacheMap</span> although they look very similiar.
<dt>Pin</dt>
<dd>
<p>Pin mapping always represents just one physical page
- (<span class="constant">PAGE_SIZE</span> &nspan; 4096 for i386).
+ (<span class="constant">PAGE_SIZE</span> – 4096 for i386).
Its base offset/length can be safely extended to be aligned to the
requested page.</p>
<p>Pin can have associated pair of oldest and newest
- <span class="type>LSN</span> (Linear Sequence Number). It can be
+ <span class="type">LSN</span> (Linear Sequence Number). It can be
set by <span class="function">CcSetDirtyPinnedData()</span>
and Cache Manager always tracks the lowest and highest
- reported <span class="type>LSN</span> for each page.
- <span class="type>LSN</span> is assumed to be
+ reported <span class="type">LSN</span> for each page.
+ <span class="type">LSN</span> is assumed to be
<span class="constant">0</span> if not set.</p>
<p>Any existing Pin mapping will be reused for further mappings
There can exist multiple Pin mappings of the same page (although
sharing the same memory space). This detaching must be implemented
even in the
- @{[ a_href 'Details.html.pl#synchronous','single-threaded' ]} W32 implementation
+ @{[ a_href 'Details.pm#synchronous','single-threaded' ]} W32 implementation
of this project as it is affecting the behaviour of Cache Manager.
It was never
- @{[ a_href 'CacheManager.html.pl#TraceFS','seen' ]} how to behave if multiple dirty Pin
+ @{[ a_href 'CacheManager.pm#TraceFS','seen' ]} how to behave if multiple dirty Pin
mappings of the same page exist.</p>
</dd>
</dl>
their last unreferencing (in opposite of
@{[ a_href '#sharedcachemap_leak','leaked <span class="type">SharedCacheMap</span>' ]}).
Despite it any dirty pages may still be held as the pages
- (including their <span class="type>LSN</span>s) are cached associated
+ (including their <span class="type">LSN</span>s) are cached associated
with <span class="type">SharedCacheMap</span>. It may be also possible
original <span class="productname">Microsoft Windows</span>
<span class="productname">Cache Manager</span>
postpones Pin mapping destroy to later time but it does not matter.</p>
- <a name="TraceFS"><h2>TraceFS NT Cache Manager Tracer</h2></a>
+ <h2 id="TraceFS">TraceFS NT Cache Manager Tracer</h2>
<p>@{[ a_href '#cache_manager','Cache Manager behaviour' ]} would be hard
to analyze just by @{[ a_href '#reverse','reverse engineering' ]} as it
<p>You can now pray a bit and snap the resulting Cache Manager tracing
from <span class="productname">WinDbg</span> by
- @{[ a_href 'Reverse.html.pl#WinDbg','W32 remote kernel debugging' ]}:</p>
+ @{[ a_href 'Reverse.pm#WinDbg','W32 remote kernel debugging' ]}:</p>
@{[ doc_img 'ntdebug-windbg-boot','Successfuly connected <span class="productname">WinDbg</span>' ]}
@{[ captive_srcfile './src/TraceFS/checktrace.pl' ]} Perl Cache Manager
validator.</p>
- <a name="TraceFS_general"><h3>TraceFS for general API tracing</h3></a>
+ <h3 id="TraceFS_general">TraceFS for general API tracing</h3>
<p>Although TraceFS was up to now used only for tracing of
<span class="productname">NT Cache Manager</span> it can be easily
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Calling Types page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: API Calling Conventions',
- "rel_prev"=>'APITypes.html.pl',
- "rel_next"=>'TODO.html.pl',
+ "rel_prev"=>'APITypes.pm',
+ "rel_next"=>'TODO.pm',
);
print <<"HERE";
-<a name="calltype"><h1>API Function Calling Conventions</h1></a>
+<h1 id="calltype">API Function Calling Conventions</h1>
<p>Standard UNIX code compiled by GCC (GNU C Compiler) running on host
- $gnulinux always uses @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl' ]} ABI (Application
+ $gnulinux always uses @{[ a_href 'CallType.pm#calltype_cdecl','cdecl' ]} ABI (Application
Binary Interface) calling convention. This calling convention is also the
default declaration type of UNIX functions.</p>
occurs the calling type presented between the caller and callee should be
checked.</p>
- <a name="calltype_cdecl"><h2>W32 Calling Convention "cdecl"</h2></a>
+ <h2 id="calltype_cdecl">W32 Calling Convention "cdecl"</h2>
<p>The only calling convention in the UNIX world. The default one for all
the compilers. All the arguments are passed on the stack, no arguments
@{[ doc_img 'fig/calltype_cdecl',
'W32 Calling Convention <span class="constant">cdecl</span> Scheme' ]}
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Calling Convention <span class="constant">cdecl</span> Characteristics</caption>
<tr><td>Arguments freed by </td><td>caller</td></tr>
<tr><td>Arguments on the stack </td><td>#0 ... #(n-1)</td></tr>
<tr><td>Arguments in the registers </td><td>none</td></tr>
<tr><td>GCC attribute </td><td><span class="command">__attribute__((__cdecl__))</span> (default)</td></tr>
- <caption>Calling Convention <span class="constant">cdecl</span> Characteristics</caption>
</table>
- <a name="calltype_stdcall"><h2>W32 Calling Convention "stdcall"</h2></a>
+ <h2 id="calltype_stdcall">W32 Calling Convention "stdcall"</h2>
@{[ doc_img 'fig/calltype_stdcall',
'W32 Calling Convention <span class="constant">stdcall</span> Scheme' ]}
arguments are cleaned by the callee. Possible inconsistencies in the
number of function arguments with the function prototype used by the
caller will result in fatal crash. Variable arguments lists cannot be
- passed by this convention – use @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl' ]}
+ passed by this convention – use @{[ a_href 'CallType.pm#calltype_cdecl','cdecl' ]}
instead.</p>
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Calling Convention <span class="constant">stdcall</span> Characteristics</caption>
<tr><td>Arguments freed by </td><td>callee</td></tr>
<tr><td>Arguments on the stack </td><td>#0 ... #(n-1)</td></tr>
<tr><td>Arguments in the registers </td><td>none</td></tr>
<tr><td>GCC attribute </td><td><span class="command">__attribute__((__stdcall__))</span></td></tr>
- <caption>Calling Convention <span class="constant">stdcall</span> Characteristics</caption>
</table>
- <a name="calltype_fastcall"><h2>W32 Calling Convention "fastcall"</h2></a>
+ <h2 id="calltype_fastcall">W32 Calling Convention "fastcall"</h2>
<p>Convention never used in the UNIX world. It needs to be specified for
W32 compilers. Convention used in the W32 world for its low calling
<span class="constant">EDX</span> respectively. Possible inconsistencies
in the number of function arguments with the function prototype used by
the caller will result in fatal crash. Variable arguments lists cannot be
- passed by this convention – use @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl' ]}
+ passed by this convention – use @{[ a_href 'CallType.pm#calltype_cdecl','cdecl' ]}
instead.</p>
<p>GCC (GNU C Compiler) native support for this calling convention
@{[ doc_img 'fig/calltype_fastcall',
'W32 Calling Convention <span class="constant">fastcall</span> Scheme' ]}
- <table border="1" align="center">
+ <table border="1" class="margin-center">
+ <caption>Calling Convention <span class="constant">fastcall</span> Characteristics</caption>
<tr><td>Arguments freed by </td><td>callee</td></tr>
<tr><td>Arguments on the stack </td><td>#2 ... #(n-1)</td></tr>
<tr><td>Arguments in the registers </td><td><span class="constant">ECX</span>=#0,
<tr><td>GCC ≥3.4 attribute </td><td><span class="command">__attribute__((__fastcall__))</span></td></tr>
<tr><td>GCC <3.4 attr. emulation</td><td><span class="command">__attribute__((__stdcall__))</span></td></tr>
<tr><td> </td><td><span class="command">__attribute__((__regparm__(3) /* EAX,EDX,ECX */))</span></td></tr>
- <caption>Calling Convention <span class="constant">fastcall</span> Characteristics</caption>
</table>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Components page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
"__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: Components',
- "rel_prev"=>'Architecture.html.pl',
- "rel_next"=>'Reverse.html.pl',
+ "rel_prev"=>'Architecture.pm',
+ "rel_next"=>'Reverse.pm',
);
<span
class="fname">file:///dev/hda3#captive-fastfat:/autoexec.bat</span></p>
- <span class="constant">captive-bug-replay</span> serves just for debugging
+ <p><span class="constant">captive-bug-replay</span> serves just for debugging
purposes — you can 'replay' existing
<span class="fname">file.captivebug.xml.gz</span> automatically being
generated during W32 filesystem failure. This bugreport file will contain
all the touched data blocks of the device used in the moment of the
failure. <span class="constant">captive-bug-replay</span> will therefore
- emulate internal virtual writable device out of these bugreported data.
+ emulate internal virtual writable device out of these bugreported data.</p>
<p>If the passed device reference is requested by the user to be accessed
either in <span class="dashdash">--ro</span> (read-only) mode or in the
read-write device on top of the real read-only device by the method of
non-persistent memory buffering of all the possible write requests.</p>
- <span class="constant">sandbox commit buffer</span> is involved only in the
- case @{[ a_href 'Details.html.pl#sandbox','sandboxing feature' ]} is active. It will
+ <p><span class="constant">sandbox commit buffer</span> is involved only in the
+ case @{[ a_href 'Details.pm#sandbox','sandboxing feature' ]} is active. It will
buffer any writes to the device during the sandbox run to prevent
filesystem damage if the driver would fail in the meantime. If the
filesystem gets finally successfully unmounted this sandbox buffer can be
- <a name="safe_flush">safely flushed</a>
+ <span id="safe_flush">safely flushed</span>
to its underlying physical media. The buffer will be dropped
in the case of filesystem failure, of course. The filesystem should be
unmounted from time to time — it can be transparently unmounted and mounted
Now we need to transparently
@{[ captive_srcfile 'src/libcaptive/sandbox/sandbox.idl','connect' ]}
the device interface of <span class="type">GIOChannel</span> type through
- @{[ a_href 'Details.html.pl#sandbox','CORBA/ORBit' ]} to the sandboxed slave.
+ @{[ a_href 'Details.pm#sandbox','CORBA/ORBit' ]} to the sandboxed slave.</p>
<p>Such device is still only a UNIX style GLib <span
class="type">GIOChannel</span> type at this point. As we need to supply it
<p>The filesystem driver is called by the core W32 kernel implementation of
<span class="constant">libcaptive</span> in
- @{[ a_href 'Details.html.pl#synchronous','synchronous way' ]} in single-shot manner instead of
+ @{[ a_href 'Details.pm#synchronous','synchronous way' ]} in single-shot manner instead of
the several reentrancies while waiting for the disk I/O completions as can
be seen in the original
<span class="productname">Microsoft Windows NT</span>.
This single-shot synchronous behaviour is possible since all the needed
resources (disk blocks etc.) can be always presented as instantly ready as
- their acquirement is solved by @{[ a_href 'Architecture.html.pl#hostosnote','Host-OS' ]} outside of
- the W32 emulated @{[ a_href 'Architecture.html.pl#guestosnote','Guest-OS' ]} environment.
+ their acquirement is solved by @{[ a_href 'Architecture.pm#hostosnote','Host-OS' ]} outside of
+ the W32 emulated @{[ a_href 'Architecture.pm#guestosnote','Guest-OS' ]} environment.
For several cases needed only by <span class="fname">ntfs.sys</span>
there had to be supported asynchronous access — parallel execution
is emulated by GLib <span class="function">g_idle_add_full()</span>
<a href="#client_interface_customapp">a custom application accessing
the W32 filesystem driver</a>.</p>
- <p>@{[ a_href 'Details.html.pl#sandbox','CORBA/ORBit' ]} hits us again – we need to
+ <p>@{[ a_href 'Details.pm#sandbox','CORBA/ORBit' ]} hits us again – we need to
@{[ captive_srcfile 'src/libcaptive/sandbox/sandbox.idl','translate' ]}
the @{[ a_href '#client_interface','custom filesystem API interface' ]}
out of the sandboxed slave to the UNIX space.</p>
<p><span class="constant">captive sandbox master</span> provides the
functionality of covering any possible sandboxed slave restarts and its
communication. It is also capable of
- <a name="demultiplexing_master">demultiplexing single API operations</a>
+ <span id="demultiplexing_master">demultiplexing single API operations</span>
to multiple its connected sandbox slaves in transparent way
as each of them handles
- @{[ a_href 'Details.html.pl#mounted_one','just one filesystem device' ]}.</p>
+ @{[ a_href 'Details.pm#mounted_one','just one filesystem device' ]}.</p>
<p>The rest of the story is not much special for this project since this is
a common UNIX problem how to offer user space implemented UNIX filesystem
<dt>Custom client</dt>
<dd>
<p>One possibility would be to write
- <a name="client_interface_customapp">a custom client application</a>
+ <span id="client_interface_customapp">a custom client application</span>
for this project such as file manager or a shell. Although it
would implement the most appropriate user interface to the set of
functions offered by this project (and W32 filesystem API) it has the
needs multiple operating threads (each UNIX kernel operation needs
one free lufsd slot/thread to not to fail immediately).
As <span class="constant">libcaptive</span> is
- @{[ a_href 'Details.html.pl#synchronous','single-threaded' ]} all the operations
+ @{[ a_href 'Details.pm#synchronous','single-threaded' ]} all the operations
get always synchronized by
<span class="constant">liblufs-captivefs</span>
before their pass over to <span class="constant">libcaptive</span>.</p>
<dt>Custom NFS server</dt>
<dd>
<p>The common approach
- <a name="offered_NFS">of filesystem implementations</a>
+ <span id="offered_NFS">of filesystem implementations</span>
outside UNIX OS kernel were custom NFS servers usually running on the
same machine as the NFS-connected client as such NFS server is usually
an ordinary UNIX user space process. It would be possible to implement
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Details page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
"__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: Implementation Details',
- "rel_prev"=>'CacheManager.html.pl',
- "rel_next"=>'APITypes.html.pl',
+ "rel_prev"=>'CacheManager.pm',
+ "rel_next"=>'APITypes.pm',
);
<h1>Implementation Details</h1>
- <a name="emulmeth"><h2>Choice of the Emulation Methods</h2></a>
+ <h2 id="emulmeth">Choice of the Emulation Methods</h2>
<p>The intent of the project was to get reliable read-write access to
<span class="productname">NTFS</span> partition. There are several possible
ways to achieve that:</p>
- <a name="emulmeth_vm"><h3>Virtualmachine Running the Original W32 Subsystem</h3></a>
+ <h3 id="emulmeth_vm">Virtualmachine Running the Original W32 Subsystem</h3>
<p>Creating virtual-hardware PC and running the original W32 binaries
including their boot-loader etc. Disk device access would be passed as
requirement of fully installed
<span class="productname">Microsoft Windows NT</span> product.</p>
- <a name="method_ntoskrnl"><h3>"ntoskrnl.exe" Inside Virtual Address Space</h3></a>
+ <h3 id="method_ntoskrnl">"ntoskrnl.exe" Inside Virtual Address Space</h3>
<p>This solution was chosen by the project. Binary filesystem driver and
also <span class="fname">ntoskrnl.exe</span> binary file are required.
emulation, therefore such instructions must be trapped and emulated/ignored
from case to case.</p>
- <p>Also the <a name="init_ntoskrnl">initialization code of <span
- class="fname">ntoskrnl.exe</span></a> is not executed by this project since
+ <p>Also the <span id="init_ntoskrnl">initialization code of <span
+ class="fname">ntoskrnl.exe</span></span> is not executed by this project since
it expects to get full PC hardware access privileges and thus some
datastructures do not get initialized by it (need to be trapped later at
runtime stage). Some of the missing initializations are solved by
- @{[ a_href 'APITypes.html.pl#functype_wrap','API functions wrapping' ]}.
+ @{[ a_href 'APITypes.pm#functype_wrap','API functions wrapping' ]}.</p>
<p>pros: Lightweight, easier to debug.</p>
<span class="fname">ntoskrnl.exe</span> parts, missing documentation needed
for the implementation.</p>
- <a name="emulmeth_fs"><h3>Filesystem Driver Inside Virtual Address Space</h3></a>
+ <h3 id="emulmeth_fs">Filesystem Driver Inside Virtual Address Space</h3>
- <p>Unlike @{[ a_href 'Details.html.pl#method_ntoskrnl','previous method' ]} here we do not use
+ <p>Unlike @{[ a_href 'Details.pm#method_ntoskrnl','previous method' ]} here we do not use
even <span class="fname">ntoskrnl.exe</span> as the complete kernel part of
- W32 is <a name="native_ntoskrnl">emulated from the project source
- files</a>. <span class="fname">cdfs.sys</span> driver was successfuly ran
+ W32 is <span id="native_ntoskrnl">emulated from the project source
+ files</span>. <span class="fname">cdfs.sys</span> driver was successfuly ran
in this manner in the former versions of this project but the possibility
to run without <span class="fname">ntoskrnl.exe</span> was dropped since it
had no licensing gains (you need the original
<span class="fname">ntoskrnl.exe</span>, its missing documentation.</p>
- <a name="apichoice"><h2>API Function Implementation Choices</h2></a>
+ <h2 id="apichoice">API Function Implementation Choices</h2>
<p>During the initial point of the project development all the API
functions were defined as unimplemented, of course. Any call of such
unimplemented function is fatal and results in program termination. When we
need to implement any required API function we have multiple choices to do
so:
- @{[ a_href 'APITypes.html.pl#functype_pass','Direct pass to original <span class="fname">ntoskrnl.exe</span>' ]},
- @{[ a_href 'APITypes.html.pl#functype_wrap','Wrap of the original <span class="fname">ntoskrnl.exe</span> function' ]},
- @{[ a_href 'APITypes.html.pl#functype_native_reactos','Native implementation – $ReactOS' ]},
- @{[ a_href 'APITypes.html.pl#functype_native_wine','Native implementation – $Wine' ]}
+ @{[ a_href 'APITypes.pm#functype_pass','Direct pass to original <span class="fname">ntoskrnl.exe</span>' ]},
+ @{[ a_href 'APITypes.pm#functype_wrap','Wrap of the original <span class="fname">ntoskrnl.exe</span> function' ]},
+ @{[ a_href 'APITypes.pm#functype_native_reactos','Native implementation – $ReactOS' ]},
+ @{[ a_href 'APITypes.pm#functype_native_wine','Native implementation – $Wine' ]}
or
- @{[ a_href 'APITypes.html.pl#functype_native_libcaptive','Native implementation – project specific' ]}.
- <!-- a_href 'APITypes.html.pl#functype_undef','Undefined function' -->
+ @{[ a_href 'APITypes.pm#functype_native_libcaptive','Native implementation – project specific' ]}.
+ <!-- a_href 'APITypes.pm#functype_undef','Undefined function' -->
+ </p>
- <a name="sandbox"><h2>Sandboxing of W32 Filesystem</h2></a>
+ <h2 id="sandbox">Sandboxing of W32 Filesystem</h2>
<p>The emulated W32 environment running the original W32 filesystem driver
is separated from the rest of UNIX OS. It achieves the following goals:</p>
peers.</p>
- <a name="patched"><h2>"patched" vs. "unpatched" Libraries</h2></a>
+ <h2 id="patched">"patched" vs. "unpatched" Libraries</h2>
<p>Library is called <span class="constant">patched</span> if we require
loading its original binary code file. Project needs to patch it to be able
<p>Library is called <span class="constant">unpatched</span> if no original
binary code is needed since all of its functions are completely emulated by
- @{[ a_href 'APITypes.html.pl#functype_native','the native implementations' ]} of this project.
+ @{[ a_href 'APITypes.pm#functype_native','the native implementations' ]} of this project.
The typical <span class="constant">unpatched</span> representative is
<span class="fname">hal.dll</span> as it specializes on the hardware
dependent code and therefore it must be completely replaced by this project
<a href="#native_ntoskrnl">native implementation of
<span class="fname">ntoskrnl.exe</span></a> but it no longer applies.</p>
- <a name="mman"><h2>Memory Management</h2></a>
+ <h2 id="mman">Memory Management</h2>
<p>Original <span class="productname">Microsoft Windows NT</span>
architecture uses two address space areas – user space and kernel space.
moving operations between W32 kernel space and W32 user space memory areas
(such as <span class="function">MmSafeCopyToUser()</span>).</p>
- <a name="unicode"><h2>Unicode Strings and Characters</h2></a>
+ <h2 id="unicode">Unicode Strings and Characters</h2>
<p>W32 platform uses 16-bit type <span class="type">wchar_t</span> while $gnulinux uses a
32-bit one. This can be problem during GCC (GNU C Compiler)
</li>
</ul>
- <a name="binfmt"><h2>Supported Binary Formats</h2></a>
+ <h2 id="binfmt">Supported Binary Formats</h2>
<p>The native W32 binary format is identified as
<span class="constant">PE-32</span> (Portable Executable 32-bit), such
<span class="constant">PE-32</span> use the appropriate W32 specific
@{[ a_href '#calltype','cdecl/stdcall/fastcall call types' ]},
<span class="fname">.so</span> must be completely compiled in the standard
- UNIX @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl call type semantics' ]}.
- @{[ a_href 'APITypes.html.pl#functype_native','Native function implementations' ]} do not need
+ UNIX @{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type semantics' ]}.
+ @{[ a_href 'APITypes.pm#functype_native','Native function implementations' ]} do not need
to be explicitely exported by <span class="fname">captivesym</span> as they
are resolved automatically by the UNIX dynamic system linker. It may be
surprising you will have to fix all such missing symbol exports if you
original <span class="constant">PE-32</span> binary file.</p>
- <a name="mounted_one"><h2>At Most One Mounted Filesystem</h2></a>
+ <h2 id="mounted_one">At Most One Mounted Filesystem</h2>
<p>The project technically supports only one (exactly one...) mounted
filesystem device and only one filesystem driver. There is nothing
itself. It was considered as a more sane way to support multiple W32
mounted disks by completely separately running project instances in
a different UNIX processes communicating from their sandboxes via
- @{[ a_href 'Details.html.pl#sandbox','CORBA sandbox interface' ]}. This sandboxing
+ @{[ a_href 'Details.pm#sandbox','CORBA sandbox interface' ]}. This sandboxing
feature is not yet deployed although its code is already prepared.</p>
<p>The project also does not support any state cleanup to be able to load
<span class="function">captive_shutdown()</span> the process address space is
no longer usable for any further project operations and the process is
expected to be terminated in the manner compatible with its driving
- @{[ a_href 'Details.html.pl#sandbox','CORBA sandbox interface' ]} control master.</p>
+ @{[ a_href 'Details.pm#sandbox','CORBA sandbox interface' ]} control master.</p>
<p>Each sandbox executing the untrusted W32 binary filesystem driver code
is connected through its
- @{[ a_href 'Details.html.pl#sandbox','CORBA sandbox interface' ]} at the point of upper
+ @{[ a_href 'Details.pm#sandbox','CORBA sandbox interface' ]} at the point of upper
layer <span class="constant">libcaptive</span>-specific filesystem API, at
the point of the bottom layer of <span class="type">GIOChannel</span>
device access and also for transfers of GLib logging
messages/warnings/errors out of the sandbox to the user.</p>
- <a name="synchronous"><h2>Multithreading and Multiple Processors</h2></a>
+ <h2 id="synchronous">Multithreading and Multiple Processors</h2>
<p>W32 platform stands on its thorough architecture parallelism. It
must lock all its objects to maintain coherence in presence of
<span class="function">g_idle_add_full()</span> with
<span class="function">g_main_context_iteration()</span> called during
<span class="function">KeWaitForSingleObject()</span>.</p>
- Since there is a possibility a real W32 parallel threading would
+ <p>Since there is a possibility a real W32 parallel threading would
be yet needed in the future all the code that would be hit by W32
multithreading capability is marked by
<span class="constant">TODO:thread</span> comment.</p>
is done during cleanup of the project's execution by
<span class="function">captive_shutdown()</span>.</p>
- <a name="paranoia"><h2>Paranoia Checks</h2></a>
+ <h2 id="paranoia">Paranoia Checks</h2>
<p>A general approach of software projects development is to implement
many internal sanity checks during the development stage but to produce the
has to be fixed, of course.</p>
- <a name="logfile"><h2>STATUS_LOG_FILE_FULL</h2></a>
+ <h2 id="logfile">STATUS_LOG_FILE_FULL</h2>
<p>After writing approx. 1MB of data on NTFS test partition NTFS driver
returns for any further write requests
- <span class="constant">STATUS_LOG_FILE_FULL</status> error code.
+ <span class="constant">STATUS_LOG_FILE_FULL</span> error code.
Apparently it is caused by the fact this project is
- @{[ a_href 'Details.html.pl#synchronous','single-threaded' ]} and it ignores the spawn
+ @{[ a_href 'Details.pm#synchronous','single-threaded' ]} and it ignores the spawn
of parallel journalling thread during <span class="fname">ntfs.sys</span>
initialization.</p>
<p>Fortunately <span class="fname">ntfs.sys</span> will clear its
journalling log file during filesystem unmount. This project will therefore
- remount the volume if <span class="constant">STATUS_LOG_FILE_FULL</status>
+ remount the volume if <span class="constant">STATUS_LOG_FILE_FULL</span>
is detected to workaround missing journalling thread.</p>
<p>Similiar behaviour can be seen during write of compressed files —
during the final filesystem unmount.</p>
<p>For these reasons it was mandatory to support
- @{[ a_href 'Details.html.pl#parent_connector','transparent volume remounting' ]}.</p>
+ @{[ a_href 'Details.pm#parent_connector','transparent volume remounting' ]}.</p>
- <a name="parent_connector"><h2><span class="constant">ParentConnector</span> volume remounter</h2></a>
+ <h2 id="parent_connector"><span class="constant">ParentConnector</span> volume remounter</h2>
<p>The sandbox master component of this project has control of restarting
its sandbox slaves containing the W32 filesystem. Target goal of
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Captive project doc Index page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::captive::doc::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
-
-
-project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
- "title"=>'Captive NTFS Developer Documentation',
- "rel_next"=>'About.html.pl',
- "rel_up"=>top_dir("/project/captive/"),
- );
-
-
-print <<"HERE";
-
-
-<h1>Captive NTFS Developer Documentation</h1>
-
-<ul>
-
-<li><a href="About.html.pl">About</a>
- <ul>
- <li><a href="About.html.pl#reasons">Reasons for the Implementation</a></li>
- <li><a href="About.html.pl#challenges">Challenges of the Project</a></li>
- <li><a href="About.html.pl#versions">Microsoft Windows Versions Compatibility</a></li>
- </ul></li>
-
-<li><a href="Architecture.html.pl">Architecture</a>
- <ul>
- <li><a href="Architecture.html.pl#existing_emulation">Existing Emulation Projects</a></li>
- <li><a href="Architecture.html.pl#law">Laws and Licensing Conditions</a>
- <ul>
- <li><a href="Architecture.html.pl#law_servicepack">Microsoft Service Pack</a></li>
- </ul></li>
-
- <li><a href="Components.html.pl">Project Components</a></li>
-
- <li><a href="Reverse.html.pl">Reverse Engineering</a>
- <ul>
- <li><a href="Reverse.html.pl#dumpbin">dumpbin.exe</a></li>
- <li><a href="Reverse.html.pl#WinDbg">WinDbg Windows NT kernel debugging</a>
- <ul>
- <li><a href="Reverse.html.pl#WinDbg_WinDbg">WinDbg side setup</a></li>
- <li><a href="Reverse.html.pl#WinDbg_kern">Setup of the side being kernel-debugged</a></li>
- </ul></li>
- </ul></li>
- </ul></li>
-
-<li><a href="Details.html.pl">Implementation Details</a>
-
- <ul>
- <li><a href="CacheManager.html.pl">NT Cache Manager</a>
- <ul>
- <li><a href="CacheManager.html.pl#TraceFS">TraceFS NT Cache Manager Tracer</a>
- <ul>
- <li><a href="CacheManager.html.pl#TraceFS_general">TraceFS for general API tracing</a></li>
- </ul></li>
- </ul></li>
-
- <li><a href="Details.html.pl#emulmeth">Choice of the Emulation Methods</a>
- <ul>
- <li><a href="Details.html.pl#emulmeth_vm">Virtualmachine Running the Original W32 Subsystem</a></li>
- <li><a href="Details.html.pl#method_ntoskrnl">"ntoskrnl.exe" Inside Virtual Address Space</a></li>
- <li><a href="Details.html.pl#emulmeth_fs">Filesystem Driver Inside Virtual Address Space</a></li>
- </ul></li>
- <li><a href="Details.html.pl#apichoice">API Function Implementation Choices</a></li>
- <li><a href="Details.html.pl#sandbox">Sandboxing of W32 Filesystem</a></li>
- <li><a href="Details.html.pl#patched">"patched" vs. "unpatched" Libraries</a></li>
- <li><a href="Details.html.pl#mman">Memory Management</a></li>
- <li><a href="Details.html.pl#unicode">Unicode Strings and Characters</a></li>
- <li><a href="Details.html.pl#binfmt">Supported Binary Formats</a></li>
- <li><a href="Details.html.pl#mounted_one">At Most One Mounted Filesystem</a></li>
- <li><a href="Details.html.pl#synchronous">Multithreading and Multiple Processors</a></li>
- <li><a href="Details.html.pl#paranoia">Paranoia Checks</a></li>
- <li><a href="Details.html.pl#logfile">STATUS_LOG_FILE_FULL</a></li>
- <li><a href="Details.html.pl#parent_connector">ParentConnector volume remounter</a></li>
-
- <li><a href="../apiref/">Captive API Reference Manual (fragment)</a></li>
-
- <li><a href="APITypes.html.pl">API Function Implementation Choices</a>
- <ul>
- <li><a href="APITypes.html.pl#functype_pass">Direct Pass to Original "ntoskrnl.exe"</a>
- <ul>
- <li><a href="APITypes.html.pl#functype_pass_fromunix">Pass from UNIX Code</a></li>
- <li><a href="APITypes.html.pl#functype_pass_fromw32">Pass from W32 Code</a></li>
- </ul></li>
- <li><a href="APITypes.html.pl#functype_wrap">Wrap of the Original "ntoskrnl.exe" Function</a>
- <ul>
- <li><a href="APITypes.html.pl#functype_wrap_fromunix">Wrapping of Call from UNIX Code</a></li>
- <li><a href="APITypes.html.pl#functype_wrap_fromw32">Wrapping of Call from W32 Code</a></li>
- </ul></li>
- <li><a href="APITypes.html.pl#functype_native">Native Implementation</a>
- <ul>
- <li><a href="APITypes.html.pl#functype_native_fromunix">Native Implementation Called from UNIX Code</a></li>
- <li><a href="APITypes.html.pl#functype_native_fromw32">Native Implementation of "unpatched"
- Library Function Called from W32 Code</a></li>
- <li><a href="APITypes.html.pl#functype_native_fromw32_patched">Native Implementation of "patched"
- Library Function Called from W32 Code</a></li>
- <li><a href="APITypes.html.pl#functype_native_reactos">Native Implementation - ReactOS</a></li>
- <li><a href="APITypes.html.pl#functype_native_wine">Native Implementation – Wine</a></li>
- <li><a href="APITypes.html.pl#functype_native_libcaptive">Native Implementation – Project Specific</a></li>
- </ul></li>
- <li><a href="APITypes.html.pl#functype_undef">Undefined Function</a></li>
- </ul></li>
-
- <li><a href="CallType.html.pl">API Function Calling Conventions</a>
- <ul>
- <li><a href="CallType.html.pl#calltype_cdecl">W32 Calling Convention "cdecl"</a></li>
- <li><a href="CallType.html.pl#calltype_stdcall">W32 Calling Convention "stdcall"</a></li>
- <li><a href="CallType.html.pl#calltype_fastcall">W32 Calling Convention "fastcall"</a></li>
- </ul></li>
- </ul></li>
-
-<li><a href="TODO.html.pl#todo_fsck">TODO: Fsck of NTFS</a></li>
-<li><a href="TODO.html.pl#todo_surprise">TODO: NTFS Support for Partition Surprise</a></li>
-
-<li><a href="Related.html.pl">Related Projects</a>
- <ul>
- <li><a href="Related.html.pl#LinuxNTFScompet">Linux NTFS</a></li>
- <li><a href="Related.html.pl#Paragon">Paragon NTFS for Linux</a></li>
- <li><a href="Related.html.pl#NTPwd">NTPwd NTFS Driver</a></li>
- <li><a href="Related.html.pl#vmware">VMware Workstation</a></li>
- <li><a href="Related.html.pl#wine">Wine Project</a></li>
- <li><a href="Related.html.pl#ntfs98">NTFS for Windows 98</a></li>
- <li><a href="Related.html.pl#ntfsdos">NTFSDOS Professional</a></li>
- </ul></li>
-
-<li><a href="LinuxNTFS.html.pl">Re: 7.7 Can't we write a wrapper for Windows' driver?</a></li>
-
-</ul>
-
-
-HERE
-
-
-project::captive::doc::Macros->footer();
--- /dev/null
+# $Id$
+# Captive project doc Index page Perl template.
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+#
+# 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; exactly version 2 of June 1991 is required
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+package project::captive::doc::Index;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+our $CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+use My::Web;
+
+
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
+project::captive::doc::Macros->init(
+ "title"=>'Captive NTFS Developer Documentation',
+ "rel_next"=>'About.pm',
+ "rel_up"=>"..",
+ );
+
+
+print <<"HERE";
+
+
+<h1>Captive NTFS Developer Documentation</h1>
+
+<ul>
+
+<li><a href="About.pm">About</a>
+ <ul>
+ <li><a href="About.pm#reasons">Reasons for the Implementation</a></li>
+ <li><a href="About.pm#challenges">Challenges of the Project</a></li>
+ <li><a href="About.pm#versions">Microsoft Windows Versions Compatibility</a></li>
+ </ul></li>
+
+<li><a href="Architecture.pm">Architecture</a>
+ <ul>
+ <li><a href="Architecture.pm#existing_emulation">Existing Emulation Projects</a></li>
+ <li><a href="Architecture.pm#law">Laws and Licensing Conditions</a>
+ <ul>
+ <li><a href="Architecture.pm#law_servicepack">Microsoft Service Pack</a></li>
+ </ul></li>
+
+ <li><a href="Components.pm">Project Components</a></li>
+
+ <li><a href="Reverse.pm">Reverse Engineering</a>
+ <ul>
+ <li><a href="Reverse.pm#dumpbin">dumpbin.exe</a></li>
+ <li><a href="Reverse.pm#WinDbg">WinDbg Windows NT kernel debugging</a>
+ <ul>
+ <li><a href="Reverse.pm#WinDbg_WinDbg">WinDbg side setup</a></li>
+ <li><a href="Reverse.pm#WinDbg_kern">Setup of the side being kernel-debugged</a></li>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+
+<li><a href="Details.pm">Implementation Details</a>
+
+ <ul>
+ <li><a href="CacheManager.pm">NT Cache Manager</a>
+ <ul>
+ <li><a href="CacheManager.pm#TraceFS">TraceFS NT Cache Manager Tracer</a>
+ <ul>
+ <li><a href="CacheManager.pm#TraceFS_general">TraceFS for general API tracing</a></li>
+ </ul></li>
+ </ul></li>
+
+ <li><a href="Details.pm#emulmeth">Choice of the Emulation Methods</a>
+ <ul>
+ <li><a href="Details.pm#emulmeth_vm">Virtualmachine Running the Original W32 Subsystem</a></li>
+ <li><a href="Details.pm#method_ntoskrnl">"ntoskrnl.exe" Inside Virtual Address Space</a></li>
+ <li><a href="Details.pm#emulmeth_fs">Filesystem Driver Inside Virtual Address Space</a></li>
+ </ul></li>
+ <li><a href="Details.pm#apichoice">API Function Implementation Choices</a></li>
+ <li><a href="Details.pm#sandbox">Sandboxing of W32 Filesystem</a></li>
+ <li><a href="Details.pm#patched">"patched" vs. "unpatched" Libraries</a></li>
+ <li><a href="Details.pm#mman">Memory Management</a></li>
+ <li><a href="Details.pm#unicode">Unicode Strings and Characters</a></li>
+ <li><a href="Details.pm#binfmt">Supported Binary Formats</a></li>
+ <li><a href="Details.pm#mounted_one">At Most One Mounted Filesystem</a></li>
+ <li><a href="Details.pm#synchronous">Multithreading and Multiple Processors</a></li>
+ <li><a href="Details.pm#paranoia">Paranoia Checks</a></li>
+ <li><a href="Details.pm#logfile">STATUS_LOG_FILE_FULL</a></li>
+ <li><a href="Details.pm#parent_connector">ParentConnector volume remounter</a></li>
+
+ <li><a href="../apiref/">Captive API Reference Manual (fragment)</a></li>
+
+ <li><a href="APITypes.pm">API Function Implementation Choices</a>
+ <ul>
+ <li><a href="APITypes.pm#functype_pass">Direct Pass to Original "ntoskrnl.exe"</a>
+ <ul>
+ <li><a href="APITypes.pm#functype_pass_fromunix">Pass from UNIX Code</a></li>
+ <li><a href="APITypes.pm#functype_pass_fromw32">Pass from W32 Code</a></li>
+ </ul></li>
+ <li><a href="APITypes.pm#functype_wrap">Wrap of the Original "ntoskrnl.exe" Function</a>
+ <ul>
+ <li><a href="APITypes.pm#functype_wrap_fromunix">Wrapping of Call from UNIX Code</a></li>
+ <li><a href="APITypes.pm#functype_wrap_fromw32">Wrapping of Call from W32 Code</a></li>
+ </ul></li>
+ <li><a href="APITypes.pm#functype_native">Native Implementation</a>
+ <ul>
+ <li><a href="APITypes.pm#functype_native_fromunix">Native Implementation Called from UNIX Code</a></li>
+ <li><a href="APITypes.pm#functype_native_fromw32">Native Implementation of "unpatched"
+ Library Function Called from W32 Code</a></li>
+ <li><a href="APITypes.pm#functype_native_fromw32_patched">Native Implementation of "patched"
+ Library Function Called from W32 Code</a></li>
+ <li><a href="APITypes.pm#functype_native_reactos">Native Implementation - ReactOS</a></li>
+ <li><a href="APITypes.pm#functype_native_wine">Native Implementation – Wine</a></li>
+ <li><a href="APITypes.pm#functype_native_libcaptive">Native Implementation – Project Specific</a></li>
+ </ul></li>
+ <li><a href="APITypes.pm#functype_undef">Undefined Function</a></li>
+ </ul></li>
+
+ <li><a href="CallType.pm">API Function Calling Conventions</a>
+ <ul>
+ <li><a href="CallType.pm#calltype_cdecl">W32 Calling Convention "cdecl"</a></li>
+ <li><a href="CallType.pm#calltype_stdcall">W32 Calling Convention "stdcall"</a></li>
+ <li><a href="CallType.pm#calltype_fastcall">W32 Calling Convention "fastcall"</a></li>
+ </ul></li>
+ </ul></li>
+
+<li><a href="TODO.pm#todo_fsck">TODO: Fsck of NTFS</a></li>
+<li><a href="TODO.pm#todo_surprise">TODO: NTFS Support for Partition Surprise</a></li>
+
+<li><a href="Related.pm">Related Projects</a>
+ <ul>
+ <li><a href="Related.pm#LinuxNTFScompet">Linux NTFS</a></li>
+ <li><a href="Related.pm#Paragon">Paragon NTFS for Linux</a></li>
+ <li><a href="Related.pm#NTPwd">NTPwd NTFS Driver</a></li>
+ <li><a href="Related.pm#vmware">VMware Workstation</a></li>
+ <li><a href="Related.pm#wine">Wine Project</a></li>
+ <li><a href="Related.pm#ntfs98">NTFS for Windows 98</a></li>
+ <li><a href="Related.pm#ntfsdos">NTFSDOS Professional</a></li>
+ </ul></li>
+
+<li><a href="LinuxNTFS.pm">Re: 7.7 Can't we write a wrapper for Windows' driver?</a></li>
+
+</ul>
+
+
+HERE
+
+
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc LinuxNTFS page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: Captive vs. Linux-NTFS',
- "rel_prev"=>'Related.html.pl',
+ "rel_prev"=>'Related.pm',
);
<p><span class="re">> It would have to run as part of the kernel which would mean
that if it went wrong it could crash the machine. With no source, we might not
be able to work around the problem.</span><br />
- @{[ a_href 'Details.html.pl#sandbox','Nope' ]},
+ @{[ a_href 'Details.pm#sandbox','Nope' ]},
@{[ a_href 'http://lufs.sourceforge.net/lufs/','Linux Userland File System (LUFS)' ]}
moves the filesystem implementation to UNIX userland where the Microsoft
Windows filesystem is completely unarmed by Captive jail of chroot(2),
the other kernel coders would not investigate any problems if someone had used
the NTFS wrapper.</span><br />
It does not apply to this project due to the implemented
- @{[ a_href 'Details.html.pl#sandbox','filesystem separation' ]}.</p>
+ @{[ a_href 'Details.pm#sandbox','filesystem separation' ]}.</p>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
--- /dev/null
+/* $Id$
+ * CSS of Captive project doc macros.
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+.productname { font-family: cursive; }
+.fname { font-family: monospace; }
+.constant { font-family: monospace; }
+.author { font-family: cursive; }
+.stuff { font-style: italic; font-size: larger; margin-left: 20%; margin-right: 10%; }
+.function { font-family: monospace; }
+.type { font-family: monospace; }
+.command { font-family: monospace; }
+.instruction { font-style: italic; }
+caption { caption-side: bottom; }
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc macros.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
);
our @ISA=qw(Exporter);
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-Wrequire 'My::Project';
-
-
-sub init ($%)
-{
-my($class,%args)=@_;
-
- %args=(
- "rel_start"=>top_dir("/project/captive/"),
- "rel_up"=>top_dir("/project/captive/doc/"),
- %args);
- My::Web->init(
- "head_css"=>"
-.productname { font-family: cursive; }
-.fname { font-family: monospace; }
-.constant { font-family: monospace; }
-.author { font-family: cursive; }
-.stuff { font-style: italic; font-size: larger; margin-left: 20%; margin-right: 10%; }
-.function { font-family: monospace; }
-.type { font-family: monospace; }
-.command { font-family: monospace; }
-.instruction { font-style: italic; }
-",
- "WebConfig::heading_novskip"=>1,
- %args,
- );
- My::Web->heading();
- print My::Project->section("captive");
- $class->navigate();
-}
+Wrequire 'project::Lib';
-sub footer ($)
-{
-my($class)=@_;
- print vskip "2ex";
- project::captive::doc::Macros->navigate("footer");
- My::Web->footer();
-}
+our $HTML_TEST=0;
sub navigate ($;$)
{
my($class,$where)=@_;
- print '<table border="0" width="100%"><tr>'."\n";
- print '<col width="'.$_.'%" />'."\n" for (qw(10 20 40 20 10));
- print '<td></td>'."\n";
- print '<td align="left">';
- print img "/My/arrow-left" ,"Previous document","a_href"=>$My::Web::W->{"rel_prev"}
- if $My::Web::W->{"rel_prev"};
- print '</td>'."\n";
- print '<td align="center">';
- print img "/My/arrow-up" ,"Parent","a_href"=>$My::Web::W->{"rel_up"}
- if $My::Web::W->{"rel_up"} && !($where && $where eq "footer");
- print '</td>'."\n";
- print '<td align="right">';
- print img "/My/arrow-right","Next document","a_href"=>$My::Web::W->{"rel_next"}
- if $My::Web::W->{"rel_next"};
- print '</td>'."\n";
- print '<td></td>'."\n";
- print '</tr></table>'."\n";
+ print '<table border="0" width="100%">'."\n";
+ # FIXME: print '<col width="'.$_.'%" />'."\n" for (qw(10 20 40 20 10));
+ # causes whole invisible icons in: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050719 Galeon/1.3.21
+ print '<tr>'."\n";
+ print '<td></td>'."\n";
+ print '<td align="left">';
+ print img "/My/arrow-left" ,"Previous document","a_href"=>$My::Web::W->{"rel_prev"}
+ if $My::Web::W->{"rel_prev"};
+ print '</td>'."\n";
+ print '<td align="center">';
+ print img "/My/arrow-up" ,"Parent","a_href"=>$My::Web::W->{"rel_up"}
+ if $My::Web::W->{"rel_up"} && !($where && $where eq "footer");
+ print '</td>'."\n";
+ print '<td align="right">';
+ print img "/My/arrow-right","Next document","a_href"=>$My::Web::W->{"rel_next"}
+ if $My::Web::W->{"rel_next"};
+ print '</td>'."\n";
+ print '<td></td>'."\n";
+ print '</tr>'."\n";
+ print '</table>'."\n";
}
sub doc_img ($$)
my($img_base,$caption)=@_;
my $r="";
- $r.='<table border="0" align="center">'."\n";
- $r.="\t<tr><td>".img($img_base,$caption)."</td></tr>\n";
+ $r.='<table border="0" width="100%">'."\n";
$r.="\t<caption>$caption</caption>\n";
+ $r.="\t".'<tr><td align="center">'.img($img_base,$caption)."</td></tr>\n";
$r.='</table>'."\n";
$r.=vskip "2ex";
return $r;
($text || $filename);
}
-our $freespeech=a_href 'http://www.gnu.org/philosophy/free-sw.html','Free';
-our $freebeer=a_href 'http://www.gnu.org/philosophy/free-sw.html','free (as in beer)';
-
sub productname
{
my($url,$name)=@_;
- return '<span class="productname">'.a_href($url,CGI::escapeHTML($name)).'</span>';
+ return '<span class="productname">'.a_href($url,escapeHTML($name)).'</span>';
+}
+our($Wine,$ReactOS,$LinuxNTFS,$GnomeVFS,$GnomeVFSmodule,$gnulinux,$freespeech,$freebeer);
+
+sub _footer
+{
+ print vskip "2ex";
+ project::captive::doc::Macros->navigate("footer");
+}
+
+sub init ($%)
+{
+my($class,%args)=@_;
+
+ My::Web->init(
+ "css_push"=>"./Macros.css",
+ "heading_novskip"=>1,
+ "rel_start"=>"..", # possibly overridable
+ "rel_up"=>".", # possibly overridable
+ "footing_delimit_sub_push"=>\&_footer,
+ "__PACKAGE__"=>caller(), # possibly overridable
+ %args,
+ );
+
+ $Wine=productname 'http://www.winehq.com/','Wine';
+ $ReactOS=productname 'http://www.reactos.com/','ReactOS';
+ $LinuxNTFS=productname 'http://linux-ntfs.sourceforge.net/','Linux NTFS';
+ $GnomeVFS=productname 'http://developer.gnome.org/doc/API/gnome-vfs/','Gnome-VFS';
+ $GnomeVFSmodule=productname 'http://developer.gnome.org/doc/API/gnome-vfs/modules.html','Gnome-VFS-module';
+ $gnulinux='GNU/Linux';
+ $freespeech=a_href 'http://www.gnu.org/philosophy/free-sw.html','Free';
+ $freebeer=a_href 'http://www.gnu.org/philosophy/free-sw.html','free (as in beer)';
+
+ My::Web->heading();
+ print(project::Lib->section("captive"));
+ $class->navigate();
}
-our $Wine=productname 'http://www.winehq.com/','Wine';
-our $ReactOS=productname 'http://www.reactos.com/','ReactOS';
-our $LinuxNTFS=productname 'http://linux-ntfs.sourceforge.net/','Linux NTFS';
-our $GnomeVFS=productname 'http://developer.gnome.org/doc/API/gnome-vfs/','Gnome-VFS';
-our $GnomeVFSmodule=productname 'http://developer.gnome.org/doc/API/gnome-vfs/modules.html','Gnome-VFS-module';
-our $gnulinux='GNU/Linux';
1;
fig \
dia
-EXTRA_DIST+= \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm \
+ APITypes.pm \
+ About.pm \
+ Architecture.pm \
+ CacheManager.pm \
+ CallType.pm \
+ Components.pm \
+ Details.pm \
+ LinuxNTFS.pm \
+ Macros.pm \
+ Related.pm \
+ Reverse.pm \
+ TODO.pm
CLEANFILES+= \
*.gif
+
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Related Projects page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: Related Projects',
- "rel_prev"=>'TODO.html.pl',
- "rel_next"=>'LinuxNTFS.html.pl',
+ "rel_prev"=>'TODO.pm',
+ "rel_next"=>'LinuxNTFS.pm',
);
very comfortable as you never have access to all the files of the other
operating system.</p>
- <a name="LinuxNTFScompet"><h2>$LinuxNTFS</h2></a>
+ <h2 id="LinuxNTFScompet">$LinuxNTFS</h2>
<p>Although this project takes a completely different approach and has
a different architecture, the final goal is the same as for this
<span class="fname">cdfs.sys</span> files from the user's
<span class="productname">NTFS</span> partition.</p>
- <a name="Paragon"><h2><span class="productname">
- Paragon @{[ a_href 'http://www.ntfs-linux.com/','NTFS for Linux' ]}</span></h2></a>
+ <h2 id="Paragon"><span class="productname">
+ Paragon @{[ a_href 'http://www.ntfs-linux.com/','NTFS for Linux' ]}</span></h2>
<p>Real competition: Closed-source read/write @{[ '$69.95' ]} equivalent.</p>
<p>This closed-source product also means loosing the security of your
GNU/Linux system by running closed-source software product.</p>
- <a name="NTPwd"><h2><span class="productname">@{[ a_href 'http://www.cgsecurity.org/ntfs.html',
- 'NTPwd NTFS Driver' ]}</span></h2></a>
+ <h2 id="NTPwd"><span class="productname">@{[ a_href 'http://www.cgsecurity.org/ntfs.html',
+ 'NTPwd NTFS Driver' ]}</span></h2>
<p>DOS based @{[ a_href 'http://www.gnu.org/licenses/gpl.html','GPL-2.0' ]}
read-write NTFS driver. Filesystem structures are reverse engineered in the
- way of @{[ a_href 'Related.html.pl#LinuxNTFScompet','Linux-NTFS Project' ]}. As it is not very
+ way of @{[ a_href 'Related.pm#LinuxNTFScompet','Linux-NTFS Project' ]}. As it is not very
actively maintained it reaches a lower level of
<span class="productname">NTFS</span> compatibility.</p>
- <a name="vmware"><h2>@{[ a_href 'http://www.vmware.com/download/workstation.html','VMware Workstation' ]}</h2></a>
+ <h2 id="vmware">@{[ a_href 'http://www.vmware.com/download/workstation.html','VMware Workstation' ]}</h2>
<p>Real competition: Closed-source read/write @{[ '$299' ]} equivalent.</p>
a network file sharing through a VMware virtual network card.</p>
<p>You need @{[ '$299' ]} for this product and you need to
- give up your system security by running un@{[ a_href 'Details.html.pl#sandbox','sandbox' ]}ed
+ give up your system security by running un@{[ a_href 'Details.pm#sandbox','sandbox' ]}ed
closed-source program in your GNU/Linux.</p>
- <a name="wine"><h2>@{[ a_href 'http://www.winehq.com/','Wine Project' ]}</h2></a>
+ <h2 id="wine">@{[ a_href 'http://www.winehq.com/','Wine Project' ]}</h2>
<p>No code could be shared – Wine emulates only Microsoft Windows userland.
Filesystem drivers completely belong to Microsoft Windows kernelland.</p>
- <a name="ntfs98"<h2>@{[ a_href 'http://www.sysinternals.com/ntw2k/freeware/ntfswin98.shtml','NTFS for Windows 98' ]}</h2></a>
+ <h2 id="ntfs98">@{[ a_href 'http://www.sysinternals.com/ntw2k/freeware/ntfswin98.shtml','NTFS for Windows 98' ]}</h2>
<p>Closed-source read-only-crippled @{[ '$0' ]} equivalent for Microsoft Windows.</p>
Windows 98</i> as the same company also sells the following product sharing
the same codebase:</p>
- <a name="ntfsdos"><h2>@{[ a_href 'http://www.winternals.com/products/repairandrecovery/ntfsdospro.asp',
- 'NTFSDOS Professional' ]}</h2></a>
+ <h2 id="ntfsdos">@{[ a_href 'http://www.winternals.com/products/repairandrecovery/ntfsdospro.asp',
+ 'NTFSDOS Professional' ]}</h2>
<p>Closed-source read/write @{[ '$299' ]} equivalent for MS-DOS.</p>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc Reverse Engineering page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: Reverse Engineering',
- "rel_prev"=>'Components.html.pl',
- "rel_next"=>'CacheManager.html.pl',
+ "rel_prev"=>'Components.pm',
+ "rel_next"=>'CacheManager.pm',
);
print <<"HERE";
-<a name="reverse"><h1>Reverse Engineering</h1></a>
+<h1 id="reverse">Reverse Engineering</h1>
<p>This project has no intentions to reverse engineer and document the
filesystem data structures themselves since they are being encapsulated by
interpret debug symbols from W32 <span class="fname">.PDB</span>
(Program DataBase) debug information files.</p>
- <a name="dumpbin"><h2><span class="productname">dumpbin.exe</span></h2></a>
+ <h2 id="dumpbin"><span class="productname">dumpbin.exe</span></h2>
<p>You should use the following options for
<span class="productname">dumpbin.exe</span>:</p>
<p>PDB file found at '.\\FILENAME.pdb'</p>
</blockquote>
- <a name="WinDbg"><h2><span class="productname">WinDbg</span> Windows NT kernel debugging</h2></a>
+ <h2 id="WinDbg"><span class="productname">WinDbg</span> Windows NT kernel debugging</h2>
<p><span class="productname">WinDbg</span> is downloadable from:
@{[ a_href 'http://www.microsoft.com/whdc/ddk/debugging/installx86.mspx' ]}</p>
hardware and you can connect them by a virtual serial port provided by
<span class="productname">VMware</span>.</p>
- <a name="WinDbg_WinDbg"><h3><span class="productname">WinDbg</span> side setup</h3></a>
+ <h3 id="WinDbg_WinDbg"><span class="productname">WinDbg</span> side setup</h3>
@{[ doc_img 'ntdebug-vmware-windbg',
'<span class="productname">VMware</span> virtual serial port'
@{[ doc_img 'ntdebug-windbg-port','Port settings of <span class="productname">WinDbg</span>' ]}
@{[ doc_img 'ntdebug-windbg-sym','Symbols files location of <span class="productname">WinDbg</span>' ]}
- <span class="constant">Symbols</span> should point to the directory where
+ <p><span class="constant">Symbols</span> should point to the directory where
reside files extracted from the symbol archive for your version of
<span class="productname">Microsoft Windows</span>. In the case of the
recommended <span class="productname">Microsoft Windows XP Service Pack 1 Checked Build</span>
<blockquote class="command">
<p># Rename xpsp1sym_x86_chk.exe contents .pdb files for WinDbg<br />
- @{[ CGI::escapeHTML(q{for i in *.pdb*;do ext="`echo $i|sed 's/^.*\.pdb\.\(.*\)$/\1/'`";if [ "$i" = "$ext" ];then echo "BAD:$i";break;fi;base="`echo $i|sed 's/\(\.pdb\)\..*$/\1/'`";echo "md $ext";echo "move /-y $i $ext\\$base";done|sort -u|sed 's/$/'`echo -ne '\r'`'/g' >/tmp/rename.bat}) ]}</p>
+ @{[ escapeHTML(q{for i in *.pdb*;do ext="`echo $i|sed 's/^.*\.pdb\.\(.*\)$/\1/'`";if [ "$i" = "$ext" ];then echo "BAD:$i";break;fi;base="`echo $i|sed 's/\(\.pdb\)\..*$/\1/'`";echo "md $ext";echo "move /-y $i $ext\\$base";done|sort -u|sed 's/$/'`echo -ne '\r'`'/g' >/tmp/rename.bat}) ]}</p>
</blockquote>
<p>The resulting <span class="command">rename.bat</span> for
@{[ doc_img 'ntdebug-windbg-boot','Successfuly connected <span class="productname">WinDbg</span>' ]}
- <a name="WinDbg_kern"><h3>Setup of the side being kernel-debugged</h3></a>
+ <h3 id="WinDbg_kern">Setup of the side being kernel-debugged</h3>
@{[ doc_img 'ntdebug-vmware-xpdebug',
'<span class="productname">VMware</span> virtual serial port'
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
-#! /usr/bin/perl
-#
# $Id$
# Captive project doc TODO page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
-BEGIN { Wuse 'project::captive::doc::Macros'; }
+sub handler
+{
+ BEGIN { Wuse 'project::captive::doc::Macros'; }
project::captive::doc::Macros->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>'Captive NTFS Developer Documentation: TODO',
- "rel_prev"=>'CallType.html.pl',
- "rel_next"=>'Related.html.pl',
+ "rel_prev"=>'CallType.pm',
+ "rel_next"=>'Related.pm',
);
print <<"HERE";
-<a name="todo_fsck"><h1>TODO: Fsck of NTFS</h1></a>
+<h1 id="todo_fsck">TODO: Fsck of NTFS</h1>
<p>Currently this project does not support checking of data structures
of NTFS volume as being provided by <span class="command">chkdsk.exe</span>
@{[ a_href 'http://www.sysinternals.com/ntw2k/source/fmifs.shtml',
'Chkdskx and Formatx' ]}
by @{[ a_href 'http://www.sysinternals.com/aboutus.shtml',
- 'Mark Russinovich' ]}.
+ 'Mark Russinovich' ]}.</p>
<p>I assume its execution falls completely
- @{[ a_href 'Architecture.html.pl#existing_emulation','out of scope' ]}
+ @{[ a_href 'Architecture.pm#existing_emulation','out of scope' ]}
of this project as it is W32 userland.</p>
<p>This possibility was not yet investigated in any way.</p>
-<a name="todo_surprise"><h1>TODO: NTFS Support for
- <span class="productname">@{[ a_href '/project/surprise/','Partition Surprise' ]}</span></h1></a>
+<h1 id="todo_surprise">TODO: NTFS Support for
+ <span class="productname">@{[ a_href '/project/surprise/','Partition Surprise' ]}</span></h1>
<p>There already exists
<span class="productname">@{[ a_href 'http://mlf.linux.rulez.org/mlf/ezaz/ntfsresize.html','ntfsresize' ]}</span>
HERE
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::checkstatic'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::checkstatic::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::checkstatic::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::checkstatic::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::checkstatic' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::checkstatic'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::checkstatic::ListItem;
+package project::checkstatic::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::cvsbranchdiff'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::cvsbranchdiff::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::cvsbranchdiff::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::cvsbranchdiff::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::cvsbranchdiff' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::cvsbranchdiff'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::cvsbranchdiff::ListItem;
+package project::cvsbranchdiff::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::cvsutil'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::cvsutil::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::cvsutil::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::cvsutil::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>There already exists package @{[ a_href 'http://www.red-bean.com/cvsutils/','CVS Utilities' ]}
-with similiar features - this utility should be merged into it.
-Pointed out by the courtesy of Jesse Glick.</p>
-HERE
-
-
-My::Web->footer();
#! /usr/bin/perl
#
# $Id$
-# Definition of 'My::Project::cvsutil' for list.cgi.pl
+# Main page of 'My::Project::cvsutil'
# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# This program is free software; you can redistribute it and/or modify
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::cvsutil::ListItem;
+package project::cvsutil::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>There already exists package @{[ a_href 'http://www.red-bean.com/cvsutils/','CVS Utilities' ]}
+with similiar features - this utility should be merged into it.
+Pointed out by the courtesy of Jesse Glick.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::d1xnet'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::d1xnet::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::d1xnet::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::d1xnet::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::d1xnet' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::d1xnet'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::d1xnet::ListItem;
+package project::d1xnet::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://d1x.warpcore.org/','D1X').' TCP/IP',
+ "name"=>sub { return a_href('http://d1x.warpcore.org/','D1X').' TCP/IP'; },
"platform"=>"patch",
"priority"=>200,
"icon"=>"exit03.jpeg",
"download"=>"d1x-tcpip-0.99.1.diff.gz",
- "summary"=>a_href('http://d1x.warpcore.org/','D1X').' native TCP/IP support patch',
+ "summary"=>sub { return a_href('http://d1x.warpcore.org/','D1X').' native TCP/IP support patch'; },
"license"=>"PD",
"maintenance"=>"accepted",
"language"=>"C module",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>No further mess with @{[ a_href 'ftp://linux.kali.net/outgoing/kalinix/','KaliNix' ]},
KIX or any other IPX layer convertor. This patch adds true TCP/IP networking
capability to @{[ a_href 'http://d1x.warpcore.org/','D1X' ]} version 1.30.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::doswatch'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::doswatch::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::doswatch::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::doswatch::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::doswatch' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::doswatch'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::doswatch::ListItem;
+package project::doswatch::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"i386 asm",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Resident program which displays all the file (and other) DOS function
calls access on the secondary console. Useful for many failure discoveries
for weird software packages with broken file/directory access.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::energie'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::energie::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::energie::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::energie::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::energie' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::energie'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::energie::ListItem;
+package project::energie::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"platform"=>"web",
"priority"=>240,
"cvs"=>"www/www.energie.vellum.cz",
- "link-Example web"=>a_href('http://www.energie.vellum.cz/'),
- "summary"=>a_href('http://www.php.net/','PHP')." web framework",
+ "link-Example web"=>sub { return a_href('http://www.energie.vellum.cz/'); },
+ "summary"=>sub { return a_href('http://www.php.net/','PHP')." web framework"; },
"license"=>"GPL",
- "maintenance"=>"obsolete-".a_href('http://www.php.net/','PHP')." is deprecated in favor of "
- .a_href('http://www.perl.org/','Perl')." - use ".a_href("/project/MyWeb/","My::Web"),
+ "maintenance"=>sub {
+ return "obsolete-".a_href('http://www.php.net/','PHP')." is deprecated in favor of "
+ .a_href('http://www.perl.org/','Perl')." - use ".a_href("/project/MyWeb/","My::Web");
+ },
"language"=>"PHP",
"description"=><<"HERE",
<p>Each web author has his own web framework reusable for other web developers
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::etherealmmse'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::etherealmmse::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::etherealmmse::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::etherealmmse::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::etherealmmse' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::etherealmmse'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::etherealmmse::ListItem;
+package project::etherealmmse::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.ethereal.com/','Ethereal').' MMSE fix',
+ "name"=>sub { return a_href('http://www.ethereal.com/','Ethereal').' MMSE fix'; },
"platform"=>"patch",
"priority"=>360,
"icon"=>"elogo3d100x100",
"download-patch"=>'http://www.ethereal.com/cgi-bin/viewcvs.cgi/ethereal/packet-mmse.c.diff?r2=1.15&r1=1.14&diff_format=u',
"license"=>"GPL",
"maintenance"=>"accepted",
- "sponsorship"=>a_href('http://www.atspraha.cz/','Advanced Telecom Services'),
+ "sponsorship"=>sub { return a_href('http://www.atspraha.cz/','Advanced Telecom Services'); },
"language"=>"C patch",
"description"=><<"HERE",
<p>Fixed a tiny bug in MMS Encapsulation protocol decoding.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::etherealwsp'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::etherealwsp::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::etherealwsp::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::etherealwsp::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::etherealwsp' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::etherealwsp'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::etherealwsp::ListItem;
+package project::etherealwsp::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.ethereal.com/','Ethereal').' WSP patch',
+ "name"=>sub { return a_href('http://www.ethereal.com/','Ethereal').' WSP patch'; },
"platform"=>"patch",
"priority"=>350,
"icon"=>"elogo3d100x100",
"download-patch"=>'ethereal-2002-08-03-packet-wsp.c-contentlocation.diff',
"license"=>"GPL",
"maintenance"=>"ignored",
- "sponsorship"=>a_href('http://www.atspraha.cz/','Advanced Telecom Services'),
+ "sponsorship"=>sub { return a_href('http://www.atspraha.cz/','Advanced Telecom Services'); },
"language"=>"C patch",
"description"=><<"HERE",
<p>Extended decoded headers for '<i>Content-Location</i>'. This header
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::fixhtml'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::fixhtml::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::fixhtml::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"fixhtml",
+ "platform"=>"unixuser",
+ "trivia"=>1,
+ "priority"=>20,
+ "download"=>"fixhtml",
+ "summary"=>"Convert HTML files URLs to relative",
+ "license"=>"PD",
+ "maintenance"=>sub {
+ return "obsolete-".a_href('http://wget.sunsite.dk/','Wget')." option <b>--convert-links</b> does the same.";
+ },
+ "language"=>"Perl",
+ "description"=><<"HERE",
+<p>Program translates the URL references in your downloaded web pages to be relative
+and therefore browsable without Internet access.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
<p>If you download/grab the whole (or its part) of some web site (for example
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::fixhtml' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::fixhtml::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"fixhtml",
- "platform"=>"unixuser",
- "trivia"=>1,
- "priority"=>20,
- "download"=>"fixhtml",
- "summary"=>"Convert HTML files URLs to relative",
- "license"=>"PD",
- "maintenance"=>"obsolete-".a_href('http://wget.sunsite.dk/','Wget')." option <b>--convert-links</b> does the same.",
- "language"=>"Perl",
- "description"=><<"HERE",
-<p>Program translates the URL references in your downloaded web pages to be relative
-and therefore browsable without Internet access.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::gladewsrc'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::gladewsrc::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::gladewsrc::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::gladewsrc::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Patch got integrated to <b>glade/main.c</b> revision <b>1.10</b> (although
-modified by Damon Chaplin).</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::gladewsrc' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::gladewsrc'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::gladewsrc::ListItem;
+package project::gladewsrc::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://glade.gnome.org/','Glade').' -w',
+ "name"=>sub { return a_href('http://glade.gnome.org/','Glade').' -w'; },
"platform"=>"patch",
"priority"=>310,
"icon"=>"glade-icon",
"link-ChangeLog entry"=>'http://cvs.gnome.org/bonsai/cvslog.cgi?file=glade%2Fglade/main.c&root=/cvs/gnome#1.10',
"license"=>"GPL",
"maintenance"=>"accepted",
- "sponsorship"=>a_href('http://www.suse.com/','SuSE'),
+ "sponsorship"=>sub { return a_href('http://www.suse.com/','SuSE'); },
"language"=>"C patch",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Automatically generate {interface,support}.[ch] and other source files
by @{[ a_href 'http://glade.gnome.org/','Glade' ]}.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Patch got integrated to <b>glade/main.c</b> revision <b>1.10</b> (although
+modified by Damon Chaplin).</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::gsmperl'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::gsmperl::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::gsmperl::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::gsmperl::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::gsmperl' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::gsmperl'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::gsmperl::ListItem;
+package project::gsmperl::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.tektonica.com/projects/gsmsms/','GSM::SMS').' patch',
+ "name"=>sub { return a_href('http://www.tektonica.com/projects/gsmsms/','GSM::SMS').' patch'; },
"platform"=>"patch",
"priority"=>520,
"cvs"=>"gsmperl/GSM:lace",
- "summary"=>'Extension of '.a_href('http://www.tektonica.com/projects/gsmsms/','GSM::SMS')
- .' for EMS+Alcatel',
+ "summary"=>sub {
+ return 'Extension of '.a_href('http://www.tektonica.com/projects/gsmsms/','GSM::SMS').' for EMS+Alcatel';
+ },
"license"=>"PD",
"maintenance"=>"pending",
- "sponsorship"=>a_href('http://www.atspraha.cz/','Advanced Telecom Services'),
+ "sponsorship"=>sub { return a_href('http://www.atspraha.cz/','Advanced Telecom Services'); },
"language"=>"Perl",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Patch extends @{[ a_href 'http://www.tektonica.com/projects/gsmsms/','GSM::SMS' ]}
package by EMS and Alcatel-proprietary formats. Only picture/animations have
been implemented now, EMS/Alcatel ringtones are not yet supported.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::int13sniff'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::int13sniff::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::int13sniff::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::int13sniff::ListItem::ListItem,
- );
-
-
-print centerimg "int13sniff-snap","Boot Snapshot";
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::int13sniff' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::int13sniff'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::int13sniff::ListItem;
+package project::int13sniff::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"link-parent Surprise project"=>"/project/surprise/",
"license"=>"GPL",
"maintenance"=>"ready",
- "sponsorship"=>a_href('http://www.suse.com/','SuSE'),
+ "sponsorship"=>sub { return a_href('http://www.suse.com/','SuSE'); },
"language"=>"i386 asm",
"description"=><<"HERE",
<p>Developer tool for PC boot loading analysis. Report all sectors being read
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print centerimg "int13sniff-snap","Boot Snapshot";
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::ircon'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::ircon::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::ircon::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"IRCon",
+ "platform"=>"unixuser",
+ "priority"=>580,
+ "icon"=>"ircon-icon.jpeg",
+ "download"=>"ircon.tar.gz",
+ "link-index of scanned images"=>"ircon-img/",
+ "download-all scanned images"=>"ircon-img.tar",
+ "summary"=>"InfraRed remote control hardware",
+ "license"=>"PD",
+ "maintenance"=>sub { return "obsolete-Superseded by ".a_href('http://www.lirc.org/','LIRC'); },
+ "language"=>"C, Java",
+ "description"=><<"HERE",
+<p>Software package for custom simple hardware connected to PC parallel port
+and transmitting infrared singals to fake real remote TV/video controllers. Hardware
+is also equipped with receiver which is only used during development to grab and decode
+original signals.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
+
print <<"HERE";
<p>Package consists of:</p>
<ul>
<li>Daemon to provide service for easy remote use over network</li>
<li>Multifunction decoder for singal analysis</li>
<li>Database of all the buttons (<strong>including some secret!</strong>) for supported devices</li>
-<lI>Set of CGIs for WWW interface operation support</li>
-<li>Java 1.0 applet for more comforable WWW control from remote (not required, static HTML used if Java not available)</lI>
+<li>Set of CGIs for WWW interface operation support</li>
+<li>Java 1.0 applet for more comforable WWW control from remote (not required, static HTML used if Java not available)</li>
<li>Software for complete tune-up of Maspro SRE-100R as set in text database (not useful, see last notice)</li>
</ul>
<p>Currently supported/decoded devices:</p>
<li><a href="ircon-img/Toshiba-V-800SZ.png">Toshiba V-800SZ video</a></li>
<li><a href="ircon-img/Sharp-VL-N1S.png">Sharp VL-N1S handy video camera</a></li>
</ul>
-<P>Last code touches were done in summer 1997 and it's not in use for now. In fact the hardware
+<p>Last code touches were done in summer 1997 and it's not in use for now. In fact the hardware
should be more intelligent and generate the signal itself as PC hardware simply is too slow to keep up strictly
with the original frequencies and so in about 1 of 30 button presses it misses. Due to this the automatic Maspro
tuning software (generating hundreds of button presses) is not usable.</p>
]}
HERE
-My::Web->footer();
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::ircon' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::ircon::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"IRCon",
- "platform"=>"unixuser",
- "priority"=>580,
- "icon"=>"ircon-icon.jpeg",
- "download"=>"ircon.tar.gz",
- "link-index of scanned images"=>"ircon-img/",
- "download-all scanned images"=>"ircon-img.tar",
- "summary"=>"InfraRed remote control hardware",
- "license"=>"PD",
- "maintenance"=>"obsolete-Superseded by ".a_href('http://www.lirc.org/','LIRC'),
- "language"=>"C, Java",
- "description"=><<"HERE",
-<p>Software package for custom simple hardware connected to PC parallel port
-and transmitting infrared singals to fake real remote TV/video controllers. Hardware
-is also equipped with receiver which is only used during development to grab and decode
-original signals.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::kewensis'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::kewensis::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::kewensis::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::kewensis::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<iframe src="out-list.html" width="90%" height="1500">
-</iframe>
-@{[ vskip "3ex" ]}
-<iframe src="out-edit.html" width="90%" height="500">
-</iframe>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::kewensis' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::kewensis'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::kewensis::ListItem;
+package project::kewensis::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"platform"=>"web",
"priority"=>120,
"cvs"=>"kewensis",
- "summary"=>a_href('http://www.ipni.org/','Plant Name Index').' custom engine',
+ "summary"=>sub { return a_href('http://www.ipni.org/','Plant Name Index').' custom engine'; },
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"PHP, Perl",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>@{[ a_href 'http://www.ipni.org/','International Plant Name Index' ]}
provides information about plants in duplicated and unconveniently searchable
pages. You can download their database and run your own engine on it locally.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<!--iframe src="out-list.html" width="90%" height="1500"-->
+<p>@{[ a_href 'out-list.html','Output listing illustration.' ]}</p>
+<!--/iframe-->
+@{[ vskip "3ex" ]}
+<!--iframe src="out-edit.html" width="90%" height="500"-->
+<p>@{[ a_href 'out-edit.html','Record editing illustration.' ]}</p>
+<!--/iframe-->
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::kix'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::kix::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::kix::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"KIX",
+ "platform"=>"unixuser",
+ "priority"=>110,
+ "download"=>"kix.c",
+ "summary"=>sub { return "Free protocol-compatible ".a_href('http://www.kali.net/','Kali').' server equivalent'; },
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "language"=>"C",
+ "description"=>sub { return <<"HERE"; },
+<p>Server used on GNU/Linux as a replacement for proprietary
+@{[ a_href 'ftp://linux.kali.net/outgoing/kalinix/','KaliNix' ]} network game server.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
<p>You no longer need to run any foreign binaries on your system and connect
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::kix' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::kix::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"KIX",
- "platform"=>"unixuser",
- "priority"=>110,
- "download"=>"kix.c",
- "summary"=>"Free protocol-compatible ".a_href('http://www.kali.net/','Kali').' server equivalent',
- "license"=>"PD",
- "maintenance"=>"ready",
- "language"=>"C",
- "description"=><<"HERE",
-<p>Server used on GNU/Linux as a replacement for proprietary
-@{[ a_href 'ftp://linux.kali.net/outgoing/kalinix/','KaliNix' ]} network game server.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::kware'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::kware::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::kware::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::kware::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Currently only a few functions are implemented and the code is rather
-an ugly hack than professional solution. I do not expect to ever develop
-it into some clean software, take it as it is, improve it or let it be.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::kware' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::kware'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::kware::ListItem;
+package project::kware::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"download"=>"kware.tar.gz",
"summary"=>"Linux kernel drivers in userland for their debugging",
"license"=>"PD",
- "maintenance"=>"obsolete-"
- .a_href('http://user-mode-linux.sourceforge.net/','The User-mode Linux Kernel')." is much more useful now.",
+ "maintenance"=>sub { return "obsolete-"
+ .a_href('http://user-mode-linux.sourceforge.net/','The User-mode Linux Kernel')." is much more useful now.";
+ },
"language"=>"C",
"description"=><<"HERE",
<p>Do you also find debugging of Linux kernel drivers a nightmare? Would you
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Currently only a few functions are implemented and the code is rather
+an ugly hack than professional solution. I do not expect to ever develop
+it into some clean software, take it as it is, improve it or let it be.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::libtool'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::libtool::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::libtool::ListItem::ListItem,
+our @ListItem=(
+ "name"=>sub { return a_href('http://www.gnu.org/software/libtool/libtool.html','GNU Libtool').' fix'; },
+ "platform"=>"patch",
+ "priority"=>620,
+ "summary"=>'Handle duplicate object file names',
+ "download-patch"=>'http://savannah.gnu.org/cgi-bin/cvsweb/libtool/ltmain.in.diff?r1=1.320&r2=1.321',
+ "license"=>"GPL",
+ "maintenance"=>"accepted",
+ "language"=>"sh patch",
+ "description"=><<"HERE",
+<p>Patch fixes linking of convenience libraries (<i>.a</i>) containing two
+conflicting name objects.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
<p>When you include convenience library (<i>.a</i>) containing two conflicting name
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::libtool' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::libtool::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>a_href('http://www.gnu.org/software/libtool/libtool.html','GNU Libtool').' fix',
- "platform"=>"patch",
- "priority"=>620,
- "summary"=>'Handle duplicate object file names',
- "download-patch"=>'http://savannah.gnu.org/cgi-bin/cvsweb/libtool/ltmain.in.diff?r1=1.320&r2=1.321',
- "license"=>"GPL",
- "maintenance"=>"accepted",
- "language"=>"sh patch",
- "description"=><<"HERE",
-<p>Patch fixes linking of convenience libraries (<i>.a</i>) containing two
-conflicting name objects.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::libxml2reader'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::libxml2reader::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::libxml2reader::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::libxml2reader::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Patch got integrated to <b>xmlreader.c</b> revision <b>1.50</b>.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::libxml2reader' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::libxml2reader'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::libxml2reader::ListItem;
+package project::libxml2reader::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.xmlsoft.org/','libxml2').' fix',
+ "name"=>sub { return a_href('http://www.xmlsoft.org/','libxml2').' fix'; },
"platform"=>"patch",
"priority"=>365,
"summary"=>'Fixed incomplete XML text nodes reading',
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Patch got integrated to <b>xmlreader.c</b> revision <b>1.50</b>.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::line9k'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::line9k::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::line9k::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::line9k::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Scheme for battery charger. Review/fixes by the courtesy of <a href="http://www.pavouk.org/">Pavouk</a>.
-Connect serial port (such as <code>/dev/ttyS0</code>) to <code>RS232</code> pins,
-your original mobile phone charge to <code>AC</code> pins. <code>PS/2</code> keyboard
-fork of <code>+5V</code>/<code>GND</code> pins are required to power this hardware switch.</p>
-
-@{[ centerimg "charger.jpeg","AC Switch Photo" ]}
-@{[ vskip "3ex" ]}
-@{[ centerimg "line9k","AC Switch Scheme" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::line9k' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::line9k'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::line9k::ListItem;
+package project::line9k::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Scheme for battery charger. Review/fixes by the courtesy of <a href="http://www.pavouk.org/">Pavouk</a>.
+Connect serial port (such as <code>/dev/ttyS0</code>) to <code>RS232</code> pins,
+your original mobile phone charge to <code>AC</code> pins. <code>PS/2</code> keyboard
+fork of <code>+5V</code>/<code>GND</code> pins are required to power this hardware switch.</p>
+
+@{[ centerimg "charger.jpeg","AC Switch Photo" ]}
+@{[ vskip "3ex" ]}
+@{[ centerimg "line9k","AC Switch Scheme" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ Index.pm
+
EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
- line9k.fig
+ line9k.fig
CLEANFILES+= \
- line9k.fig.bak \
- line9k.png \
- line9k.gif
+ line9k.fig.bak \
+ line9k.png \
+ line9k.gif
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::lynxilla'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::lynxilla::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::lynxilla::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::lynxilla::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::lynxilla' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::lynxilla'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::lynxilla::ListItem;
+package project::lynxilla::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"priority"=>460,
# FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
"download"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/nethome/.userContent.css?rev=HEAD",
- "summary"=>a_href('http://lynx.isc.org/','Lynx').' look&feel with '
- .a_href('http://www.mozilla.org/','Mozilla').' web compatibility',
+ "summary"=>sub {
+ return a_href('http://lynx.isc.org/','Lynx').' look&feel with '
+ .a_href('http://www.mozilla.org/','Mozilla').' web compatibility';
+ },
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"CSS",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>@{[ a_href 'http://lynx.isc.org/','Lynx' ]} brings unified colors and fonts of all web pages.
Unfortunately it is not the one of those two browsers respected by broken websites.
To get back the unified look and feel of all the web pages while retaining the web compatibility
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::mdsms'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::mdsms::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::mdsms::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::mdsms::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>This software should be general-UNIX compatible. Please wait a minute when
-you run it, under various UNIXes it may take some time to finish.</p>
-<p><b>GSM network codes: </b>GSM network code needs to be given as parameter during
-sending of operator logo. Nice list of the codes you will find
-@{[ a_href 'http://kbs.cs.tu-berlin.de/~jutta/gsm/gsm-list.html','here' ]}.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::mdsms' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::mdsms'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::mdsms::ListItem;
+package project::mdsms::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"download-sources .tar.Z"=>"dist/mdsms-1.5.3.tar.Z",
"download-logos from KESSLER Wireless Design"=>"http://www.kessler-design.com/wireless/samples.php3",
"cvs"=>"mdsms",
- "link-".a_href('http://freshmeat.net/','Freshmeat')=>
- a_href('http://freshmeat.net/projects/mdsms/','Mobile Device SMS tool'),
+ "link-Freshmeat"=>sub {
+ return a_href('http://freshmeat.net/projects/mdsms/','Mobile Device SMS tool');
+ },
"summary"=>"Mobile Device SMS Tool",
"license"=>"GPL",
"maintenance"=>"ready",
- "sponsorship"=>join(", ",
+ "sponsorship"=>sub { return join(", ",
a_href('http://www.tencom.cz/','TENcom Trade')
- .'/'.a_href('http://www.sme.cz/default.asp?lng=en&ver=html','SME'),
+ .'/'.a_href_cc({""=>'http://www.sme.cz/default.asp?lng=en&ver=html',
+ "CZ"=>'http://www.sme.cz/'},'SME'),
a_href('http://www.readynote.com/','ReadyNote'),
- a_href('http://www.atspraha.cz/','Advanced Telecom Services')),
+ a_href('http://www.atspraha.cz/','Advanced Telecom Services'));
+ },
"language"=>"C",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Program sends NOL or NGG files as Nokia operator logo or group graphics through
@{[ a_href 'http://www.nokia.com/','Nokia' ]} @{[ a_href 'http://www.communicator.org/','Communicator' ]}
9110 (@{[ a_href 'http://www.nokia.com/phones/9000i','9000/9000i' ]}
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>This software should be general-UNIX compatible. Please wait a minute when
+you run it, under various UNIXes it may take some time to finish.</p>
+<p><b>GSM network codes: </b>GSM network code needs to be given as parameter during
+sending of operator logo. Nice list of the codes you will find
+@{[ a_href 'http://kbs.cs.tu-berlin.de/~jutta/gsm/gsm-list.html','here' ]}.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::middleman'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::middleman::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::middleman::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::middleman::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::middleman' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::middleman'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::middleman::ListItem;
+package project::middleman::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://middle-man.sourceforge.net/','Middleman').' port',
+ "name"=>sub { return a_href('http://middle-man.sourceforge.net/','Middleman').' port'; },
"platform"=>"unixuser",
"priority"=>60,
"cvs"=>"middleman:lace",
- "summary"=>'HTTP proxy ported to '
- .a_href('http://www.freebsd.org/','FreeBSD'),
+ "summary"=>sub { return 'HTTP proxy ported to '.a_href('http://www.freebsd.org/','FreeBSD'); },
"license"=>"PD",
"maintenance"=>"ready",
- "sponsorship"=>a_href('http://www.jklabs.cz/','JKLabs'),
+ "sponsorship"=>sub { return a_href('http://www.jklabs.cz/','JKLabs'); },
"language"=>"C patch",
- "description"=><<"HERE",
-HTTP proxy server @{[ a_href 'http://middle-man.sourceforge.net/','Middleman' ]}
+ "description"=>sub { return <<"HERE"; },
+<p>HTTP proxy server @{[ a_href 'http://middle-man.sourceforge.net/','Middleman' ]}
capable of returned data mangling has been ported to
-@{[ a_href 'http://www.freebsd.org/','FreeBSD' ]}.
+@{[ a_href 'http://www.freebsd.org/','FreeBSD' ]}.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::mod_auth_tacacs'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::mod_auth_tacacs::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::mod_auth_tacacs::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::mod_auth_tacacs::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::mod_auth_tacacs' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::mod_auth_tacacs'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::mod_auth_tacacs::ListItem;
+package project::mod_auth_tacacs::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://sourceforge.net/projects/mod-auth-tacacs/','mod_auth_tacacs').' client',
+ "name"=>sub { return a_href('http://sourceforge.net/projects/mod-auth-tacacs/','mod_auth_tacacs').' client'; },
"platform"=>"patch",
"priority"=>260,
"icon"=>"cisco-icon.jpeg",
"download"=>"mod_auth_tacacs-2.0.2-gts1-checkout.diff.gz",
"link-mod_auth_tacacs homepage"=>"http://sourceforge.net/projects/mod-auth-tacacs/",
- "summary"=>a_href('http://www.cisco.com/warp/public/614/7.html','Cisco TACACS+')
- .' testing/debugging client for '
- .a_href('http://sourceforge.net/projects/mod-auth-tacacs/','mod_auth_tacacs'),
+ "summary"=>sub {
+ return a_href('http://www.cisco.com/warp/public/614/7.html','Cisco TACACS+')
+ .' testing/debugging client for '
+ .a_href('http://sourceforge.net/projects/mod-auth-tacacs/','mod_auth_tacacs');
+ },
"license"=>"PD",
"maintenance"=>"accepted",
"language"=>"C patch",
"description"=><<"HERE",
-Patch implements: command-line client, <code>dropped Makefile.in</code>
+<p>Patch implements: command-line client, <code>dropped Makefile.in</code>
in favor of <code>Makefile.am</code>, <code>--with-apache</code> works now
-(whole <code>configure.in</code> rewritten)
+(whole <code>configure.in</code> rewritten)</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::mot2as'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::mot2as::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::mot2as::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::mot2as::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Specifically it will care about: <code>equ</code> operation, <code>dc.b</code> strings,
-<code>;</code> comments, <code>@{[ '$' ]}</code> for hex-radix, <code>%</code> for bin-radix,
-local labels, <code>:</code> for label termination.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::mot2as' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::mot2as'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::mot2as::ListItem;
+package project::mot2as::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"C",
- "sponsorship"=>a_href('http://www.princip.cz/','Princip, a.s.'),
+ "sponsorship"=>sub { return a_href('http://www.princip.cz/','Princip, a.s.'); },
"description"=><<"HERE",
<p>Do you need to compile under UNIX assembly sources for Motorola 68k family
of processors? You have probably already found out that original Motorola
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Specifically it will care about: <code>equ</code> operation, <code>dc.b</code> strings,
+<code>;</code> comments, <code>@{[ '$' ]}</code> for hex-radix, <code>%</code> for bin-radix,
+local labels, <code>:</code> for label termination.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::muttsort'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::muttsort::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::muttsort::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::muttsort::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Patch got integrated to <b>thread.c</b> revision <b>2.16</b>.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::muttsort' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::muttsort'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::muttsort::ListItem;
+package project::muttsort::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.mutt.org/','Mutt').' speedup',
+ "name"=>sub { return a_href('http://www.mutt.org/','Mutt').' speedup'; },
"platform"=>"patch",
"priority"=>430,
"icon"=>"mutt_button",
"description"=><<"HERE",
<p>Mutt is pretty slow when opening a mailbox. Phase "Reading..." is hard to
speedup but "Sorting mailbox..." was rewritten from <i>(n^2)</i> complexity
-to <i>(n*log(n))</i>.
+to <i>(n*log(n))</i>.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Patch got integrated to <b>thread.c</b> revision <b>2.16</b>.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::netstat'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::netstat::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::netstat::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"netstat -p",
+ "platform"=>"patch",
+ "priority"=>400,
+ "download"=>"net-tools-1.50-progname.diff.gz",
+ "summary"=>sub {
+ return "Program name display for ".a_href('http://www.inka.de/sites/lina/linux/NetTools/','net-tools-1.50')
+ .'/netstat';
+ },
+ "license"=>"PD",
+ "maintenance"=>"accepted",
+ "language"=>"C patch",
+ "description"=><<"HERE",
+<p>After answering several questions on the mailing lists and several from
+my friends personally, I decided that there is missing some tool for GNU/Linux
+which would display PID (or simply the process) of the owner of some socket,
+either listening or communicating.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
+
print <<'HERE';
<p>The typical problem is that some port
is allocated and no one knows which program is holding it. Output of the
</pre>
HERE
-My::Web->footer();
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::netstat' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::netstat::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"netstat -p",
- "platform"=>"patch",
- "priority"=>400,
- "download"=>"net-tools-1.50-progname.diff.gz",
- "summary"=>"Program name display for ".a_href('http://www.inka.de/sites/lina/linux/NetTools/','net-tools-1.50').'/netstat',
- "license"=>"PD",
- "maintenance"=>"accepted",
- "language"=>"C patch",
- "description"=><<"HERE",
-<p>After answering several questions on the mailing lists and several from
-my friends personally, I decided that there is missing some tool for GNU/Linux
-which would display PID (or simply the process) of the owner of some socket,
-either listening or communicating.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::ntfsprogsgnomevfs'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::ntfsprogsgnomevfs::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::ntfsprogsgnomevfs::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::ntfsprogsgnomevfs::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Module got integrated to
-@{[ a_href 'http://sourceforge.net/forum/forum.php?forum_id=327273','ntfsprogs-1.8.0beta2' ]}.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::ntfsprogsgnomevfs' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::ntfsprogsgnomevfs'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::ntfsprogsgnomevfs::ListItem;
+package project::ntfsprogsgnomevfs::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://linux-ntfs.sourceforge.net/','Linux NTFS').' '
- .a_href('http://www.gnome.org/softwaremap/projects/GnomeVFS','GnomeVFS'),
+ "name"=>sub {
+ return a_href('http://linux-ntfs.sourceforge.net/','Linux NTFS').' '
+ .a_href('http://www.gnome.org/softwaremap/projects/GnomeVFS','GnomeVFS');
+ },
"platform"=>"patch",
"priority"=>475,
"icon"=>"ntfs-icon.jpeg",
- "summary"=>a_href('http://www.gnome.org/softwaremap/projects/GnomeVFS','GnomeVFS')
- .' interface for '.a_href('http://linux-ntfs.sourceforge.net/','Linux NTFS')
- .' library',
+ "summary"=>sub {
+ return a_href('http://www.gnome.org/softwaremap/projects/GnomeVFS','GnomeVFS')
+ .' interface for '.a_href('http://linux-ntfs.sourceforge.net/','Linux NTFS')
+ .' library';
+ },
"cvs"=>"ntfsprogs-gnomevfs",
"license"=>"GPL",
"maintenance"=>"accepted",
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Module got integrated to
+@{[ a_href 'http://sourceforge.net/forum/forum.php?forum_id=327273','ntfsprogs-1.8.0beta2' ]}.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::oslik'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::oslik::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::oslik::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::oslik::ListItem::ListItem,
- );
-
-print <<"HERE";
-<p>Currently <a href="oslik/">the documentation</a> is written only in Czech language.</p>
-HERE
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::oslik' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::oslik'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::oslik::ListItem;
+package project::oslik::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Currently <a href="oslik/">the documentation</a> is written only in Czech language.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-> /-------\ forwardtrace: level=0\r
- | {}{}# |\r
- | AB^#+ |\r
- | CDv#+ |\r
- | {}{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=1\r
- | {}{}+ |\r
- | AB^## |\r
- | CDv#+ |\r
- | {}{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=2\r
- | {}+{} |\r
- | AB^## |\r
- | CDv#+ |\r
- | {}{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=3\r
- | {}^{} |\r
- | ABv## |\r
- | CD+#+ |\r
- | {}{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=4\r
- | {}^{} |\r
- | ABv## |\r
- | CD#++ |\r
- | {}{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=5\r
- | {}^{} |\r
- | ABv## |\r
- | CD#+# |\r
- | {}{}+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=6\r
- | {}^{} |\r
- | ABv## |\r
- | CD#+# |\r
- | {}+{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=7\r
- | {}^{} |\r
- | ABv## |\r
- | CD++# |\r
- | {}#{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=8\r
- | {}+{} |\r
- | AB^## |\r
- | CDv+# |\r
- | {}#{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=9\r
- | {}{}+ |\r
- | AB^## |\r
- | CDv+# |\r
- | {}#{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=10\r
- | {}{}# |\r
- | AB^#+ |\r
- | CDv+# |\r
- | {}#{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=11\r
- | {}{}# |\r
- | AB^## |\r
- | CDv++ |\r
- | {}#{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=12\r
- | {}{}# |\r
- | AB^## |\r
- | CDv{} |\r
- | {}#++ |\r
- \-------/\r
-> /-------\ forwardtrace: level=13\r
- | {}{}# |\r
- | AB^## |\r
- | CDv{} |\r
- | {}+#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=14\r
- | {}{}# |\r
- | AB+## |\r
- | CD^{} |\r
- | {}v#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=15\r
- | {}{}# |\r
- | AB#+# |\r
- | CD^{} |\r
- | {}v#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=16\r
- | {}{}# |\r
- | AB##+ |\r
- | CD^{} |\r
- | {}v#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=17\r
- | {}{}+ |\r
- | AB### |\r
- | CD^{} |\r
- | {}v#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=18\r
- | {}+{} |\r
- | AB### |\r
- | CD^{} |\r
- | {}v#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=19\r
- | {}#{} |\r
- | AB+## |\r
- | CD^{} |\r
- | {}v#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=20\r
- | {}#{} |\r
- | AB^## |\r
- | CDv{} |\r
- | {}+#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=21\r
- | {}#{} |\r
- | AB^## |\r
- | CDv{} |\r
- | +{}#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=22\r
- | {}#{} |\r
- | AB^## |\r
- | CDv{} |\r
- | +{}+# |\r
- \-------/\r
-> /-------\ forwardtrace: level=23\r
- | {}#{} |\r
- | AB^## |\r
- | CDv{} |\r
- | ++{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=24\r
- | {}#{} |\r
- | ++^## |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=25\r
- | ++#{} |\r
- | {}^## |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=26\r
- | +#+{} |\r
- | {}^## |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=27\r
- | #++{} |\r
- | {}^## |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=28\r
- | #+{}+ |\r
- | {}^## |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=29\r
- | #{}++ |\r
- | {}^## |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=30\r
- | #{}#+ |\r
- | {}^+# |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=31\r
- | #{}## |\r
- | {}^++ |\r
- | ABv{} |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=32\r
- | #{}## |\r
- | {}^{} |\r
- | ABv++ |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=33\r
- | #{}## |\r
- | {}^{} |\r
- | ABv+# |\r
- | CD{}+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=34\r
- | #{}## |\r
- | {}^{} |\r
- | ABv#+ |\r
- | CD{}+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=35\r
- | #{}## |\r
- | {}^{} |\r
- | ABv#+ |\r
- | CD+{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=36\r
- | #{}## |\r
- | {}+{} |\r
- | AB^#+ |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=37\r
- | #{}## |\r
- | {}{}+ |\r
- | AB^#+ |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=38\r
- | #{}#+ |\r
- | {}{}# |\r
- | AB^#+ |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=39\r
- | #{}#+ |\r
- | {}{}+ |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=40\r
- | #{}#+ |\r
- | {}+{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=41\r
- | #{}#+ |\r
- | +{}{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=42\r
- | +{}#+ |\r
- | #{}{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=43\r
- | {}+#+ |\r
- | #{}{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=44\r
- | {}#++ |\r
- | #{}{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=45\r
- | {}#{} |\r
- | #{}++ |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=46\r
- | {}#{} |\r
- | #+{}+ |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=47\r
- | {}#{} |\r
- | #++{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=48\r
- | {}+{} |\r
- | #+#{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=49\r
- | {}+{} |\r
- | ##+{} |\r
- | AB^## |\r
- | CDv{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=50\r
- | {}+{} |\r
- | ##^{} |\r
- | ABv## |\r
- | CD+{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=51\r
- | {}^{} |\r
- | ##v{} |\r
- | AB+## |\r
- | CD+{} |\r
- \-------/\r
-> /-------\ forwardtrace: level=52\r
- | {}^{} |\r
- | ##v{} |\r
- | AB+## |\r
- | CD{}+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=53\r
- | {}^{} |\r
- | ##v{} |\r
- | AB+#+ |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=54\r
- | {}^{} |\r
- | ##v{} |\r
- | AB++# |\r
- | CD{}# |\r
- \-------/\r
-> /-------\ forwardtrace: level=55\r
- | {}^{} |\r
- | ##v{} |\r
- | AB{}# |\r
- | CD++# |\r
- \-------/\r
-> /-------\ forwardtrace: level=56\r
- | {}^{} |\r
- | ##v{} |\r
- | AB{}# |\r
- | CD+#+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=57\r
- | {}^{} |\r
- | ##v{} |\r
- | AB{}+ |\r
- | CD+## |\r
- \-------/\r
-> /-------\ forwardtrace: level=58\r
- | {}^{} |\r
- | ##v{} |\r
- | AB+{} |\r
- | CD+## |\r
- \-------/\r
-> /-------\ forwardtrace: level=59\r
- | {}+{} |\r
- | ##^{} |\r
- | ABv{} |\r
- | CD+## |\r
- \-------/\r
-> /-------\ forwardtrace: level=60\r
- | +{}{} |\r
- | ##^{} |\r
- | ABv{} |\r
- | CD+## |\r
- \-------/\r
-> /-------\ forwardtrace: level=61\r
- | #{}{} |\r
- | +#^{} |\r
- | ABv{} |\r
- | CD+## |\r
- \-------/\r
-> /-------\ forwardtrace: level=62\r
- | #{}{} |\r
- | #+^{} |\r
- | ABv{} |\r
- | CD+## |\r
- \-------/\r
-> /-------\ forwardtrace: level=63\r
- | #{}{} |\r
- | #++{} |\r
- | AB^{} |\r
- | CDv## |\r
- \-------/\r
-> /-------\ forwardtrace: level=64\r
- | #{}{} |\r
- | #+{}+ |\r
- | AB^{} |\r
- | CDv## |\r
- \-------/\r
-> /-------\ forwardtrace: level=65\r
- | #{}{} |\r
- | #{}++ |\r
- | AB^{} |\r
- | CDv## |\r
- \-------/\r
-> /-------\ forwardtrace: level=66\r
- | #{}{} |\r
- | #{}{} |\r
- | AB^++ |\r
- | CDv## |\r
- \-------/\r
-> /-------\ forwardtrace: level=67\r
- | #{}{} |\r
- | #{}{} |\r
- | AB^#+ |\r
- | CDv+# |\r
- \-------/\r
-> /-------\ forwardtrace: level=68\r
- | #{}{} |\r
- | #{}{} |\r
- | AB^+# |\r
- | CDv+# |\r
- \-------/\r
-> /-------\ forwardtrace: level=69\r
- | #{}{} |\r
- | #{}{} |\r
- | AB+^# |\r
- | CD+v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=70\r
- | #{}{} |\r
- | #{}{} |\r
- | +AB^# |\r
- | +CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=71\r
- | #{}{} |\r
- | +{}{} |\r
- | #AB^# |\r
- | +CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=72\r
- | +{}{} |\r
- | #{}{} |\r
- | #AB^# |\r
- | +CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=73\r
- | {}+{} |\r
- | #{}{} |\r
- | #AB^# |\r
- | +CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=74\r
- | {}{}+ |\r
- | #{}{} |\r
- | #AB^# |\r
- | +CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=75\r
- | {}{}+ |\r
- | #{}{} |\r
- | +AB^# |\r
- | #CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=76\r
- | {}{}+ |\r
- | +{}{} |\r
- | #AB^# |\r
- | #CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=77\r
- | {}{}+ |\r
- | {}+{} |\r
- | #AB^# |\r
- | #CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=78\r
- | {}{}+ |\r
- | {}{}+ |\r
- | #AB^# |\r
- | #CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=79\r
- | {}{}+ |\r
- | {}{}# |\r
- | #AB^+ |\r
- | #CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=80\r
- | {}{}# |\r
- | {}{}+ |\r
- | #AB^+ |\r
- | #CDv# |\r
- \-------/\r
-> /-------\ forwardtrace: level=81\r
- | {}{}# |\r
- | {}{}+ |\r
- | #AB^# |\r
- | #CDv+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=82\r
- | {}{}# |\r
- | {}{}# |\r
- | #AB^+ |\r
- | #CDv+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=83\r
- | {}{}# |\r
- | {}{}# |\r
- | #AB+^ |\r
- | #CD+v |\r
- \-------/\r
-> /-------\ forwardtrace: level=84\r
- | {}{}# |\r
- | {}{}# |\r
- | #+AB^ |\r
- | #+CDv |\r
- \-------/\r
-> /-------\ forwardtrace: level=85\r
- | {}{}# |\r
- | {}{}# |\r
- | +#AB^ |\r
- | #+CDv |\r
- \-------/\r
-> /-------\ forwardtrace: level=86\r
- | {}{}# |\r
- | {}{}# |\r
- | ++AB^ |\r
- | ##CDv |\r
- \-------/\r
-> /-------\ forwardtrace: level=87\r
- | {}{}# |\r
- | ++{}# |\r
- | {}AB^ |\r
- | ##CDv |\r
- \-------/\r
-> /-------\ forwardtrace: level=88\r
- | {}{}# |\r
- | +{}+# |\r
- | {}AB^ |\r
- | ##CDv |\r
- \-------/\r
-> /-------\ forwardtrace: level=89\r
- | {}{}# |\r
- | {}++# |\r
- | {}AB^ |\r
- | ##CDv |\r
- \-------/\r
-> /-------\ forwardtrace: level=90\r
- | {}{}# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | ##++v |\r
- \-------/\r
-> /-------\ forwardtrace: level=91\r
- | {}{}# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | #+#+v |\r
- \-------/\r
-> /-------\ forwardtrace: level=92\r
- | {}{}# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | +##+v |\r
- \-------/\r
-> /-------\ forwardtrace: level=93\r
- | {}{}# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | +#+#v |\r
- \-------/\r
-> /-------\ forwardtrace: level=94\r
- | {}{}# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | ++##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=95\r
- | {}{}# |\r
- | {}AB# |\r
- | ++CD^ |\r
- | {}##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=96\r
- | {}{}# |\r
- | ++AB# |\r
- | {}CD^ |\r
- | {}##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=97\r
- | ++{}# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | {}##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=98\r
- | +{}+# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | {}##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=99\r
- | {}++# |\r
- | {}AB# |\r
- | {}CD^ |\r
- | {}##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=100\r
- | {}AB# |\r
- | {}CD# |\r
- | {}++^ |\r
- | {}##v |\r
- \-------/\r
-> /-------\ forwardtrace: level=101\r
- | {}AB# |\r
- | {}CD# |\r
- | {}#+^ |\r
- | {}+#v |\r
- \-------/\r
-> /-------\ forwardtrace: level=102\r
- | {}AB# |\r
- | {}CD# |\r
- | {}#+^ |\r
- | {}#+v |\r
- \-------/\r
-> /-------\ forwardtrace: level=103\r
- | {}AB# |\r
- | {}CD# |\r
- | {}#^+ |\r
- | {}#v+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=104\r
- | {}AB# |\r
- | {}CD+ |\r
- | {}#^# |\r
- | {}#v+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=105\r
- | {}AB+ |\r
- | {}CD# |\r
- | {}#^# |\r
- | {}#v+ |\r
- \-------/\r
-> /-------\ forwardtrace: level=106\r
- | {}AB+ |\r
- | {}CD# |\r
- | {}#^+ |\r
- | {}#v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=107\r
- | {}AB+ |\r
- | {}CD+ |\r
- | {}#^# |\r
- | {}#v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=108\r
- | {}+AB |\r
- | {}+CD |\r
- | {}#^# |\r
- | {}#v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=109\r
- | {}+AB |\r
- | {}#CD |\r
- | {}+^# |\r
- | {}#v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=110\r
- | {}#AB |\r
- | {}+CD |\r
- | {}+^# |\r
- | {}#v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=111\r
- | {}#AB |\r
- | {}+CD |\r
- | {}#^# |\r
- | {}+v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=112\r
- | {}#AB |\r
- | {}#CD |\r
- | {}+^# |\r
- | {}+v# |\r
- \-------/\r
-> /-------\ forwardtrace: level=113\r
- | {}#AB |\r
- | {}#CD |\r
- | {}^+# |\r
- | {}v+# |\r
- \-------/\r
-> /-------\ forwardtrace: level=114\r
- | {}#AB |\r
- | {}#CD |\r
- | {}^#+ |\r
- | {}v+# |\r
- \-------/\r
-> /-------\ forwardtrace: level=115\r
- | {}#AB |\r
- | {}#CD |\r
- | {}^++ |\r
- | {}v## |\r
- \-------/\r
-> /-------\ forwardtrace: level=116\r
- | {}#++ |\r
- | {}#AB |\r
- | {}^CD |\r
- | {}v## |\r
- \-------/\r
+> /-------\ forwardtrace: level=0
+ | {}{}# |
+ | AB^#+ |
+ | CDv#+ |
+ | {}{}# |
+ \-------/
+> /-------\ forwardtrace: level=1
+ | {}{}+ |
+ | AB^## |
+ | CDv#+ |
+ | {}{}# |
+ \-------/
+> /-------\ forwardtrace: level=2
+ | {}+{} |
+ | AB^## |
+ | CDv#+ |
+ | {}{}# |
+ \-------/
+> /-------\ forwardtrace: level=3
+ | {}^{} |
+ | ABv## |
+ | CD+#+ |
+ | {}{}# |
+ \-------/
+> /-------\ forwardtrace: level=4
+ | {}^{} |
+ | ABv## |
+ | CD#++ |
+ | {}{}# |
+ \-------/
+> /-------\ forwardtrace: level=5
+ | {}^{} |
+ | ABv## |
+ | CD#+# |
+ | {}{}+ |
+ \-------/
+> /-------\ forwardtrace: level=6
+ | {}^{} |
+ | ABv## |
+ | CD#+# |
+ | {}+{} |
+ \-------/
+> /-------\ forwardtrace: level=7
+ | {}^{} |
+ | ABv## |
+ | CD++# |
+ | {}#{} |
+ \-------/
+> /-------\ forwardtrace: level=8
+ | {}+{} |
+ | AB^## |
+ | CDv+# |
+ | {}#{} |
+ \-------/
+> /-------\ forwardtrace: level=9
+ | {}{}+ |
+ | AB^## |
+ | CDv+# |
+ | {}#{} |
+ \-------/
+> /-------\ forwardtrace: level=10
+ | {}{}# |
+ | AB^#+ |
+ | CDv+# |
+ | {}#{} |
+ \-------/
+> /-------\ forwardtrace: level=11
+ | {}{}# |
+ | AB^## |
+ | CDv++ |
+ | {}#{} |
+ \-------/
+> /-------\ forwardtrace: level=12
+ | {}{}# |
+ | AB^## |
+ | CDv{} |
+ | {}#++ |
+ \-------/
+> /-------\ forwardtrace: level=13
+ | {}{}# |
+ | AB^## |
+ | CDv{} |
+ | {}+#+ |
+ \-------/
+> /-------\ forwardtrace: level=14
+ | {}{}# |
+ | AB+## |
+ | CD^{} |
+ | {}v#+ |
+ \-------/
+> /-------\ forwardtrace: level=15
+ | {}{}# |
+ | AB#+# |
+ | CD^{} |
+ | {}v#+ |
+ \-------/
+> /-------\ forwardtrace: level=16
+ | {}{}# |
+ | AB##+ |
+ | CD^{} |
+ | {}v#+ |
+ \-------/
+> /-------\ forwardtrace: level=17
+ | {}{}+ |
+ | AB### |
+ | CD^{} |
+ | {}v#+ |
+ \-------/
+> /-------\ forwardtrace: level=18
+ | {}+{} |
+ | AB### |
+ | CD^{} |
+ | {}v#+ |
+ \-------/
+> /-------\ forwardtrace: level=19
+ | {}#{} |
+ | AB+## |
+ | CD^{} |
+ | {}v#+ |
+ \-------/
+> /-------\ forwardtrace: level=20
+ | {}#{} |
+ | AB^## |
+ | CDv{} |
+ | {}+#+ |
+ \-------/
+> /-------\ forwardtrace: level=21
+ | {}#{} |
+ | AB^## |
+ | CDv{} |
+ | +{}#+ |
+ \-------/
+> /-------\ forwardtrace: level=22
+ | {}#{} |
+ | AB^## |
+ | CDv{} |
+ | +{}+# |
+ \-------/
+> /-------\ forwardtrace: level=23
+ | {}#{} |
+ | AB^## |
+ | CDv{} |
+ | ++{}# |
+ \-------/
+> /-------\ forwardtrace: level=24
+ | {}#{} |
+ | ++^## |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=25
+ | ++#{} |
+ | {}^## |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=26
+ | +#+{} |
+ | {}^## |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=27
+ | #++{} |
+ | {}^## |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=28
+ | #+{}+ |
+ | {}^## |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=29
+ | #{}++ |
+ | {}^## |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=30
+ | #{}#+ |
+ | {}^+# |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=31
+ | #{}## |
+ | {}^++ |
+ | ABv{} |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=32
+ | #{}## |
+ | {}^{} |
+ | ABv++ |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=33
+ | #{}## |
+ | {}^{} |
+ | ABv+# |
+ | CD{}+ |
+ \-------/
+> /-------\ forwardtrace: level=34
+ | #{}## |
+ | {}^{} |
+ | ABv#+ |
+ | CD{}+ |
+ \-------/
+> /-------\ forwardtrace: level=35
+ | #{}## |
+ | {}^{} |
+ | ABv#+ |
+ | CD+{} |
+ \-------/
+> /-------\ forwardtrace: level=36
+ | #{}## |
+ | {}+{} |
+ | AB^#+ |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=37
+ | #{}## |
+ | {}{}+ |
+ | AB^#+ |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=38
+ | #{}#+ |
+ | {}{}# |
+ | AB^#+ |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=39
+ | #{}#+ |
+ | {}{}+ |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=40
+ | #{}#+ |
+ | {}+{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=41
+ | #{}#+ |
+ | +{}{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=42
+ | +{}#+ |
+ | #{}{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=43
+ | {}+#+ |
+ | #{}{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=44
+ | {}#++ |
+ | #{}{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=45
+ | {}#{} |
+ | #{}++ |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=46
+ | {}#{} |
+ | #+{}+ |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=47
+ | {}#{} |
+ | #++{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=48
+ | {}+{} |
+ | #+#{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=49
+ | {}+{} |
+ | ##+{} |
+ | AB^## |
+ | CDv{} |
+ \-------/
+> /-------\ forwardtrace: level=50
+ | {}+{} |
+ | ##^{} |
+ | ABv## |
+ | CD+{} |
+ \-------/
+> /-------\ forwardtrace: level=51
+ | {}^{} |
+ | ##v{} |
+ | AB+## |
+ | CD+{} |
+ \-------/
+> /-------\ forwardtrace: level=52
+ | {}^{} |
+ | ##v{} |
+ | AB+## |
+ | CD{}+ |
+ \-------/
+> /-------\ forwardtrace: level=53
+ | {}^{} |
+ | ##v{} |
+ | AB+#+ |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=54
+ | {}^{} |
+ | ##v{} |
+ | AB++# |
+ | CD{}# |
+ \-------/
+> /-------\ forwardtrace: level=55
+ | {}^{} |
+ | ##v{} |
+ | AB{}# |
+ | CD++# |
+ \-------/
+> /-------\ forwardtrace: level=56
+ | {}^{} |
+ | ##v{} |
+ | AB{}# |
+ | CD+#+ |
+ \-------/
+> /-------\ forwardtrace: level=57
+ | {}^{} |
+ | ##v{} |
+ | AB{}+ |
+ | CD+## |
+ \-------/
+> /-------\ forwardtrace: level=58
+ | {}^{} |
+ | ##v{} |
+ | AB+{} |
+ | CD+## |
+ \-------/
+> /-------\ forwardtrace: level=59
+ | {}+{} |
+ | ##^{} |
+ | ABv{} |
+ | CD+## |
+ \-------/
+> /-------\ forwardtrace: level=60
+ | +{}{} |
+ | ##^{} |
+ | ABv{} |
+ | CD+## |
+ \-------/
+> /-------\ forwardtrace: level=61
+ | #{}{} |
+ | +#^{} |
+ | ABv{} |
+ | CD+## |
+ \-------/
+> /-------\ forwardtrace: level=62
+ | #{}{} |
+ | #+^{} |
+ | ABv{} |
+ | CD+## |
+ \-------/
+> /-------\ forwardtrace: level=63
+ | #{}{} |
+ | #++{} |
+ | AB^{} |
+ | CDv## |
+ \-------/
+> /-------\ forwardtrace: level=64
+ | #{}{} |
+ | #+{}+ |
+ | AB^{} |
+ | CDv## |
+ \-------/
+> /-------\ forwardtrace: level=65
+ | #{}{} |
+ | #{}++ |
+ | AB^{} |
+ | CDv## |
+ \-------/
+> /-------\ forwardtrace: level=66
+ | #{}{} |
+ | #{}{} |
+ | AB^++ |
+ | CDv## |
+ \-------/
+> /-------\ forwardtrace: level=67
+ | #{}{} |
+ | #{}{} |
+ | AB^#+ |
+ | CDv+# |
+ \-------/
+> /-------\ forwardtrace: level=68
+ | #{}{} |
+ | #{}{} |
+ | AB^+# |
+ | CDv+# |
+ \-------/
+> /-------\ forwardtrace: level=69
+ | #{}{} |
+ | #{}{} |
+ | AB+^# |
+ | CD+v# |
+ \-------/
+> /-------\ forwardtrace: level=70
+ | #{}{} |
+ | #{}{} |
+ | +AB^# |
+ | +CDv# |
+ \-------/
+> /-------\ forwardtrace: level=71
+ | #{}{} |
+ | +{}{} |
+ | #AB^# |
+ | +CDv# |
+ \-------/
+> /-------\ forwardtrace: level=72
+ | +{}{} |
+ | #{}{} |
+ | #AB^# |
+ | +CDv# |
+ \-------/
+> /-------\ forwardtrace: level=73
+ | {}+{} |
+ | #{}{} |
+ | #AB^# |
+ | +CDv# |
+ \-------/
+> /-------\ forwardtrace: level=74
+ | {}{}+ |
+ | #{}{} |
+ | #AB^# |
+ | +CDv# |
+ \-------/
+> /-------\ forwardtrace: level=75
+ | {}{}+ |
+ | #{}{} |
+ | +AB^# |
+ | #CDv# |
+ \-------/
+> /-------\ forwardtrace: level=76
+ | {}{}+ |
+ | +{}{} |
+ | #AB^# |
+ | #CDv# |
+ \-------/
+> /-------\ forwardtrace: level=77
+ | {}{}+ |
+ | {}+{} |
+ | #AB^# |
+ | #CDv# |
+ \-------/
+> /-------\ forwardtrace: level=78
+ | {}{}+ |
+ | {}{}+ |
+ | #AB^# |
+ | #CDv# |
+ \-------/
+> /-------\ forwardtrace: level=79
+ | {}{}+ |
+ | {}{}# |
+ | #AB^+ |
+ | #CDv# |
+ \-------/
+> /-------\ forwardtrace: level=80
+ | {}{}# |
+ | {}{}+ |
+ | #AB^+ |
+ | #CDv# |
+ \-------/
+> /-------\ forwardtrace: level=81
+ | {}{}# |
+ | {}{}+ |
+ | #AB^# |
+ | #CDv+ |
+ \-------/
+> /-------\ forwardtrace: level=82
+ | {}{}# |
+ | {}{}# |
+ | #AB^+ |
+ | #CDv+ |
+ \-------/
+> /-------\ forwardtrace: level=83
+ | {}{}# |
+ | {}{}# |
+ | #AB+^ |
+ | #CD+v |
+ \-------/
+> /-------\ forwardtrace: level=84
+ | {}{}# |
+ | {}{}# |
+ | #+AB^ |
+ | #+CDv |
+ \-------/
+> /-------\ forwardtrace: level=85
+ | {}{}# |
+ | {}{}# |
+ | +#AB^ |
+ | #+CDv |
+ \-------/
+> /-------\ forwardtrace: level=86
+ | {}{}# |
+ | {}{}# |
+ | ++AB^ |
+ | ##CDv |
+ \-------/
+> /-------\ forwardtrace: level=87
+ | {}{}# |
+ | ++{}# |
+ | {}AB^ |
+ | ##CDv |
+ \-------/
+> /-------\ forwardtrace: level=88
+ | {}{}# |
+ | +{}+# |
+ | {}AB^ |
+ | ##CDv |
+ \-------/
+> /-------\ forwardtrace: level=89
+ | {}{}# |
+ | {}++# |
+ | {}AB^ |
+ | ##CDv |
+ \-------/
+> /-------\ forwardtrace: level=90
+ | {}{}# |
+ | {}AB# |
+ | {}CD^ |
+ | ##++v |
+ \-------/
+> /-------\ forwardtrace: level=91
+ | {}{}# |
+ | {}AB# |
+ | {}CD^ |
+ | #+#+v |
+ \-------/
+> /-------\ forwardtrace: level=92
+ | {}{}# |
+ | {}AB# |
+ | {}CD^ |
+ | +##+v |
+ \-------/
+> /-------\ forwardtrace: level=93
+ | {}{}# |
+ | {}AB# |
+ | {}CD^ |
+ | +#+#v |
+ \-------/
+> /-------\ forwardtrace: level=94
+ | {}{}# |
+ | {}AB# |
+ | {}CD^ |
+ | ++##v |
+ \-------/
+> /-------\ forwardtrace: level=95
+ | {}{}# |
+ | {}AB# |
+ | ++CD^ |
+ | {}##v |
+ \-------/
+> /-------\ forwardtrace: level=96
+ | {}{}# |
+ | ++AB# |
+ | {}CD^ |
+ | {}##v |
+ \-------/
+> /-------\ forwardtrace: level=97
+ | ++{}# |
+ | {}AB# |
+ | {}CD^ |
+ | {}##v |
+ \-------/
+> /-------\ forwardtrace: level=98
+ | +{}+# |
+ | {}AB# |
+ | {}CD^ |
+ | {}##v |
+ \-------/
+> /-------\ forwardtrace: level=99
+ | {}++# |
+ | {}AB# |
+ | {}CD^ |
+ | {}##v |
+ \-------/
+> /-------\ forwardtrace: level=100
+ | {}AB# |
+ | {}CD# |
+ | {}++^ |
+ | {}##v |
+ \-------/
+> /-------\ forwardtrace: level=101
+ | {}AB# |
+ | {}CD# |
+ | {}#+^ |
+ | {}+#v |
+ \-------/
+> /-------\ forwardtrace: level=102
+ | {}AB# |
+ | {}CD# |
+ | {}#+^ |
+ | {}#+v |
+ \-------/
+> /-------\ forwardtrace: level=103
+ | {}AB# |
+ | {}CD# |
+ | {}#^+ |
+ | {}#v+ |
+ \-------/
+> /-------\ forwardtrace: level=104
+ | {}AB# |
+ | {}CD+ |
+ | {}#^# |
+ | {}#v+ |
+ \-------/
+> /-------\ forwardtrace: level=105
+ | {}AB+ |
+ | {}CD# |
+ | {}#^# |
+ | {}#v+ |
+ \-------/
+> /-------\ forwardtrace: level=106
+ | {}AB+ |
+ | {}CD# |
+ | {}#^+ |
+ | {}#v# |
+ \-------/
+> /-------\ forwardtrace: level=107
+ | {}AB+ |
+ | {}CD+ |
+ | {}#^# |
+ | {}#v# |
+ \-------/
+> /-------\ forwardtrace: level=108
+ | {}+AB |
+ | {}+CD |
+ | {}#^# |
+ | {}#v# |
+ \-------/
+> /-------\ forwardtrace: level=109
+ | {}+AB |
+ | {}#CD |
+ | {}+^# |
+ | {}#v# |
+ \-------/
+> /-------\ forwardtrace: level=110
+ | {}#AB |
+ | {}+CD |
+ | {}+^# |
+ | {}#v# |
+ \-------/
+> /-------\ forwardtrace: level=111
+ | {}#AB |
+ | {}+CD |
+ | {}#^# |
+ | {}+v# |
+ \-------/
+> /-------\ forwardtrace: level=112
+ | {}#AB |
+ | {}#CD |
+ | {}+^# |
+ | {}+v# |
+ \-------/
+> /-------\ forwardtrace: level=113
+ | {}#AB |
+ | {}#CD |
+ | {}^+# |
+ | {}v+# |
+ \-------/
+> /-------\ forwardtrace: level=114
+ | {}#AB |
+ | {}#CD |
+ | {}^#+ |
+ | {}v+# |
+ \-------/
+> /-------\ forwardtrace: level=115
+ | {}#AB |
+ | {}#CD |
+ | {}^++ |
+ | {}v## |
+ \-------/
+> /-------\ forwardtrace: level=116
+ | {}#++ |
+ | {}#AB |
+ | {}^CD |
+ | {}v## |
+ \-------/
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::patchd2'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::patchd2::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::patchd2::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::patchd2::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::patchd2' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::patchd2'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::patchd2::ListItem;
+package project::patchd2::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.descent2.com/','Descent 2').' no-CD',
+ "name"=>sub { return a_href('http://www.descent2.com/','Descent 2').' no-CD'; },
"platform"=>"dos",
"priority"=>160,
"icon"=>"d2-icon.jpeg",
"download"=>"patchd2.zip",
- "summary"=>a_href('http://www.descent2.com/','Descent 2').' patch to avoid CD-ROM requirement',
+ "summary"=>sub { return a_href('http://www.descent2.com/','Descent 2').' patch to avoid CD-ROM requirement'; },
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"i386 asm patch",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Use this @{[ a_href 'http://www.calderathin.com/products/drdos/','DOS' ]}
program to patch/unpatch Descent 2 to not require CD-ROM to run.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::pgsqlsubstr'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::pgsqlsubstr::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::pgsqlsubstr::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::pgsqlsubstr::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Although the patch is noted by Thomas G. Lockhart he is referring in me in
-that text, believe me. :-)</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::pgsqlsubstr' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::pgsqlsubstr'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::pgsqlsubstr::ListItem;
+package project::pgsqlsubstr::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.postgresql.org/','PostgreSQL').'-6.3 fix',
+ "name"=>sub { a_href('http://www.postgresql.org/','PostgreSQL').'-6.3 fix'; },
"platform"=>"patch",
"priority"=>290,
"icon"=>"postgresql",
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Although the patch is noted by Thomas G. Lockhart he is referring in me in
+that text, believe me. :-)</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::phphash'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::phphash::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::phphash::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::phphash::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::phphash' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::phphash'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::phphash::ListItem;
+package project::phphash::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
- "name"=>a_href('http://www.php.net/','PHP').'-3.0b6 fix',
+ "name"=>sub { return a_href('http://www.php.net/','PHP').'-3.0b6 fix'; },
"platform"=>"patch",
"priority"=>300,
"icon"=>"php",
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::pipebuf'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::pipebuf::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::pipebuf::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::pipebuf::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>Progarm is implemented as two processes (no threads - no pthread libraries
-needed, only IPC communication used). Features custom buffer sizes, prefill
-(start writing of the first byte only after the WHOLE buffer has beel filled
-up) and warning messages when buffer is getting emptied.</p>
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::pipebuf' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::pipebuf'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::pipebuf::ListItem;
+package project::pipebuf::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>Progarm is implemented as two processes (no threads - no pthread libraries
+needed, only IPC communication used). Features custom buffer sizes, prefill
+(start writing of the first byte only after the WHOLE buffer has beel filled
+up) and warning messages when buffer is getting emptied.</p>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::postget'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::postget::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::postget::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"postget",
+ "platform"=>"web",
+ "trivia"=>1,
+ "priority"=>380,
+ # FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
+ "download"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/nethome/WWW/cgi-bin/postget.php?rev=HEAD",
+ "summary"=>sub {
+ return "Bookmark ".a_href('http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1','POST')
+ .' forms, hide passwords';
+ },
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "language"=>"PHP",
+ "description"=>sub { return <<"HERE"; },
+<p>You cannot bookmark pre-filled forms to your browser bookmarks. Although
+browsers support storing of form data you still have to load the form page and
+click its submit button. This script will allow you to:</p>
+<ul>
+ <li>Store all @{[ a_href 'http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1','POST' ]}ed
+ form data as @{[ a_href 'http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1','GET' ]} data
+ (after '<b>?</b>' URL delimiter).</li>
+ <li>Replace all sensitive passwords by indirect references to your <b>priv</b> directory
+ to allow you to make your bookmark file itself public.</li>
+</ul>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
</li>
<li>
<p>Edit path to your <b>priv</b> directory in the stored
- <b>@{[ a_href $W->{"project_viewcvs"}."*checkout*/nethome/WWW/cgi-bin/postget.php?rev=HEAD",'postget.php' ]}</b>.
+ <b>@{[ a_href $W->{"project_viewcvs"}."*checkout*/nethome/WWW/cgi-bin/postget.php?rev=HEAD",'postget.php' ]}</b>.</p>
</li>
<li>
<p>Bookmark the following @{[ a_href 'http://freshmeat.net/','Freshmeat' ]} URL:
- @{[ CGI::escapeHTML(q{http://localhost/~lace/cgi-bin/postget.php?_postget=http%3A%2F%2Ffreshmeat.net%2Flogin%2F&url=%2F&username=YOUR_USERNAME&password=_priv_postget.freshmeat.net.pwd&persistent=1}) ]}
+ @{[ escapeHTML(q{http://localhost/~lace/cgi-bin/postget.php?_postget=http%3A%2F%2Ffreshmeat.net%2Flogin%2F&url=%2F&username=YOUR_USERNAME&password=_priv_postget.freshmeat.net.pwd&persistent=1}) ]}
</p>
<p>(Replace <b>YOUR_USERNAME</b> with your @{[ a_href 'http://freshmeat.net/','Freshmeat' ]}
account name.</p>
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::postget' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::postget::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"postget",
- "platform"=>"web",
- "trivia"=>1,
- "priority"=>380,
- # FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
- "download"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/nethome/WWW/cgi-bin/postget.php?rev=HEAD",
- "summary"=>"Bookmark ".a_href('http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1','POST')
- .' forms, hide passwords',
- "license"=>"PD",
- "maintenance"=>"ready",
- "language"=>"PHP",
- "description"=><<"HERE",
-<p>You cannot bookmark pre-filled forms to your browser bookmarks. Although
-browsers support storing of form data you still have to load the form page and
-click its submit button. This script will allow you to:</p>
-<ul>
- <li>Store all @{[ a_href 'http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1','POST' ]}ed
- form data as @{[ a_href 'http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1','GET' ]} data
- (after '<b>?</b>' URL delimiter).</li>
- <li>Replace all sensitive passwords by indirect references to your <b>priv</b> directory
- to allow you to make your bookmark file itself public.</li>
-</ul>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::ppp9k'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::ppp9k::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::ppp9k::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::ppp9k::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::ppp9k' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::ppp9k'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::ppp9k::ListItem;
+package project::ppp9k::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"priority"=>410,
# FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
"download"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/nethome/bin/ppp9k?rev=HEAD",
- "summary"=>"Connect "
- .a_href('http://www.nokia.com/phones/9110i','Nokia Communicator')
- ." by serial PPP to your LAN",
+ "summary"=>sub {
+ return "Connect "
+ .a_href('http://www.nokia.com/phones/9110i','Nokia Communicator')
+ ." by serial PPP to your LAN";
+ },
"license"=>"PD",
"maintenance"=>"ready",
"language"=>"bash",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Script will connect Nokia Communicator @{[ a_href 'http://www.nokia.com/phones/9000i','9000i' ]}
or @{[ a_href 'http://www.nokia.com/phones/9110i','9110i' ]} through
your local GNU/Linux PC Internet connection. You will also need
-Nokia Communicator utility @{[ a_href 'http://www.mgroeber.de/nokia.htm','Advanced PPP Settings' ]}.
+Nokia Communicator utility @{[ a_href 'http://www.mgroeber.de/nokia.htm','Advanced PPP Settings' ]}.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::redirector_ad'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::redirector_ad::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::redirector_ad::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::redirector_ad::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::redirector_ad' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::redirector_ad'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::redirector_ad::ListItem;
+package project::redirector_ad::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"priority"=>340,
"icon"=>"cnet-icon",
"cvs"=>"redirector-ad",
- "summary"=>'Banner killer as '.a_href('http://www.squid-cache.org/','Squid').' redirector filter',
+ "summary"=>sub { return 'Banner killer as '.a_href('http://www.squid-cache.org/','Squid').' redirector filter'; },
# FIXME: 'http://cvs.jankratochvil.net/viewcvs/' -> $W->{"project_viewcvs"}
"link-README"=>'http://cvs.jankratochvil.net/viewcvs/'."*checkout*/redirector-ad/README?rev=HEAD",
"license"=>"PD",
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::smbfs'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::smbfs::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::smbfs::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"smbfs patch",
+ "platform"=>"unixuser",
+ "trivia"=>1,
+ "priority"=>80,
+ "download"=>"smbfs-2.1.132-blocksize.diff",
+ "summary"=>'Linux kernel smbfs acceleration patch',
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "language"=>"C patch",
+ "description"=><<"HERE",
+<p>Accelerate twice the copying transfer rate for client GNU/Linux from SMB
+server share (Microsoft Windows).</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
<p>Simple patch to increase virtual block size of SMB filesytem in Linux
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::smbfs' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::smbfs::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"smbfs patch",
- "platform"=>"unixuser",
- "trivia"=>1,
- "priority"=>80,
- "download"=>"smbfs-2.1.132-blocksize.diff",
- "summary"=>'Linux kernel smbfs acceleration patch',
- "license"=>"PD",
- "maintenance"=>"ready",
- "language"=>"C patch",
- "description"=><<"HERE",
-<p>Accelerate twice the copying transfer rate for client GNU/Linux from SMB
-server share (Microsoft Windows).
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::sshpatch'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::sshpatch::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::sshpatch::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::sshpatch::ListItem::ListItem,
- );
-
-print <<'HERE';
-<p>This patch will enahance your <tt>SSH</tt> with two new options, their detailed description you will
-find in the updated man pages after you install this offered patch:</p>
-<ul>
-<li><b>KeepAliveData</b>: Some broken hosts potentially gatewaying/masquerading the data (between ssh
-client-server) forget and reject connections with too much idle time. Use this option to
-workaround it.</li>
-<li><b>OnDemandForward</b>: Forces client to wait until the first connection to locally forwarded port is
-made. When user enables this option, SSH client initially only starts listening on specified local ports for
-forwarding. Only after the first connection to such local port is made, SSH will
-start the connection and authentication to the server.</li>
-</ul>
-HERE
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::sshpatch' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::sshpatch'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::sshpatch::ListItem;
+package project::sshpatch::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"download-SSH-1, version 1.2.30, .tar.gz"=>"ftp://ftp.fi.muni.cz/pub/ssh/ssh-1.2.30.tar.gz",
"summary"=>"SSH-1 <i>KeepAliveData</i> and <i>OnDemandForward</i> features",
"license"=>"PD",
- "maintenance"=>"obsolete-".a_href('http://www.openssh.com/','OpenSSH').' now contains equivalent features.',
+ "maintenance"=>sub {
+ return "obsolete-".a_href('http://www.openssh.com/','OpenSSH').' now contains equivalent features.';
+ },
"language"=>"C patch",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<ul>
<li><i>KeepAliveData</i>: Protect your mostly idle SSH connection from broken
masquerading firewalls which forget and reset the idle connections.
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<'HERE';
+<p>This patch will enahance your <tt>SSH</tt> with two new options, their detailed description you will
+find in the updated man pages after you install this offered patch:</p>
+<ul>
+<li><b>KeepAliveData</b>: Some broken hosts potentially gatewaying/masquerading the data (between ssh
+client-server) forget and reject connections with too much idle time. Use this option to
+workaround it.</li>
+<li><b>OnDemandForward</b>: Forces client to wait until the first connection to locally forwarded port is
+made. When user enables this option, SSH client initially only starts listening on specified local ports for
+forwarding. Only after the first connection to such local port is made, SSH will
+start the connection and authentication to the server.</li>
+</ul>
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::ssht'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::ssht::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::ssht::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"ssht",
+ "platform"=>"unixuser",
+ "priority"=>90,
+ "cvs"=>"ssht",
+ "summary"=>sub {
+ return 'Unattended intranet host accessibility by '.a_href('http://www.openssh.org/','SSH').' tunnel';
+ },
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "sponsorship"=>sub { return a_href('http://www.jklabs.cz/','JKLabs'); },
+ "language"=>"bash",
+ "description"=>sub { return <<"HERE"; },
+<p>Do you need to admin remote host placed in the intranet behind firewall out of your control?
+If the firewall performat NAT (masquerade) where you can connect from
+the intranet to the outer world by @{[ a_href 'http://www.openssh.org/','SSH' ]}
+you can use these security safe scripts.</p>
+<p>If you are able to set up port forwarding on the firewall you do not need any such scripts.
+In the case of HTTP-only proxy you cannot use these scripts - look elsewhere.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
my $cvsfile=sub ($) {
my($file)=@_;
return a_href $W->{"project_viewcvs"}.'/*checkout*/ssht/hostintranet/etc-inittab?rev=HEAD',
- CGI::escapeHTML($file);
+ escapeHTML($file);
};
print <<"HERE";
server in public Internet. Replace <b>1.2.3.4-IP-of-public.internet.com</b>
with IP address of this host</p>
</li>
- <li>Generate new keypair by '<b>ssh-keygen -t dsa</b>'.</p>
+ <li>
+ <p>Generate new keypair by '<b>ssh-keygen -t dsa</b>'.</p>
<p>Place its public key part to
@{[ &{$cvsfile}('public.internet.com/home-hostintranet-ssht/.ssh/authorized_keys') ]}.</p>
<p>Place its private key part to
@{[ &{$cvsfile}('hostintranet/public.internet.com--hostintranet-ssht--identity') ]}.
Protect this file by '<i>chmod 600 hostintranet/public.internet.com--hostintranet-ssht--identity</i>'.</p>
+ </li>
<li>
<p>Append line from @{[ &{$cvsfile}('public.internet.com/etc-passwd') ]}
to the file <b>/etc/passwd</b> on your server in public Internet.</p>
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::ssht' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::ssht::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"ssht",
- "platform"=>"unixuser",
- "priority"=>90,
- "cvs"=>"ssht",
- "summary"=>'Unattended intranet host accessibility by '.a_href('http://www.openssh.org/','SSH').' tunnel',
- "license"=>"PD",
- "maintenance"=>"ready",
- "sponsorship"=>a_href('http://www.jklabs.cz/','JKLabs'),
- "language"=>"bash",
- "description"=><<"HERE",
-<p>Do you need to admin remote host placed in the intranet behind firewall out of your control?
-If the firewall performat NAT (masquerade) where you can connect from
-the intranet to the outer world by @{[ a_href 'http://www.openssh.org/','SSH' ]}
-you can use these security safe scripts.</p>
-<p>If you are able to set up port forwarding on the firewall you do not need any such scripts.
-In the case of HTTP-only proxy you cannot use these scripts - look elsewhere.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::step' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::step'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::step::ListItem;
+package project::step::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"dead",
"language"=>"PHP 3.0",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>Preview of a possible future web database solution for a lawyers association.
Currently it remains as a source of some web development @{[ a_href 'http://www.php.net/','PHP 3.0' ]}
codebase to be reused in other projects.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::surprise'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::surprise::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::surprise::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::surprise::ListItem::ListItem,
- );
-
-
-print centerimg "surprise-gnome-0","Gnome client";
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::surprise' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::surprise'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::surprise::ListItem;
+package project::surprise::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"link-Developer Documentation"=>"http://surprise.sourceforge.net/doc/tech.html",
"summary"=>"GPLed Partition Magic clone",
"license"=>"GPL",
- "sponsorship"=>a_href('http://www.suse.com/','SuSE'),
+ "sponsorship"=>sub { return a_href('http://www.suse.com/','SuSE'); },
"maintenance"=>"update",
- "ownership"=><<"HERE",
+ "ownership"=>sub { return <<"HERE"; },
Member of the development team:
<ul>
<li>@{[ a_href 'http://atrey.karlin.mff.cuni.cz/~jack/','Jan Kara' ]}</li>
"description"=><<"HERE",
<p>Partition Surprise is a GPL partition managing software for GNU/Linux. Partition
resizes, moves and conversions is implemented. Limited support of operations on
-mounted ext2-filesystem included as well.
+mounted ext2-filesystem included as well.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print centerimg "surprise-gnome-0","Gnome client";
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ Index.pm
+
EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl \
surprise-gnome-0.png
CLEANFILES+= \
surprise-gnome-0.gif
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::tac_plus'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::tac_plus::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::tac_plus::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"tac_plus auth",
+ "platform"=>"unixuser",
+ "priority"=>270,
+ "icon"=>"cisco-icon.jpeg",
+ "download-GTS rel.4 diff for TACACS+ v4.0.3"=>"tac_plus-F4.0.3.alpha.8.gts4.diff.gz",
+ "download-TACACS+ v4.0.3, Devrim Seral rel.8"=>"http://www.gazi.edu.tr/tacacs/index.php?page=download",
+ "cvs"=>"tac_plus",
+ "link-Freshmeat"=>sub {
+ return a_href('http://freshmeat.net/branches/18747/','Tacacs+ - Authorization by NAS host patch branch');
+ },
+ "summary"=>sub {
+ return a_href('http://www.cisco.com/warp/public/614/7.html','Cisco TACACS+').' NAS host based authorization';
+ },
+ "license"=>"PD",
+ "maintenance"=>"pending",
+ "language"=>"C patch",
+ "sponsorship"=>sub { return a_href('http://www.gtsgroup.cz/'.'GTS'); },
+ "description"=><<"HERE",
+<p>Patch provides complete freedom of specifying any
+configuration changes depending on the specific NAS the user is being logged
+on. This involves different enable password, NAS keys but now also: various
+specific commands, permitted services etc.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
+
print <<'HERE';
<p>Supplied new version is a radical update from the coding view, major updates
include:</p>
</ul>
HERE
-My::Web->footer();
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::tac_plus' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::tac_plus::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"tac_plus auth",
- "platform"=>"unixuser",
- "priority"=>270,
- "icon"=>"cisco-icon.jpeg",
- "download-GTS rel.4 diff for TACACS+ v4.0.3"=>"tac_plus-F4.0.3.alpha.8.gts4.diff.gz",
- "download-TACACS+ v4.0.3, Devrim Seral rel.8"=>"http://www.gazi.edu.tr/tacacs/index.php?page=download",
- "cvs"=>"tac_plus",
- "link-".a_href('http://freshmeat.net/','Freshmeat')=>
- a_href('http://freshmeat.net/branches/18747/','Tacacs+ - Authorization by NAS host patch branch'),
- "summary"=>a_href('http://www.cisco.com/warp/public/614/7.html','Cisco TACACS+')
- .' NAS host based authorization',
- "license"=>"PD",
- "maintenance"=>"pending",
- "language"=>"C patch",
- "sponsorship"=>a_href('http://www.gtsgroup.cz/'.'GTS'),
- "description"=><<"HERE",
-<p>Patch provides complete freedom of specifying any
-configuration changes depending on the specific NAS the user is being logged
-on. This involves different enable password, NAS keys but now also: various
-specific commands, permitted services etc.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::tcp_rto'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::tcp_rto::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::tcp_rto::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"tcp_rto",
+ "platform"=>"unixuser",
+ "trivia"=>1,
+ "priority"=>330,
+ "download-Linux kernel 2.2.17 patch"=>"linux-2.2.17-tcp_rto-1.diff",
+ "download-Linux kernel 2.4.16 patch"=>"linux-2.4.16-tcp_rto-1.diff",
+ "summary"=>"Linux kernel maximal TCP round-trip-time patch",
+ "license"=>"GPL",
+ "maintenance"=>"ready",
+ "language"=>"C patch",
+ "description"=><<"HERE",
+<p>Solve your problems with network connection dropping too much of your
+packets. It forces Linux kernel to insist repeating the packages to prevent
+slowdown of the TCP connection up to its unusable state.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
print <<"HERE";
<p>This patch can solve your problems if you have network connection dropping too much
"<b>/proc/sys/net/ipv4/tcp_rto_max</b>", it is expressed in <tt>Hz</tt>
units (<tt>100-per-second</tt> on <i>x86</i> platform). You may need also to enlarge
your maximal retry count in "<b>/proc/sys/net/ipv4/tcp_retries2</b>",
-otherwise <u>your</u> machine will reject the connection as it will have to retry
+otherwise <b>your</b> machine will reject the connection as it will have to retry
the packets more than in sane states.</p>
-<p><font color="red">Please use this feature very carefully! You are violating
-<tt>RFC</tt> standards and you can get your network administrators to be very angry!</font></p>
+<p style="color: red;">Please use this feature very carefully! You are violating
+<tt>RFC</tt> standards and you can get your network administrators to be very angry!</p>
HERE
-My::Web->footer();
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::tcp_rto' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::tcp_rto::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"tcp_rto",
- "platform"=>"unixuser",
- "trivia"=>1,
- "priority"=>330,
- "download-Linux kernel 2.2.17 patch"=>"linux-2.2.17-tcp_rto-1.diff",
- "download-Linux kernel 2.4.16 patch"=>"linux-2.4.16-tcp_rto-1.diff",
- "summary"=>"Linux kernel maximal TCP round-trip-time patch",
- "license"=>"GPL",
- "maintenance"=>"ready",
- "language"=>"C patch",
- "description"=><<"HERE",
-<p>Solve your problems with network connection dropping too much of your
-packets. It forces Linux kernel to insist repeating the packages to prevent
-slowdown of the TCP connection up to its unusable state.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::tcpdump'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::tcpdump::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::tcpdump::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"tcpdump ASCII",
+ "platform"=>"unixuser",
+ "trivia"=>1,
+ "priority"=>170,
+ "download"=>"tcpdump-3.4-ASCIIdump.diff",
+ "download-tcpdump-3.4"=>"ftp://ftp.ee.lbl.gov/tcpdump-3.4.tar.Z",
+ "summary"=>"tcpdump(1) patch for better output readable as ASCII",
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "language"=>"C patch",
+ "description"=><<"HERE",
+<p>Makes the text messages of tcpdump(1) readable when option <code>-x</code> is used.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
+
print <<'HERE';
<p>From original raw hex output it now looks as in example:</p>
</pre>
HERE
-My::Web->footer();
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::tcpdump' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::tcpdump::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"tcpdump ASCII",
- "platform"=>"unixuser",
- "trivia"=>1,
- "priority"=>170,
- "download"=>"tcpdump-3.4-ASCIIdump.diff",
- "download-tcpdump-3.4"=>"ftp://ftp.ee.lbl.gov/tcpdump-3.4.tar.Z",
- "summary"=>"tcpdump(1) patch for better output readable as ASCII",
- "license"=>"PD",
- "maintenance"=>"ready",
- "language"=>"C patch",
- "description"=><<"HERE",
-<p>Makes the text messages of tcpdump(1) readable when option <code>-x</code> is used.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::timeplan'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::timeplan::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::timeplan::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::timeplan::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::timeplan' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::timeplan'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::timeplan::ListItem;
+package project::timeplan::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::udpgate'
-# Copyright (C) 2004 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::udpgate::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::udpgate::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::udpgate::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::udpgate' for list.cgi.pl
-# Copyright (C) 2004 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::udpgate'
+# Copyright (C) 2004-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::udpgate::ListItem;
+package project::udpgate::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"name"=>"udpgate",
"platform"=>"unixuser",
"priority"=>505,
- "download-i386 static binary"=>"dist/udpgate-1.0.1",
- "download-gzipped i386 static binary"=>"dist/udpgate-1.0.1.gz",
- "download-i386 static RPM package"=>"dist/udpgate-1.0.1-0.i386.rpm",
- "download-sources RPM package"=>"dist/udpgate-1.0.1-0.src.rpm",
- "download-sources .tar.gz"=>"dist/udpgate-1.0.1.tar.gz",
+ "download-i386 static binary"=>"dist/udpgate-1.0.3",
+ "download-gzipped i386 static binary"=>"dist/udpgate-1.0.3.gz",
+ "download-i386 static RPM package"=>"dist/udpgate-1.0.3-0.i386.rpm",
+ "download-sources RPM package"=>"dist/udpgate-1.0.3-0.src.rpm",
+ "download-sources .tar.gz"=>"dist/udpgate-1.0.3.tar.gz",
+ "download-Fedora Core 4 static builder"=>"dist/build-udpgate-static-2005-09-28-00.tar.gz",
"cvs"=>"udpgate",
"summary"=>"UDP packets gateway",
"license"=>"GPL",
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-<Files "udpgate-1.0">
- <IfModule mod_csacek.c>
- csacekEngine Off
- </IfModule>
+<FilesMatch "^udpgate-[0-9.]*$">
ForceType application/octet-stream
-</Files>
+</FilesMatch>
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::vblib'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::vblib::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::vblib::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::vblib::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::vblib' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::vblib'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::vblib::ListItem;
+package project::vblib::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::wayback'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::wayback::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::wayback::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::wayback::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::wayback' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::wayback'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::wayback::ListItem;
+package project::wayback::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"description"=><<"HERE",
<p>This programs is userful for time-limited demo versions, of course.</p>
<p>Just set environment variable "<b>WAYBACK</b>" to the number of seconds to shift the system time back.
-Set "<b>LD_PRELOAD</b>" to the provided <b>libwayback.so</b> and run your demo program.</P>
+Set "<b>LD_PRELOAD</b>" to the provided <b>libwayback.so</b> and run your demo program.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
-#! /usr/bin/perl
-#
# $Id$
# Main page of 'My::Project::winvnc'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::winvnc::ListItem';
+Wuse 'project::Lib';
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::winvnc::ListItem::ListItem,
+our @ListItem=(
+ "name"=>"WinVNC hide",
+ "platform"=>"w32",
+ "priority"=>560,
+ "icon"=>"nowinvnc",
+ "download-already patched version 4.0"=>"vnc-4.0-x86_win32-exe-SECRET.zip",
+ "download-original version 4.0"=>"http://www.realvnc.com/dist/vnc-4.0-x86_win32.exe",
+ "download-already patched version 3.3.3r9"=>"vnc-3.3.3r9_x86_win32-exe-SECRET.zip",
+ "download-original version 3.3.3r9"=>"http://www.uk.research.att.com/archive/vnc/dist/vnc-3.3.3r9_x86_win32.zip",
+ "download-already patched version 3.3.3r7"=>"vnc-3.3.3r7_x86_win32-exe-SECRET.zip",
+ "download-original version 3.3.3r7"=>"http://www.uk.research.att.com/archive/vnc/dist/vnc-3.3.3r7_x86_win32.zip",
+ "link-VNC Homepage"=>"http://www.realvnc.com/",
+ "summary"=>"Hide running WinVNC server",
+ "license"=>"PD",
+ "maintenance"=>"ready",
+ "language"=>"i386 asm patch",
+ "description"=>sub { return <<"HERE"; },
+<p>If you install <i>WinVNC</i> in
+@{[ a_href 'http://www.microsoft.com/','MS' ]} @{[ a_href 'http://www.microsoft.com/windows/','Windows' ]}
+environment, you will notice that it creates its own small icon in <i>System Tray</i>.
+Sometimes you want to get rid of this visible icon and you cannot remove it by any configuration
+settings.</p>
+HERE
);
+sub handler
+{
+project::Lib->init();
+
+
print <<'HERE';
<p>You need to download the original distribution archive, install it and later
just replace its file <tt>C:\Program Files\ORL\VNC\WinVNC.exe</tt>.
<p>Here is the table for bytes to patch in <tt>WinVNC.exe</tt> from <tt>vnc-3.3.3r9_x86_win32.zip</tt>.
You are not interested in this table if you download the <a href="http://www.realvnc.com/dist/vnc-4.0-x86_win32.exe">already patched
.EXE file</a> referenced in the heading.</p>
-<table border="1" align="center">
-<tr><th></th><th>File offset</th><th>Hex bytes</th></tr>
+<table border="1" class="margin-center">
+ <tr><th></th><th>File offset</th><th>Hex bytes</th></tr>
<tr><td>4.0 original</td> <td><tt>00003390</tt></td><td align="right">00 6A 66 6A 69 6A 65 56 8D 8D F8 FE FF FF E8 2D </td></tr>
<tr><td>4.0 'SECRET' patched</td><td><tt>00003390</tt></td><td align="right">00 6A 66 6A 69 6A 65 56 8D 8D F8 FE FF FF <b>EB 03</b> </td></tr>
<tr><td>4.0 original</td> <td><tt>000035E0</tt></td><td align="right">F8 FE FF FF E8 97 F2 FF FF 53 E8 69 4D 02 00 8B </td></tr>
<tr><td>3.3.3r7 'SECRET' patched</td><td><tt>0000C9F0</tt></td><td align="right"><b>C2 08 00</b> 8B F1 57 8B 46 60 C7 46 68 58 00 00 00</td></tr>
</table>
<p>Here you can check whether your patch was successful:</p>
-<table border="1" align="center">
+<table border="1" class="margin-center">
<tr><th>File from package</th><th>MD5 sum</th></tr>
<tr><td><tt>WinVNC.exe-4.0 </tt>, original</td> <td><tt>7043ddf51d7135c1d1b83b4213dfed61</tt></td></tr>
<tr><td><tt>WinVNC.exe-4.0 </tt>, 'SECRET' patched</td><td><tt>916c82e99e1dc17bebdc31aebc895b52</tt></td></tr>
</table>
HERE
-My::Web->footer();
+
+exit;
+}
+1;
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Definition of 'My::Project::winvnc' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::winvnc::ListItem;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-use My::Web;
-
-
-our @ListItem=(
- "name"=>"WinVNC hide",
- "platform"=>"w32",
- "priority"=>560,
- "icon"=>"nowinvnc",
- "download-already patched version 4.0"=>"vnc-4.0-x86_win32-exe-SECRET.zip",
- "download-original version 4.0"=>"http://www.realvnc.com/dist/vnc-4.0-x86_win32.exe",
- "download-already patched version 3.3.3r9"=>"vnc-3.3.3r9_x86_win32-exe-SECRET.zip",
- "download-original version 3.3.3r9"=>"http://www.uk.research.att.com/archive/vnc/dist/vnc-3.3.3r9_x86_win32.zip",
- "download-already patched version 3.3.3r7"=>"vnc-3.3.3r7_x86_win32-exe-SECRET.zip",
- "download-original version 3.3.3r7"=>"http://www.uk.research.att.com/archive/vnc/dist/vnc-3.3.3r7_x86_win32.zip",
- "link-VNC Homepage"=>"http://www.realvnc.com/",
- "summary"=>"Hide running WinVNC server",
- "license"=>"PD",
- "maintenance"=>"ready",
- "language"=>"i386 asm patch",
- "description"=><<"HERE",
-<p>If you install <i>WinVNC</i> in
-@{[ a_href 'http://www.microsoft.com/','MS' ]} @{[ a_href 'http://www.microsoft.com/windows/','Windows' ]}
-environment, you will notice that it creates its own small icon in <i>System Tray</i>.
-Sometimes you want to get rid of this visible icon and you cannot remove it by any configuration
-settings.</p>
-HERE
- );
-
-1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::wllib'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::wllib::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::wllib::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::wllib::ListItem::ListItem,
- );
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::wllib' for list.cgi.pl
+# Main page of 'My::Project::wllib'
# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# This program is free software; you can redistribute it and/or modify
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::wllib::ListItem;
+package project::wllib::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"PD",
"maintenance"=>"obsolete-Any of the supported backends are no longer being used.",
"language"=>"C",
- "description"=><<"HERE",
+ "description"=>sub { return <<"HERE"; },
<p>This library should make you generically use line drawing on the following platforms:
@{[ a_href 'http://www.x.org/','UNIX/X Windows System X11 (libX11)' ]},
@{[ a_href 'http://www.svgalib.org/','UNIX/SVGAlib' ]} and
HERE
);
+sub handler
+{
+project::Lib->init();
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-# Main page of 'My::Project::xbill'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
-#
-# 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; exactly version 2 of June 1991 is required
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-package project::xbill::Index;
-require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
-our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-our $CVS_ID=q$Id$;
-use strict;
-use warnings;
-
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
-use My::Web;
-Wuse 'My::Project';
-Wuse 'project::xbill::ListItem';
-
-
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::xbill::ListItem::ListItem,
- );
-
-
-print <<"HERE";
-<p>This project has been moved to @{[ a_href 'http://sourceforge.net/','SourceForge' ]}.
-Please refer to its @{[ a_href 'http://xbill.sourceforge.net/','SourceForge project page' ]}.</p>
-
-@{[ centerimg "redmond_.jpeg","xBill" ]}
-HERE
-
-
-My::Web->footer();
-#! /usr/bin/perl
-#
# $Id$
-# Definition of 'My::Project::xbill' for list.cgi.pl
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Main page of 'My::Project::xbill'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::xbill::ListItem;
+package project::xbill::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use warnings;
use My::Web;
+Wuse 'project::Lib';
our @ListItem=(
"license"=>"GPL",
"maintenance"=>"ready",
"language"=>"C",
- "description"=><<"HERE",
-<p>Rewritten @{[ a_href 'ftp://ftp.x.org/contrib/games/xbill-2.0.tgz','classical xBill game' ]}.
+ "description"=>sub { return <<"HERE"; },
+<p>Rewritten @{[ a_href 'ftp://ftp.x.org/contrib/games/xbill-2.0.tgz','classical xBill game' ]}.</p>
<p>Features list: @{[ a_href 'http://www.gnome.org/','Gnome/GTK+' ]} UI,
network gameplay, C++ no longer required, portability.</p>
HERE
);
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+<p>This project has been moved to @{[ a_href 'http://sourceforge.net/','SourceForge' ]}.
+Please refer to its @{[ a_href 'http://xbill.sourceforge.net/','SourceForge project page' ]}.</p>
+
+@{[ centerimg "redmond_.jpeg","xBill" ]}
+HERE
+
+
+exit;
+}
1;
include $(top_srcdir)/Makefile-head.am
-EXTRA_DIST+= \
- ListItem.pm \
- Index.html.pl
+MODPERL_PM+= \
+ Index.pm
+
+++ /dev/null
-DirectoryIndex Resume-JanKratochvil.html.pl
-#! /usr/bin/perl
-#
# $Id$
-# Main page of 'My::Project::step'
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Resume redirection Perl template.
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-package project::step::Index;
+package resume::Index;
require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-Wuse 'My::Project';
-Wuse 'project::step::ListItem';
+use Apache2::Const qw(HTTP_MOVED_PERMANENTLY);
-My::Project->init_project(
- "__PACKAGE__"=>__PACKAGE__,
- "ListItem"=>\@project::step::ListItem::ListItem,
- );
+our $HTML_TEST="download";
+our $HTML_TEST_RC=HTTP_MOVED_PERMANENTLY;
-My::Web->footer();
+sub handler
+{
+my $W=My::Web->init();
+My::Web->http_moved($W->{"resume_url"},HTTP_MOVED_PERMANENTLY);
+}
+1;
include $(top_srcdir)/Makefile-head.am
+MODPERL_PM+= \
+ ResumeJanKratochvil.pm \
+ Index.pm
+
EXTRA_DIST+= \
- Resume-JanKratochvil.html.pl \
- Resume-JanKratochvil.tex \
- Resume-JanKratochvil.pdf
-# Resume-JanKratochvil-face.png
+ ResumeJanKratochvil.tex \
+ ResumeJanKratochvil.pdf
+# ResumeJanKratochvil-face.png
DOWNSCALE=100
-height $$(echo $$(pngtopnm <$< |head -n2)|awk '{print $$3/$(DOWNSCALE)}') \
|ps2pdf13 - >$@
-Resume-JanKratochvil.pdf: Resume-JanKratochvil.tex #Resume-JanKratochvil-face.pdf
+ResumeJanKratochvil.pdf: ResumeJanKratochvil.tex #ResumeJanKratochvil-face.pdf
pdflatex $< resume.tex
CLEANFILES+= \
*.aux \
*.log \
*.out \
- Resume-JanKratochvil-face.pdf
+ ResumeJanKratochvil-face.pdf
--- /dev/null
+/* $Id$
+ * CSS of Resume page
+ * Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+ *
+ * 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; exactly version 2 of June 1991 is required
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+td { vertical-align: top; }
+table { border-collapse: collapse; border-style: solid; border-width: 1px; margin: 8px; }
+A[href] { text-decoration: inherit; /* revoke underline */ }
+A[href].project { text-decoration: underline; }
+.platform { font-style: italic; white-space: nowrap; }
+table.referees td.com { text-align: center; }
+.techs { white-space: nowrap; }
+caption { caption-side: top; }
+table.jobs td { padding: 1ex; }
-#! /usr/bin/perl
-#
# $Id$
# Resume page Perl template.
-# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
#
# 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
use strict;
use warnings;
-BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
-require CGI;
require Crypt::Rot13;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
+
+sub Contact($)
+{
+my($self)=@_;
+
+ return (
+ "Name" =>"Jan Kratochvil",
+ "English" =>"technical: fluent, general: communicable",
+ "Born" =>"1979",
+ "Sex" =>"male",
+ "Licenses"=>"motorcycle, car",
+ "eMail" =>(map({ a_href("mailto:$_",$_); } 'job@jankratochvil.net'))[0],
+ "Projects"=>a_href('http://www.jankratochvil.net/project/'),
+ "Resume" =>a_href('http://www.jankratochvil.net/resume/')."<br />"
+ ."[ ".a_href('/resume/ResumeJanKratochvil.pdf','PDF')
+ ."| ".a_href('/resume/ResumeJanKratochvil.txt','text')
+ ."]",
+ "OpenPGP" =>a_href('/pgp-JanKratochvil.txt','')
+ .'pub 1024D/26A802B2 2004-01-17'."<br />"
+ .'sub 2048g/A74DF86D 2004-01-17 [expires: 2007-01-16]'
+ );
+}
+sub handler
+{
my $W=My::Web->init(
- "__PACKAGE__"=>__PACKAGE__,
"title"=>"Resume",
"section"=>"Resume",
"heading"=>0,
"footer"=>0,
- "head_css"=>"
-td { vertical-align: top; }
-table { border-collapse: collapse; border-style: solid; border-width: 1px; margin: 8px; }
-A[href] { text-decoration: inherit; /* revoke underline */ }
-A[href].project { text-decoration: underline; }
-.platform { font-style: italic; white-space: nowrap; }
-table.referees td.com { text-align: center; }
-.techs { white-space: nowrap; }
-caption { caption-side: top; }
-table.jobs td { padding: 1ex; }
-",
+ "css_push"=>"/resume/ResumeJanKratochvil.css",
"args_check"=>{
"referees"=>'', # Do not bother with '^(?:(?i)referees)?$'
"print"=>'^(?:print)?$',
},
+ "http_safe"=>1, # For our anti-robot POST request.
);
$W->{"args"}{"Wabs"}=1;
My::Web->heading();
-my %item=( My::Project::item_hash_read() );
+my %item=project::Lib->name_to_hashref();
my @itemnames=sort {
($item{$b}{"priority"} <=> $item{$a}{"priority"})
or (lc($item{$a}->{"name"}) cmp lc($item{$b}->{"name"}));
my $uClinux=a_href 'http://www.uclinux.com/','uClinux';
-my $mailme=(map({ a_href("mailto:$_",$_); } 'job@jankratochvil.net'))[0];
my $now=(localtime())[5]+1900;
print <<"HERE";
-<table width="100%" style="border-style: none;"><tr><td align="center"><table>
-<tr><td class="tab-head">Name </td><td>Jan Kratochvil</td></tr>
-<tr><td class="tab-head">English </td><td>technical: fluent, general: communicable</td></tr>
-<tr><td class="tab-head">Born </td><td>1979</td></tr>
-<tr><td class="tab-head">Sex </td><td>male</td></tr>
-<tr><td class="tab-head">Licenses</td><td>motorcycle, car</td></tr>
-<tr><td class="tab-head">eMail </td><td>$mailme</td></tr>
-<tr><td class="tab-head">Projects</td><td>@{[ a_href('http://www.jankratochvil.net/project/') ]}</td></tr>
-<tr><td class="tab-head">Resume </td><td>@{[ a_href('http://www.jankratochvil.net/resume/') ]}<br />
- [ @{[ a_href '/resume/Resume-JanKratochvil.pdf','PDF' ]}
- | @{[ a_href '/resume/Resume-JanKratochvil.txt','text' ]} ]</td></tr>
-<tr><td class="tab-head">OpenPGP </td><td style="font-family: monospace; text-align: left;">@{[ a_href '/pgp-JanKratochvil.txt',''
- .'pub 1024D/26A802B2 2004-01-17'.'<br />'
- .'sub 2048g/A74DF86D 2004-01-17 [expires: 2007-01-16]'
- ]}</span></td></tr>
-</table></td></tr></table>
+<table border="0" class="margin-center">
+HERE
+my @contact=__PACKAGE__->Contact();
+while (@contact) {
+ my $key=shift @contact;
+ my $val=shift @contact;
+ print <<"HERE";
+<tr>
+ <td class="tab-head">$key</td>
+ <td@{[ ($key ne "OpenPGP" ? '' : ' style="font-family: monospace; text-align: left;"') ]}>$val</td>
+</tr>
+HERE
+ }
+print <<"HERE";
+</table>
@{[ vskip "3ex" ]}
<caption>Fulltime Jobs</caption>
<tr><th>Date</th><th>Company</th>
<th>Description</th></tr>
-<tr><td>2005/04-now</td><td class="com">@{[ a_href 'http://www.valinux.co.jp/','VA Linux Systems Japan' ]}</td>
+<tr><td>2005/04-now</td><td class="com">@{[
+ a_href_cc {""=>'http://www.valinux.co.jp/en/',
+ "JP"=>'http://www.valinux.co.jp/'},'VA Linux Systems Japan' ]}</td>
<td>@{[ a_href 'http://www.kernel.org/','Linux kernel' ]}
based development</td></tr>
<tr><td>2004/01-11</td><td class="com">@{[ a_href 'http://www.sun.com/','Sun Microsystems' ]}</td>
print <<"HERE";
<tr><td style="padding: 10px;" colspan="2">
<hr />
- <form method="post" action="@{[ top_dir $W->{"resume_url"} ]}">
- <p>Enter the word '<b>referees</b>' (without quotes) to disclose e-mail addresses:</p>
- <input type="text" size="15" name="referees" value="@{[ CGI::escapeHTML($W->{"args"}{"referees"}) ]}" />
- <input type="submit" value="Submit" />
- <p>(spambot protection)</p>
+ <form action="@{[ uri_escaped(path_web $W->{"resume_url"}) ]}" @{[ form_method "post" ]}>
+ <p>Enter the word '<b>referees</b>' (without quotes) to disclose e-mail addresses:<br />
+ <input type="text" size="15" name="referees" value="@{[ escapeHTML($W->{"args"}{"referees"}) ]}" /><br />
+ <input type="submit" value="Submit" /><br />
+ (spambot protection)</p>
</form>
</td></tr>
HERE
Detailed listing available at: @{[ a_href 'http://www.jankratochvil.net/projects/' ]}
</td></tr>
</thead>
-<tr><th>Platform</th><th>Available Free Projects</th></tr>
+<tbody>
+ <tr><th>Platform</th><th>Available Free Projects</th></tr>
HERE
- my @platforms=@My::Project::platforms;
+ my @platforms=@project::Lib::platforms;
while (@platforms) {
my $platform_sym =shift @platforms;
my $platform_name=shift @platforms;
print "</tr>\n";
}
print <<"HERE";
+</tbody>
</table>
HERE
-My::Web->footer();
+exit;
+}
+1;
StampMan: Database application (MS-DOS: Pascal, plainTeX)
-For referees e-mails please see: \href{http://www.jankratochvil.net/resume/}{http://www.jankratochvil.net/resume/}
+For referees e-mails please see: http://www.jankratochvil.net/resume/
Awards
User-agent: *
-Disallow: /project/ChangeLog.txt.pl
+Disallow: /project/ChangeLog.pm