Finally merged the branch 'apache20'(+'apache2') back to the main trunk.
authorshort <>
Thu, 10 Nov 2005 06:39:35 +0000 (06:39 +0000)
committershort <>
Thu, 10 Nov 2005 06:39:35 +0000 (06:39 +0000)
278 files changed:
.htaccess
Contact.css [new file with mode: 0644]
Contact.html.pl [deleted file]
Contact.pm [new file with mode: 0644]
Index.pm [moved from Index.html.pl with 67% similarity, mode: 0644]
Mailman.pm [moved from Mailman.pl with 73% similarity, mode: 0644]
Makefile-head.am
Makefile.am
Redirect.pl [deleted file]
SendMsg.pl [deleted file]
WebConfig.pm
autogen.pl
configure.ac
etmms/Index.pm [moved from etmms/Index.html.pl with 90% similarity, mode: 0644]
etmms/Makefile.am
have_js.js.pl [deleted file]
html-test.pl [new file with mode: 0755]
httpd.conf.pl [new file with mode: 0755]
project/332/Index.pm [moved from project/332/Index.html.pl with 75% similarity, mode: 0644]
project/332/ListItem.pm [deleted file]
project/332/Makefile.am
project/AutoGen/Index.html.pl [deleted file]
project/AutoGen/Index.pm [moved from project/AutoGen/ListItem.pm with 87% similarity, mode: 0644]
project/AutoGen/Makefile.am
project/CasioA/Index.html.pl [deleted file]
project/CasioA/Index.pm [moved from project/CasioA/ListItem.pm with 79% similarity, mode: 0644]
project/CasioA/Makefile.am
project/ChangeLog.pm [moved from project/ChangeLog.txt.pl with 75% similarity]
project/FordFulk/Index.html.pl [deleted file]
project/FordFulk/Index.pm [moved from project/FordFulk/ListItem.pm with 74% similarity, mode: 0644]
project/FordFulk/Makefile.am
project/Heat/Index.html.pl [deleted file]
project/Heat/Index.pm [moved from project/Heat/ListItem.pm with 74% similarity, mode: 0644]
project/Heat/Makefile.am
project/Index.pm [moved from project/Index.html.pl with 73% similarity]
project/Islet/Index.html.pl [deleted file]
project/Islet/Index.pm [moved from project/Islet/ListItem.pm with 75% similarity, mode: 0644]
project/Islet/Makefile.am
project/LaserGame/Index.html.pl [deleted file]
project/LaserGame/Index.pm [moved from project/LaserGame/ListItem.pm with 81% similarity, mode: 0644]
project/LaserGame/Makefile.am
project/Lib.css [new file with mode: 0644]
project/Lib.pm [new file with mode: 0644]
project/List.pm [moved from project/List.html.pl with 82% similarity]
project/Makefile.am
project/MyWeb/Index.html.pl [deleted file]
project/MyWeb/Index.pm [moved from project/MyWeb/ListItem.pm with 77% similarity, mode: 0644]
project/MyWeb/Makefile.am
project/Nokia61/Index.html.pl [deleted file]
project/Nokia61/Index.pm [moved from project/Nokia61/ListItem.pm with 64% similarity, mode: 0644]
project/Nokia61/Makefile.am
project/Nokia61/Nokia61.php
project/PerlMail/Index.pm [moved from project/PerlMail/Index.html.pl with 58% similarity, mode: 0644]
project/PerlMail/ListItem.pm [deleted file]
project/PerlMail/Makefile.am
project/Pod2Html.pm [moved from project/Pod2Html.html.pl with 64% similarity]
project/PortDiag/Index.html.pl [deleted file]
project/PortDiag/Index.pm [moved from project/PortDiag/ListItem.pm with 83% similarity, mode: 0644]
project/PortDiag/Makefile.am
project/QueryDev/Index.html.pl [deleted file]
project/QueryDev/Index.pm [moved from project/QueryDev/ListItem.pm with 87% similarity, mode: 0644]
project/QueryDev/Makefile.am
project/Rel.pm [moved from project/Rel.pl with 74% similarity]
project/ResRAM/Index.html.pl [deleted file]
project/ResRAM/Index.pm [moved from project/ResRAM/ListItem.pm with 92% similarity, mode: 0644]
project/ResRAM/Makefile.am
project/SClock/Index.html.pl [deleted file]
project/SClock/Index.pm [moved from project/SClock/ListItem.pm with 87% similarity, mode: 0644]
project/SClock/Makefile.am
project/ShortRel/Index.html.pl [deleted file]
project/ShortRel/Index.pm [moved from project/ShortRel/ListItem.pm with 87% similarity, mode: 0644]
project/ShortRel/Makefile.am
project/TraceFS/Index.html.pl [deleted file]
project/TraceFS/Index.pm [moved from project/TraceFS/ListItem.pm with 77% similarity, mode: 0644]
project/TraceFS/Makefile.am
project/badblock_guess/Index.html.pl [deleted file]
project/badblock_guess/Index.pm [moved from project/badblock_guess/ListItem.pm with 69% similarity, mode: 0644]
project/badblock_guess/Makefile.am
project/captive/CVS.pm [moved from project/captive/CVS.html.pl with 73% similarity]
project/captive/Index.css [new file with mode: 0644]
project/captive/Index.pm [moved from project/captive/Index.html.pl with 63% similarity]
project/captive/Lib.css [new file with mode: 0644]
project/captive/ListItem.pm [deleted file]
project/captive/Makefile.am
project/captive/Press.pm [moved from project/captive/Press.html.pl with 92% similarity]
project/captive/Preview.css [new file with mode: 0644]
project/captive/Preview.pm [moved from project/captive/Preview.html.pl with 72% similarity]
project/captive/Resources.pm [moved from project/captive/Resources.html.pl with 88% similarity]
project/captive/TestimonialBrunoSantos.pm [moved from project/captive/TestimonialBrunoSantos.html.pl with 89% similarity]
project/captive/Thanks.pm [moved from project/captive/Thanks.html.pl with 79% similarity]
project/captive/doc/APITypes.pm [moved from project/captive/doc/APITypes.html.pl with 83% similarity]
project/captive/doc/About.pm [moved from project/captive/doc/About.html.pl with 86% similarity]
project/captive/doc/Architecture.pm [moved from project/captive/doc/Architecture.html.pl with 90% similarity]
project/captive/doc/CacheManager.pm [moved from project/captive/doc/CacheManager.html.pl with 90% similarity]
project/captive/doc/CallType.pm [moved from project/captive/doc/CallType.html.pl with 86% similarity]
project/captive/doc/Components.pm [moved from project/captive/doc/Components.html.pl with 89% similarity]
project/captive/doc/Details.pm [moved from project/captive/doc/Details.html.pl with 86% similarity]
project/captive/doc/Index.html.pl [deleted file]
project/captive/doc/Index.pm [new file with mode: 0755]
project/captive/doc/LinuxNTFS.pm [moved from project/captive/doc/LinuxNTFS.html.pl with 87% similarity]
project/captive/doc/Macros.css [new file with mode: 0644]
project/captive/doc/Macros.pm
project/captive/doc/Makefile.am
project/captive/doc/Related.pm [moved from project/captive/doc/Related.html.pl with 78% similarity]
project/captive/doc/Reverse.pm [moved from project/captive/doc/Reverse.html.pl with 86% similarity]
project/captive/doc/TODO.pm [moved from project/captive/doc/TODO.html.pl with 82% similarity]
project/checkstatic/Index.html.pl [deleted file]
project/checkstatic/Index.pm [moved from project/checkstatic/ListItem.pm with 87% similarity, mode: 0644]
project/checkstatic/Makefile.am
project/cvsbranchdiff/Index.html.pl [deleted file]
project/cvsbranchdiff/Index.pm [moved from project/cvsbranchdiff/ListItem.pm with 86% similarity, mode: 0644]
project/cvsbranchdiff/Makefile.am
project/cvsutil/Index.html.pl [deleted file]
project/cvsutil/Index.pm [moved from project/cvsutil/ListItem.pm with 82% similarity, mode: 0644]
project/cvsutil/Makefile.am
project/d1xnet/Index.html.pl [deleted file]
project/d1xnet/Index.pm [moved from project/d1xnet/ListItem.pm with 75% similarity, mode: 0644]
project/d1xnet/Makefile.am
project/doswatch/Index.html.pl [deleted file]
project/doswatch/Index.pm [moved from project/doswatch/ListItem.pm with 87% similarity, mode: 0644]
project/doswatch/Makefile.am
project/energie/Index.html.pl [deleted file]
project/energie/Index.pm [moved from project/energie/ListItem.pm with 67% similarity, mode: 0644]
project/energie/Makefile.am
project/etherealmmse/Index.html.pl [deleted file]
project/etherealmmse/Index.pm [moved from project/etherealmmse/ListItem.pm with 77% similarity, mode: 0644]
project/etherealmmse/Makefile.am
project/etherealwsp/Index.html.pl [deleted file]
project/etherealwsp/Index.pm [moved from project/etherealwsp/ListItem.pm with 76% similarity, mode: 0644]
project/etherealwsp/Makefile.am
project/fixhtml/Index.pm [moved from project/fixhtml/Index.html.pl with 65% similarity, mode: 0644]
project/fixhtml/ListItem.pm [deleted file]
project/fixhtml/Makefile.am
project/gladewsrc/Index.html.pl [deleted file]
project/gladewsrc/Index.pm [moved from project/gladewsrc/ListItem.pm with 72% similarity, mode: 0644]
project/gladewsrc/Makefile.am
project/gsmperl/Index.html.pl [deleted file]
project/gsmperl/Index.pm [moved from project/gsmperl/ListItem.pm with 68% similarity, mode: 0644]
project/gsmperl/Makefile.am
project/int13sniff/Index.html.pl [deleted file]
project/int13sniff/Index.pm [moved from project/int13sniff/ListItem.pm with 81% similarity, mode: 0644]
project/int13sniff/Makefile.am
project/ircon/Index.pm [moved from project/ircon/Index.html.pl with 71% similarity, mode: 0644]
project/ircon/ListItem.pm [deleted file]
project/ircon/Makefile.am
project/kewensis/Index.html.pl [deleted file]
project/kewensis/Index.pm [moved from project/kewensis/ListItem.pm with 67% similarity, mode: 0644]
project/kewensis/Makefile.am
project/kix/Index.pm [moved from project/kix/Index.html.pl with 70% similarity, mode: 0644]
project/kix/ListItem.pm [deleted file]
project/kix/Makefile.am
project/kware/Index.html.pl [deleted file]
project/kware/Index.pm [moved from project/kware/ListItem.pm with 75% similarity, mode: 0644]
project/kware/Makefile.am
project/libtool/Index.pm [moved from project/libtool/Index.html.pl with 75% similarity, mode: 0644]
project/libtool/ListItem.pm [deleted file]
project/libtool/Makefile.am
project/libxml2reader/Index.html.pl [deleted file]
project/libxml2reader/Index.pm [moved from project/libxml2reader/ListItem.pm with 79% similarity, mode: 0644]
project/libxml2reader/Makefile.am
project/line9k/Index.html.pl [deleted file]
project/line9k/Index.pm [moved from project/line9k/ListItem.pm with 69% similarity, mode: 0644]
project/line9k/Makefile.am
project/lynxilla/Index.html.pl [deleted file]
project/lynxilla/Index.pm [moved from project/lynxilla/ListItem.pm with 80% similarity, mode: 0644]
project/lynxilla/Makefile.am
project/mdsms/Index.html.pl [deleted file]
project/mdsms/Index.pm [moved from project/mdsms/ListItem.pm with 69% similarity, mode: 0644]
project/mdsms/Makefile.am
project/middleman/Index.html.pl [deleted file]
project/middleman/Index.pm [moved from project/middleman/ListItem.pm with 62% similarity, mode: 0644]
project/middleman/Makefile.am
project/mod_auth_tacacs/Index.html.pl [deleted file]
project/mod_auth_tacacs/Index.pm [moved from project/mod_auth_tacacs/ListItem.pm with 65% similarity, mode: 0644]
project/mod_auth_tacacs/Makefile.am
project/mot2as/Index.html.pl [deleted file]
project/mot2as/Index.pm [moved from project/mot2as/ListItem.pm with 72% similarity, mode: 0644]
project/mot2as/Makefile.am
project/muttsort/Index.html.pl [deleted file]
project/muttsort/Index.pm [moved from project/muttsort/ListItem.pm with 76% similarity, mode: 0644]
project/muttsort/Makefile.am
project/netstat/Index.pm [moved from project/netstat/Index.html.pl with 67% similarity, mode: 0644]
project/netstat/ListItem.pm [deleted file]
project/netstat/Makefile.am
project/ntfsprogsgnomevfs/Index.html.pl [deleted file]
project/ntfsprogsgnomevfs/Index.pm [moved from project/ntfsprogsgnomevfs/ListItem.pm with 61% similarity, mode: 0644]
project/ntfsprogsgnomevfs/Makefile.am
project/oslik/Index.html.pl [deleted file]
project/oslik/Index.pm [moved from project/oslik/ListItem.pm with 80% similarity, mode: 0644]
project/oslik/Makefile.am
project/oslik/oslik/minsol.txt
project/patchd2/Index.html.pl [deleted file]
project/patchd2/Index.pm [moved from project/patchd2/ListItem.pm with 72% similarity, mode: 0644]
project/patchd2/Makefile.am
project/pgsqlsubstr/Index.html.pl [deleted file]
project/pgsqlsubstr/Index.pm [moved from project/pgsqlsubstr/ListItem.pm with 77% similarity, mode: 0644]
project/pgsqlsubstr/Makefile.am
project/phphash/Index.html.pl [deleted file]
project/phphash/Index.pm [moved from project/phphash/ListItem.pm with 82% similarity, mode: 0644]
project/phphash/Makefile.am
project/pipebuf/Index.html.pl [deleted file]
project/pipebuf/Index.pm [moved from project/pipebuf/ListItem.pm with 72% similarity, mode: 0644]
project/pipebuf/Makefile.am
project/postget/Index.pm [moved from project/postget/Index.html.pl with 55% similarity, mode: 0644]
project/postget/ListItem.pm [deleted file]
project/postget/Makefile.am
project/ppp9k/Index.html.pl [deleted file]
project/ppp9k/Index.pm [moved from project/ppp9k/ListItem.pm with 76% similarity, mode: 0644]
project/ppp9k/Makefile.am
project/redirector_ad/Index.html.pl [deleted file]
project/redirector_ad/Index.pm [moved from project/redirector_ad/ListItem.pm with 81% similarity, mode: 0644]
project/redirector_ad/Makefile.am
project/smbfs/Index.pm [moved from project/smbfs/Index.html.pl with 73% similarity, mode: 0644]
project/smbfs/ListItem.pm [deleted file]
project/smbfs/Makefile.am
project/sshpatch/Index.html.pl [deleted file]
project/sshpatch/Index.pm [moved from project/sshpatch/ListItem.pm with 63% similarity, mode: 0644]
project/sshpatch/Makefile.am
project/ssht/Index.pm [moved from project/ssht/Index.html.pl with 66% similarity, mode: 0644]
project/ssht/ListItem.pm [deleted file]
project/ssht/Makefile.am
project/step/Index.pm [moved from project/step/ListItem.pm with 83% similarity, mode: 0644]
project/step/Makefile.am
project/surprise/Index.html.pl [deleted file]
project/surprise/Index.pm [moved from project/surprise/ListItem.pm with 83% similarity, mode: 0644]
project/surprise/Makefile.am
project/tac_plus/Index.pm [moved from project/tac_plus/Index.html.pl with 61% similarity, mode: 0644]
project/tac_plus/ListItem.pm [deleted file]
project/tac_plus/Makefile.am
project/tcp_rto/Index.pm [moved from project/tcp_rto/Index.html.pl with 64% similarity, mode: 0644]
project/tcp_rto/ListItem.pm [deleted file]
project/tcp_rto/Makefile.am
project/tcpdump/Index.pm [moved from project/tcpdump/Index.html.pl with 72% similarity, mode: 0644]
project/tcpdump/ListItem.pm [deleted file]
project/tcpdump/Makefile.am
project/timeplan/Index.html.pl [deleted file]
project/timeplan/Index.pm [moved from project/timeplan/ListItem.pm with 87% similarity, mode: 0644]
project/timeplan/Makefile.am
project/udpgate/Index.html.pl [deleted file]
project/udpgate/Index.pm [moved from project/udpgate/ListItem.pm with 68% similarity, mode: 0644]
project/udpgate/Makefile.am
project/udpgate/dist/.htaccess
project/udpgate/dist/build-udpgate-static-2005-09-28-00.tar.gz [new file with mode: 0644]
project/udpgate/dist/udpgate-1.0.1 [deleted file]
project/udpgate/dist/udpgate-1.0.1-0.i386.rpm [deleted file]
project/udpgate/dist/udpgate-1.0.1-0.src.rpm [deleted file]
project/udpgate/dist/udpgate-1.0.1.gz [deleted file]
project/udpgate/dist/udpgate-1.0.1.tar.gz [deleted file]
project/udpgate/dist/udpgate-1.0.3 [new file with mode: 0755]
project/udpgate/dist/udpgate-1.0.3-0.i386.rpm [new file with mode: 0644]
project/udpgate/dist/udpgate-1.0.3-0.src.rpm [new file with mode: 0644]
project/udpgate/dist/udpgate-1.0.3.gz [new file with mode: 0755]
project/udpgate/dist/udpgate-1.0.3.tar.gz [new file with mode: 0644]
project/udpgate/dist/udpgate-debuginfo-1.0.3-0.i386.rpm [new file with mode: 0644]
project/vblib/Index.html.pl [deleted file]
project/vblib/Index.pm [moved from project/vblib/ListItem.pm with 87% similarity, mode: 0644]
project/vblib/Makefile.am
project/wayback/Index.html.pl [deleted file]
project/wayback/Index.pm [moved from project/wayback/ListItem.pm with 84% similarity, mode: 0644]
project/wayback/Makefile.am
project/winvnc/Index.pm [moved from project/winvnc/Index.html.pl with 70% similarity, mode: 0644]
project/winvnc/ListItem.pm [deleted file]
project/winvnc/Makefile.am
project/wllib/Index.html.pl [deleted file]
project/wllib/Index.pm [moved from project/wllib/ListItem.pm with 90% similarity, mode: 0644]
project/wllib/Makefile.am
project/xbill/Index.html.pl [deleted file]
project/xbill/Index.pm [moved from project/xbill/ListItem.pm with 73% similarity]
project/xbill/Makefile.am
resume/.htaccess [deleted file]
resume/Index.pm [moved from project/step/Index.html.pl with 65% similarity, mode: 0644]
resume/Makefile.am
resume/ResumeJanKratochvil.css [new file with mode: 0644]
resume/ResumeJanKratochvil.pdf [moved from resume/Resume-JanKratochvil.pdf with 89% similarity]
resume/ResumeJanKratochvil.pm [moved from resume/Resume-JanKratochvil.html.pl with 83% similarity, mode: 0644]
resume/ResumeJanKratochvil.tex [moved from resume/Resume-JanKratochvil.tex with 100% similarity]
resume/ResumeJanKratochvil.txt [moved from resume/Resume-JanKratochvil.txt with 97% similarity]
robots.txt

index 131b503..eef8aaf 100644 (file)
--- a/.htaccess
+++ b/.htaccess
@@ -1,60 +1,68 @@
-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>
diff --git a/Contact.css b/Contact.css
new file mode 100644 (file)
index 0000000..7b72fbd
--- /dev/null
@@ -0,0 +1,23 @@
+/* $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"] {}
diff --git a/Contact.html.pl b/Contact.html.pl
deleted file mode 100755 (executable)
index a6d6a22..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#! /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 &lt;pgp-44FC7632@jankratochvil.net&gt;<br />'
-               .'sub  2048g/D9F5F44B 2002-10-07 [expires 2004-10-06]' ]}</span></td></tr>
-</table></td></tr></table>
-
-HERE
-
-
-My::Web->footer();
diff --git a/Contact.pm b/Contact.pm
new file mode 100644 (file)
index 0000000..2bc4d68
--- /dev/null
@@ -0,0 +1,68 @@
+# $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;
old mode 100755 (executable)
new mode 100644 (file)
similarity index 67%
rename from Index.html.pl
rename to Index.pm
index 888d663..6a82f5b
+++ b/Index.pm
@@ -1,8 +1,6 @@
-#! /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
@@ -25,14 +23,16 @@ 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);
+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;
old mode 100755 (executable)
new mode 100644 (file)
similarity index 73%
rename from Mailman.pl
rename to Mailman.pm
index acd5c3d..cf5979c
@@ -1,8 +1,6 @@
-#! /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
@@ -26,15 +24,17 @@ $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;
 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"=>{
@@ -44,17 +44,22 @@ my $W=My::Web->init(
                                "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;
@@ -66,4 +71,6 @@ if ($W->{"args"}{"back"}) {
        }
 
 
-My::Web->footer();
+exit;
+}
+1;
index 40656bc..d31c09c 100644 (file)
 # 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 $@ $<
index cf27f8b..2749d39 100644 (file)
@@ -53,12 +53,24 @@ ChangeLog:
 
 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
+
diff --git a/Redirect.pl b/Redirect.pl
deleted file mode 100755 (executable)
index 327ef14..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#! /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"});
diff --git a/SendMsg.pl b/SendMsg.pl
deleted file mode 100755 (executable)
index 1f7b4fb..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#! /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);
index 76a2970..1b3ea33 100644 (file)
@@ -32,83 +32,74 @@ use vars qw(@ISA @EXPORT);
 @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;">
@@ -125,6 +116,7 @@ our %WebConfig=(
 HERE
                        },
                "no_job"=>1,
+               "css_inherit"=>1,
                );
 
 1;
index d1c9fc2..acc0bf8 100755 (executable)
@@ -38,8 +38,10 @@ AutoGen->run(
                "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
@@ -60,7 +62,6 @@ AutoGen->run(
                                ./resume/*.aux
                                ./resume/*.log
                                ./resume/*.out
-                               ./resume/Resume-JanKratochvil-face.pdf
                                ./etmms/*.dia~
                                ./project/TraceFS/*.gif
                                ./project/pgsqlsubstr/*.gif
index 57922d6..7821e25 100644 (file)
 # 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([
@@ -30,6 +43,7 @@ Makefile
 ./dia-w.sh
 ./macros/Makefile
 ./My/Makefile
+./My/Hash/Makefile
 ./resume/Makefile
 ./etmms/Makefile
 ./project/Makefile
old mode 100755 (executable)
new mode 100644 (file)
similarity index 90%
rename from etmms/Index.html.pl
rename to etmms/Index.pm
index 3481e7d..9bc6a44
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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; };
@@ -26,14 +24,13 @@ $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;
-Wrequire 'My::Project';
+Wrequire 'project::Lib';
 
 
+sub handler
+{
 my $W=My::Web->init(
-               "__PACKAGE__"=>__PACKAGE__,
                "title"=>"MMS Center Debugging",
                );
 My::Web->heading();
@@ -43,8 +40,8 @@ sub project ($)
 {
 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"};
 };
 
 
@@ -149,19 +146,9 @@ MMS definition file URL decoded out of the data stream above:
        <li style="font-size: larger;">@{[ project 'etherealwsp' ]}</li>
 </ul>
 
-
-
-
-
-
-
-
-
-
-
-
-
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
index 920c2bf..1416e64 100644 (file)
@@ -18,4 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+=
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/have_js.js.pl b/have_js.js.pl
deleted file mode 100755 (executable)
index efc19d4..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#! /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();
diff --git a/html-test.pl b/html-test.pl
new file mode 100755 (executable)
index 0000000..ce68887
--- /dev/null
@@ -0,0 +1,82 @@
+#! /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;
diff --git a/httpd.conf.pl b/httpd.conf.pl
new file mode 100755 (executable)
index 0000000..7746866
--- /dev/null
@@ -0,0 +1,50 @@
+#! /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
old mode 100755 (executable)
new mode 100644 (file)
similarity index 75%
rename from project/332/Index.html.pl
rename to project/332/Index.pm
index 63000a9..ddf3be0
@@ -1,8 +1,6 @@
-#! /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
@@ -25,18 +23,34 @@ 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::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.
@@ -69,4 +83,6 @@ AmigaOS kernel core disassembled sources.</p>
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/332/ListItem.pm b/project/332/ListItem.pm
deleted file mode 100755 (executable)
index 264204f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /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;
index 5a40374..7c8b48c 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/AutoGen/Index.html.pl b/project/AutoGen/Index.html.pl
deleted file mode 100755 (executable)
index ffdf9b6..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/AutoGen/ListItem.pm
rename to project/AutoGen/Index.pm
index 28f0f75..a08cbfa
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -33,7 +32,7 @@ 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",
@@ -66,4 +65,9 @@ This project has some additional features:</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index a5a52c7..8a0ba99 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/CasioA/Index.html.pl b/project/CasioA/Index.html.pl
deleted file mode 100755 (executable)
index d2c5930..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 79%
rename from project/CasioA/ListItem.pm
rename to project/CasioA/Index.pm
index 2d6d088..0540773
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -39,7 +38,7 @@ 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>
@@ -48,4 +47,18 @@ 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;
index 544d810..fed041e 100644 (file)
@@ -18,7 +18,9 @@
 
 include $(top_srcdir)/Makefile-head.am
 
+MODPERL_PM+= \
+               Index.pm
+
 EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl \
-       Casio-A.png
+               Casio-A.png
+
similarity index 75%
rename from project/ChangeLog.txt.pl
rename to project/ChangeLog.pm
index 6c85224..4cae2ac 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,25 +23,35 @@ 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);
 
 
+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;
diff --git a/project/FordFulk/Index.html.pl b/project/FordFulk/Index.html.pl
deleted file mode 100755 (executable)
index d2ab68d..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 74%
rename from project/FordFulk/ListItem.pm
rename to project/FordFulk/Index.pm
index 9d929b4..8558ac9
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -43,4 +42,22 @@ 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;
index 0c1658b..8579d4f 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/Heat/Index.html.pl b/project/Heat/Index.html.pl
deleted file mode 100755 (executable)
index ff2caad..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 74%
rename from project/Heat/ListItem.pm
rename to project/Heat/Index.pm
index 592efd7..73a00e8
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -43,4 +42,22 @@ 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;
index 88d647c..794cf21 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
similarity index 73%
rename from project/Index.html.pl
rename to project/Index.pm
index 9a207a1..c0ba713 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,33 +23,32 @@ 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;
-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
@@ -76,4 +73,6 @@ while (@platforms) {
        }
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/Islet/Index.html.pl b/project/Islet/Index.html.pl
deleted file mode 100755 (executable)
index 731a9bc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 75%
rename from project/Islet/ListItem.pm
rename to project/Islet/Index.pm
index e3cc9c3..7c4d869
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -43,4 +42,20 @@ 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;
index d71feb9..54adb9f 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/LaserGame/Index.html.pl b/project/LaserGame/Index.html.pl
deleted file mode 100755 (executable)
index 412d472..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 81%
rename from project/LaserGame/ListItem.pm
rename to project/LaserGame/Index.pm
index a0f2c8f..e333d7f
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -39,7 +38,7 @@ 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
@@ -51,4 +50,18 @@ also capable of remote hardware configuration.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+
+
+print <<"HERE";
+@{[ centerimg "hw.jpeg","LaserGame Hardware" ]}
+@{[ vskip "1ex" ]}
+@{[ centerimg "LaserComm","LaserComm Utility" ]}
+HERE
+
+
+exit;
+}
 1;
index c848438..28867ce 100644 (file)
@@ -18,7 +18,9 @@
 
 include $(top_srcdir)/Makefile-head.am
 
+MODPERL_PM+= \
+               Index.pm
+
 EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl \
-       LaserGame.png
+               LaserGame.png
+
diff --git a/project/Lib.css b/project/Lib.css
new file mode 100644 (file)
index 0000000..3c1dd92
--- /dev/null
@@ -0,0 +1,20 @@
+/* $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; }
diff --git a/project/Lib.pm b/project/Lib.pm
new file mode 100644 (file)
index 0000000..4fde277
--- /dev/null
@@ -0,0 +1,370 @@
+# $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;
similarity index 82%
rename from project/List.html.pl
rename to project/List.pm
index fc149c9..e8e913d 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,30 +23,28 @@ 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;
-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].">"; }
@@ -62,10 +58,11 @@ my %col;
 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 {
@@ -133,7 +130,7 @@ my($platform)=@_;
                                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";
@@ -148,16 +145,16 @@ if (!$W->{"args"}{"platform"}) {
        &{$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;
index 5691c1d..71cf3b8 100644 (file)
@@ -88,9 +88,17 @@ SUBDIRS= \
                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
+
diff --git a/project/MyWeb/Index.html.pl b/project/MyWeb/Index.html.pl
deleted file mode 100755 (executable)
index 2f48d0c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 77%
rename from project/MyWeb/ListItem.pm
rename to project/MyWeb/Index.pm
index e9b9bec..c76b535
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -35,8 +34,8 @@ 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",
@@ -47,4 +46,9 @@ it.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index abc4f09..1321d93 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/Nokia61/Index.html.pl b/project/Nokia61/Index.html.pl
deleted file mode 100755 (executable)
index 82b1953..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 64%
rename from project/Nokia61/ListItem.pm
rename to project/Nokia61/Index.pm
index d5b717a..026163a
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -47,4 +46,30 @@ in rows.</p>
 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;
index a7798b9..b9d78b3 100644 (file)
 
 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
+
index ef694fd..937631e 100644 (file)
@@ -1,5 +1,7 @@
 <?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>
@@ -18,7 +20,9 @@ function table($array,$rw=0)
 {
 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:";
@@ -63,6 +67,11 @@ global $tables,$bgcolor_head,$bgcolor_body,$HTTP_GET_VARS;
                $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 '";
@@ -79,7 +88,7 @@ global $tables,$bgcolor_head,$bgcolor_body,$HTTP_GET_VARS;
                $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)
@@ -98,7 +107,7 @@ global $tables,$bgcolor_head,$bgcolor_body,$HTTP_GET_VARS;
                }
        table($input,1);
 
-       if (!$HTTP_GET_VARS["nohtml"]) {
+       if (!isset($HTTP_GET_VARS["nohtml"])) {
        ?>
 </BODY></HTML>
 <?php
old mode 100755 (executable)
new mode 100644 (file)
similarity index 58%
rename from project/PerlMail/Index.html.pl
rename to project/PerlMail/Index.pm
index f9048f7..a25cf62
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,37 @@ 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::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>
@@ -54,4 +72,6 @@ print <<"HERE";
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/PerlMail/ListItem.pm b/project/PerlMail/ListItem.pm
deleted file mode 100755 (executable)
index c0bb03b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /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;
index 5b04f16..394ea7e 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
similarity index 64%
rename from project/Pod2Html.html.pl
rename to project/Pod2Html.pm
index 7214962..2c785f4 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,22 +23,40 @@ 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;
 
 
+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;
diff --git a/project/PortDiag/Index.html.pl b/project/PortDiag/Index.html.pl
deleted file mode 100755 (executable)
index 12d64e8..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 83%
rename from project/PortDiag/ListItem.pm
rename to project/PortDiag/Index.pm
index 29da200..acece73
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -40,7 +39,7 @@ 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
@@ -50,4 +49,14 @@ allocation of this hardware.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+
+
+print centerimg "PortDiag","PortDiag Snapshot";
+
+
+exit;
+}
 1;
index 08328cd..fd90aaf 100644 (file)
@@ -18,7 +18,9 @@
 
 include $(top_srcdir)/Makefile-head.am
 
+MODPERL_PM+= \
+               Index.pm
+
 EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl \
-       PortDiag.png
+               PortDiag.png
+
diff --git a/project/QueryDev/Index.html.pl b/project/QueryDev/Index.html.pl
deleted file mode 100755 (executable)
index 498db71..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/QueryDev/ListItem.pm
rename to project/QueryDev/Index.pm
index e00b521..68bf7f4
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -47,4 +46,9 @@ device name to the specified variable.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index b4a1946..220f914 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
similarity index 74%
rename from project/Rel.pl
rename to project/Rel.pm
index fd39944..1cb01ae 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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)
@@ -65,7 +68,6 @@ for (0..$#projects) {
        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;
diff --git a/project/ResRAM/Index.html.pl b/project/ResRAM/Index.html.pl
deleted file mode 100755 (executable)
index 5280008..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 92%
rename from project/ResRAM/ListItem.pm
rename to project/ResRAM/Index.pm
index 6fc4ef0..bf0e6ee
@@ -1,7 +1,5 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -47,4 +46,9 @@ memory and a reset-surviving resident module is installed.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index 587004a..c298a2e 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/SClock/Index.html.pl b/project/SClock/Index.html.pl
deleted file mode 100755 (executable)
index 8d24758..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/SClock/ListItem.pm
rename to project/SClock/Index.pm
index 8e048d5..e60ba74
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -49,4 +48,9 @@ but SClock has no need for the TCP: device, the inet-handler and is much faster
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index 14bf2ee..ad9bcc7 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/ShortRel/Index.html.pl b/project/ShortRel/Index.html.pl
deleted file mode 100755 (executable)
index ff9f832..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/ShortRel/ListItem.pm
rename to project/ShortRel/Index.pm
index 7d9e8ac..6b86c2c
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -49,4 +48,9 @@ from 32-bit to 16-bit relocations saves 2 bytes per each one.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index ec2c257..3ec1888 100644 (file)
 
 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
+
diff --git a/project/TraceFS/Index.html.pl b/project/TraceFS/Index.html.pl
deleted file mode 100755 (executable)
index 6a6fe6b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 77%
rename from project/TraceFS/ListItem.pm
rename to project/TraceFS/Index.pm
index eaae33c..3337937
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -34,7 +33,7 @@ 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",
@@ -50,4 +49,18 @@ mangling of messages while running by multiple threads at once.</p>
 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;
index c561b56..3aa6dd2 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/badblock_guess/Index.html.pl b/project/badblock_guess/Index.html.pl
deleted file mode 100755 (executable)
index c2122e6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /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&nbsp;if=&lt;src_dev&gt;&nbsp;of=&lt;dst_dev&gt;&nbsp;bs=512&nbsp;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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 69%
rename from project/badblock_guess/ListItem.pm
rename to project/badblock_guess/Index.pm
index 37ea617..aab774e
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -48,4 +47,24 @@ while trying to prevent disk read retrying head recalibrations.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+
+
+print <<'HERE';
+<p>It is similiar to:</p>
+<blockquote class="code">
+       <p>dd&nbsp;if=&lt;src_dev&gt;&nbsp;of=&lt;dst_dev&gt;&nbsp;bs=512&nbsp;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;
index c759b6b..9433837 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
similarity index 73%
rename from project/captive/CVS.html.pl
rename to project/captive/CVS.pm
index ffcc660..57cd168 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,16 @@ 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::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"; },
                );
 
 
@@ -56,10 +53,10 @@ make
 
 <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)],
@@ -95,10 +92,12 @@ my($file_base,$text,%args)=@_;
 
 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.' &ge; 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.' &ge; 1.8.0'
+                               .'</td></tr></table>';
        };
 
 my @dist=(
@@ -117,23 +116,23 @@ 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&nbsp;regular build)</td>
-               <td colspan="3">
+               <tr>
+                       <td>'captive-static' build<br />system patches for Red Hat 9 Shrike<br />(never needed for a&nbsp;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;
@@ -148,8 +147,10 @@ print <<"HERE";
 <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>
@@ -169,4 +170,6 @@ print <<"HERE";
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/captive/Index.css b/project/captive/Index.css
new file mode 100644 (file)
index 0000000..5cf05be
--- /dev/null
@@ -0,0 +1,28 @@
+/* $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"] {}
similarity index 63%
rename from project/captive/Index.html.pl
rename to project/captive/Index.pm
index ce69391..f28a8ca 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,56 +23,69 @@ 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::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>&bull;&nbsp;'.a_href('#download','Download').'</td>'
-                                               .'<td>&bull;&nbsp;'.a_href('#news','NEWS').'</td>'
-                                               .'<td>&bull;&nbsp;'.a_href('#testimonials','Testimonials').'</td>'
-                                               .'<td>&bull;&nbsp;'.a_href('#press','Internet Press').'</td>'
-                                               .'<td>&bull;&nbsp;'.a_href('#notes','Installation Notes').'</td>'
-                                               .'<td>&bull;&nbsp;'.a_href('#lists','Mailing Lists').'</td>'
-                                               .'<td>&bull;&nbsp;'.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>&bull;&nbsp;'.a_href('#download','Download').'</td>'
+                                       .'<td>&bull;&nbsp;'.a_href('#news','NEWS').'</td>'
+                                       .'<td>&bull;&nbsp;'.a_href('#testimonials','Testimonials').'</td>'
+                                       .'<td>&bull;&nbsp;'.a_href('#press','Internet Press').'</td>'
+                                       .'<td>&bull;&nbsp;'.a_href('#notes','Installation Notes').'</td>'
+                                       .'<td>&bull;&nbsp;'.a_href('#lists','Mailing Lists').'</td>'
+                                       .'<td>&bull;&nbsp;'.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
 
@@ -84,58 +95,42 @@ my %version=(
                );
 
 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&nbsp;Hat&nbsp;9&nbsp;Shrike</li>
-                                               <li>Red&nbsp;Hat&nbsp;8&nbsp;Psyche</li>
-                                               <li>SuSE&nbsp;9.0</li>
-                                               <li>SuSE&nbsp;9.1</li>
-                                               <li>Mandrake&nbsp;9.1&nbsp;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&nbsp;Hat&nbsp;9&nbsp;Shrike</li>
+                               <li>Red&nbsp;Hat&nbsp;8&nbsp;Psyche</li>
+                               <li>SuSE&nbsp;9.0</li>
+                               <li>SuSE&nbsp;9.1</li>
+                               <li>Mandrake&nbsp;9.1&nbsp;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>
 
@@ -157,7 +152,7 @@ problems.</p>
 
 @{[ 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>
@@ -174,7 +169,7 @@ problems.</p>
 
 @{[ 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
@@ -187,7 +182,7 @@ problems.</p>
                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 &quot;AmunRa&quot; Rigby' ]}
                <p>Ok, I'm impressed (@{[ a_href 'http://www.amunra.co.uk/archives/000028.php','Captive Review' ]})</p>
@@ -219,35 +214,14 @@ problems.</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;"
@@ -263,28 +237,11 @@ print <<"HERE";
 </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>
@@ -333,9 +290,9 @@ my @lists=qw(captive-announce-list captive-list captive-devel-list);
 
 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 />
@@ -343,8 +300,8 @@ print <<"HERE";
                                <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"')
@@ -356,28 +313,30 @@ print <<"HERE";
                                <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>
@@ -402,10 +361,12 @@ print <<"HERE";
                                }
                        ]}
                </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;
diff --git a/project/captive/Lib.css b/project/captive/Lib.css
new file mode 100644 (file)
index 0000000..e213507
--- /dev/null
@@ -0,0 +1,20 @@
+/* $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; }
diff --git a/project/captive/ListItem.pm b/project/captive/ListItem.pm
deleted file mode 100755 (executable)
index 9fbbdf0..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /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;
index f22b373..85df28c 100644 (file)
@@ -21,11 +21,12 @@ include $(top_srcdir)/Makefile-head.am
 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
+
similarity index 92%
rename from project/captive/Press.html.pl
rename to project/captive/Press.pm
index 0b0e51c..efc9761 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,22 +23,21 @@ 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;
-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';
@@ -112,4 +109,7 @@ while (@URLs) {
 print "\t<li>...</li>\n";
 print "</ul>\n";
 
-My::Web->footer();
+
+exit;
+}
+1;
diff --git a/project/captive/Preview.css b/project/captive/Preview.css
new file mode 100644 (file)
index 0000000..3d25d3a
--- /dev/null
@@ -0,0 +1,21 @@
+/* $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; }
similarity index 72%
rename from project/captive/Preview.html.pl
rename to project/captive/Preview.pm
index ca49f1d..b516250 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,22 +23,20 @@ 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;
-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";
 
@@ -49,9 +45,9 @@ sub preview_img ($$;$)
 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
@@ -59,8 +55,8 @@ 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';
@@ -73,4 +69,6 @@ print preview_img 'doc/dia/TraceFS','TraceFS Debugging Hook for NT Cache Manager
 print preview_img 'captive-install-acquire','Captive Microsoft Windows Drivers Acquire Utility';
 
 
-My::Web->footer();
+exit;
+}
+1;
similarity index 88%
rename from project/captive/Resources.html.pl
rename to project/captive/Resources.pm
index eb6aacb..b3f7392 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,18 +23,18 @@ 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;
-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";
@@ -70,9 +68,11 @@ print "<ul>\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;
similarity index 89%
rename from project/captive/TestimonialBrunoSantos.html.pl
rename to project/captive/TestimonialBrunoSantos.pm
index 1521798..34e569d 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,22 +23,20 @@ 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;
-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';
@@ -99,4 +95,7 @@ Av. Pedro Alvares Cabral<br />
 6000-085 Castelo Branco</p>
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
similarity index 79%
rename from project/captive/Thanks.html.pl
rename to project/captive/Thanks.pm
index 3bf92b9..c6a2586 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,22 +23,22 @@ 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 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';
@@ -63,13 +61,13 @@ my($name,$pos,$why)=@_;
 
 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 &amp; 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'),
@@ -77,7 +75,7 @@ print name a_href('http://www.pavouk.org/','Pavel "Pavouk" Ruzicka'),a_href('htt
 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";
@@ -89,4 +87,7 @@ print <<'HERE';
 
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
similarity index 83%
rename from project/captive/doc/APITypes.html.pl
rename to project/captive/doc/APITypes.pm
index 9c0476c..d6d943f 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,24 +23,23 @@ 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'; }
 
 
+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
@@ -50,13 +47,13 @@ print <<"HERE";
        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' ]}
@@ -71,8 +68,8 @@ print <<"HERE";
        contain already prepared content at the runtime. There is a&nbsp;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>
@@ -94,10 +91,11 @@ print <<"HERE";
        <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 &quot;ntoskrnl.exe&quot;</h2></a>
+       <h2 id="functype_pass">Direct Pass to Original &quot;ntoskrnl.exe&quot;</h2>
 
                <p>Simple (standalone) functions such as
                <span class="function">RtlTimeToSecondsSince1970()</span> can be simply
@@ -109,11 +107,11 @@ print <<"HERE";
                <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
@@ -186,15 +184,15 @@ print <<"HERE";
                        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
@@ -202,7 +200,7 @@ print <<"HERE";
                        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
@@ -224,8 +222,8 @@ print <<"HERE";
 
                        <p>The jump table relay used for the callers from W32 code is
                        a&nbsp;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&nbsp;relay with the appropriate
                        @{[ a_href '#calltype','cdecl/stdcall/fastcall call type' ]} is used.</p>
 
@@ -234,24 +232,24 @@ print <<"HERE";
 
                @{[ 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 &mdash; the
                        &quot;outer&quot; one to trace the parameters from the function caller
                        and the &quot;inner&quot; one to trace the call from the wrapper to the
@@ -262,11 +260,11 @@ print <<"HERE";
                        @{[ 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&nbsp;combination of the
-                       <a href="APITypes.html.pl#functype_wrap_fromunix">previous wrap of a&nbsp;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&nbsp;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
@@ -281,7 +279,7 @@ print <<"HERE";
 
                @{[ 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
@@ -298,7 +296,8 @@ print <<"HERE";
                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>
@@ -306,12 +305,11 @@ print <<"HERE";
                        <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&nbsp;function call as it is fully
                        handled only by the compiler and/or linker.</p>
@@ -328,13 +326,14 @@ print <<"HERE";
                        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
-                               &quot;unpatched&quot; Library Function Called from W32 Code</h3></a>
+               <h3 id="functype_native_fromw32">Native Implementation of
+                               &quot;unpatched&quot; 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' ]}
@@ -358,20 +357,20 @@ print <<"HERE";
                        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 &quot;patched&quot; Library Function Called from W32 Code</h3></a>
+               <h3 id="functype_native_fromw32_patched">Native Implementation of &quot;patched&quot; 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
@@ -392,12 +391,12 @@ print <<"HERE";
                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>
@@ -417,18 +416,18 @@ print <<"HERE";
                        </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 &ndash; <span class="productname">Wine</span></h3></a>
+               <h3 id="functype_native_wine">Native Implementation &ndash; <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 &ndash; Project Specific</h3></a>
+               <h3 id="functype_native_libcaptive">Native Implementation &ndash; 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
@@ -436,16 +435,16 @@ print <<"HERE";
 
                @{[ 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
@@ -464,17 +463,19 @@ print <<"HERE";
                <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;
similarity index 86%
rename from project/captive/doc/About.html.pl
rename to project/captive/doc/About.pm
index 444d98d..7629b44 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,17 @@ 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'; }
 
 
+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',
                );
 
 
@@ -44,7 +42,7 @@ print <<"HERE";
 
 <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
@@ -63,13 +61,13 @@ print <<"HERE";
                        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
@@ -78,9 +76,9 @@ print <<"HERE";
                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
@@ -98,7 +96,7 @@ print <<"HERE";
                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)
@@ -128,7 +126,7 @@ print <<"HERE";
                <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>
@@ -137,4 +135,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
similarity index 90%
rename from project/captive/doc/Architecture.html.pl
rename to project/captive/doc/Architecture.pm
index 3054c6a..620b070 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,16 @@ 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'; }
 
 
+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',
                );
 
 
@@ -52,7 +49,7 @@ print <<"HERE";
        @{[ 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:
@@ -60,7 +57,8 @@ print <<"HERE";
                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>
@@ -79,21 +77,20 @@ print <<"HERE";
                                <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&nbsp;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>
@@ -106,7 +103,7 @@ print <<"HERE";
                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
@@ -151,7 +148,7 @@ print <<"HERE";
                        <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
@@ -160,7 +157,7 @@ print <<"HERE";
                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>
@@ -207,4 +204,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
similarity index 90%
rename from project/captive/doc/CacheManager.html.pl
rename to project/captive/doc/CacheManager.pm
index ba02996..754961c 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,24 +23,23 @@ 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'; }
 
 
+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
@@ -65,7 +62,7 @@ print <<"HERE";
        (<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
@@ -108,7 +105,7 @@ print <<"HERE";
        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>
@@ -147,8 +144,8 @@ print <<"HERE";
        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>.
@@ -158,7 +155,7 @@ print <<"HERE";
        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.
@@ -190,16 +187,16 @@ print <<"HERE";
                <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> &ndash; 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
@@ -212,10 +209,10 @@ print <<"HERE";
                        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>
@@ -235,14 +232,14 @@ print <<"HERE";
        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
@@ -275,7 +272,7 @@ print <<"HERE";
 
                <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>' ]}
 
@@ -297,7 +294,7 @@ print <<"HERE";
                @{[ 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
@@ -326,4 +323,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
similarity index 86%
rename from project/captive/doc/CallType.html.pl
rename to project/captive/doc/CallType.pm
index d1e3049..ce3b7cc 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,27 +23,26 @@ 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'; }
 
 
+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&nbsp;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>
 
@@ -75,7 +72,7 @@ print <<"HERE";
        occurs the calling type presented between the caller and callee should be
        checked.</p>
 
-       <a name="calltype_cdecl"><h2>W32 Calling Convention &quot;cdecl&quot;</h2></a>
+       <h2 id="calltype_cdecl">W32 Calling Convention &quot;cdecl&quot;</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
@@ -86,15 +83,15 @@ print <<"HERE";
                @{[ 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 &quot;stdcall&quot;</h2></a>
+       <h2 id="calltype_stdcall">W32 Calling Convention &quot;stdcall&quot;</h2>
 
                @{[ doc_img 'fig/calltype_stdcall',
                                'W32 Calling Convention <span class="constant">stdcall</span> Scheme' ]}
@@ -104,18 +101,18 @@ print <<"HERE";
                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 &ndash; use @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl' ]}
+               passed by this convention &ndash; 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 &quot;fastcall&quot;</h2></a>
+       <h2 id="calltype_fastcall">W32 Calling Convention &quot;fastcall&quot;</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
@@ -125,7 +122,7 @@ print <<"HERE";
                <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 &ndash; use @{[ a_href 'CallType.html.pl#calltype_cdecl','cdecl' ]}
+               passed by this convention &ndash; use @{[ a_href 'CallType.pm#calltype_cdecl','cdecl' ]}
                instead.</p>
 
                <p>GCC (GNU C&nbsp;Compiler) native support for this calling convention
@@ -145,7 +142,8 @@ print <<"HERE";
                @{[ 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,
@@ -153,11 +151,12 @@ print <<"HERE";
                        <tr><td>GCC &ge;3.4 attribute      </td><td><span class="command">__attribute__((__fastcall__))</span></td></tr>
                        <tr><td>GCC &lt;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;
similarity index 89%
rename from project/captive/doc/Components.html.pl
rename to project/captive/doc/Components.pm
index 03183d6..9638eb2 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,17 @@ 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'; }
 
 
+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',
                );
 
 
@@ -82,13 +80,13 @@ print <<"HERE";
        <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 &mdash; 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
@@ -98,12 +96,12 @@ print <<"HERE";
        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 &mdash; it can be transparently unmounted and mounted
@@ -117,7 +115,7 @@ print <<"HERE";
        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&nbsp;UNIX style GLib <span
        class="type">GIOChannel</span> type at this point. As we need to supply it
@@ -145,14 +143,14 @@ print <<"HERE";
 
        <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 &mdash; parallel execution
        is emulated by GLib <span class="function">g_idle_add_full()</span>
@@ -178,7 +176,7 @@ print <<"HERE";
        <a href="#client_interface_customapp">a&nbsp;custom application accessing
        the W32 filesystem driver</a>.</p>
 
-       <p>@{[ a_href 'Details.html.pl#sandbox','CORBA/ORBit' ]} hits us again &ndash; we need to
+       <p>@{[ a_href 'Details.pm#sandbox','CORBA/ORBit' ]} hits us again &ndash; 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>
@@ -186,10 +184,10 @@ print <<"HERE";
        <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
@@ -202,7 +200,7 @@ print <<"HERE";
                <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&nbsp;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
@@ -225,7 +223,7 @@ print <<"HERE";
                        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>
@@ -262,7 +260,7 @@ print <<"HERE";
                <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
@@ -276,4 +274,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
similarity index 86%
rename from project/captive/doc/Details.html.pl
rename to project/captive/doc/Details.pm
index bb6522f..0a0efd1 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,17 @@ 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'; }
 
 
+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',
                );
 
 
@@ -44,13 +42,13 @@ print <<"HERE";
 
 <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
@@ -70,7 +68,7 @@ print <<"HERE";
                        requirement of fully installed
                        <span class="productname">Microsoft Windows NT</span> product.</p>
 
-               <a name="method_ntoskrnl"><h3>&quot;ntoskrnl.exe&quot; Inside Virtual Address Space</h3></a>
+               <h3 id="method_ntoskrnl">&quot;ntoskrnl.exe&quot; 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.
@@ -79,12 +77,12 @@ print <<"HERE";
                        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>
 
@@ -92,12 +90,12 @@ print <<"HERE";
                        <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
@@ -112,23 +110,24 @@ print <<"HERE";
                        <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 &ndash; $ReactOS' ]},
-               @{[ a_href 'APITypes.html.pl#functype_native_wine','Native implementation &ndash; $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 &ndash; $ReactOS' ]},
+               @{[ a_href 'APITypes.pm#functype_native_wine','Native implementation &ndash; $Wine' ]}
                or
-               @{[ a_href 'APITypes.html.pl#functype_native_libcaptive','Native implementation &ndash; project specific' ]}.
-               <!-- a_href 'APITypes.html.pl#functype_undef','Undefined function' -->
+               @{[ a_href 'APITypes.pm#functype_native_libcaptive','Native implementation &ndash; 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>
@@ -166,7 +165,7 @@ print <<"HERE";
                peers.</p>
 
 
-       <a name="patched"><h2>&quot;patched&quot; vs. &quot;unpatched&quot; Libraries</h2></a>
+       <h2 id="patched">&quot;patched&quot; vs. &quot;unpatched&quot; 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
@@ -176,7 +175,7 @@ print <<"HERE";
 
                <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
@@ -185,7 +184,7 @@ print <<"HERE";
                <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 &ndash; user space and kernel space.
@@ -209,7 +208,7 @@ print <<"HERE";
                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&nbsp;Compiler)
@@ -249,7 +248,7 @@ print <<"HERE";
                        </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
@@ -283,8 +282,8 @@ print <<"HERE";
                <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
@@ -293,7 +292,7 @@ print <<"HERE";
                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
@@ -303,7 +302,7 @@ print <<"HERE";
                itself.  It was considered as a&nbsp;more sane way to support multiple W32
                mounted disks by completely separately running project instances in
                a&nbsp;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
@@ -317,18 +316,18 @@ print <<"HERE";
                <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&nbsp;thorough architecture parallelism. It
                must lock all its objects to maintain coherence in presence of
@@ -355,7 +354,7 @@ print <<"HERE";
                <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&nbsp;possibility a&nbsp;real W32 parallel threading would
+               <p>Since there is a&nbsp;possibility a&nbsp;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>
@@ -376,7 +375,7 @@ print <<"HERE";
                is done during cleanup of the project's&nbsp;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&nbsp;general approach of software projects development is to implement
                many internal sanity checks during the development stage but to produce the
@@ -426,19 +425,19 @@ print <<"HERE";
                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 &mdash;
@@ -446,10 +445,10 @@ print <<"HERE";
                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
@@ -503,4 +502,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
diff --git a/project/captive/doc/Index.html.pl b/project/captive/doc/Index.html.pl
deleted file mode 100755 (executable)
index 501f472..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-#! /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">&quot;ntoskrnl.exe&quot; 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">&quot;patched&quot; vs. &quot;unpatched&quot; 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 &quot;ntoskrnl.exe&quot;</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 &quot;unpatched&quot;
-                                       Library Function Called from W32 Code</a></li>
-                       <li><a href="APITypes.html.pl#functype_native_fromw32_patched">Native Implementation of &quot;patched&quot;
-                                       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 &ndash; Wine</a></li>
-                       <li><a href="APITypes.html.pl#functype_native_libcaptive">Native Implementation &ndash; 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 &quot;cdecl&quot;</a></li>
-               <li><a href="CallType.html.pl#calltype_stdcall">W32 Calling Convention &quot;stdcall&quot;</a></li>
-               <li><a href="CallType.html.pl#calltype_fastcall">W32 Calling Convention &quot;fastcall&quot;</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();
diff --git a/project/captive/doc/Index.pm b/project/captive/doc/Index.pm
new file mode 100755 (executable)
index 0000000..bc982a4
--- /dev/null
@@ -0,0 +1,163 @@
+# $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">&quot;ntoskrnl.exe&quot; 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">&quot;patched&quot; vs. &quot;unpatched&quot; 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 &quot;ntoskrnl.exe&quot;</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 &quot;unpatched&quot;
+                                       Library Function Called from W32 Code</a></li>
+                       <li><a href="APITypes.pm#functype_native_fromw32_patched">Native Implementation of &quot;patched&quot;
+                                       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 &ndash; Wine</a></li>
+                       <li><a href="APITypes.pm#functype_native_libcaptive">Native Implementation &ndash; 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 &quot;cdecl&quot;</a></li>
+               <li><a href="CallType.pm#calltype_stdcall">W32 Calling Convention &quot;stdcall&quot;</a></li>
+               <li><a href="CallType.pm#calltype_fastcall">W32 Calling Convention &quot;fastcall&quot;</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;
similarity index 87%
rename from project/captive/doc/LinuxNTFS.html.pl
rename to project/captive/doc/LinuxNTFS.pm
index 7d2393d..c0d3a0f 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,16 +23,15 @@ 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'; }
 
 
+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',
                );
 
 
@@ -54,7 +51,7 @@ print <<"HERE";
        <p><span class="re">&gt; 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),
@@ -81,10 +78,12 @@ print <<"HERE";
        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;
diff --git a/project/captive/doc/Macros.css b/project/captive/doc/Macros.css
new file mode 100644 (file)
index 0000000..d479f78
--- /dev/null
@@ -0,0 +1,29 @@
+/* $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; }
index a7ba65c..1b24cf3 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -32,70 +30,36 @@ our @EXPORT=qw(
                );
 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 ($$)
@@ -103,9 +67,9 @@ 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;
@@ -119,21 +83,47 @@ my($filename,$text)=@_;
                        ($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;
index 3b62801..9657f33 100644 (file)
@@ -22,8 +22,21 @@ SUBDIRS= \
                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
+
similarity index 78%
rename from project/captive/doc/Related.html.pl
rename to project/captive/doc/Related.pm
index 1e8a813..9c562e9 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,16 @@ 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'; }
 
 
+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',
                );
 
 
@@ -51,7 +48,7 @@ print <<"HERE";
        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&nbsp;completely different approach and has
                a&nbsp;different architecture, the final goal is the same as for this
@@ -70,8 +67,8 @@ print <<"HERE";
                <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>
 
@@ -85,16 +82,16 @@ print <<"HERE";
                <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&nbsp;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>
 
@@ -103,15 +100,15 @@ print <<"HERE";
                a network file sharing through a&nbsp;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 &ndash; 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>
 
@@ -121,8 +118,8 @@ print <<"HERE";
                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>
 
@@ -134,4 +131,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
similarity index 86%
rename from project/captive/doc/Reverse.html.pl
rename to project/captive/doc/Reverse.pm
index d444c87..0c0cad9 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,24 +23,23 @@ 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'; }
 
 
+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
@@ -86,7 +83,7 @@ print <<"HERE";
        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>
@@ -101,7 +98,7 @@ print <<"HERE";
                        <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>
@@ -123,7 +120,7 @@ print <<"HERE";
                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'
@@ -135,7 +132,7 @@ print <<"HERE";
                        @{[ 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>
@@ -144,7 +141,7 @@ print <<"HERE";
 
                        <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
@@ -161,7 +158,7 @@ print <<"HERE";
 
                        @{[ 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'
@@ -185,4 +182,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
similarity index 82%
rename from project/captive/doc/TODO.html.pl
rename to project/captive/doc/TODO.pm
index 3329a14..34a681a 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -25,24 +23,23 @@ 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'; }
 
 
+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>
@@ -54,17 +51,17 @@ print <<"HERE";
        @{[ 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&nbsp;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>
@@ -93,4 +90,6 @@ print <<"HERE";
 HERE
 
 
-project::captive::doc::Macros->footer();
+exit;
+}
+1;
diff --git a/project/checkstatic/Index.html.pl b/project/checkstatic/Index.html.pl
deleted file mode 100755 (executable)
index 938f4fe..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/checkstatic/ListItem.pm
rename to project/checkstatic/Index.pm
index f8ada4e..6d36dd0
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -47,4 +46,9 @@ a big package for embedded resource-limited machines.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index c1c4634..7112e73 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/cvsbranchdiff/Index.html.pl b/project/cvsbranchdiff/Index.html.pl
deleted file mode 100755 (executable)
index 58410d2..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 86%
rename from project/cvsbranchdiff/ListItem.pm
rename to project/cvsbranchdiff/Index.pm
index 7902d22..3b00ead
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -45,4 +44,9 @@ new or removed files, this simple tool will take care of them.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index cffb9e2..fe9e1d9 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/cvsutil/Index.html.pl b/project/cvsutil/Index.html.pl
deleted file mode 100755 (executable)
index f3f2bf3..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 82%
rename from project/cvsutil/ListItem.pm
rename to project/cvsutil/Index.pm
index d4b8e86..a380ebb
@@ -1,7 +1,7 @@
 #! /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
@@ -18,7 +18,7 @@
 # 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$;
@@ -26,6 +26,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -47,4 +48,18 @@ can serve a handy prevention of grepping built files: <span class="quote">
 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;
index 63108f5..29db25a 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/d1xnet/Index.html.pl b/project/d1xnet/Index.html.pl
deleted file mode 100755 (executable)
index 02e3ecd..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 75%
rename from project/d1xnet/ListItem.pm
rename to project/d1xnet/Index.pm
index 20a86b7..c0332f2
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,23 +24,29 @@ use strict;
 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;
index c75fd5d..404c042 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/doswatch/Index.html.pl b/project/doswatch/Index.html.pl
deleted file mode 100755 (executable)
index fc056af..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/doswatch/ListItem.pm
rename to project/doswatch/Index.pm
index 9ee46d9..d23d80c
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -37,7 +36,7 @@ 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>
@@ -53,4 +52,9 @@ for weird software packages with broken file/directory access.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index df5a81d..86d0ca1 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/energie/Index.html.pl b/project/energie/Index.html.pl
deleted file mode 100755 (executable)
index d9b5d90..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 67%
rename from project/energie/ListItem.pm
rename to project/energie/Index.pm
index 1c01fcb..0000588
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -33,11 +32,13 @@ 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
@@ -46,4 +47,9 @@ it.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index b04d980..b3293cb 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/etherealmmse/Index.html.pl b/project/etherealmmse/Index.html.pl
deleted file mode 100755 (executable)
index f475ac6..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 77%
rename from project/etherealmmse/ListItem.pm
rename to project/etherealmmse/Index.pm
index e56dc84..a8fefc1
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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",
@@ -38,11 +37,16 @@ our @ListItem=(
                "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;
index 0bf001f..b4aa902 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/etherealwsp/Index.html.pl b/project/etherealwsp/Index.html.pl
deleted file mode 100755 (executable)
index 6aef2ee..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 76%
rename from project/etherealwsp/ListItem.pm
rename to project/etherealwsp/Index.pm
index 35a5616..0dacc42
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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",
@@ -37,7 +36,7 @@ our @ListItem=(
                "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
@@ -45,4 +44,9 @@ is used for MMS encoding in WSP.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index 03e6153..ad96517 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 65%
rename from project/fixhtml/Index.html.pl
rename to project/fixhtml/Index.pm
index bf399dc..0866530
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,32 @@ 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::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
@@ -46,4 +59,6 @@ path referration which will broke on your local machine.</p>
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/fixhtml/ListItem.pm b/project/fixhtml/ListItem.pm
deleted file mode 100755 (executable)
index dde81f4..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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;
index 555f1b1..722129d 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/gladewsrc/Index.html.pl b/project/gladewsrc/Index.html.pl
deleted file mode 100755 (executable)
index 3b73d5c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 72%
rename from project/gladewsrc/ListItem.pm
rename to project/gladewsrc/Index.pm
index dced5dd..37d6b9c
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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",
@@ -38,12 +37,25 @@ our @ListItem=(
                "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;
index f5f5772..bc74dc1 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/gsmperl/Index.html.pl b/project/gsmperl/Index.html.pl
deleted file mode 100755 (executable)
index 3eecdc9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 68%
rename from project/gsmperl/ListItem.pm
rename to project/gsmperl/Index.pm
index 8aae4bb..19b905a
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,24 +24,31 @@ use strict;
 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;
index 9d0b0b0..3dac6a4 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/int13sniff/Index.html.pl b/project/int13sniff/Index.html.pl
deleted file mode 100755 (executable)
index 1d3c9c5..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 81%
rename from project/int13sniff/ListItem.pm
rename to project/int13sniff/Index.pm
index 3f0cbac..5b70895
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -39,7 +38,7 @@ 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
@@ -47,4 +46,14 @@ to display, back to its own floppy disk and/or to serial port(s).</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+
+
+print centerimg "int13sniff-snap","Boot Snapshot";
+
+
+exit;
+}
 1;
index 9bffbd2..3105908 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 71%
rename from project/ircon/Index.html.pl
rename to project/ircon/Index.pm
index da7c831..8ff421d
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,35 @@ 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::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>
@@ -43,8 +59,8 @@ print <<"HERE";
 <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>
@@ -57,7 +73,7 @@ print <<"HERE";
 <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>
@@ -68,4 +84,7 @@ tuning software (generating hundreds of button presses) is not usable.</p>
                ]}
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
diff --git a/project/ircon/ListItem.pm b/project/ircon/ListItem.pm
deleted file mode 100755 (executable)
index 51b2f0b..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /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;
index b7bf197..3bbfb48 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/kewensis/Index.html.pl b/project/kewensis/Index.html.pl
deleted file mode 100755 (executable)
index cf4f889..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 67%
rename from project/kewensis/ListItem.pm
rename to project/kewensis/Index.pm
index ad74f7f..61244c9
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -33,11 +32,11 @@ 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>
@@ -46,4 +45,22 @@ plants and it groups synonyms of the same plant.</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;
index 89d572f..580dce9 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 70%
rename from project/kix/Index.html.pl
rename to project/kix/Index.pm
index 6522d39..62a9344
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,29 @@ 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::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
@@ -49,4 +59,6 @@ do not need IPX support anywhere (kernel, D1X, ...).</p>
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/kix/ListItem.pm b/project/kix/ListItem.pm
deleted file mode 100755 (executable)
index 3a209d3..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /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;
index fecdcd8..ce0ff09 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/kware/Index.html.pl b/project/kware/Index.html.pl
deleted file mode 100755 (executable)
index e980c65..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 75%
rename from project/kware/ListItem.pm
rename to project/kware/Index.pm
index 45a5869..d5bdc7e
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -35,8 +34,9 @@ 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
@@ -50,4 +50,18 @@ KernelWare and you will get standard executable.</p>
 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;
index 60305f8..8bcab9d 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 75%
rename from project/libtool/Index.html.pl
rename to project/libtool/Index.pm
index 641b135..0d9f30d
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,29 @@ 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::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
@@ -62,4 +72,6 @@ misleading confusion of different object file found than expected.</p>
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/libtool/ListItem.pm b/project/libtool/ListItem.pm
deleted file mode 100755 (executable)
index 32700cc..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /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;
index 58fc29f..72245eb 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/libxml2reader/Index.html.pl b/project/libxml2reader/Index.html.pl
deleted file mode 100755 (executable)
index 7a3ac83..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 79%
rename from project/libxml2reader/ListItem.pm
rename to project/libxml2reader/Index.pm
index 6d098b7..9d37d98
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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',
@@ -45,4 +44,16 @@ real content. The remaining part of such text node is lost.</p>
 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;
index 92c727a..f18a96d 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/line9k/Index.html.pl b/project/line9k/Index.html.pl
deleted file mode 100755 (executable)
index b16bbb7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 69%
rename from project/line9k/ListItem.pm
rename to project/line9k/Index.pm
index 0e62897..e254073
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -46,4 +45,23 @@ It keeps the Nokia battery fit by automatically controlled battery charging cycl
 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;
index 1945b4b..a4d3a21 100644 (file)
 
 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
+
diff --git a/project/lynxilla/Index.html.pl b/project/lynxilla/Index.html.pl
deleted file mode 100755 (executable)
index 2d971c9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 80%
rename from project/lynxilla/ListItem.pm
rename to project/lynxilla/Index.pm
index cbdc9f4..39721ad
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -35,12 +34,14 @@ 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&amp;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
@@ -51,4 +52,9 @@ as your local file: @{[ '$HOME/.mozilla/$USER/*/chrome/userContent.css' ]}</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index bc638eb..ce60a63 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/mdsms/Index.html.pl b/project/mdsms/Index.html.pl
deleted file mode 100755 (executable)
index 1a71f44..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 69%
rename from project/mdsms/ListItem.pm
rename to project/mdsms/Index.pm
index b807a5a..fa13a39
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -39,18 +38,21 @@ 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' ]}
@@ -62,4 +64,20 @@ FaxModem capability of 9110.</p>
 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;
index 8eb2d05..3018040 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/middleman/Index.html.pl b/project/middleman/Index.html.pl
deleted file mode 100755 (executable)
index e73a31a..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 62%
rename from project/middleman/ListItem.pm
rename to project/middleman/Index.pm
index 3504565..808b0b0
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,24 +24,29 @@ use strict;
 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;
index 152d864..d397558 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/mod_auth_tacacs/Index.html.pl b/project/mod_auth_tacacs/Index.html.pl
deleted file mode 100755 (executable)
index 1f1b1b3..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 65%
rename from project/mod_auth_tacacs/ListItem.pm
rename to project/mod_auth_tacacs/Index.pm
index e9a2b94..8ab8dec
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,26 +24,34 @@ use strict;
 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;
index a08b8cf..fcc216c 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/mot2as/Index.html.pl b/project/mot2as/Index.html.pl
deleted file mode 100755 (executable)
index 94dff41..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 72%
rename from project/mot2as/ListItem.pm
rename to project/mot2as/Index.pm
index 917aba0..62dabde
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -37,7 +36,7 @@ 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
@@ -46,4 +45,18 @@ style) syntax. Using this very simple program you can convert between these two.
 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;
index 3ee15d4..0694ce4 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/muttsort/Index.html.pl b/project/muttsort/Index.html.pl
deleted file mode 100755 (executable)
index 13e0596..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 76%
rename from project/muttsort/ListItem.pm
rename to project/muttsort/Index.pm
index 81218d5..6706a57
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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",
@@ -41,8 +40,20 @@ our @ListItem=(
                "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;
index 7d61eaf..6a3558e 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 67%
rename from project/netstat/Index.html.pl
rename to project/netstat/Index.pm
index 3296463..a7e4667
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,35 @@ 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::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
@@ -51,4 +67,7 @@ tcp        0      0 lemming.ericsson:domain *:*                     LISTEN
 </pre>
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
diff --git a/project/netstat/ListItem.pm b/project/netstat/ListItem.pm
deleted file mode 100755 (executable)
index 24b94a7..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /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;
index 6ca5708..e1d359c 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/ntfsprogsgnomevfs/Index.html.pl b/project/ntfsprogsgnomevfs/Index.html.pl
deleted file mode 100755 (executable)
index 305d391..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 61%
rename from project/ntfsprogsgnomevfs/ListItem.pm
rename to project/ntfsprogsgnomevfs/Index.pm
index e303a81..a26076f
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,17 +24,22 @@ use strict;
 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",
@@ -47,4 +50,17 @@ our @ListItem=(
 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;
index ef7cabb..d324395 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/oslik/Index.html.pl b/project/oslik/Index.html.pl
deleted file mode 100755 (executable)
index 8c8c379..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 80%
rename from project/oslik/ListItem.pm
rename to project/oslik/Index.pm
index 3f18c9c..4399e93
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -45,4 +44,16 @@ both in <strong>C</strong> and <strong>Prolog</strong> for comparation.</p>
 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;
index 997d8eb..8dc2721 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
index 51ff7f3..4faae9b 100644 (file)
-> /-------\ 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## |
+  \-------/
diff --git a/project/patchd2/Index.html.pl b/project/patchd2/Index.html.pl
deleted file mode 100755 (executable)
index 3890e7f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 72%
rename from project/patchd2/ListItem.pm
rename to project/patchd2/Index.pm
index 6d2dad1..14a0f6c
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,22 +24,28 @@ use strict;
 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;
index 5d19d4c..f9b718b 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/pgsqlsubstr/Index.html.pl b/project/pgsqlsubstr/Index.html.pl
deleted file mode 100755 (executable)
index 81f807f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 77%
rename from project/pgsqlsubstr/ListItem.pm
rename to project/pgsqlsubstr/Index.pm
index dff23d9..c561a3a
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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",
@@ -45,4 +44,17 @@ PostgreSQL engine.</p>
 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;
index 76e087c..362a5c6 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/phphash/Index.html.pl b/project/phphash/Index.html.pl
deleted file mode 100755 (executable)
index 3d28ad7..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 82%
rename from project/phphash/ListItem.pm
rename to project/phphash/Index.pm
index 58b5543..340840c
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,10 +24,11 @@ use strict;
 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",
@@ -45,4 +44,11 @@ being deleted.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+
+
+exit;
+}
 1;
index 57e201b..d660f39 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/pipebuf/Index.html.pl b/project/pipebuf/Index.html.pl
deleted file mode 100755 (executable)
index e3850af..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 72%
rename from project/pipebuf/ListItem.pm
rename to project/pipebuf/Index.pm
index 1b12092..cc9cfda
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -44,4 +43,19 @@ its cache and also in the same time writes as fast as possible to the output.</p
 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;
index 8646788..d8f1884 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 55%
rename from project/postget/Index.html.pl
rename to project/postget/Index.pm
index f97a35e..1612228
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,42 @@ 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::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";
 
@@ -47,11 +70,11 @@ 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>
@@ -69,4 +92,6 @@ print <<"HERE";
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/postget/ListItem.pm b/project/postget/ListItem.pm
deleted file mode 100755 (executable)
index ff499b8..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /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;
index 58d0cb5..395bf65 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/ppp9k/Index.html.pl b/project/ppp9k/Index.html.pl
deleted file mode 100755 (executable)
index e056c4b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 76%
rename from project/ppp9k/ListItem.pm
rename to project/ppp9k/Index.pm
index 1fbeb5d..c95b02d
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -34,18 +33,25 @@ 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;
index dadec1d..f2a7e87 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/redirector_ad/Index.html.pl b/project/redirector_ad/Index.html.pl
deleted file mode 100755 (executable)
index 9a33401..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 81%
rename from project/redirector_ad/ListItem.pm
rename to project/redirector_ad/Index.pm
index 17c9e6f..0f5e97e
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -34,7 +33,7 @@ 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",
@@ -47,4 +46,9 @@ is no need for separate administration of another daemon.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index 21cfd3a..8275a66 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 73%
rename from project/smbfs/Index.html.pl
rename to project/smbfs/Index.pm
index 68ace61..d506bec
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,30 @@ 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::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
@@ -49,4 +60,6 @@ and not in <i>kilobytes</i> as some people think.</p>
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/smbfs/ListItem.pm b/project/smbfs/ListItem.pm
deleted file mode 100755 (executable)
index d499dff..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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;
index 2f7332f..31747fe 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/sshpatch/Index.html.pl b/project/sshpatch/Index.html.pl
deleted file mode 100755 (executable)
index 9f75b3c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 63%
rename from project/sshpatch/ListItem.pm
rename to project/sshpatch/Index.pm
index 4d21c55..2d1d06c
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -37,9 +36,11 @@ 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.
@@ -55,4 +56,26 @@ our @ListItem=(
 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;
index c15394f..8a88b7f 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 66%
rename from project/ssht/Index.html.pl
rename to project/ssht/Index.pm
index 319a299..3572fa6
@@ -1,8 +1,6 @@
-#! /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
@@ -25,23 +23,42 @@ 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::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";
@@ -56,12 +73,14 @@ 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>
@@ -75,4 +94,6 @@ print <<"HERE";
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
diff --git a/project/ssht/ListItem.pm b/project/ssht/ListItem.pm
deleted file mode 100755 (executable)
index 124cd07..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /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;
index c6838b9..706d57c 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 83%
rename from project/step/ListItem.pm
rename to project/step/Index.pm
index b158b67..b309ee5
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -37,11 +36,16 @@ 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;
index c89769e..c71406d 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/surprise/Index.html.pl b/project/surprise/Index.html.pl
deleted file mode 100755 (executable)
index f233afd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 83%
rename from project/surprise/ListItem.pm
rename to project/surprise/Index.pm
index 0420965..5fe2408
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -41,9 +40,9 @@ 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>
@@ -57,8 +56,18 @@ HERE
                "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;
index 482a487..2aaa671 100644 (file)
 
 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
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 61%
rename from project/tac_plus/Index.html.pl
rename to project/tac_plus/Index.pm
index 56ae6f0..b4c08a9
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,41 @@ 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::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>
@@ -51,4 +73,7 @@ include:</p>
 </ul>
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
diff --git a/project/tac_plus/ListItem.pm b/project/tac_plus/ListItem.pm
deleted file mode 100755 (executable)
index 40674b8..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /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;
index c2261aa..1c5690d 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 64%
rename from project/tcp_rto/Index.html.pl
rename to project/tcp_rto/Index.pm
index 5c5dd9a..d59ecfb
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,32 @@ 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::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
@@ -45,11 +58,13 @@ of connection slowing the transfer rate up to the unusable state.</p>
 &quot;<b>/proc/sys/net/ipv4/tcp_rto_max</b>&quot;, 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 &quot;<b>/proc/sys/net/ipv4/tcp_retries2</b>&quot;,
-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;
diff --git a/project/tcp_rto/ListItem.pm b/project/tcp_rto/ListItem.pm
deleted file mode 100755 (executable)
index 9f9ca54..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /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;
index a3bd7f7..6c45f84 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 72%
rename from project/tcpdump/Index.html.pl
rename to project/tcpdump/Index.pm
index 5eabacb..db343f2
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,31 @@ 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::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>
 
@@ -51,4 +63,7 @@ print <<'HERE';
 </pre>
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
diff --git a/project/tcpdump/ListItem.pm b/project/tcpdump/ListItem.pm
deleted file mode 100755 (executable)
index afb52fd..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /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;
index 0d57b65..2b7c4b0 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/timeplan/Index.html.pl b/project/timeplan/Index.html.pl
deleted file mode 100755 (executable)
index ac46a0a..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/timeplan/ListItem.pm
rename to project/timeplan/Index.pm
index 821fa97..e82a90f
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -48,4 +47,9 @@ such event to your log.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index d773411..8b88292 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/udpgate/Index.html.pl b/project/udpgate/Index.html.pl
deleted file mode 100755 (executable)
index e69f7a5..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 68%
rename from project/udpgate/ListItem.pm
rename to project/udpgate/Index.pm
index 41873b5..26a4de4
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,17 +24,19 @@ use strict;
 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",
@@ -50,4 +50,9 @@ Program is provided only with fixed server address.
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index 86e2c60..7d8a996 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
index fa8accb..ea68c4d 100644 (file)
@@ -1,6 +1,3 @@
-<Files "udpgate-1.0">
-       <IfModule mod_csacek.c>
-               csacekEngine Off
-       </IfModule>
+<FilesMatch "^udpgate-[0-9.]*$">
        ForceType application/octet-stream
-</Files>
+</FilesMatch>
diff --git a/project/udpgate/dist/build-udpgate-static-2005-09-28-00.tar.gz b/project/udpgate/dist/build-udpgate-static-2005-09-28-00.tar.gz
new file mode 100644 (file)
index 0000000..54c79f2
Binary files /dev/null and b/project/udpgate/dist/build-udpgate-static-2005-09-28-00.tar.gz differ
diff --git a/project/udpgate/dist/udpgate-1.0.1 b/project/udpgate/dist/udpgate-1.0.1
deleted file mode 100755 (executable)
index 6f335c7..0000000
Binary files a/project/udpgate/dist/udpgate-1.0.1 and /dev/null differ
diff --git a/project/udpgate/dist/udpgate-1.0.1-0.i386.rpm b/project/udpgate/dist/udpgate-1.0.1-0.i386.rpm
deleted file mode 100644 (file)
index d5dc313..0000000
Binary files a/project/udpgate/dist/udpgate-1.0.1-0.i386.rpm and /dev/null differ
diff --git a/project/udpgate/dist/udpgate-1.0.1-0.src.rpm b/project/udpgate/dist/udpgate-1.0.1-0.src.rpm
deleted file mode 100644 (file)
index 284542e..0000000
Binary files a/project/udpgate/dist/udpgate-1.0.1-0.src.rpm and /dev/null differ
diff --git a/project/udpgate/dist/udpgate-1.0.1.gz b/project/udpgate/dist/udpgate-1.0.1.gz
deleted file mode 100644 (file)
index 10b4bad..0000000
Binary files a/project/udpgate/dist/udpgate-1.0.1.gz and /dev/null differ
diff --git a/project/udpgate/dist/udpgate-1.0.1.tar.gz b/project/udpgate/dist/udpgate-1.0.1.tar.gz
deleted file mode 100644 (file)
index aae0e43..0000000
Binary files a/project/udpgate/dist/udpgate-1.0.1.tar.gz and /dev/null differ
diff --git a/project/udpgate/dist/udpgate-1.0.3 b/project/udpgate/dist/udpgate-1.0.3
new file mode 100755 (executable)
index 0000000..94edbd2
Binary files /dev/null and b/project/udpgate/dist/udpgate-1.0.3 differ
diff --git a/project/udpgate/dist/udpgate-1.0.3-0.i386.rpm b/project/udpgate/dist/udpgate-1.0.3-0.i386.rpm
new file mode 100644 (file)
index 0000000..c106760
Binary files /dev/null and b/project/udpgate/dist/udpgate-1.0.3-0.i386.rpm differ
diff --git a/project/udpgate/dist/udpgate-1.0.3-0.src.rpm b/project/udpgate/dist/udpgate-1.0.3-0.src.rpm
new file mode 100644 (file)
index 0000000..8bbab5f
Binary files /dev/null and b/project/udpgate/dist/udpgate-1.0.3-0.src.rpm differ
diff --git a/project/udpgate/dist/udpgate-1.0.3.gz b/project/udpgate/dist/udpgate-1.0.3.gz
new file mode 100755 (executable)
index 0000000..b52eadb
Binary files /dev/null and b/project/udpgate/dist/udpgate-1.0.3.gz differ
diff --git a/project/udpgate/dist/udpgate-1.0.3.tar.gz b/project/udpgate/dist/udpgate-1.0.3.tar.gz
new file mode 100644 (file)
index 0000000..9dccd76
Binary files /dev/null and b/project/udpgate/dist/udpgate-1.0.3.tar.gz differ
diff --git a/project/udpgate/dist/udpgate-debuginfo-1.0.3-0.i386.rpm b/project/udpgate/dist/udpgate-debuginfo-1.0.3-0.i386.rpm
new file mode 100644 (file)
index 0000000..c7e0072
Binary files /dev/null and b/project/udpgate/dist/udpgate-debuginfo-1.0.3-0.i386.rpm differ
diff --git a/project/vblib/Index.html.pl b/project/vblib/Index.html.pl
deleted file mode 100755 (executable)
index 65f4b0c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from project/vblib/ListItem.pm
rename to project/vblib/Index.pm
index 344320f..653e00b
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -46,4 +45,9 @@ major performance hit if not using algorithms implemented in this library.</p>
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index ced12a6..293620e 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/wayback/Index.html.pl b/project/wayback/Index.html.pl
deleted file mode 100755 (executable)
index 592f6e3..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 84%
rename from project/wayback/ListItem.pm
rename to project/wayback/Index.pm
index 7538911..04b42f9
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -41,8 +40,13 @@ 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;
index 4b296dc..0738c57 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
old mode 100755 (executable)
new mode 100644 (file)
similarity index 70%
rename from project/winvnc/Index.html.pl
rename to project/winvnc/Index.pm
index f7635e2..cfdb7ea
@@ -1,8 +1,6 @@
-#! /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
@@ -25,17 +23,40 @@ 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::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' ]}&nbsp;@{[ 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&nbsp;Files\ORL\VNC\WinVNC.exe</tt>.
@@ -44,8 +65,8 @@ Otherwise error about missing <tt>omnithread_rt.dll</tt> will occur.</p>
 <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>
@@ -58,7 +79,7 @@ You are not interested in this table if you download the <a href="http://www.rea
 <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>
@@ -69,4 +90,7 @@ You are not interested in this table if you download the <a href="http://www.rea
 </table>
 HERE
 
-My::Web->footer();
+
+exit;
+}
+1;
diff --git a/project/winvnc/ListItem.pm b/project/winvnc/ListItem.pm
deleted file mode 100755 (executable)
index 34e96f8..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /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' ]}&nbsp;@{[ 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;
index 4a75ab1..16cb55a 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/wllib/Index.html.pl b/project/wllib/Index.html.pl
deleted file mode 100755 (executable)
index 826d340..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /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();
old mode 100755 (executable)
new mode 100644 (file)
similarity index 90%
rename from project/wllib/ListItem.pm
rename to project/wllib/Index.pm
index c607d3c..6b6edf2
@@ -1,7 +1,5 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -37,7 +36,7 @@ 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
@@ -45,4 +44,9 @@ our @ListItem=(
 HERE
                );
 
+sub handler
+{
+project::Lib->init();
+exit;
+}
 1;
index 0bbd406..7b5aeff 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/project/xbill/Index.html.pl b/project/xbill/Index.html.pl
deleted file mode 100755 (executable)
index 05b90a5..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /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();
similarity index 73%
rename from project/xbill/ListItem.pm
rename to project/xbill/Index.pm
index 6a8b23b..4015148 100755 (executable)
@@ -1,8 +1,6 @@
-#! /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
@@ -18,7 +16,7 @@
 # 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$;
@@ -26,6 +24,7 @@ use strict;
 use warnings;
 
 use My::Web;
+Wuse 'project::Lib';
 
 
 our @ListItem=(
@@ -39,11 +38,26 @@ 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;
index e7ce4de..250ddb5 100644 (file)
@@ -18,6 +18,6 @@
 
 include $(top_srcdir)/Makefile-head.am
 
-EXTRA_DIST+= \
-       ListItem.pm \
-       Index.html.pl
+MODPERL_PM+= \
+               Index.pm
+
diff --git a/resume/.htaccess b/resume/.htaccess
deleted file mode 100644 (file)
index 5a3b380..0000000
+++ /dev/null
@@ -1 +0,0 @@
-DirectoryIndex Resume-JanKratochvil.html.pl
old mode 100755 (executable)
new mode 100644 (file)
similarity index 65%
rename from project/step/Index.html.pl
rename to resume/Index.pm
index 7b16ae0..0b2f87b
@@ -1,8 +1,6 @@
-#! /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;
index 249d701..c933ac6 100644 (file)
 
 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
 
@@ -34,12 +37,12 @@ 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
 
diff --git a/resume/ResumeJanKratochvil.css b/resume/ResumeJanKratochvil.css
new file mode 100644 (file)
index 0000000..122310b
--- /dev/null
@@ -0,0 +1,28 @@
+/* $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; }
similarity index 89%
rename from resume/Resume-JanKratochvil.pdf
rename to resume/ResumeJanKratochvil.pdf
index fa89f66..788259f 100644 (file)
Binary files a/resume/Resume-JanKratochvil.pdf and b/resume/ResumeJanKratochvil.pdf differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 83%
rename from resume/Resume-JanKratochvil.html.pl
rename to resume/ResumeJanKratochvil.pm
index ee58c32..41ef8f8
@@ -1,8 +1,6 @@
-#! /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
@@ -26,40 +24,52 @@ $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;
 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"}));
@@ -129,26 +139,24 @@ my($arg)=@_;
 
 
 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" ]}
 
@@ -156,7 +164,9 @@ print <<"HERE";
 <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>
@@ -280,11 +290,11 @@ if (lc($W->{"args"}{"referees"}) ne "referees") {
        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
@@ -338,9 +348,10 @@ print <<"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;
@@ -350,8 +361,11 @@ HERE
                print "</tr>\n";
                }
 print <<"HERE";
+</tbody>
 </table>
 HERE
 
 
-My::Web->footer();
+exit;
+}
+1;
similarity index 97%
rename from resume/Resume-JanKratochvil.txt
rename to resume/ResumeJanKratochvil.txt
index 8602236..70687ed 100644 (file)
@@ -93,7 +93,7 @@ Contractor Jobs
   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
index 43317cb..df03960 100644 (file)
@@ -1,2 +1,2 @@
 User-agent: *
-Disallow: /project/ChangeLog.txt.pl
+Disallow: /project/ChangeLog.pm