captive-1.1.4
[www.jankratochvil.net.git] / project / captive / Index.html.pl
index 6e67d04..de5bc4d 100755 (executable)
@@ -41,211 +41,122 @@ my $W=My::Project->init_project(
 .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"=>""
+                               .'<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('#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>'
                );
 
 
-print <<"HERE";
-<h1>The First free Read/Write NTFS for Free Operating Systems</h1>
-<h1>The First Open Source MS-Windows Kernel API for Free OS</h1>
-HERE
-
-my @stuff=(
-               "A lot of people claim to be Windows Programmers.\n"
-                               ." Now, I can join them at last - I have also written my own Microsoft Windows.",
-               "Why do they need ".a_href('http://www.winsupersite.com/reviews/winserver2k3_gold2.asp','5,000 developers')
-                               ." to write Microsoft Windows when it can be just a One Man Show?",
-               "My first Microsoft Windows program ever written? Some 'helloworld'?"
-                               ." <span class=\"quote\">hal.dll</span>.",
-               );
-
-print rightimg((map("<p class=\"stuff\">$_</p>\n",($stuff[int rand @stuff])))[0],
-               'captive-install-acquire-small','[ Captive Microsoft Windows Drivers Acquire Illustration ]',
-                               "a_href_img"=>'captive-install-acquire');
-
-print <<"HERE";
-
-
+print <<"HERE" if !$WebConfig::WebConfig{"no_job"};
 @{[ vskip "3ex" ]}
 
 <table border="0" width="100%"><tr><td align="center">
-       <table border="0" style="margin: 4ex; padding: 2ex; background: #552222;">
+       <table border="0" style="margin: 3ex; padding: 2ex; background: #bb8888;">
                <tr><td style="font-size: larger;">
-                       Why did I install Microsoft Windows and write such a disgusting piece of code?<br />
-                       Expecting @{[ a_href $W->{"resume_url"},"yet another challenging task" ]}!
+                       Looking for a challenging job: @{[ a_href $W->{"resume_url"},"My resume" ]}
                </td></tr>
        </table>
 </table>
-
-@{[ vskip "3ex" ]}
-
-
-<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>
 HERE
-my %pkg=(
-               1=>[qw(captive captive-lufs captive-install lufs gnome-vfs-httpcaptive ntfsprogs ntfsprogs-gnomevfs)],
-               2=>[qw(captive captive-lufs                 lufs)],
-               3=>[qw(captive)],
-               );
-my %reqpkg=(
-               1 =>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt readline libgnomeui)],
-               23=>[qw(glib2 gnome-vfs2 ORBit2 libxml2 openssl popt readline)],
-               );
+
 my %version=(
-               map(($_=>["1.0","0"]),qw(captive captive-lufs captive-install)),
-               "lufs"=>["0.9.6","1captive6"],
-               "gnome-vfs-httpcaptive"=>["2.3.8captive2","0"],
-               "ntfsprogs"=>["200309071734","1captive1"],
-               "ntfsprogs-gnomevfs"=>["1.0.2","0"],
-               );
-my %has_rh8=(map(($_=>1),qw(
-               gnome-vfs-httpcaptive
-               captive
-               captive-lufs
-               captive-install
-               )));
-my %has_mdk91=(map(($_=>1),qw(
-               gnome-vfs-httpcaptive
-               lufs
-               captive
-               captive-lufs
-               captive-install
-               )));
-my %has_devel=(map(($_=>1),qw(
-               ntfsprogs
-               )));
-my %pkg_nosrc=(map(($_=>1),qw(
-               captive-lufs
-               captive-install
-               )));
-
-my $case;
-my $a_href_arch=sub ($$%)
-{
-my($file_base,$text,%args)=@_;
-
-       $text=~s/[._]\D.*$// if $case!=1 && $text!~/^[.]/;
-       return a_href $file_base,$text,"size"=>($case==1),%args;
-};
-
-my @libxml2_rh8_pkgs=qw(libxml2-2.5.4-1.i386.rpm libxml2-python-2.5.4-1.i386.rpm libxml2-devel-2.5.4-1.i386.rpm);
-
-my @dist=(
-               {
-                       "name"=>"Red Hat 9<br />Shrike i386",
-                       "out"=>sub {
-                               my($pkg,$version_base,$version_ext)=@_;
-                                       my $file="$pkg-$version_base-$version_ext.i386.rpm";
-                                       my $r=&$a_href_arch("dist/$file",$file);
-                                       (my $filedev=$file)=~s/^\Q$pkg\E-/${pkg}-devel-/;
-                                       $r.="<br />".&$a_href_arch("dist/$filedev",$filedev) if $has_devel{$pkg};
-                                       return $r;
-                               },
-                       },
-               {
-                       "name"=>"Red Hat 8<br />Psyche i386<br />"
-                                       ."(".a_href("#libxml2_rh8","libxml2 upgrade note").")",
-                       "out"=>sub {
-                               my($pkg,$version_base,$version_ext)=@_;
-                                       my $file="$pkg-$version_base-$version_ext".(!$has_rh8{$pkg} ? "" : "rh8").".i386.rpm";
-                                       my $r=&$a_href_arch("dist/$file",$file);
-                                       (my $filedev=$file)=~s/^\Q$pkg\E-/${pkg}-devel-/;
-                                       $r.="<br />".&$a_href_arch("dist/$filedev",$filedev) if $has_devel{$pkg};
-                                       if ($pkg eq "captive-install") {
-                                               for (@libxml2_rh8_pkgs) {
-                                                       $r.="<br />".&$a_href_arch('ftp://ftp.redhat.com/pub/redhat/linux/9/en/os/i386/RedHat/RPMS/'.$_,$_)." of Red Hat 9";
-                                                       }
-                                               }
-                                       return $r;
-                               },
-                       },
-               {
-                       "name"=>"Mandrake 9.1<br />Bamboo i586",
-                       "out"=>sub {
-                               my($pkg,$version_base,$version_ext)=@_;
-                                       my $file="$pkg-$version_base-$version_ext".(!$has_mdk91{$pkg} ? ".i386.rpm" : "mdk91.i586.rpm");
-                                       my $r=&$a_href_arch("dist/$file",$file);
-                                       (my $filedev=$file)=~s/^\Q$pkg\E-/${pkg}-devel-/;
-                                       $r.="<br />".&$a_href_arch("dist/$filedev",$filedev) if $has_devel{$pkg};
-                                       return $r;
-                               },
-                       },
-               {
-                       "name"=>"Debian GNU/Linux<br />'unstable' i386",
-                       "out"=>sub {
-                               my($pkg,$version_base,$version_ext)=@_;
-                                       $version_ext=~s/^\d+//;
-                                       my $file="${pkg}_$version_base".($version_ext=~/^\d+$/ ? "" : $version_ext)."_i386.deb";
-                                       my $r=&$a_href_arch("dist/$file",$file);
-                                       (my $filedev=$file)=~s/^\Q$pkg\E_/${pkg}-dev_/;
-                                       $r.="<br />".&$a_href_arch("dist/$filedev",$filedev) if $has_devel{$pkg};
-                                       return $r;
-                               },
-                       },
-               {
-                       "name"=>"Sources (.tar.gz)",
-                       "out"=>sub {
-                               my($pkg,$version_base,$version_ext)=@_;
-                                       return () if $pkg_nosrc{$pkg};
-                                       $version_ext=~s/^\d+//;
-                                       my $file="$pkg-$version_base".($version_ext=~/^\d+$/ ? "" : $version_ext).".tar.gz";
-                                       return $file,$file;
-                               },
-                       },
-               {
-                       "name"=>"Sources (.src.rpm)<br />(Red Hat 9 - Shrike)",
-                       "out"=>sub {
-                               my($pkg,$version_base,$version_ext)=@_;
-                                       return () if $pkg_nosrc{$pkg};
-                                       my $file="$pkg-$version_base-$version_ext.src.rpm";
-                                       return $file,$file;
-                               },
-                       },
+               map(($_=>["1.1.4","0"]),qw(captive captive-lufs captive-install)),
+               "lufs"=>["0.9.7","1captive8"],
                );
 
-for my $dist (@dist) {
-       print "<tr>";
-               print "<td>".$dist->{"name"}."</td>";
-               for my $casel (1,2,3) {
-                       $case=$casel;
-                       print "<td>";
-                       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}}));
-                       print "</td>";
-                       }
-       print "</tr>\n";
-       }
-print "<tr style=\"height: 2ex;\"></tr>\n";
-print "<tr>";
-       print "<td>Package Requirements</td>";
-       for my $case (1,23) {
-               print "<td".($case==23 ? ' colspan="2"' : '').">";
-               print join(", ",map("<span class=\"reqpkg\">$_</span>",@{$reqpkg{$case}}));
-               print "</td>";
-               }
-print "</tr>\n";
 print <<"HERE";
+<a name="download"><h2>Download</h2></a>
+
+<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">
+       <tr>
+               <td>
+                       RPM i386 binary<br />
+                       tested for distributions:
+                                       <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>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>.tar.gz i386 binary<br />(for non-RPM distributions)</td>
+               <td>@{[ a_href 'dist/captive-static-'.$version{"captive"}[0].'.tar.gz',undef(),"size"=>1,"basename"=>1 ]}</td>
+       </tr>
+       <tr>
+               <td>Debian .deb binaries</td>
+               <td>@{[ a_href 'CVS.html.pl#debian','download link' ]}</td>
+       </tr>
+       <tr>
+               <td>Source archives</td>
+               <td>@{[ a_href 'CVS.html.pl#source','download link' ]}</td>
+       </tr>
 </table>
+</td></tr></table>
 
-<blockquote>
-       <p><a name="libxml2_rh8"><b><i>Red Hat 8 Psyche</i> upgrade of <i>libxml2</i> package:</b></a>
-       Upgrade only the packages already installed on your system to prevent
-       many dependency requirements - do not use &quot;<code>rpm -U</code>&quot;,
-       use &quot;<code>rpm -F</code>&quot; instead:</p>
-       <blockquote><p class="quote">
-               <code>rpm -F @{[ join(" ",@libxml2_rh8_pkgs) ]}</code>
-       </p></blockquote>
-</blockquote>
+@{[ vskip "3ex" ]}
+
+<a name="news"><h2>NEWS</h2></a>
+
+<dl>
+       <dt>captive-1.1.4 (2003-12-13) [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/captive/NEWS?rev=HEAD','archive' ]}]</dt>
+       <dd>
+               <ul>
+                       <li>Unicode/UTF8 localized filenames conversion for GNU/Linux is now supported</li>
+                       <li>Various GNU/Linux distributions compatibility fixes</li>
+                       <li>Fixed omitted captive-install-acquire(1) --microsoft-com progress bar</li>
+                       <li>Fixed captive-install-acquire(1) --scan-disks* memory leaks (Steve Wampler)</li>
+                       <li>Fixed captive-install-acquire(1) --scan-disks* performance</li>
+               </ul>
+       </dd>
+       <dt>lufs-0.9.7captive8 (2003-12-06) [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/lufs/NEWS.captive?rev=1.1.2.11','archive' ]}]</dt>
+</dl>
 
 @{[ vskip "3ex" ]}
 
+<a name="testimonials"><h2>Captive NTFS Testimonials</h2></a>
+
+<ul>
+       <li>Derek J Witt
+               <p>I commend you for this project. I am currently using this on my XP NTFS
+               partitions and I am impressed that I can actually move, edit, and remove files
+               and directories with no apparent ill effects. This is very nice indeed.</p>
+               <p>I initially was skeptical because it uses wine and parts of ReactOS
+                (I have messed with this OS a few times), but you have proved me wrong. I have
+               noticed no lag on my system.  I do notice the initial mounting process does
+               take slightly longer than the Linux-NTFS project. But, once I'm past that, it's
+               quite transparent.</p>
+               <p><span style="font-style: italic;">[ technical question cut ]</span></p>
+       </li>
+       <li>James Van't Slot
+               <p>Just wanted to drop you a note and say &quot;Excellent work!&quot;</p>
+               <p>I just installed captive and it worked as advertized right out of the
+               rpm.  Thanks, I've been holding off recompiling my kernel until NTFS is
+               supported out of the box for Redhat.  Now I don't have to bother.</p>
+               <p>Thanks again and keep up the great work.</p>
+       </li>
+</ul>
+
+@{[ vskip "3ex" ]}
 
-<h1>Installation Notes</h1>
+
+<a name="notes"><h1>Installation Notes</h1></a>
 
 <p>You should first run <b>captive-install-acquire</b> command to check your
 available Microsoft Windows drivers versions. Now you can execute:</p>
@@ -260,10 +171,6 @@ available Microsoft Windows drivers versions. Now you can execute:</p>
 
 <h2>Overview</h2>
 
-<p>'<b>captive</b>' is the base package. It contains debugging '<b>captive-cmdline</b>' client.<br />
-'<b>captive-lufs</b>' permits mounting NTFS as regular filesystem. It needs '<b>lufs</b>'.<br />
-'<b>lufs</b>' is a daemon to enable userland process to provide filesystem functions.</p>
-
 <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>
@@ -271,28 +178,6 @@ available Microsoft Windows drivers versions. Now you can execute:</p>
 <p>'<b>captive</b>' package creates '<b>captive</b>' user and '<b>captive</b>' group on your system.</p>
 
 
-<h2>Package Version Conflicts</h2>
-
-<dl>
-
-<dt>@{[ a_href 'http://lufs.sourceforge.net/lufs/','lufs' ]}</dt>
-<dd><p><b>'captive' version required</b>: Although you may already have the
-original package installed you must replace it by the local 'captive'-marked
-version containing some 'captive'-essential fixes and extensions.</p></dd>
-
-<dt>@{[ a_href 'http://linux-ntfs.sourceforge.net/','ntfsprogs' ]}</dt>
-<dd><p><b>Original version >=200309071734 sufficient</b>:
-The package which is downloadable from here, has no code patches - you can freely use the
-original version instead. Unfortunately, the last public release is
-<b>1.7.1</b> while this project requires at least
-@{[ a_href 'http://linux-ntfs.sourceforge.net/snapshots/','snapshot' ]} version
-<b>@{[ a_href 'http://linux-ntfs.sourceforge.net/snapshots/ntfsprogs-200309071734.tar.bz2','200309071734' ]}</b>
-which is not packaged (.rpm/.deb) yet. Packaged versions are provided here for
-your convenience.</p></dd>
-
-</dl>
-
-
 <h2>LUFS Kernel Driver Module</h2>
 
 <p>@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]} (Linux Userland File
@@ -349,8 +234,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_sub"}}()."listinfo/$_",'Mailman Infopage')."</td>"; } @lists) ]}</tr>
+               <tr>@{[ map({ "<td>".a_href(&{$W->{"pipermail_url_sub"}}()."$_",'Archive')."</td>"; } @lists) ]}</tr>
                <tr>@{[
                        map(('<td><input type="checkbox" name="list" value="'.$_.'"'
                                        .($_ ne "captive-announce-list" ? '' : ' checked="checked"')
@@ -371,10 +256,10 @@ print <<"HERE";
 
 @{[ vskip "3ex" ]}
 
-<h1>See Also</h1>
+<a name="seealso"><h1>See Also</h1></a>
 <ul>
-       <li>@{[ a_href 'Preview.html.pl','<span style="font-size: larger;">Technology Preview</span>' ]}</li>
-       <li>@{[ a_href 'CVS.html.pl','CVS Repository' ]}</li>
+       <li>@{[ a_href 'Preview.html.pl','Technology Preview' ]}</li>
+       <li>@{[ a_href 'CVS.html.pl','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>
@@ -385,7 +270,7 @@ print <<"HERE";
                <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>
                </ul></li>
-       <li>@{[ a_href 'http://cvs.jankratochvil.net/viewcvs/*checkout*/captive/TODO?rev=HEAD','Known Bugs' ]}</li>
+       <li>@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/captive/TODO?rev=HEAD','Known Bugs' ]}</li>
        <li>Man Pages<ul>
                @{[
                        do {