simulate the MMS center while the other one called to the real official (and
buggy) MMS center accessible as regular service provided by the GSM operator.</p>
-@{[ centerimg 'gate','MMS Sniffing Diagram' ]}
+@{[ centerimg 'gate.dia','MMS Sniffing Diagram' ]}
@{[ vskip "2ex" ]}
@{[ centerimg 'triple.jpeg','MMS Sniffing Mobiles Setup' ]}
"name"=>"Casio-A",
"platform"=>"amiga",
"priority"=>450,
- "icon"=>"Casio-A-icon",
+ "icon"=>"Casio-A-icon.png",
"download"=>"Casio-A.lha",
"link-source file"=>"Casio-A.asm",
"summary"=>"Casio SF-A10 diary backup",
print <<"HERE";
-@{[ centerimg "Casio-A","Casio-A Snapshot" ]}
+@{[ centerimg "Casio-A.png","Casio-A Snapshot" ]}
@{[ vskip "1ex" ]}
-@{[ centerimg "CasioSchema","Casio-A Interface Scheme" ]}
+@{[ centerimg "CasioSchema.png","Casio-A Interface Scheme" ]}
HERE
"name"=>"FordFulk",
"platform"=>"web",
"priority"=>230,
- "icon"=>"FordFulk-icon",
+ "icon"=>"FordFulk-icon.png",
"download"=>"FordFulk/FordFulk.zip",
"summary"=>"Ford-Fulkenson algorithm web applet",
"license"=>"PD",
@{[ vskip "3ex" ]}
-@{[ centerimg "FordFulk","Applet Screenshot" ]}
+@{[ centerimg "FordFulk.png","Applet Screenshot" ]}
HERE
"name"=>"Heat",
"platform"=>"web",
"priority"=>220,
- "icon"=>"Heat-icon",
+ "icon"=>"Heat-icon.png",
"download"=>"Heat/Heat.zip",
"summary"=>"Heat distribution simulation web applet",
"license"=>"PD",
@{[ vskip "3ex" ]}
-@{[ centerimg "Heat","Applet Screenshot" ]}
+@{[ centerimg "Heat.png","Applet Screenshot" ]}
HERE
"name"=>"Islet",
"platform"=>"web",
"priority"=>210,
- "icon"=>"Islet-icon",
+ "icon"=>"Islet-icon.png",
"download"=>"Islet/Islet.zip",
"summary"=>"Map fight web game applet",
"license"=>"PD",
<p>@{[ a_href 'Islet/','Program on-line.' ]}</p>
<!--/iframe-->
-@{[ centerimg "Islet","Applet demo screen" ]}
+@{[ centerimg "Islet.png","Applet demo screen" ]}
HERE
print <<"HERE";
@{[ centerimg "hw.jpeg","LaserGame Hardware" ]}
@{[ vskip "1ex" ]}
-@{[ centerimg "LaserComm","LaserComm Utility" ]}
+@{[ centerimg "LaserComm.png","LaserComm Utility" ]}
HERE
"name"=>"PortDiag",
"platform"=>"amiga",
"priority"=>470,
- "icon"=>"PortDiag-icon",
+ "icon"=>"PortDiag-icon.png",
"download"=>"PortDiag.lha",
"link-source file"=>"PortDiag.asm",
"aminet"=>"hard/hack/PortDiag",
project::Lib->init();
-print centerimg "PortDiag","PortDiag Snapshot";
+print centerimg "PortDiag.png","PortDiag Snapshot";
exit;
"name"=>"TraceFS",
"platform"=>"w32",
"priority"=>610,
- "icon"=>"TraceFS-icon",
+ "icon"=>"TraceFS-icon.png",
"cvs"=>"captive/src/TraceFS",
"link-Documentation"=>"/project/captive/doc/CacheManager.pm#TraceFS",
"summary"=>"Microsoft Windows Kernel API Tracer",
print <<"HERE";
-@{[ centerimg "/project/captive/doc/ntdebug-windbg-boot","TraceFS Initialization" ]}
+@{[ centerimg "/project/captive/doc/ntdebug-windbg-boot.png","TraceFS Initialization" ]}
@{[ vskip "1ex" ]}
-@{[ centerimg "/project/captive/doc/dia/TraceFS","TraceFS Hooking" ]}
+@{[ centerimg "/project/captive/doc/dia/TraceFS.dia","TraceFS Hooking" ]}
HERE
"license"=>"GPL",
"maintenance"=>"update",
"language"=>"i386 asm, C, Perl",
- "icon"=>"captive-install-acquire-icon",
+ "icon"=>"captive-install-acquire-icon.png",
"cvs-of main tree"=>"captive",
"cvs-of branched ReactOS subdir"=>"reactos:captive",
"cvs-of branched LUFS"=>"lufs:captive",
HERE
-print rightimg <<"HERE",'reactos','ReactOS',"a_href"=>'http://www.reactos.com/';
+print rightimg <<"HERE",'reactos.png','ReactOS',"a_href"=>'http://www.reactos.com/';
<h2>The First Open Source MS-Windows Kernel API for Free OS</h2>
<p>Compatibility with the existing binary Microsoft Windows file system drivers has been
HERE
}
-print preview_img 'doc/ntdebug-ntfs','WinDbg Remote NT Kernel NTFS Debugging';
-print preview_img 'doc/dia/arch-all','Captive Components Architecture',''
+print preview_img 'doc/ntdebug-ntfs.png','WinDbg Remote NT Kernel NTFS Debugging';
+print preview_img 'doc/dia/arch-all.dia','Captive Components Architecture',''
.'<span style="color: red;">Red color</span> indicates Captive components for the most common LUFS use case.<br />'
.'<span style="color: violet;">Violet color</span> indicates system components for the most common LUFS use case.';
-print preview_img 'doc/arch-captive','Captive Subsystems Architecture';
-print preview_img 'doc/arch-W32','Original Microsoft Windows Subsystems Architecture';
-print preview_img 'doc/ratio','Functions Reusal Ratio';
-print preview_img 'doc/fig/functype_patched_wrap_fromw32','Code Wrapping of a Call from Microsoft Windows Code';
-print preview_img 'doc/dia/inheritance','Sandboxing Scheme with GObject Inheritance';
-print preview_img 'doc/dia/parent-connector','Parent Connector for Sandbox Slave Restarts Handling';
-print preview_img 'doc/dia/cache-manager','NT Cache Manager Scheme';
-print preview_img 'doc/ntdebug-windbg-boot','Windows NT Remote Kernel Debug Mode During System Boot';
-print preview_img 'doc/dia/TraceFS','TraceFS Debugging Hook for NT Cache Manager Analysis';
-print preview_img 'captive-install-acquire','Captive Microsoft Windows Drivers Acquire Utility';
+print preview_img 'doc/arch-captive.sxd','Captive Subsystems Architecture';
+print preview_img 'doc/arch-W32.sxd','Original Microsoft Windows Subsystems Architecture';
+print preview_img 'doc/ratio.sxi','Functions Reusal Ratio';
+print preview_img 'doc/fig/functype_patched_wrap_fromw32.fig','Code Wrapping of a Call from Microsoft Windows Code';
+print preview_img 'doc/dia/inheritance.dia','Sandboxing Scheme with GObject Inheritance';
+print preview_img 'doc/dia/parent-connector.dia','Parent Connector for Sandbox Slave Restarts Handling';
+print preview_img 'doc/dia/cache-manager.dia','NT Cache Manager Scheme';
+print preview_img 'doc/ntdebug-windbg-boot.png','Windows NT Remote Kernel Debug Mode During System Boot';
+print preview_img 'doc/dia/TraceFS.dia','TraceFS Debugging Hook for NT Cache Manager Analysis';
+print preview_img 'captive-install-acquire.png','Captive Microsoft Windows Drivers Acquire Utility';
exit;
<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' ]}
+ @{[ doc_img 'ratio.sxi','Functions Reusal Ratio' ]}
<p>As there are several choices to implement each function the usual
attempts/investigations ordering is listed in the sections below.</p>
caller in the standard UNIX
@{[ a_href 'CallType.pm#calltype_cdecl','cdecl call type' ]}.</p>
- @{[ doc_img 'fig/functype_patched_pass_fromunix',
+ @{[ doc_img 'fig/functype_patched_pass_fromunix.fig',
'Function Type: <span class="constant">pass</span> from UNIX Code' ]}
<h3 id="functype_pass_fromw32">Pass from W32 Code</h3>
but in this case a relay with the appropriate
@{[ a_href '#calltype','cdecl/stdcall/fastcall call type' ]} is used.</p>
- @{[ doc_img 'fig/functype_patched_pass_fromw32',
+ @{[ doc_img 'fig/functype_patched_pass_fromw32.fig',
'Function Type: <span class="constant">pass</span> from W32 Code' ]}
@{[ vskip() ]}
with the appropriate <a href="#calltype">cdecl/stdcall/fastcall call
type</a>.</p>
- @{[ doc_img 'fig/functype_patched_wrap_fromunix',
+ @{[ doc_img 'fig/functype_patched_wrap_fromunix.fig',
'Function Type: <span class="constant">wrap</span> from UNIX Code' ]}
<h3 id="functype_wrap_fromw32">Wrapping of Call from W32 Code</h3>
relay with the appropriate
@{[ a_href '#calltype','cdecl/stdcall/fastcall call type' ]}.</p>
- @{[ doc_img 'fig/functype_patched_wrap_fromw32',
+ @{[ doc_img 'fig/functype_patched_wrap_fromw32.fig',
'Function Type: <span class="constant">wrap</span> from W32 Code' ]}
@{[ vskip() ]}
<a href="APITypes.pm#functype_native_reactos"><span class="productname">ReactOS</span> implementations</a>.
</p>
- @{[ doc_img 'fig/functype_native_fromunix',
+ @{[ doc_img 'fig/functype_native_fromunix.fig',
'Function Type: <span class="constant">native</span> from UNIX Code' ]}
<h3 id="functype_native_fromw32">Native Implementation of
"unpatched" Library Function Called from W32 Code</h3>
- @{[ doc_img 'fig/functype_unpatched_native_fromw32',
+ @{[ doc_img 'fig/functype_unpatched_native_fromw32.fig',
'Function Type: <span class="constant">native</span> of <span class="constant">unpatched</span> from W32 Code' ]}
<p>Here comes the differentiation if the project deals either with
<h3 id="functype_native_fromw32_patched">Native Implementation of "patched" Library Function Called from W32 Code</h3>
- @{[ doc_img 'fig/functype_patched_native_fromw32',
+ @{[ doc_img 'fig/functype_patched_native_fromw32.fig',
'Function Type: <span class="constant">native</span> of <span class="constant">patched</span> from W32 Code' ]}
<p>The calling scheme is similiar to the
<span class="productname">Microsoft Windows NT</span> kernel space
environment and $gnulinux user space process environment:</p>
- @{[ doc_img 'arch-W32','Microsoft Windows Subsystems Architecture' ]}
- @{[ doc_img 'arch-captive','Captive Subsystems Architecture' ]}
+ @{[ doc_img 'arch-W32.sxd','Microsoft Windows Subsystems Architecture' ]}
+ @{[ doc_img 'arch-captive.sxd','Captive Subsystems Architecture' ]}
<h2 id="existing_emulation">Existing Emulation Projects</h2>
download/extract the <span class="productname">Service Pack</span> files
accordingly.</p>
- @{[ doc_img 'captive-install-acquire-ask','Microsoft Windows Drivers Acquire Affirmation' ]}
+ @{[ doc_img 'captive-install-acquire-ask.png','Microsoft Windows Drivers Acquire Affirmation' ]}
HERE
the other goals of its W32 counterpart are left to be successfuly handled
by UNIX OS in much more efficient way.</p>
- @{[ doc_img 'dia/cache-manager',
+ @{[ doc_img 'dia/cache-manager.dia',
'<span class="productname">NT Cache Manager</span> Architecture' ]}
<p>Cache Manager objects are always bound to
subsystems. It was chosen as easier way to trace it instead and validate
all the Cache Manager assumptions by Cache Manager simulator.</p>
- @{[ doc_img 'dia/TraceFS','TraceFS Hooking' ]}
+ @{[ doc_img 'dia/TraceFS.dia','TraceFS Hooking' ]}
<p>You must prepare your driver to be hooked
(<span class="fname">ntfs.sys</span> in this case):</p>
from <span class="productname">WinDbg</span> by
@{[ a_href 'Reverse.pm#WinDbg','W32 remote kernel debugging' ]}:</p>
- @{[ doc_img 'ntdebug-windbg-boot','Successfuly connected <span class="productname">WinDbg</span>' ]}
+ @{[ doc_img 'ntdebug-windbg-boot.png','Successfuly connected <span class="productname">WinDbg</span>' ]}
<p>The resulting trace file should be processed by
@{[ captive_srcfile './src/TraceFS/checktrace.pl' ]} Perl Cache Manager
function arguments with the function prototype used by the caller is
harmless. Variable arguments lists can be passed by this convention.</p>
- @{[ doc_img 'fig/calltype_cdecl',
+ @{[ doc_img 'fig/calltype_cdecl.fig',
'W32 Calling Convention <span class="constant">cdecl</span> Scheme' ]}
<table border="1" class="margin-center">
<h2 id="calltype_stdcall">W32 Calling Convention "stdcall"</h2>
- @{[ doc_img 'fig/calltype_stdcall',
+ @{[ doc_img 'fig/calltype_stdcall.fig',
'W32 Calling Convention <span class="constant">stdcall</span> Scheme' ]}
<p>Convention never used in the UNIX world. It needs to be specified for
@{[ a_href '#functype','relaying code' ]} generated by
<span class="fname">captivesym</span> relay generator.</p>
- @{[ doc_img 'fig/calltype_fastcall',
+ @{[ doc_img 'fig/calltype_fastcall.fig',
'W32 Calling Convention <span class="constant">fastcall</span> Scheme' ]}
<table border="1" class="margin-center">
<h1>Project Components</h1>
- @{[ doc_img 'dia/arch-all','Project Components Architecture' ]}
+ @{[ doc_img 'dia/arch-all.dia','Project Components Architecture' ]}
<p>Most of the work of this project is located in the single box called
"<span class="constant">libcaptive</span>" located in the center
<li>the only connection with the UNIX OS by CORBA/ORBit RPC</li>
</ul>
- @{[ doc_img 'dia/arch-all','Project Components Architecture' ]}
+ @{[ doc_img 'dia/arch-all.dia','Project Components Architecture' ]}
<p>This security is almost the same as provided by
emulated virtual machines such as
@{[ a_href 'http://www.vmware.com/solutions/security.html','VMware' ]}.</p>
- @{[ doc_img 'dia/inheritance','Sandboxing Scheme' ]}
+ @{[ doc_img 'dia/inheritance.dia','Sandboxing Scheme' ]}
<p>Project can be also used in non-sandboxed mode by
<span class="command">--no-sandbox</span> option as it is easier to debug
<p>message to syslog and refuse any further operations with this
object.</p>
- @{[ doc_img 'dia/parent-connector','Parent Connector' ]}
+ @{[ doc_img 'dia/parent-connector.dia','Parent Connector' ]}
<p><span class="constant">HANDLE</span> represents W32 object open in
existing W32 filesystem.<span class="constant">HANDLE</span> is created
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"}
+ print img "/My/arrow-left.png" ,"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"}
+ print img "/My/arrow-up.png" ,"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"}
+ print img "/My/arrow-right.png","Next document","a_href"=>$My::Web::W->{"rel_next"}
if $My::Web::W->{"rel_next"};
print '</td>'."\n";
print '<td></td>'."\n";
on the <span class="productname">WinDbg</span> side. Your goal is to
successfuly connect <span class="productname">WinDbg</span>:</p>
- @{[ doc_img 'ntdebug-ntfs','<span class="productname">WinDbg</span> Remote NT Kernel NTFS Debugging' ]}
+ @{[ doc_img 'ntdebug-ntfs.png','<span class="productname">WinDbg</span> Remote NT Kernel NTFS Debugging' ]}
<p>The most easy way to setup two computers is to use commercial
<span class="productname">@{[ a_href 'http://www.vmware.com/download/workstation.html','VMware Workstation' ]}</span>
<h3 id="WinDbg_WinDbg"><span class="productname">WinDbg</span> side setup</h3>
- @{[ doc_img 'ntdebug-vmware-windbg',
+ @{[ doc_img 'ntdebug-vmware-windbg.png',
'<span class="productname">VMware</span> virtual serial port'
.' of <span class="productname">WinDbg</span> side' ]}
<p>You should setup <span class="productname">WinDbg</span> according
to:</p>
- @{[ 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>' ]}
+ @{[ doc_img 'ntdebug-windbg-port.png','Port settings of <span class="productname">WinDbg</span>' ]}
+ @{[ doc_img 'ntdebug-windbg-sym.png','Symbols files location of <span class="productname">WinDbg</span>' ]}
<p><span class="constant">Symbols</span> should point to the directory where
reside files extracted from the symbol archive for your version of
<p>Your successfuly connected target (after the steps described
below) should look like:</p>
- @{[ doc_img 'ntdebug-windbg-boot','Successfuly connected <span class="productname">WinDbg</span>' ]}
+ @{[ doc_img 'ntdebug-windbg-boot.png','Successfuly connected <span class="productname">WinDbg</span>' ]}
<h3 id="WinDbg_kern">Setup of the side being kernel-debugged</h3>
- @{[ doc_img 'ntdebug-vmware-xpdebug',
+ @{[ doc_img 'ntdebug-vmware-xpdebug.png',
'<span class="productname">VMware</span> virtual serial port'
.' of the side being kernel-debugged' ]}
(if no <span class="productname">WinDbg</span> is waiting in the other
virtual machine):</p>
- @{[ doc_img 'ntdebug-wait','Side being kernel-debugged waiting for <span class="productname">WinDbg</span>' ]}
+ @{[ doc_img 'ntdebug-wait.png','Side being kernel-debugged waiting for <span class="productname">WinDbg</span>' ]}
HERE
"name"=>sub { return a_href('http://www.ethereal.com/','Ethereal').' MMSE fix'; },
"platform"=>"patch",
"priority"=>360,
- "icon"=>"elogo3d100x100",
+ "icon"=>"elogo3d100x100.png",
"summary"=>'Fixed MMS Encapsulation protocol decoding',
"link-ChangeLog entry"=>'http://www.ethereal.com/cgi-bin/viewcvs.cgi/ethereal/packet-mmse.c#rev1.15',
"download-patch"=>'http://www.ethereal.com/cgi-bin/viewcvs.cgi/ethereal/packet-mmse.c.diff?r2=1.15&r1=1.14&diff_format=u',
"name"=>sub { return a_href('http://www.ethereal.com/','Ethereal').' WSP patch'; },
"platform"=>"patch",
"priority"=>350,
- "icon"=>"elogo3d100x100",
+ "icon"=>"elogo3d100x100.png",
"summary"=>'Enhanced WSP headers decoding',
"download-patch"=>'ethereal-2002-08-03-packet-wsp.c-contentlocation.diff',
"license"=>"GPL",
"name"=>sub { return a_href('http://glade.gnome.org/','Glade').' -w'; },
"platform"=>"patch",
"priority"=>310,
- "icon"=>"glade-icon",
+ "icon"=>"glade-icon.png",
"summary"=>'Option <i>--write-source</i> for batch compilation',
"download-original patch"=>'glade-0.5.7-writesource.diff',
"link-ChangeLog entry"=>'http://cvs.gnome.org/bonsai/cvslog.cgi?file=glade%2Fglade/main.c&root=/cvs/gnome#1.10',
"name"=>"Int13Sniff",
"platform"=>"unixdevel",
"priority"=>370,
- "icon"=>"int13sniff-icon",
+ "icon"=>"int13sniff-icon.png",
"summary"=>'Trace PC bootloader disk operations',
"download-source"=>'http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/surprise/surprise/misc/int13sniff.S?rev=HEAD',
"download-gzip(1)ped floppy image head"=>'int13sniff.bin.gz',
project::Lib->init();
-print centerimg "int13sniff-snap","Boot Snapshot";
+print centerimg "int13sniff-snap.png","Boot Snapshot";
exit;
@{[ centerimg "charger.jpeg","AC Switch Photo" ]}
@{[ vskip "3ex" ]}
-@{[ centerimg "line9k","AC Switch Scheme" ]}
+@{[ centerimg "line9k.fig","AC Switch Scheme" ]}
HERE
"name"=>sub { return a_href('http://www.mutt.org/','Mutt').' speedup'; },
"platform"=>"patch",
"priority"=>430,
- "icon"=>"mutt_button",
+ "icon"=>"mutt_button.png",
"summary"=>'Mailbox reading phase acceleration',
"download-patch"=>'mutt-sort.diff',
"license"=>"GPL",
"name"=>sub { a_href('http://www.postgresql.org/','PostgreSQL').'-6.3 fix'; },
"platform"=>"patch",
"priority"=>290,
- "icon"=>"postgresql",
+ "icon"=>"postgresql.png",
"summary"=>'Fixed substr() and substring() SQL functions',
"download-patch"=>'http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/utils/adt/varlena.c.diff?r1=1.31&r2=1.32&f=u',
"link-ChangeLog entry"=>'http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/utils/adt/varlena.c#rev1.32',
"name"=>sub { return a_href('http://www.php.net/','PHP').'-3.0b6 fix'; },
"platform"=>"patch",
"priority"=>300,
- "icon"=>"php",
+ "icon"=>"php.png",
"summary"=>'Avoid excessive use of memory for hashes',
"download-patch"=>'http://cvs.php.net/diff.php/php3/Attic/hash.c?r1=1.76&r2=1.77&ty=u',
"license"=>"PD",
"name"=>"redirector-ad",
"platform"=>"unixuser",
"priority"=>340,
- "icon"=>"cnet-icon",
+ "icon"=>"cnet-icon.png",
"cvs"=>"redirector-ad",
"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"}
"name"=>"Partition Surprise",
"platform"=>"unixuser",
"priority"=>650,
- "icon"=>"surprise-gnome-0-icon",
+ "icon"=>"surprise-gnome-0-icon.png",
"download-Page on SourceForge.net"=>"http://sourceforge.net/project/showfiles.php?group_id=10546",
"download-ISO Image from SourceForge.net"=>"http://surprise.sourceforge.net/download/surprise-rel7.iso.zip",
"link-Homepage on SourceForge.net"=>"http://surprise.sourceforge.net/",
has been reported. Please use @{[ a_href 'http://www.gnu.org/software/parted/parted.html','GNU Parted' ]}
or similar products.</p>
-@{[ centerimg "surprise-gnome-0","Gnome client" ]}
+@{[ centerimg "surprise-gnome-0.png","Gnome client" ]}
HERE
"name"=>"WinVNC hide",
"platform"=>"w32",
"priority"=>560,
- "icon"=>"nowinvnc",
+ "icon"=>"nowinvnc.png",
"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",
"name"=>"Gnome xBill",
"platform"=>"unixuser",
"priority"=>570,
- "icon"=>"redmond-icon",
+ "icon"=>"redmond-icon.png",
"link-Download from SourceForge.net"=>"http://sourceforge.net/project/showfiles.php?group_id=10700",
"link-Homepage on SourceForge.net"=>"http://xbill.sourceforge.net/",
"summary"=>"xBill game rewritten with network support and Gnome/GTK+",