ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/schmorpforge/genpage
Revision: 1.71
Committed: Fri Jun 25 14:13:35 2010 UTC (14 years ago) by root
Branch: MAIN
Changes since 1.70: +3 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 elmex 1.1 #!/usr/bin/perl
2    
3     umask 022;
4    
5     mkdir "software.schmorp.de", 0755;
6     mkdir "software.schmorp.de/pkg", 0755;
7     mkdir "software.schmorp.de/img", 0755;
8     system "rsync -av *.jpg software.schmorp.de/img/";
9    
10 root 1.69 our %IRC = (
11     anyevent => ["irc.perl.org", "#anyevent", "http://mibbit.com/chat/#anyevent\@irc.perl.org"],
12     freenode => ["irc.freenode.org", "#schmorp", "http://webchat.freenode.net/?randomnick=1&channels=schmorp&prompt=1", ", users <tt>schmorp</tt> and <tt>elmex</tt>"],
13 root 1.71 rxvt => ["irc.freenode.org", "#rxvt-unicode", "http://webchat.freenode.net/?randomnick=1&channels=rxvt-unicode&prompt=1", ""],
14     rxvtdev => ["irc.freenode.org", "#rxvt-unicode-dev", "http://webchat.freenode.net/?randomnick=1&channels=rxvt-unicode-dev&prompt=1", " <b>(no support, development only)</b>"],
15 root 1.69 );
16    
17 elmex 1.1 sub hdr($$) {
18     print <<EOF;
19     <?xml version='1.0' encoding='utf-8'?>
20     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
21     <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
22     <head>
23     <title>$_[0]</title>
24     <style type='text/css'>
25     body {
26     background: white;
27     color: black;
28     font-family: Arial, Helvetica, sans-serif;
29     font-size: 12pt;
30     }
31    
32     .bg-ede { background: url(/img/ede.jpg) no-repeat; padding: 20px; width: 100%; height: 82px; }
33     .bg-perl { background: url(/img/perl.jpg) no-repeat; padding: 20px; width: 100%; height: 194px; }
34     .bg-bluete { background: url(/img/bluete.jpg) no-repeat; padding: 20px; width: 100%; height: 148px; }
35    
36     a:link { color: #00f; }
37     a:visited { color: #008; }
38     a:hover { color: #800; }
39     a:active { color: #f00; }
40    
41 root 1.48 .back {
42     margin: 0;
43     font-size: 8pt;
44     }
45    
46     h1 {
47     color: #034;
48     }
49     .short-desc {
50     font-weight: bold;
51     padding: 3px 3px 3px 8px;
52     margin: 1em 1px 1px 13px;
53     }
54     h2 {
55     color: #069;
56     font-weight: bold;
57     border: solid red;
58     border-width: 0 0 0 12px;
59     padding: 3px 3px 3px 8px;
60     margin: 1em 1px 1px 1px;
61     }
62     p {
63     padding: 3px 3px 3px 8px;
64     margin: 1em 1px 1px 13px;
65     }
66     h3 { color: #034; }
67     h4 { color: #034; }
68    
69 elmex 1.1 img { display: block; }
70    
71 root 1.48 .resources {
72     margin-left: 13px;
73     margin-right: 13px;
74     padding: 3px 3px 3px 8px;
75     border-spacing: 1px 2px;
76     }
77    
78     .rr {
79     background: #eef;
80     padding: 1px 1em 1px 1ex;
81     }
82    
83     tt.icon {
84     display: block;
85     font-family: "Andale Mono", "Lettergothic", monospace;
86     border: 1px solid #88f;
87     background: #ccf;
88     padding: 1px 1em 1px 1em;
89     margin-right: 0;
90     text-align: center;
91     width: 4en;
92     }
93    
94 elmex 1.1 tt { font-family: "Andale Mono", "Lettergothic", monospace; }
95    
96 root 1.48 .overview {
97     margin-top: 1em;
98     margin-left: 13px;
99     margin-right: 13px;
100     padding: 3px 3px 3px 8px;
101     border-spacing: 1px 2px;
102     }
103    
104     .overview th { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
105     .overview td { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
106 elmex 1.1
107     hr.footer { display: none; }
108     .footer { font-size: 8pt; border-top: 1px solid red; }
109     </style>
110     </head>
111     <body>
112 root 1.9 <p class='back'><a href='/'>Schmorpforge Ta-Sa Software Repository</a></p>
113 elmex 1.1 <h1 class="$_[1]">$_[0]</h1>
114     <div style="text-align: center; float: right; margin-left: 1em; margin-bottom: 1em">
115 root 1.63 <!--
116 root 1.56 <a title="Mach mit!" href="http://www.piratenpartei.de/navigation/politik/unsere-ziele">
117 root 1.55 <img src="http://res.tst.eu/denke_selbst.gif" alt="Werde Pirat!" width="468" height="60" border="0" />
118     </a>
119     <br />
120 root 1.63 -->
121 root 1.41 <a href="http://www.piratenpartei.de/navigation/politik/unsere-ziele">
122 root 1.55 <img src="http://res.tst.eu/piraten1.png" alt="Piratenpartei" width="468" height="60" border="0" />
123 root 1.41 </a>
124     <br />
125 elmex 1.1 <a href="http://www.deliantra.net/">
126     <img src="http://www.deliantra.net/images/deliantra.png" border="0" alt="Deliantra Free MMORPG" style="display: inline"/>
127     <br />
128     The free as in beer, liberal, code &amp; content retro-style graphical MMORPG :)
129     </a>
130     </div>
131     EOF
132     }
133    
134     sub ftr {
135     print <<EOF;
136     <hr class='footer'/>
137     <p class='footer'>
138     Contact for this page: <a href="mailto:schmorpforge\@schmorp.de">Marc Lehmann &lt;schmorpforge\@schmorp.de&gt;</a>.
139     </p>
140     </body>
141     </html>
142     EOF
143     }
144    
145     $_ = <DATA>;
146     for (;defined $_;) {
147     my ($name, @args) = split /\s+/;
148    
149     next unless $name;
150    
151     my $desc = "";
152     $desc .= $_ while (defined ($_ = <DATA>) and !/^\S/);
153     $desc =~ s/^(.*?)\n\s*\n//s
154     or die "malformed desc in $name: $desc";
155    
156     my $short = $1;
157    
158     $index{$name} = "<tr><th id='$name'><a href='pkg/$name.html'>$name</a></th><td>$short</td></tr>";
159    
160     open STDOUT, ">", "software.schmorp.de/pkg/$name.html"
161     or die "software.schmorp.de/pkg/$name.html: $!";
162    
163 root 1.48 my $bg = (grep /cpan/, @args) ? "bg-perl" : "bg-ede";
164     hdr $name, $bg;
165 elmex 1.1
166     print <<EOF;
167 root 1.48 <h2>$name</h1>
168 elmex 1.1 <p class='short-desc'>$short</p>
169    
170     <h2>Blurb</h2>
171     <p class='blurb'>$desc</p>
172 root 1.47 <h2>Resources</h2>
173 root 1.48 <table class='resources'>
174 elmex 1.1 EOF
175 elmex 1.5 if (grep /git/, @args) {
176     print <<EOF;
177 elmex 1.58 <tr><td><tt class="icon">GIT</tt></td><td class='rr'><a href='http://git.ta-sa.org/git/$name/'>Browsable GIT repository '$name'</a></li></tr>
178 root 1.48 <tr><td><tt class="icon">GIT</tt></td><td class='rr'>Read-only GIT checkout: <tt>&#160;git-clone http://git.ta-sa.org/$name.git</tt>
179     </td></tr>
180 elmex 1.58 <!-- <tr><td><tt class="icon">CVS</tt></td><td class='rr'>Contributor CVS access (command requires CVS version &gt;= 1.12.11):<br />
181 elmex 1.33 <tt>cvs -d ":ext;CVS_SERVER=git-cvsserver:USER\@ruth.plan9.de/gitroot/$name.git" co -d $name master</tt>
182 elmex 1.58 </td></tr> -->
183 elmex 1.5 EOF
184     } else {
185     my $modules = $name;
186     $modules = "$1" if grep /modules\((.*)\)/, @args;
187 elmex 1.1
188 elmex 1.5 print <<EOF;
189 root 1.48 <tr><td><tt class="icon">CVS</tt></td><td class='rr'><a href='http://cvs.schmorp.de/$name'>Browsable CVS module '$name'</a></td></tr>
190     <tr><td><tt class="icon">CVS</tt></td><td class='rr'>Anonymous CVS:
191     <tt>&#160;cvs -z3 -d :pserver:anonymous\@cvs.schmorp.de/schmorpforge co $modules</tt>
192 elmex 1.1
193     <small>
194    
195 root 1.30 <!--
196 elmex 1.1 <p>The warning
197     <b>cvs checkout: warning: cannot write to history file /schmorpforge/CVSROOT/history: Permission denied</b>
198     is expected and harmless, just ignore it. It simply means you have no write access to the repository.
199     </p>
200 root 1.30 -->
201 elmex 1.1
202 root 1.48 <!--
203 elmex 1.1 <p>The CVS server moved again on 2008-02-21, you can use the following
204     (untested) snippet to update your CVS checkout. Run it in the top level
205     checked out directory:</ br>
206    
207     <pre>
208     find . -name CVS | xargs -I% find % -name Root |
209     xargs perl -i -pe 's%:pserver:anonymous\\\@cvs.schmorp.de:636/schmorpforge%:pserver:anonymous\\\@cvs.schmorp.de:/schmorpforge%'</pre>
210     </p>
211 root 1.48 -->
212 elmex 1.1
213     </small>
214    
215 root 1.48 </td></tr>
216 elmex 1.1 EOF
217 elmex 1.5 }
218 elmex 1.1
219 root 1.69 my @irc;
220    
221 root 1.48 print "<tr><td><tt class='icon'>FILE</tt></td><td class='rr'><a href='http://dist.schmorp.de/$name/'>File Releases</a></td></tr>\n"
222 elmex 1.1 if grep /dist/, @args;
223 root 1.48 print "<tr><td><tt class='icon'>CPAN</tt></td><td class='rr'><a href='http://www.cpan.org/modules/by-authors/Marc_Lehmann/'>File Releases (CPAN)</a></td></tr>\n"
224 elmex 1.5 if grep /cpan$/, @args;
225 root 1.48 print "<tr><td><tt class='icon'>CPAN</tt></td><td class='rr'><a href='http://www.cpan.org/modules/by-authors/id/E/EL/ELMEX/'>File Releases (CPAN)</a></td></tr>\n"
226 elmex 1.5 if grep /cpan-elmex/, @args;
227 elmex 1.1 for (@args) {
228 root 1.69 if (/list\((.*?)\)/) {
229 root 1.48 print "<tr><td><tt class='icon'>LIST</tt></td><td class='rr'><a href='http://lists.schmorp.de/mailman/listinfo/" . ($1 || $name) . "'>Mailing List '" . ($1 || $name) . "'</a></td></tr>\n";
230 root 1.47 }
231 root 1.69 if (/irc\((.*?)\)/) {
232     push @irc, $1;
233     }
234     }
235     push @irc, "freenode" unless @irc;
236     for (@irc) {
237     my ($server, $channel, $url, $comment) = @{ $IRC{$_} or die };
238     print "<tr><td><tt class='icon'>IRC</tt></td><td class='rr'>Server <a href='$url'><tt><b>$server</b></tt>, channel <tt>$channel</tt></a>$comment <b>(say hi and <i>wait a few minutes or hours</i>)</b></td></tr>\n";
239 elmex 1.1 }
240 root 1.69
241 root 1.48 print "</table>";
242 elmex 1.1
243 elmex 1.4 if (my @files = grep $_, map /(cvs-co|cvs-pod|git-pod|git-co)\((\S+)\)/ && [$1, $2], @args) {
244 root 1.48 print "<h2>Additional Documents</h2><table class='resources'>";
245 elmex 1.1
246     for (@files) {
247     my ($type, $arg) = @$_;
248    
249     if ($type eq "cvs-co") {
250 root 1.48 print "<tr><td><tt class='icon'>FILE</tt></td><td class='rr'><a href='http://cvs.schmorp.de/$name/$arg'>$arg</a></td></tr>";
251 elmex 1.4
252 elmex 1.1 } elsif ($type eq "cvs-pod") {
253     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
254     $desc ||= "<b>Main Manual Page</b>";
255 root 1.48 print "<tr><td><tt class='icon'>POD</tt></td><td class='rr'><a href='http://pod.tst.eu/http://cvs.schmorp.de/$name/$file'>$desc</a></td></tr>";
256 elmex 1.4
257 elmex 1.3 } elsif ($type eq 'git-co') {
258 root 1.48 print "<tr><td><tt class='icon'>FILE</tt></td><td class='rr'><a href='http://git.ta-sa.org/$name/$arg'>$arg</a></td>";
259 elmex 1.5
260 elmex 1.4 } elsif ($type eq "git-pod") {
261     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
262     $desc ||= "<b>Main Manual Page</b>";
263 root 1.48 print "<tr><td><tt class='icon'>POD</tt></td><td class='rr'><a href='http://pod.tst.eu/http://git.ta-sa.org/$name/$file'>$desc</a></td></tr>";
264 elmex 1.4
265 elmex 1.1 }
266     }
267    
268 root 1.48 print "</table>";
269 elmex 1.1 }
270    
271     ftr;
272     }
273    
274     open STDOUT, ">software.schmorp.de/index.html";
275    
276 root 1.48 hdr "Project List", "bg-bluete";
277 elmex 1.1
278     print <<EOF;
279    
280 root 1.48 <h2>About</h2>
281     <p class='blurb'>This page briefly documents the Schmorpforge Ta-Sa Software Repository and
282 elmex 1.1 lists all projects available here.</p>
283    
284 root 1.48 <table class='resources'>
285 root 1.50 <tr><td><tt class='icon'>CVS</tt></td><td class='rr'>All CVS modules can be browsed <a href="http://cvs.schmorp.de/">here</a></td></tr>
286     <tr><td><tt class='icon'>GIT</tt></td><td class='rr'>All GIT repositories can be found <a href="http://git.ta-sa.org/">here</a></td></tr>
287     <tr><td><tt class='icon'>FILE</tt></td><td class='rr'>All file releases can be found <a href="http://dist.schmorp.de/">here</a> or on CPAN (for Perl modules)</td></tr>
288     <tr><td><tt class='icon'>LIST</tt></td><td class='rr'>All mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a></td></tr>
289     <!--<tr><td><tt class='icon'>WIKI</tt></td><td class='rr'>The Wiki can be found <a href="http://wiki.schmorp.de/">here</a></td></tr>-->
290 root 1.69 <tr><td><tt class='icon'>IRC</tt></td><td class='rr'>Server <a href='http://webchat.freenode.net/?randomnick=1&amp;channels=schmorp&amp;prompt=1'><tt><b>irc.freenode.net</b></tt>, channel <tt>#schmorp</tt></a>, users <tt>schmorp</tt> and <tt>elmex</tt> <b>(say hi and <i>wait a few minutes or hours</i>)</b><br/>Other project-specific IRC servers are listed on their respective project page.</td></tr>
291 root 1.50 EOF
292    
293     print <<EOF;
294 root 1.48 </table>
295    
296     <h2>Project List</h2>
297     <table class='overview'>
298 elmex 1.1 EOF
299    
300     print $index{$_} for sort { (lc $a) cmp (lc $b) } keys %index;
301    
302     print "</table>";
303     ftr;
304    
305     __DATA__
306 root 1.71 rxvt-unicode dist list(rxvt-unicode) cvs-pod(doc/rxvt.1.pod,) cvs-pod(doc/rxvt.7.pod,FAQ) cvs-pod(src/urxvt.pm,Perl) cvs-co(Changes) irc(rxvt) irc(rxvtdev)
307 elmex 1.1 rxvt-unicode is a clone of the well known terminal emulator rxvt.
308    
309     <p>If you have a problem, please have a look at the
310     <a href="http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.html">FAQ</a>
311     <em>first</em>.</p>
312    
313     Its main features (many of them unique) over rxvt are:
314    
315     <ul>
316     <li>Stores text in Unicode (either UCS-2 or UCS-4).</li>
317     <li>Uses locale-correct input, output and width: as long as your system supports the locale,
318     rxvt-unicode will display correctly.</li>
319     <li>Daemon mode: one daemon can open multiple windows on multiple displays, which
320     improves memory usage and startup time considerably.</li>
321     <li>Embedded perl, for endless customization and improvement opportunities, such as:
322     <ul>
323     <li>Tabbed terminal support.</li>
324     <li>Regex-driven customisable selection that can properly select shell arguments, urls etc.</li>
325     <li>Selection-transformation and option popup menus.</li>
326     <li>Automatically transforming the selection once made.</li>
327     <li>Incremental scrollback buffer search.</li>
328     <li>Automatic URL-underlining and launching.</li>
329     <li>Remote pastebin, digital clock, block graphics to ascii filter and
330     whatever you like to implement for yourself.</li>
331     </ul>
332     </li>
333     <li>Crash-free. At least I try, but rxvt-unicode certainly crashes much less often than
334     rxvt and its many clones, and reproducible bugs get fixed immediately.</li>
335     <li>Completely flicker-free.</li>
336     <li>Re-wraps long lines instead of splitting or cutting them on resizes.</li>
337     <li>Full combining character support (unlike xterm :).</li>
338     <li>Multiple fonts supported at the same time: No need to choose between
339     nice japanese and ugly latin, or no japanese and nice latin characters :).</li>
340     <li>Supports Xft and core fonts in any combination.</li>
341     <li>Can easily be embedded into other applications.</li>
342     <li>All documentation accessible through manpages.</li>
343     <li>Locale-independent XIM support.</li>
344     <li>Many small improvements, such as improved and corrected terminfo, improved secondary screen modes,
345     italic and bold font support, tinting and shading.</li>
346     <li>Encapsulation of privileged operations in a separate process (improves security).</li>
347     <li>Optimised for local <i>and</i> remote connections.</li>
348     </ul>
349    
350     <br />
351     And its main <em>missing</em> features (which users request but are not (yet?) implemented) are:
352    
353     <ul>
354     <li>Complex script support, such as arabic or tibetian - more info is needed. (use mlterm)</li>
355     <li>Right-to-Left rendering - more info is needed. (use mlterm)</li>
356     <li>IIIMF (Intranet/Internet Input Method Framework) support. (use scim)</li>
357     </ul>
358    
359     <br />
360    
361     There is an IRC channel for discussion on <a
362     href='irc://irc.freenode.net/rxvt-unicode'><tt>irc.freenode.net
363     #rxvt-unicode</tt></a>.
364    
365 root 1.47 libptytty dist list(rxvt-unicode) cvs-pod(doc/libptytty.3.pod) cvs-co(Changes)
366 elmex 1.1 libptytty is an offspring of rxvt-unicode that handles pty/tty/utmp/wtmp/lastlog handling
367     in mostly OS-independent ways, so it's less of a hassle for you :)
368    
369 root 1.36 gtkbfc cvs-pod(README)
370 elmex 1.1 Gtk+ bash file chooser replacement.
371    
372     <b>gtkbfc</b> is a hack that replaces the dreaded, slow and hard-to-use GTK+
373     file chooser by a rxvt-unicode window with a little script that lets you use
374     readline tab-completion to enter filenames.
375    
376     Again, its a dire hack and will not work with all programs. It does work
377     for gimp, firefox, gedit at least, though.
378    
379 root 1.69 Async-Interrupt cpan cvs-pod(Interrupt.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
380 root 1.42 Allow C/XS libraries to interrupt perl asynchronously.
381    
382     This is a module implementing a rarely-needed, very advanced technique
383     to interrupt a running perl interpreter from another thread, or similar,
384     context, at very low overhead.
385    
386 elmex 1.1 CV cpan cvs-pod(bin/cv,) cvs-co(Changes)
387     Gtk2::CV is a perl module that implements an image viewer.
388    
389     It comes with its own demo app, named <tt>cv</tt>, which is loosely
390     modeled after the classic <tt>xv</tt>, although it displays images much
391     faster than the great original. Stable releases are also found on CPAN.
392    
393     kgsueme cpan list(kgsueme) cvs-co(Changes)
394     This perl module is about reverse engineering the
395     <a href="http://cvs.schmorp.de/kgsueme/doc/protocol.html">protocol</a>
396     (<a href="http://cvs.schmorp.de/kgsueme/doc/protocol.xml">xml source</a>)
397     of the popular <a href="http://kgs.kiseido.com">Kiseido Go Server</a>.
398    
399     It features a sample Gtk+2 client (<a
400     href="http://kgsueme.schmorp.de/screenshot.jpg">screenshot</a>), a gtp
401     and a igs interface. It mostly focuses on documenting the protocol and
402     delivering a stable reference implementation which makes it easy to write
403     your own clients, bots and so on. It also contains Gtk2 modules for
404     KGS-independent rendering of beautiful Go boards. For a introduction to
405     the game of go, look <a href="http://playgo.to/interactive/">here</a>.
406    
407     Net-Knuddels cvs-pod(Net/Knuddels.pm,)
408     This perl module provides an API for group communications using the
409     <a href="http://www.knuddels.de/">www.knuddels.de</a> protocol. It is outdated
410     and only provided as reference.
411    
412     This module implements the knuddels.de chat protocol. Since it was created
413     the protocol changed in unknown ways, so this module no longer works. It is
414     provided as reference, though, in case the protocol didn't change much,
415     so one can learn about the protocol.
416     It could be used to write Knuddels clients, bots and even servers
417     (although the latter doesn't make much sense, the protocol is rather
418     ugly. If you want to implement your own group communication server, use
419     IRC instead).
420    
421 root 1.69 AnyEvent-IRC cpan-elmex git-pod(lib/AnyEvent/IRC.pm,) git-co(Changes) git-co(samples/anyeventirccl) git-co(samples/anyeventirc) list(anyevent) irc(anyevent)
422 elmex 1.1 This module provides an alternative to the Net-IRC and Net-IRC2
423 elmex 1.35 modules. Its design rationale is offering a 100% non-blocking
424 elmex 1.1 callback-based interface, RFC-compliant parsing and a lightweight
425     approach to modularity and reusability.
426    
427 root 1.37 Guard cpan cvs-pod(Guard.pm,) cvs-co(Changes)
428     This small module implements scope and object guards, that is, code blocks
429     that are executed when a scope is being exited (or an object is destroyed).
430    
431     Much effort was invested into these guards behaving "sensibly" in the
432     presence of thrown exceptions, errors and other adverse conditions, as
433     well as into good performance.
434    
435 root 1.67 common-sense cpan cvs-pod(sense.pm,) cvs-co(Changes)
436 root 1.66 This module implements some sane defaults for Perl programs, as defined
437     by two typical (or not so typical - use your common sense) specimens of
438     Perl coders.
439    
440 elmex 1.1 Net-IRC-Server cvs-pod(Net/IRC/Server.pm,)
441     This module provides a simple API for handling the IRC Protocol
442     aiming at implementing lightweight IRC-Servers.
443    
444     PApp-SQL cpan cvs-pod(SQL.pm,)
445     Absolutely easy yet fast and powerful SQL access.
446    
447     This module wraps the DBI prepare/bind/execute calls into a single "sql_exec" call,
448     complete with statement caching, so you get the efficiency of prepare, the safety
449     of using placeholders and the speed of bound result values in a simple call.
450    
451     Example:
452    
453     <pre>
454     my $st = sql_exec \my ($id, $name),
455     "select id, name from db where name like %",
456     "pfx%";
457     while ($st->fetch) {
458     print "$id $name\n";
459     }
460     </pre>
461    
462     libcoro cvs-co(README) cvs-co(coro.h)
463     This C-library implements coroutines (cooperative multitasking) in a
464     portable fashion.
465    
466     As long as your system implements the <tt>ucontext</tt> (Unix) or the
467     older <tt>sigaltstack</tt> interfaces it should work out of the box, with
468     minimal configuration (it consists of only a single <tt>.h</tt> and a
469     single <tt>.c</tt> file). It is known to run on a wide variety of unix
470     systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use
471     any assembly language and is architecture-independent.
472    
473 root 1.13 deliantra/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero)
474 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game server.
475    
476     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
477    
478 root 1.13 deliantra/maps cvs-co(Changes) cvs-co(COPYING.Affero)
479 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game maps.
480    
481     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
482    
483 root 1.13 deliantra/arch cvs-co(Changes) cvs-co(COPYING.Affero)
484 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game resources.
485    
486     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
487    
488 root 1.13 deliantra/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes)
489 elmex 1.1 A modern, fullscreen client for <a href="http://www.deliantra.net/">Deliantra</a>, written using Perl
490     and leveraging only OpenGL for display and thus being easily portable.
491     See its <a href="http://www.deliantra.net/client.html">homepage</a>.
492    
493     To install it, you need <a href="http://www.libsdl.org">SDL</a>, <a href="http://www.libsdl.org/projects/SDL_mixer/">SDL_mixer</a>,
494     <a href="http://www.libsdl.org/projects/SDL_image/">SDL_image</a>, <a href="http://www.pango.org">PanGo</a> (with freetype2 and
495     cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and
496 root 1.13 <a href="http://software.schmorp.de/pkg/deliantra/Deliantra.html">Deliantra</a> perl modules.
497 elmex 1.1
498 root 1.13 deliantra/Deliantra
499 elmex 1.1 Perl module family for the <a href="http://www.deliantra.net/">Deliantra</a> game.
500    
501     They can be used to read/write/cache archetypes, image packs and map files.
502     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
503    
504 elmex 1.35 deliantra/gde cvs-pod(bin/gde,)
505 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> editor, written in Perl + Gtk2.
506    
507     The editor for the game Deliantra, written in Perl.
508     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
509    
510 root 1.13 deliantra
511 elmex 1.1 <a href="http://www.deliantra.net/">Deliantra</a> server, archetypes, maps,
512     editor, client and support modules distribution.
513    
514     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
515    
516     cfmaps
517     This is a collection of scripts that I use to create the <a
518     href="http://www.deliantra.net/">Deliantra</a> maps at <a
519     href="http://maps.deliantra.net/">maps.deliantra.net</a>.
520    
521     They are not documented and somewhat specialised, but the scripts might
522     be of some use.
523    
524     Faster cpan cvs-pod(Faster.pm,)
525     A perl module that makes perl run, well, faster, using a very primitive just in time compiler.
526    
527     As the name implies, using this module makes your perl program run
528     faster. Actually, much slower initially, as it compiles every function
529     to C and later to a shared object, but then you can expect a performance
530     increase by 10-50%, depending on what your program does.
531    
532 root 1.34 liblzf cvs-co(README) cvs-co(lzf.h) dist
533 elmex 1.1 LibLZF is a very small data compression library.
534    
535     It consists of only two .c and two .h files and is very easy to
536     incorporate into your own programs. The compression algorithm is very,
537     very fast, yet still written in portable C. More info and the latest
538     release can be found at the <a href="http://liblzf.plan9.de">LibLZF
539     Homepage</a>.
540    
541     root-tail cvs-co(README) cvs-co(Changes)
542     Full-featured program to print text directly to the X11 root window.
543    
544     More info, screenshots, documentation and current releases can be found
545     at the <a href="http://root-tail.plan9.de">root-tail homepage</a>.
546    
547     xcb cvs-co(README) cvs-co(Changes)
548     A fork of the unmaintained xcb (x cut buffers) program implementing better i18n.
549    
550     lmainit cvs-co(NEWS)
551     A sysvinit replacement that can even be configured to be sysvinit-compliant.
552    
553 root 1.54 See <a href="http://home.schmorp.de/marc/lmainit.html">its homepage</a> for more info.
554 elmex 1.1
555     Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes)
556     Perl module implementing forward error correction using Vandermonde matrices
557    
558 root 1.69 AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-pod(lib/AnyEvent/Intro.pod,Introduction/Tutorial) cvs-pod(lib/AE.pm,AE) cvs-co(Changes) cvs-pod(lib/AnyEvent/Util.pm,AnyEvent::Util) cvs-pod(lib/AnyEvent/Handle.pm,AnyEvent::Handle) cvs-pod(lib/AnyEvent/Socket.pm,AnyEvent::Socket) cvs-pod(lib/AnyEvent/DNS.pm,AnyEvent::DNS) cvs-pod(lib/AnyEvent/Impl/EV.pm,AnyEvent::Impl::EV) cvs-pod(lib/AnyEvent/Impl/Event.pm,AnyEvent::Impl::Event) cvs-pod(lib/AnyEvent/Impl/Glib.pm,AnyEvent::Impl::Glib) cvs-pod(lib/AnyEvent/Impl/Tk.pm,AnyEvent::Impl::Tk) cvs-pod(lib/AnyEvent/Impl/Perl.pm,AnyEvent::Impl::Perl) cvs-pod(lib/AnyEvent/Impl/Qt.pm,AnyEvent::Impl::Qt) cvs-pod(lib/AnyEvent/Impl/EventLib.pm,AnyEvent::Impl::EventLib) cvs-pod(lib/AnyEvent/Impl/Irssi.pm,AnyEvent::Impl::Irssi) cvs-pod(lib/AnyEvent/Impl/IOAsync.pm,AnyEvent::Impl::IOAsync) cvs-pod(lib/AnyEvent/Impl/POE.pm,AnyEvent::Impl::POE) list(anyevent) irc(anyevent)
559 elmex 1.1 This module offers a simple API for I/O, timer, signal, child process
560     and completion events, independent of a specific event loop.
561    
562 root 1.39 <p>This module allows module authors to use those events internally
563     without forcing users of the module to use a specific event loop, without
564     adding noticable overhead. Currently supported event loops are EV, Event,
565 root 1.52 Glib/Gtk2, Tk, Qt, Event::Lib, Irssi, IO::Async and POE (and thus also
566     WxWidgets and Prima). It also comes with a very fast (see benchmarks in
567     the main manual page) Pure Perl event loop and doesn't rely on XS, which
568     ensures that your program will always run even when no C-based event loop
569     is available.</p>
570 elmex 1.1
571 root 1.26 <p>In addition to the event core (which might be all you need), AnyEvent
572 root 1.25 comes with an optional, fully asynchronous, pure-perl DNS resolver
573     library supporting UDP, TCP and EDNS0, with many utility functions to
574     "just resolve" stuff without having to instantiate even a resolver object
575 root 1.26 (and including an equivalent of C<getaddrinfo>).</p>
576 root 1.25
577 root 1.26 <p>The AnyEvent::Socket offers utility functions to make handling TCP
578 root 1.25 connections (100% non-blocking, including DNS resolution, with both IPv4
579     and IPv6) and addresses as easy as possible, to the point of making IPv6
580 root 1.26 completely transparent.</p>
581 root 1.25
582 root 1.26 <p>Lastly, AnyEvent::Handle offers a powerful framework for asynchronous and
583 root 1.25 buffered protocol handling. You can push multiple read event handlers
584     to parse your protocol and start TLS/SSL negotiation transparently (and
585 root 1.26 fully non-blocking) at any time, in both server and client mode.</p>
586 root 1.25
587 root 1.69 AnyEvent-FastPing cpan cvs-pod(FastPing.pm,) list(anyevent) irc(anyevent)
588 elmex 1.1 This module implements a very fast and relatively flexible
589     ping (ping as in icmp echo request).
590    
591     This module allows you to quickly send ipv4 and ipv6 pings at a defined
592     rate to whole address ranges. It is fully event-driven (doesn't block
593     the perl interpreter) and can easily generate hundreds of thousands of
594     pings per second. Target specification is done by specifying one or
595     more address ranges, to which pings will be distributed according to a
596     least-load principle.
597    
598     A command line utility (<tt>fastping</tt>) is included.
599    
600 root 1.69 AnyEvent-HTTP cpan cvs-pod(HTTP.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
601 root 1.31 A simple and plain event based http and https client.
602    
603     This module implements a simple, stateless and non-blocking HTTP
604     client. It supports GET, POST and other request methods, cookies and more,
605     all on a very low level. It can follow redirects supports proxies and
606     automatically limits the number of connections to the values specified in
607     the RFC.
608    
609     It should generally be a "good client" that is enough for most HTTP
610     tasks. Simple tasks should be simple, but complex tasks should still be
611     possible as the user retains control over request and response headers.
612    
613     The caller is responsible for authentication management, cookies (if
614     the simplistic implementation in this module doesn't suffice), referer
615     and other high-level protocol details for which this module offers only
616     limited support.
617    
618 root 1.69 AnyEvent-MP cpan cvs-pod(MP.pm,) cvs-pod(MP/Intro.pod,Introduction/Tutorial) cvs-co(Changes) list(anyevent) irc(anyevent)
619 elmex 1.59 This Perl module (-family) implements a simple message passing framework for Perl.
620    
621     Despite its simplicity, you can securely message other processes running
622     on the same or other hosts.
623    
624     For an introduction to this module family, see the Intro manual page.
625    
626 root 1.69 Coro-MP cpan cvs-pod(MP.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
627 root 1.62 This Perl module extends the AnyEvent::MP API with a thread-like/erlang-style API.
628    
629     This module implements a thread-like API to AnyEvent::MP that is closer
630     to Erlang than the event-based AnyEvent::MP API. It integrates well into
631     AnyEvent::MP.
632    
633     See the AnyEvent::MP module and tutorial for info about the concepts used
634     in AnyEvent::MP.
635    
636 root 1.69 AnyEvent-DBI cpan cvs-pod(DBI.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
637 root 1.31 A relatively simple wrapper around DBI to make asynchronous
638     SQL requests.
639    
640     This module implements asynchronous DBI access my forking or executing
641     separate "DBI-Server" processes and sending them requests.
642    
643     It means that you can run DBI requests in parallel to other tasks.
644    
645 root 1.69 AnyEvent-HTTPD cpan-elmex git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes) list(anyevent) irc(anyevent)
646 root 1.31 A simple and plain event based http web application server Perl module.
647    
648     This is a very basic HTTP server that allows the user/programmer to install
649     hooks for URL paths to generate the output. It uses AnyEvent to be easily
650     embeddable into other applications. The main objective was to make it
651     easier to make simple HTTP frontends in Perl for Perl programs and Perl modules.
652    
653 root 1.69 AnyEvent-Feed cpan-elmex git-pod(lib/AnyEvent/Feed.pm,) git-co(Changes) list(anyevent) irc(anyevent)
654 elmex 1.58 A RSS/Atom Feed aggregator.
655    
656     This module uses AnyEvent::HTTP and XML::Feed to fetch and parse RSS and Atom
657     feeds. It provides aggregation (detecting of new entries) to provide an easy
658     interface for simple feed readers.
659    
660 root 1.69 AnyEvent-Twitter cpan-elmex git-pod(lib/AnyEvent/Twitter.pm,) git-co(Changes) list(anyevent) irc(anyevent)
661 elmex 1.58 Implementation of the Twitter API for AnyEvent.
662    
663     Provides a simple non-blocking API to access information (aka tweets) provided
664     by <a href="http://www.twitter.com">Twitter</a>.
665    
666 root 1.69 AnyEvent-IGS cpan-elmex git-pod(lib/AnyEvent/IGS.pm,) git-co(Changes) list(anyevent) irc(anyevent)
667 root 1.31 A Perl module that interfaces to the International Go Server.
668    
669 root 1.70 This module is an AnyEvent-based interface to the International Go Server
670 root 1.31 protocol.
671    
672 root 1.69 AnyEvent-EditText cpan-elmex git-pod(lib/AnyEvent/EditText.pm,) git-co(Changes) list(anyevent) irc(anyevent)
673 root 1.44 A Perl module which allows editing any text via an editor in a separate process.
674 root 1.31
675     A utility Perl module that will start a terminal/editor for you and will
676     wait non-blocking for you to finish editing that file. Very useful to embed
677     content edititing in event based programs that have a AnyEvent compatible
678     event loop.
679    
680 root 1.41 Array-Heap cpan cvs-pod(Heap.pm,) cvs-co(Changes)
681     A Perl module that implements C++ STL-like binary heap operations.
682    
683 elmex 1.1 Audio-Play-MPG123 cpan cvs-pod(MPG123.pm,) cvs-co(Changes)
684     A Perl module implementing an interface to mpg123.
685    
686 elmex 1.64 BK git-pod(lib/BK.pm,) git-pod(lib/BK/News.pod,News) git-co(Changes) git-pod(lib/BK/Client.pm,BK::Client) git-pod(lib/BK/Backend.pm,BK::Backend)
687     Bummskraut is a distributed chat/messaging client framework written in Perl
688     using <a href="/pkg/AnyEvent-MP.html">AnyEvent::MP</a>.
689    
690     For more documentation please consult the main manpage (see below). If you
691     want to check on the latest news proceed to the news or changelog (see also
692     below).
693    
694 elmex 1.1 Compress-LZV1 cpan cvs-pod(LZV1.pm,) cvs-co(Changes)
695     A Perl module implementing the LZV1 compression algorithm. See
696     <tt>Compress::LZF</tt> for a better algorithm and module.
697    
698 root 1.53 Compress-LZF cpan cvs-pod(LZF.pm,) cvs-co(Changes)
699     A Perl module implementing the LZF compression algorithm, and simple
700     to use data structure serialising.
701    
702 elmex 1.1 Convert-CD cvs-pod(lib/Convert/CD.pm,) cvs-pod(bin/cvtiso,cvtiso) cvs-co(doc/) cvs-co(Changes)
703     Unfinished Perl project implementing CD image formats. Extracting ISO images
704     already works.
705    
706     Convert-Scalar cpan cvs-pod(Scalar.pm,) cvs-co(Changes)
707     Perl module to convert between different representations of Perl scalars.
708    
709     Convert-UUlib cpan cvs-pod(UUlib.pm,) cvs-co(Changes)
710     Perl interface to the uulib library (a.k.a. uudeview/uuenview), which
711     allows easy decoding of multipart mime, uuencode and a whole lot of
712     differently encoded messages. You basically throw files at it, and
713     it extracts the files in them. This module is used by the popular <a
714     href="www.amavis.org">amavis virus scanner</a>.
715    
716 root 1.69 Coro cpan cvs-co(Changes) cvs-pod(Coro.pm,) cvs-pod(Coro/AIO.pm,Coro::AIO) cvs-pod(Coro/AnyEvent.pm,Coro::AnyEvent) cvs-pod(Coro/BDB.pm,Coro::BDB) cvs-pod(Coro/Channel.pm,Coro::Channel) cvs-pod(Coro/Debug.pm,Coro::Debug) cvs-pod(Coro/EV.pm,Coro::EV) cvs-pod(Coro/Event.pm,Coro::Event) cvs-pod(Coro/Handle.pm,Coro::Handle) cvs-pod(Coro/LWP.pm,Coro::LWP) cvs-pod(Coro/MakeMaker.pm,Coro::MakeMaker) cvs-pod(Coro/RWLock.pm,Coro::RWLock) cvs-pod(Coro/Select.pm,Coro::Select) cvs-pod(Coro/Semaphore.pm,Coro::Semaphore) cvs-pod(Coro/SemaphoreSet.pm,Coro::SemaphoreSet) cvs-pod(Coro/Signal.pm,Coro::Signal) cvs-pod(Coro/Socket.pm,Coro::Socket) cvs-pod(Coro/Specific.pm,Coro::Specific) cvs-pod(Coro/State.pm,Coro::State) cvs-pod(Coro/Storable.pm,Coro::Storable) cvs-pod(Coro/Timer.pm,Coro::Timer) cvs-pod(Coro/Util.pm,Coro::Util) list(anyevent) irc(anyevent)
717 elmex 1.1 A large Perl module family that implements cooperative multitasking in
718     Perl. It supports filehandle and event abstraction and also implements
719     continuations as well as the necessary directives to implement a slightly
720     limited call/cc in Perl.
721    
722 root 1.38 Coro-Mysql cpan cvs-co(Changes) cvs-pod(Mysql.pm,)
723     Lets other threads run while doing mysql requests via DBD::mysql.
724    
725     This perl module patches libmysqlclient/DBD::mysql at runtime to allow
726     multiple Coro-based threads to make database accesses concurrently,
727     instead of blocking the whole process.
728    
729 elmex 1.1 Crypt-Twofish2 cpan cvs-pod(Twofish2.pm,) cvs-co(Changes)
730     A Perl module implementing the twofish encryption algorithm in Perl. It has
731     mostly been superceded by the Crypt::Twofish module. However, it supports
732     an easy and fast CBC mode natively.
733    
734     Digest-Hashcash cpan cvs-pod(Hashcash.pm,) cvs-co(Changes)
735     Perl module to generate and parse <a href="http://www.hashcash.org">hashcashes</a>.
736     Follow the link to learn more. This module is currently faster than
737     the hashcash reference library.
738    
739 root 1.47 EV cpan cvs-pod(EV.pm,) cvs-pod(../libev/ev.pod,libev-documentation) cvs-pod(EV/MakeMaker.pm) cvs-co(Changes) list(libev)
740 root 1.46 A thin wrapper around <a href="/pkg/libev.html">libev</a>, a
741     high-performance event loop. Intended as a faster and less buggy
742     replacement for the Event perl module. Efficiently supports very high
743     number of timers, scalable operating system APIs such as epoll, kqueue,
744     solaris's ports, inotify, eventfd, signalfd, child/pid watchers and much
745     more.
746 elmex 1.1
747     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
748     list</a> for discussion and support is now available.
749    
750 root 1.47 EV-ADNS cpan cvs-pod(ADNS.pm,) cvs-co(Changes) list(libev)
751 elmex 1.1 An asynchronous stub resolver that integrates efficiently into
752     the EV event loop. Uses adns/libadns as backend.
753    
754 root 1.47 EV-Loop-Async cpan cvs-pod(Async.pm,) cvs-co(Changes) list(libev)
755 root 1.43 Small module that runs an EV event loop in another thread
756     and uses an Async-Interrupt object to signal new events
757     to perl.
758    
759 root 1.47 Net-SNMP-EV cpan cvs-pod(EV.pm,) cvs-co(Changes) list(libev)
760 elmex 1.1 An adaptor that integrates the Net-SNMP Perl module into the EV event loop.
761     Loading it suffices to make background requests in EV programs.
762    
763 root 1.47 libev cvs-co(README) cvs-pod(ev.pod) dist list(libev)
764 elmex 1.1 A full-featured and high-performance (<a
765     href="http://libev.schmorp.de/bench.html">see benchmark</a>) event loop that
766     is loosely modelled after libevent, but without its limitations and bugs. It is
767     used, among others, in the <a href="http://savannah.gnu.org/projects/gvpe">GNU Virtual Private Ethernet</a> and
768     <a href="http://software.schmorp.de/pkg/rxvt-unicode.html">rxvt-unicode</a> packages, and in
769     the Deliantra MORPG Server and Client.
770    
771 root 1.46 Features include child/pid watchers, periodic timers based on wallclock
772     (absolute) time (in addition to timers using relative timeouts), as well
773     as epoll/kqueue/event ports/inotify/eventfd/signalfd support, fast timer
774     management, time jump detection and correction, and ease-of-use.
775 elmex 1.1 <p />
776 root 1.46
777 elmex 1.1 It can be used as a libevent replacement using its emulation API or
778     directly embedded into your programs without the need for complex
779     configuration support. A full-featured and well-documented
780     <a href="EV.html">perl interface</a> is also available.
781     <p />
782     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
783     list</a> for discussion and support is now available.
784    
785 root 1.47 libeio dist cvs-pod(eio.pod,) cvs-co(eio.h) cvs-co(demo.c) cvs-co(Changes) list(libev)
786 root 1.17 Event-based fully asynchronous I/O library for C (used by IO::AIO).
787 root 1.20 Currently in BETA!
788 root 1.17
789 root 1.18 <p>Libeio is a full-featured asynchronous I/O library
790 root 1.17 for C, modelled in similar style and spirit as <a
791     href="http://software.schmorp.de/pkg/libev.html">libev</a>. Features
792     include: asynchronous read, write, open, close, stat, unlink, fdatasync,
793     mknod, readdir etc. (basically the full POSIX API). sendfile (native on
794 root 1.20 solaris, linux, hp-ux, freebsd, emulated everywehere else), readahead
795 root 1.17 (emulated where not available).</p>
796    
797     <p>It is fully event-library agnostic and can easily be integrated into any
798     event-library (or used standalone, even in polling mode). It is very
799     portable and relies only on POSIX threads.</p>
800    
801 root 1.21 <p>Its code, documentation, integration and portability quality is
802     currently below that of libev, but should soon be ready for use in
803     production environments.</p>
804    
805 elmex 1.1 libspf cvs-co(README)
806     Libspf is a C library that implements the <a
807     href="http://en.wikipedia.org/wiki/Sender_Policy_Framework"> Sender
808     Policy Framework</a>. It allows software to identify and reject forged
809     envelope-from addresses, a typical nuisance in e-mail spam. SPF is
810     defined in Experimental RFC 4408.
811    
812     This is not the original home of libspf, but its author (apparently)
813     has vanished for a few years now, and this place took over as a central
814     place to collect patches and possibly make releases.
815     <p />
816     James Couzens, if you read this and want to take over, feel free to
817     contact <a href="mailto:libspf@schmorp.de">me</a>, I'd be thrilled :)
818    
819     File-Rdiff cpan cvs-pod(Rdiff.pm,) cvs-co(Changes)
820     A Perl module that generates remote signatures and patches files using
821     librsync: basically your interface to librsync.
822    
823 root 1.47 EV-Glib cpan cvs-pod(Glib.pm,) cvs-co(Changes) list(libev)
824 elmex 1.1 This perl module embeds the default Glib mainloop into the EV event loop. This makes it
825     possible to use callbacks or modules using the Glib module (e.g. Gtk2 programs) within EV programs. Just
826     loading it suffices. See the <a href="/pkg/Glib-EV.html">Glib::EV</a> module for the reverse approach.
827    
828 root 1.47 Glib-EV cpan cvs-pod(EV.pm,) cvs-co(Changes) list(libev)
829 elmex 1.1 This perl module patches the default libglib main loop context to use the EV module. This makes
830     it possible to use callbacks or modules using the EV module within Glib and Gtk2 programs. Just
831     loading it suffices. See the <a href="/pkg/EV-Glib.html">EV::Glib</a> module for the reverse approach.
832    
833 root 1.47 Glib-Event cpan cvs-pod(Event.pm,) cvs-co(Changes) list(libev)
834 elmex 1.1 This perl module patches the default libglib main loop context to use the Event module. This makes
835     it possible to use callbacks or modules using the Event module within Glib and Gtk2 programs. Just
836     loading it suffices.
837    
838     GPS
839     Undocumented, unreleased and unfinished-but-working interface to some GPS
840     devices in Perl.
841    
842     Linux-DVB cpan cvs-pod(DVB.pm,) cvs-co(Changes)
843     A perl module that implements a very direct interface to the Linux DVB
844     API. Also contains utility functions to decode SI data.
845    
846     Devel-FindRef cpan cvs-pod(FindRef.pm,) cvs-co(Changes)
847     A Perl module that tries to track down references to perl values. Can
848     be a great aid in debugging leak problems by showing where a value
849     is still being referenced.
850    
851     BDB cpan cvs-pod(BDB.pm,) cvs-co(Changes)
852     A Perl module implementing an interface to BerkeleyDB versions 4.4 and later.
853     Unlike the BerkeleyDB and DB_File modules, this module has a much more
854     C-like interface exposing all the features of the underlying library
855     and also executes all database changes asynchronously using a thread pool.
856    
857     IO-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
858     A Perl module that implements asynchronous I/O using pthreads. Apart
859     from AIO reading and writing, this module also allows asynchronous
860     <tt>stat</tt>, <tt>open</tt>, <tt>unlink</tt> (and more) calls,
861     which often are a substantial blocking problem. See also its (outdated)
862     brother <tt>Linux-AIO</tt>.
863    
864     JSON-XS cpan cvs-pod(XS.pm,) cvs-co(Changes)
865     JSON::XS implements JSON (http://www.json.org) for Perl. Unlike other
866     modules, its primary goal is to encode to syntactically correct JSON and
867     flag invalid JSON while decoding. It ensures round-trip integrity of
868     datatypes while being intuitive to use. Currently being the fastest of the
869     JSON encoders available for Perl, it supports a variety of format options,
870     such as single-line, ASCII-only or pretty-printed and can be tuned for
871     speed or memory usage. It comes with a wealth of documentation describing
872     usage and implementation details.
873    
874 root 1.31 Games-Go-SimpleBoard cpan cvs-pod(SimpleBoard.pm,) cvs-co(Changes)
875     A Perl module representing a go board.
876    
877     This Perl module represents a Go game. It can check for valid moves,
878     capture stones, stores move history and can represent a variety of
879     additional annotations (circles, labels, grayed-out stones etc.).
880    
881 root 1.68 Games-Sokoban cpan cvs-pod(Sokoban.pm,) cvs-co(Changes)
882     A perl module to load/transform/save sokoban levels in various formats.
883    
884     Supports xsb (text), rle, sokevo and a small "binpack" format for input and
885     output and can normalise levels as well as calculate unique IDs.
886    
887 root 1.31 Gtk2-GoBoard cpan cvs-pod(GoBoard.pm,) cvs-co(Changes)
888     A Perl module implementing a go board widget.
889    
890     This Perl module implements a beautiful go board (see <a
891     href="http://data.plan9.de/kgsuemel.jpg">example</a>), implemented as a
892     Gtk2 widget.
893    
894 elmex 1.1 Linux-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
895     A Perl module that implements asynchronous I/O using <tt>clone</tt>
896     on Linux. Apart from AIO reading and writing, this module also allows
897     asynchronous <tt>stat</tt>, <tt>open</tt> and <tt>close</tt> (and more)
898     calls, which often are a substantial problem. See also its (newer) brother
899     <tt>IO-AIO</tt>.
900    
901     Linux-Inotify2 cpan cvs-pod(Inotify2.pm,) cvs-co(Changes)
902     A better/less buggy/more portable interface to the Linux Inotify
903     subsystem then what Linux::Inotify has to offer. Inotify lets you receive
904     file change, create, move etc. events for directories in files in a more
905     scalable fashion than dnotify, the older mechanism.
906    
907     Linux-NBD cpan cvs-pod(lib/Linux/NBD.pm) cvs-pod(lib/Linux/NBD/Client.pm) cvs-pod(lib/Linux/NBD/Server.pm) cvs-co(Changes)
908     A Perl module that helps implementing netblock block device servers and
909     set up NBD instances. A sample application allowing you to mount most CD
910     images is included.
911    
912     Mozilla-Plugin
913     Undocumented, unreleased and unfinished-but-somewhat-working Perl plug-in
914     for Mozilla (Netscape, Opera, IE...), that allows embedding Tk, Gtk etc.
915     plugins directly in the browser.
916    
917     Net-FCP cpan cvs-pod(FCP.pm,) cvs-co(Changes)
918     Perl module implementing the <a href="http://www.freenetproject.org">Freenet</a>
919     client protocol, including client-side Metadata handling and CHK Key generation.
920     Includes a mass downloader (similar to fuqid) as sample application.
921    
922     Net-Whois-IP
923     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
924     that tries to find the corresponding whois entry for a given IP, by querying
925     various registries.
926    
927     OpenSSL
928     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
929     interfacing to libssl.
930    
931     PDL-Audio cpan cvs-pod(audio.pd,) cvs-co(Changes)
932     Perl module extending PDL with all sorts of audio functions for generating, analyzing,
933     loading and saving sounds. Ever so popular is the "birds" demo script :)
934    
935     Tree-M cpan
936     Perl interface to the broken M-Tree library by these italian guys...
937    
938     Video-Capture-V4l cpan cvs-co(README) cvs-co(Changes)
939     Full-featured interface to Video for Linux, including real-time grabbing
940     and jpeg compression, VPS etc. decoding and many sample scripts that
941     facilitate automatica sender search and detection, EPG decoding and
942     viewing and video grabbing.
943    
944     XML-DB
945     Undocumented, unreleased and unfinished Perl module implementing an "XML
946     database", i.e. a tree-based database, on top of a conventional SQL
947     database.
948    
949     basex
950     Very old, very portable ANSI-C program that implements something
951     that is similar to yencode. yencode is more "standard", so don't use this.
952    
953     dinfo
954     Undocumented and working tools to extract the data from the D-Info CD.
955    
956     syncmail
957     Unfinished, undocumented and not working.
958    
959     thttpd
960     A personally hacked version of thttpd, suitable for lots of file
961     transfers (normal thttpd has problems with this).
962    
963     wvsniff
964     Undocumented but nicely working wavelan sniffer that I wrote for use
965     with my cisco aironet card. If you get it working, praise yourself.
966    
967     dhcpping cvs-pod(dhcping.pod,)
968     A version of dhcpping enhanced by <a href="mailto:marco@nethype.de">Marco Maisenhelder</a>
969     to support passing dhcp options. Intended to test dhcp server implementations.
970    
971 elmex 1.5 Object-Event cpan-elmex git-pod(lib/Object/Event.pm,) git-co(Changes)
972 elmex 1.2 A simple event callback API for Perl.
973    
974     This is just a very simple event callback registration and call API
975 elmex 1.33 which new Perl classes can inherit. It's mainly used by AnyEvent::XMPP.
976 elmex 1.2
977 elmex 1.33 psycpp git
978 elmex 1.2 A project that was aimed to implement a PSYC server in C++.
979    
980     This is a mostly abandoned project at the moment, however, the repository
981     contains interesting C++ code that might be useful to someone, especially
982     the C++ JSON implementation might be of interest. The project is mostly
983     dead at the moment though...
984 elmex 1.12
985 elmex 1.33 GT.M git-co(README)
986 root 1.32 GT.M Database
987    
988     <a href="http://sourceforge.net/projects/fis-gtm/">GT.M</a>
989     is a a vetted, industrial strength, transaction
990     processing application platform consisting of a
991     database engine optimized for high TP throughput and
992     a compiler for the M (aka MUMPS) programming language.
993    
994     fcrackzip cvs-co(fcrackzip.html)
995     <b>fcrackzip</b> is a zip password cracker, similar to fzc, zipcrack and others.
996    
997     <h3>Why, the hell, another zip cracker?</h3>
998    
999     Naturally, programs are born out of an actual need. The situation with
1000     fcrackzip was no different... I'm not using zip very much, but recently
1001     I needed a password cracker. "Sure", I thought, "there are hundreds of
1002     them out there, I'll just gonna get one!". This wasn't so easy, in fact,
1003     none of the zipcrackers I found were able to find the passwords, either
1004     they didn't accept more than one zipfile, were awfully slow, or didn't do
1005     brute force attacks (which I needed). The worst thing was: no source!.
1006    
1007     <h3>Why is <i>no source</i> such a bad thing?</h3>
1008    
1009     [insert big chapter about the free software spirit here ;)], anyway
1010     people will never learn... You will find reasons why it's much better to
1011     provide source to your programs here, at opensource.org, and here, at the
1012     Free Software Foundation. Now, what are the features of fcrackzip?
1013    
1014     <ul><li>
1015     <p>FREE</p>
1016    
1017     <p>It doesn't cost anything, it will run on many architectures, and
1018     the source is freely available, so you can customise it to your
1019     needs. If you make improvements, don't hesitate to mail them to me,
1020     and I will include them in fcrackzip!</p>
1021    
1022     <p>One goal of fcrackzip was to provide a free but still fast
1023     zipcracker, so that other people can improve and contribute it
1024     further, in an open developement style.</p>
1025    
1026     <p>Other programs, like fzc, come not only without source, but the
1027     executable is even encrypted, so improving it or customizing it is
1028     difficult at best. (Maybe the programmers of other crackers don't
1029     want that people see how crappy their code actually is? Nobody
1030     knows for sure, but I see no other reason for this strange, but
1031     common, behaviour)</p>
1032    
1033     </li><li>
1034     <p>FAST</p>
1035    
1036     <p>On my old machine (a pentium-90), the portable C version is 12%
1037     slower than fzc, the fastest cracker I could find. Small parts of
1038     fcrackzip have been converted to x86 assembly, so it performs a bit
1039     faster (around 4%) than fzc now, on the same hardware (note: this
1040     is highly os/compiler dependent). Since the author of fzc claims
1041     that it is written fully in assembler, further improvements might
1042     well be possible. Incidently, on my new P-II machine, fcrackzip is
1043     almost twice as fast as fzc ;)</p>
1044    
1045     </li><li>
1046     <p>PORTABLE</p>
1047    
1048     <p>fcrackzip was written in ISO-C, and should run on most platforms,
1049     even 64 bit ones (maybe after some tweaking). I'll be glad to hear
1050     about portability problems so I can fix them.</p>
1051    
1052     </li><li>
1053     <p>FEATUREFUL</p>
1054    
1055     <p>fcrackzip will, at some later stage at least, support many more
1056     useful operation modes than other crackers. It already supports
1057     multiple zip files with multiple files. Remember that the code is
1058     only a few hours old!</p>
1059    
1060     <p>However, since version 0.2.0 fcrackzip also includes a mode to
1061     brute force cpmask'ed images, something no other program (that I
1062     know of) can do, so at least there is one feature other crackers
1063     don't have.</p>
1064    
1065     <p>And you can always implement your own modes.</p>
1066    
1067     </li></ul>
1068    
1069     <h3>Caveat, Imperator!</h3>
1070    
1071     <p>Naturally, there are also some drawbacks. At the moment, fcrackzip
1072     is a bit slower than necessary, and lacks some important (or nice)
1073     features, like automatic unzip-testing and others. On the other hand,
1074     fcrackzip-0.0.1 was hacked together in under ten hours, and you can
1075     always modify the source (and send me patches!!!) (I hope I've made it
1076     clear now ;)</p>
1077 root 1.37
1078     lsys cvs-co(README) cvs-co(NEWS)
1079     lsys is a program that interprets lindenmeyer-systems.
1080    
1081     <p>lsys is a full-featured program that understands most of the syntax
1082     of the original l-systems language, which is far more complex and
1083     powerful than most available l-system interpreters.</p>
1084    
1085 root 1.54 <p>See <a href="http://home.schmorp.de/marc/lsys.html">the original homepage</a>
1086 root 1.37 for more explanations and some images.
1087 root 1.61
1088     ermyth cvs-pod(doc/poddoc/documentation.pod) cvs-co(Changes)
1089     This is a fork of Atheme IRC Services.
1090    
1091     Ermyth IRC Services is a set of Services for IRC networks that allows
1092     users to manage their channels in a secure and efficient way and
1093     allows operators to manage various things about their networks.
1094     Ermyth has been ported to C++ and goes its way using modern concepts
1095     and the object oriented paradigm.
1096