ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/schmorpforge/genpage
Revision: 1.4
Committed: Tue Apr 29 14:20:16 2008 UTC (16 years, 2 months ago) by elmex
Branch: MAIN
Changes since 1.3: +13 -7 lines
Log Message:
added correct git-co and git-pod now

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     sub hdr($$) {
11     print <<EOF;
12     <?xml version='1.0' encoding='utf-8'?>
13     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
14     <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
15     <head>
16     <title>$_[0]</title>
17     <style type='text/css'>
18     body {
19     background: white;
20     color: black;
21     font-family: Arial, Helvetica, sans-serif;
22     font-size: 12pt;
23     }
24    
25     .bg-ede { background: url(/img/ede.jpg) no-repeat; padding: 20px; width: 100%; height: 82px; }
26     .bg-perl { background: url(/img/perl.jpg) no-repeat; padding: 20px; width: 100%; height: 194px; }
27     .bg-bluete { background: url(/img/bluete.jpg) no-repeat; padding: 20px; width: 100%; height: 148px; }
28    
29     a:link { color: #00f; }
30     a:visited { color: #008; }
31     a:hover { color: #800; }
32     a:active { color: #f00; }
33    
34     img { display: block; }
35    
36     tt { font-family: "Andale Mono", "Lettergothic", monospace; }
37    
38     th { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
39     td { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
40    
41     hr.footer { display: none; }
42     .footer { font-size: 8pt; border-top: 1px solid red; }
43     </style>
44     </head>
45     <body>
46     <p class='back'><a href='/'>Schmorpforge Software Repository</a></p>
47     <h1 class="$_[1]">$_[0]</h1>
48     <div style="text-align: center; float: right; margin-left: 1em; margin-bottom: 1em">
49     <a href="http://www.deliantra.net/">
50     <img src="http://www.deliantra.net/images/deliantra.png" border="0" alt="Deliantra Free MMORPG" style="display: inline"/>
51     <br />
52     The free as in beer, liberal, code &amp; content retro-style graphical MMORPG :)
53     </a>
54     </div>
55     EOF
56     }
57    
58     sub ftr {
59     print <<EOF;
60     <hr class='footer'/>
61     <p class='footer'>
62     Contact for this page: <a href="mailto:schmorpforge\@schmorp.de">Marc Lehmann &lt;schmorpforge\@schmorp.de&gt;</a>.
63     </p>
64     </body>
65     </html>
66     EOF
67     }
68    
69     $_ = <DATA>;
70     for (;defined $_;) {
71     my ($name, @args) = split /\s+/;
72    
73     next unless $name;
74    
75     my $desc = "";
76     $desc .= $_ while (defined ($_ = <DATA>) and !/^\S/);
77     $desc =~ s/^(.*?)\n\s*\n//s
78     or die "malformed desc in $name: $desc";
79    
80     my $short = $1;
81    
82     $index{$name} = "<tr><th id='$name'><a href='pkg/$name.html'>$name</a></th><td>$short</td></tr>";
83    
84     open STDOUT, ">", "software.schmorp.de/pkg/$name.html"
85     or die "software.schmorp.de/pkg/$name.html: $!";
86    
87     if (grep /cpan/, @args) {
88     hdr $name, "bg-perl";
89     } else {
90     hdr $name, "bg-ede";
91     }
92    
93     print <<EOF;
94     <p class='short-desc'>$short</p>
95    
96     <h2>Blurb</h2>
97     <p class='blurb'>$desc</p>
98     <h2>Availability</h2>
99     <ul>
100     <li><a href='http://cvs.schmorp.de/$name'>Browse CVS module '$name'</a></li>
101     EOF
102    
103     my $modules = $name;
104     $modules = "$1" if grep /modules\((.*)\)/, @args;
105    
106     print <<EOF;
107     <li>Anonymous CVS checkout:<br />
108     <tt>&#160;cvs -z3 -d :pserver:anonymous\@cvs.schmorp.de/schmorpforge co $modules</tt><p />
109    
110     <small>
111    
112     <p>The warning
113     <b>cvs checkout: warning: cannot write to history file /schmorpforge/CVSROOT/history: Permission denied</b>
114     is expected and harmless, just ignore it. It simply means you have no write access to the repository.
115     </p>
116    
117     <p>The CVS server moved again on 2008-02-21, you can use the following
118     (untested) snippet to update your CVS checkout. Run it in the top level
119     checked out directory:</ br>
120    
121     <pre>
122     find . -name CVS | xargs -I% find % -name Root |
123     xargs perl -i -pe 's%:pserver:anonymous\\\@cvs.schmorp.de:636/schmorpforge%:pserver:anonymous\\\@cvs.schmorp.de:/schmorpforge%'</pre>
124     </p>
125    
126     </small>
127    
128     </li>
129     EOF
130    
131     print "<li><a href='http://dist.schmorp.de/$name/'>File Releases</a></li>\n"
132     if grep /dist/, @args;
133     print "<li><a href='http://www.cpan.org/modules/by-authors/Marc_Lehmann/'>File Releases (CPAN)</a></li>\n"
134     if grep /cpan/, @args;
135     for (@args) {
136     print "<li><a href='http://lists.schmorp.de/mailman/listinfo/" . ($1 || $name) . "'>Mailing List '" . ($1 || $name) . "'</a></li>\n"
137     if /list\((.*)\)/;
138     }
139    
140     print "</ul>";
141    
142 elmex 1.4 if (my @files = grep $_, map /(cvs-co|cvs-pod|git-pod|git-co)\((\S+)\)/ && [$1, $2], @args) {
143 elmex 1.1 print "<h2>Additional Documents</h2><ul>";
144    
145     for (@files) {
146     my ($type, $arg) = @$_;
147    
148     if ($type eq "cvs-co") {
149     print "<li><a href='http://cvs.schmorp.de/$name/$arg'>$arg</a></li>";
150 elmex 1.4
151 elmex 1.1 } elsif ($type eq "cvs-pod") {
152     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
153     $desc ||= "<b>Main Manual Page</b>";
154     print "<li><a href='http://pod.tst.eu/http://cvs.schmorp.de/$name/$file'>$desc</a></li>";
155 elmex 1.4
156 elmex 1.3 } elsif ($type eq 'git-co') {
157 elmex 1.4 print "<li><a href='http://git.ta-sa.org/$name/$arg'>$arg</a></li>";
158     } elsif ($type eq "git-pod") {
159     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
160     $desc ||= "<b>Main Manual Page</b>";
161     print "<li><a href='http://pod.tst.eu/http://git.ta-sa.org/$name/$file'>$desc</a></li>";
162    
163 elmex 1.1 }
164     }
165    
166     print "</ul>";
167     }
168    
169     ftr;
170     }
171    
172     open STDOUT, ">software.schmorp.de/index.html";
173    
174     hdr "Package Index", "bg-bluete";
175    
176     print <<EOF;
177    
178     <p>This page briefly documents the Schmorpforge Software Repository and
179     lists all projects available here.</p>
180    
181     <ul>
182     <li>All CVS Repositories can be found <a href="http://cvs.schmorp.de/">here</a>.</li>
183     <li>Most Releases can be found <a href="http://dist.schmorp.de/">here</a> or via CPAN.</li>
184     <li>All Mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a>.</li>
185     </ul>
186     <p>Projects listed on this page:</p>
187     <table>
188     EOF
189    
190     print $index{$_} for sort { (lc $a) cmp (lc $b) } keys %index;
191    
192     print "</table>";
193     ftr;
194    
195     __DATA__
196     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)
197     rxvt-unicode is a clone of the well known terminal emulator rxvt.
198    
199     <p>If you have a problem, please have a look at the
200     <a href="http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.html">FAQ</a>
201     <em>first</em>.</p>
202    
203     Its main features (many of them unique) over rxvt are:
204    
205     <ul>
206     <li>Stores text in Unicode (either UCS-2 or UCS-4).</li>
207     <li>Uses locale-correct input, output and width: as long as your system supports the locale,
208     rxvt-unicode will display correctly.</li>
209     <li>Daemon mode: one daemon can open multiple windows on multiple displays, which
210     improves memory usage and startup time considerably.</li>
211     <li>Embedded perl, for endless customization and improvement opportunities, such as:
212     <ul>
213     <li>Tabbed terminal support.</li>
214     <li>Regex-driven customisable selection that can properly select shell arguments, urls etc.</li>
215     <li>Selection-transformation and option popup menus.</li>
216     <li>Automatically transforming the selection once made.</li>
217     <li>Incremental scrollback buffer search.</li>
218     <li>Automatic URL-underlining and launching.</li>
219     <li>Remote pastebin, digital clock, block graphics to ascii filter and
220     whatever you like to implement for yourself.</li>
221     </ul>
222     </li>
223     <li>Crash-free. At least I try, but rxvt-unicode certainly crashes much less often than
224     rxvt and its many clones, and reproducible bugs get fixed immediately.</li>
225     <li>Completely flicker-free.</li>
226     <li>Re-wraps long lines instead of splitting or cutting them on resizes.</li>
227     <li>Full combining character support (unlike xterm :).</li>
228     <li>Multiple fonts supported at the same time: No need to choose between
229     nice japanese and ugly latin, or no japanese and nice latin characters :).</li>
230     <li>Supports Xft and core fonts in any combination.</li>
231     <li>Can easily be embedded into other applications.</li>
232     <li>All documentation accessible through manpages.</li>
233     <li>Locale-independent XIM support.</li>
234     <li>Many small improvements, such as improved and corrected terminfo, improved secondary screen modes,
235     italic and bold font support, tinting and shading.</li>
236     <li>Encapsulation of privileged operations in a separate process (improves security).</li>
237     <li>Optimised for local <i>and</i> remote connections.</li>
238     </ul>
239    
240     <br />
241     And its main <em>missing</em> features (which users request but are not (yet?) implemented) are:
242    
243     <ul>
244     <li>Complex script support, such as arabic or tibetian - more info is needed. (use mlterm)</li>
245     <li>Right-to-Left rendering - more info is needed. (use mlterm)</li>
246     <li>IIIMF (Intranet/Internet Input Method Framework) support. (use scim)</li>
247     </ul>
248    
249     <br />
250    
251     There is an IRC channel for discussion on <a
252     href='irc://irc.freenode.net/rxvt-unicode'><tt>irc.freenode.net
253     #rxvt-unicode</tt></a>.
254    
255     libptytty dist list(rxvt-unicode) cvs-pod(doc/libptytty.3.pod) cvs-co(Changes)
256     libptytty is an offspring of rxvt-unicode that handles pty/tty/utmp/wtmp/lastlog handling
257     in mostly OS-independent ways, so it's less of a hassle for you :)
258    
259     Mailing list and contacts are the same as for rxvt-unicode, above.
260    
261     gtkbfc cvs-co(README)
262     Gtk+ bash file chooser replacement.
263    
264     <b>gtkbfc</b> is a hack that replaces the dreaded, slow and hard-to-use GTK+
265     file chooser by a rxvt-unicode window with a little script that lets you use
266     readline tab-completion to enter filenames.
267    
268     Again, its a dire hack and will not work with all programs. It does work
269     for gimp, firefox, gedit at least, though.
270    
271     CV cpan cvs-pod(bin/cv,) cvs-co(Changes)
272     Gtk2::CV is a perl module that implements an image viewer.
273    
274     It comes with its own demo app, named <tt>cv</tt>, which is loosely
275     modeled after the classic <tt>xv</tt>, although it displays images much
276     faster than the great original. Stable releases are also found on CPAN.
277    
278     kgsueme cpan list(kgsueme) cvs-co(Changes)
279     This perl module is about reverse engineering the
280     <a href="http://cvs.schmorp.de/kgsueme/doc/protocol.html">protocol</a>
281     (<a href="http://cvs.schmorp.de/kgsueme/doc/protocol.xml">xml source</a>)
282     of the popular <a href="http://kgs.kiseido.com">Kiseido Go Server</a>.
283    
284     It features a sample Gtk+2 client (<a
285     href="http://kgsueme.schmorp.de/screenshot.jpg">screenshot</a>), a gtp
286     and a igs interface. It mostly focuses on documenting the protocol and
287     delivering a stable reference implementation which makes it easy to write
288     your own clients, bots and so on. It also contains Gtk2 modules for
289     KGS-independent rendering of beautiful Go boards. For a introduction to
290     the game of go, look <a href="http://playgo.to/interactive/">here</a>.
291    
292     Net-Knuddels cvs-pod(Net/Knuddels.pm,)
293     This perl module provides an API for group communications using the
294     <a href="http://www.knuddels.de/">www.knuddels.de</a> protocol. It is outdated
295     and only provided as reference.
296    
297     This module implements the knuddels.de chat protocol. Since it was created
298     the protocol changed in unknown ways, so this module no longer works. It is
299     provided as reference, though, in case the protocol didn't change much,
300     so one can learn about the protocol.
301     It could be used to write Knuddels clients, bots and even servers
302     (although the latter doesn't make much sense, the protocol is rather
303     ugly. If you want to implement your own group communication server, use
304     IRC instead).
305    
306     Net-IRC3 dist cvs-pod(lib/Net/IRC3.pm,) cvs-co(Changes) cvs-co(samples/netirc3cl) cvs-co(samples/netirc3)
307     This module provides an alternative to the Net-IRC and Net-IRC2
308     modules. Its design rationale is offfering a 100% non-blocking
309     callback-based interface, RFC-compliant parsing and a lightweight
310     approach to modularity and reusability.
311    
312     Net-IRC-Server cvs-pod(Net/IRC/Server.pm,)
313     This module provides a simple API for handling the IRC Protocol
314     aiming at implementing lightweight IRC-Servers.
315    
316     PApp-SQL cpan cvs-pod(SQL.pm,)
317     Absolutely easy yet fast and powerful SQL access.
318    
319     This module wraps the DBI prepare/bind/execute calls into a single "sql_exec" call,
320     complete with statement caching, so you get the efficiency of prepare, the safety
321     of using placeholders and the speed of bound result values in a simple call.
322    
323     Example:
324    
325     <pre>
326     my $st = sql_exec \my ($id, $name),
327     "select id, name from db where name like %",
328     "pfx%";
329     while ($st->fetch) {
330     print "$id $name\n";
331     }
332     </pre>
333    
334     libcoro cvs-co(README) cvs-co(coro.h)
335     This C-library implements coroutines (cooperative multitasking) in a
336     portable fashion.
337    
338     As long as your system implements the <tt>ucontext</tt> (Unix) or the
339     older <tt>sigaltstack</tt> interfaces it should work out of the box, with
340     minimal configuration (it consists of only a single <tt>.h</tt> and a
341     single <tt>.c</tt> file). It is known to run on a wide variety of unix
342     systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use
343     any assembly language and is architecture-independent.
344    
345     cf.schmorp.de/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero)
346     The <a href="http://www.deliantra.net/">Deliantra</a> game server.
347    
348     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
349    
350     cf.schmorp.de/maps cvs-co(Changes) cvs-co(COPYING.Affero)
351     The <a href="http://www.deliantra.net/">Deliantra</a> game maps.
352    
353     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
354    
355     cf.schmorp.de/arch cvs-co(Changes) cvs-co(COPYING.Affero)
356     The <a href="http://www.deliantra.net/">Deliantra</a> game resources.
357    
358     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
359    
360     cf.schmorp.de/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes)
361     A modern, fullscreen client for <a href="http://www.deliantra.net/">Deliantra</a>, written using Perl
362     and leveraging only OpenGL for display and thus being easily portable.
363     See its <a href="http://www.deliantra.net/client.html">homepage</a>.
364    
365     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>,
366     <a href="http://www.libsdl.org/projects/SDL_image/">SDL_image</a>, <a href="http://www.pango.org">PanGo</a> (with freetype2 and
367     cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and
368     <a href="http://software.schmorp.de/pkg/cf.schmorp.de/Deliantra.html">Deliantra</a> perl modules.
369    
370     cf.schmorp.de/Deliantra
371     Perl module family for the <a href="http://www.deliantra.net/">Deliantra</a> game.
372    
373     They can be used to read/write/cache archetypes, image packs and map files.
374     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
375    
376     cf.schmorp.de/gcrossedit cvs-pod(bin/gde,)
377     The <a href="http://www.deliantra.net/">Deliantra</a> editor, written in Perl + Gtk2.
378    
379     The editor for the game Deliantra, written in Perl.
380     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
381    
382     cf.schmorp.de
383     <a href="http://www.deliantra.net/">Deliantra</a> server, archetypes, maps,
384     editor, client and support modules distribution.
385    
386     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
387    
388     cfmaps
389     This is a collection of scripts that I use to create the <a
390     href="http://www.deliantra.net/">Deliantra</a> maps at <a
391     href="http://maps.deliantra.net/">maps.deliantra.net</a>.
392    
393     They are not documented and somewhat specialised, but the scripts might
394     be of some use.
395    
396     Faster cpan cvs-pod(Faster.pm,)
397     A perl module that makes perl run, well, faster, using a very primitive just in time compiler.
398    
399     As the name implies, using this module makes your perl program run
400     faster. Actually, much slower initially, as it compiles every function
401     to C and later to a shared object, but then you can expect a performance
402     increase by 10-50%, depending on what your program does.
403    
404     liblzf cvs-co(README) cvs-co(lzf.h)
405     LibLZF is a very small data compression library.
406    
407     It consists of only two .c and two .h files and is very easy to
408     incorporate into your own programs. The compression algorithm is very,
409     very fast, yet still written in portable C. More info and the latest
410     release can be found at the <a href="http://liblzf.plan9.de">LibLZF
411     Homepage</a>.
412    
413     root-tail cvs-co(README) cvs-co(Changes)
414     Full-featured program to print text directly to the X11 root window.
415    
416     More info, screenshots, documentation and current releases can be found
417     at the <a href="http://root-tail.plan9.de">root-tail homepage</a>.
418    
419     xcb cvs-co(README) cvs-co(Changes)
420     A fork of the unmaintained xcb (x cut buffers) program implementing better i18n.
421    
422     lmainit cvs-co(NEWS)
423     A sysvinit replacement that can even be configured to be sysvinit-compliant.
424    
425     See <a href="http://www.goof.com/pcg/marc/lmainit.html">its homepage</a> for more info.
426    
427     Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes)
428     Perl module implementing forward error correction using Vandermonde matrices
429    
430     AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-co(Changes) cvs-pod(lib/AnyEvent/Impl/CoroEV.pm,AnyEvent::Impl::CoroEV) cvs-pod(lib/AnyEvent/Impl/CoroEvent.pm,AnyEvent::Impl::CoroEvent) cvs-pod(lib/AnyEvent/Impl/Coro.pm,AnyEvent::Impl::Coro) 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/POE.pm,AnyEvent::Impl::POE)
431     This module offers a simple API for I/O, timer, signal, child process
432     and completion events, independent of a specific event loop.
433    
434     This module allows module authors to use those events internally without
435     forcing users of the module to use a specific event loop, without adding
436     noticable overhead. Currently supported event loops are EV, Coro::EV,
437     Event, Coro::Event, Glib/Gtk2, Tk, Qt, Event::Lib and POE (and thus also
438     WxWidgets and Prima). It contains a very fast (see benchmarks in the main
439     manual page) Pure Perl event loop and doesn't rely on XS, which ensures
440     that your program will always run even when no C-based event loop is
441     available.
442    
443     AnyEvent-FastPing cpan cvs-pod(FastPing.pm,)
444     This module implements a very fast and relatively flexible
445     ping (ping as in icmp echo request).
446    
447     This module allows you to quickly send ipv4 and ipv6 pings at a defined
448     rate to whole address ranges. It is fully event-driven (doesn't block
449     the perl interpreter) and can easily generate hundreds of thousands of
450     pings per second. Target specification is done by specifying one or
451     more address ranges, to which pings will be distributed according to a
452     least-load principle.
453    
454     A command line utility (<tt>fastping</tt>) is included.
455    
456     Audio-Play-MPG123 cpan cvs-pod(MPG123.pm,) cvs-co(Changes)
457     A Perl module implementing an interface to mpg123.
458    
459     Compress-LZV1 cpan cvs-pod(LZV1.pm,) cvs-co(Changes)
460     A Perl module implementing the LZV1 compression algorithm. See
461     <tt>Compress::LZF</tt> for a better algorithm and module.
462    
463     Convert-CD cvs-pod(lib/Convert/CD.pm,) cvs-pod(bin/cvtiso,cvtiso) cvs-co(doc/) cvs-co(Changes)
464     Unfinished Perl project implementing CD image formats. Extracting ISO images
465     already works.
466    
467     Convert-Scalar cpan cvs-pod(Scalar.pm,) cvs-co(Changes)
468     Perl module to convert between different representations of Perl scalars.
469    
470     Convert-UUlib cpan cvs-pod(UUlib.pm,) cvs-co(Changes)
471     Perl interface to the uulib library (a.k.a. uudeview/uuenview), which
472     allows easy decoding of multipart mime, uuencode and a whole lot of
473     differently encoded messages. You basically throw files at it, and
474     it extracts the files in them. This module is used by the popular <a
475     href="www.amavis.org">amavis virus scanner</a>.
476    
477     Coro cpan cvs-pod(Coro.pm,) cvs-co(Changes)
478     A large Perl module family that implements cooperative multitasking in
479     Perl. It supports filehandle and event abstraction and also implements
480     continuations as well as the necessary directives to implement a slightly
481     limited call/cc in Perl.
482    
483     Crypt-Twofish2 cpan cvs-pod(Twofish2.pm,) cvs-co(Changes)
484     A Perl module implementing the twofish encryption algorithm in Perl. It has
485     mostly been superceded by the Crypt::Twofish module. However, it supports
486     an easy and fast CBC mode natively.
487    
488     Digest-Hashcash cpan cvs-pod(Hashcash.pm,) cvs-co(Changes)
489     Perl module to generate and parse <a href="http://www.hashcash.org">hashcashes</a>.
490     Follow the link to learn more. This module is currently faster than
491     the hashcash reference library.
492    
493     EV cpan cvs-pod(EV.pm,) cvs-pod(../libev/ev.pod,libev-documentation) cvs-pod(EV/MakeMaker.pm) cvs-co(Changes)
494     A thin wrapper around <a href="/pkg/libev.html">libev</a>,
495     a high-performance event loop. Intended as a faster and less
496     buggy replacement for the Event perl module. Efficiently supports
497     very high number of timers, scalable operating system APIs such as
498     epoll, kqueue, solaris's ports, inotify, child/pid watchers and
499     much more.
500    
501     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
502     list</a> for discussion and support is now available.
503    
504     EV-ADNS cpan cvs-pod(ADNS.pm,) cvs-co(Changes)
505     An asynchronous stub resolver that integrates efficiently into
506     the EV event loop. Uses adns/libadns as backend.
507    
508     Net-SNMP-EV cpan cvs-pod(EV.pm,) cvs-co(Changes)
509     An adaptor that integrates the Net-SNMP Perl module into the EV event loop.
510     Loading it suffices to make background requests in EV programs.
511    
512     libev cvs-co(README) cvs-pod(ev.pod) dist
513     A full-featured and high-performance (<a
514     href="http://libev.schmorp.de/bench.html">see benchmark</a>) event loop that
515     is loosely modelled after libevent, but without its limitations and bugs. It is
516     used, among others, in the <a href="http://savannah.gnu.org/projects/gvpe">GNU Virtual Private Ethernet</a> and
517     <a href="http://software.schmorp.de/pkg/rxvt-unicode.html">rxvt-unicode</a> packages, and in
518     the Deliantra MORPG Server and Client.
519    
520     Features include child/pid watchers, periodic timers based on
521     wallclock (absolute) time (in addition to timers using relative
522     timeouts), as well as epoll/kqueue/event ports/inotify (for file watchers) support,
523     fast timer management, time jump detection and correction, and ease-of-use.
524     <p />
525     It can be used as a libevent replacement using its emulation API or
526     directly embedded into your programs without the need for complex
527     configuration support. A full-featured and well-documented
528     <a href="EV.html">perl interface</a> is also available.
529     <p />
530     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
531     list</a> for discussion and support is now available.
532    
533     libspf cvs-co(README)
534     Libspf is a C library that implements the <a
535     href="http://en.wikipedia.org/wiki/Sender_Policy_Framework"> Sender
536     Policy Framework</a>. It allows software to identify and reject forged
537     envelope-from addresses, a typical nuisance in e-mail spam. SPF is
538     defined in Experimental RFC 4408.
539    
540     This is not the original home of libspf, but its author (apparently)
541     has vanished for a few years now, and this place took over as a central
542     place to collect patches and possibly make releases.
543     <p />
544     James Couzens, if you read this and want to take over, feel free to
545     contact <a href="mailto:libspf@schmorp.de">me</a>, I'd be thrilled :)
546    
547     File-Rdiff cpan cvs-pod(Rdiff.pm,) cvs-co(Changes)
548     A Perl module that generates remote signatures and patches files using
549     librsync: basically your interface to librsync.
550    
551     EV-Glib cpan cvs-pod(Glib.pm,) cvs-co(Changes)
552     This perl module embeds the default Glib mainloop into the EV event loop. This makes it
553     possible to use callbacks or modules using the Glib module (e.g. Gtk2 programs) within EV programs. Just
554     loading it suffices. See the <a href="/pkg/Glib-EV.html">Glib::EV</a> module for the reverse approach.
555    
556     Glib-EV cpan cvs-pod(EV.pm,) cvs-co(Changes)
557     This perl module patches the default libglib main loop context to use the EV module. This makes
558     it possible to use callbacks or modules using the EV module within Glib and Gtk2 programs. Just
559     loading it suffices. See the <a href="/pkg/EV-Glib.html">EV::Glib</a> module for the reverse approach.
560    
561     Glib-Event cpan cvs-pod(Event.pm,) cvs-co(Changes)
562     This perl module patches the default libglib main loop context to use the Event module. This makes
563     it possible to use callbacks or modules using the Event module within Glib and Gtk2 programs. Just
564     loading it suffices.
565    
566     GPS
567     Undocumented, unreleased and unfinished-but-working interface to some GPS
568     devices in Perl.
569    
570     Linux-DVB cpan cvs-pod(DVB.pm,) cvs-co(Changes)
571     A perl module that implements a very direct interface to the Linux DVB
572     API. Also contains utility functions to decode SI data.
573    
574     Devel-FindRef cpan cvs-pod(FindRef.pm,) cvs-co(Changes)
575     A Perl module that tries to track down references to perl values. Can
576     be a great aid in debugging leak problems by showing where a value
577     is still being referenced.
578    
579     BDB cpan cvs-pod(BDB.pm,) cvs-co(Changes)
580     A Perl module implementing an interface to BerkeleyDB versions 4.4 and later.
581     Unlike the BerkeleyDB and DB_File modules, this module has a much more
582     C-like interface exposing all the features of the underlying library
583     and also executes all database changes asynchronously using a thread pool.
584    
585     IO-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
586     A Perl module that implements asynchronous I/O using pthreads. Apart
587     from AIO reading and writing, this module also allows asynchronous
588     <tt>stat</tt>, <tt>open</tt>, <tt>unlink</tt> (and more) calls,
589     which often are a substantial blocking problem. See also its (outdated)
590     brother <tt>Linux-AIO</tt>.
591    
592     JSON-XS cpan cvs-pod(XS.pm,) cvs-co(Changes)
593     JSON::XS implements JSON (http://www.json.org) for Perl. Unlike other
594     modules, its primary goal is to encode to syntactically correct JSON and
595     flag invalid JSON while decoding. It ensures round-trip integrity of
596     datatypes while being intuitive to use. Currently being the fastest of the
597     JSON encoders available for Perl, it supports a variety of format options,
598     such as single-line, ASCII-only or pretty-printed and can be tuned for
599     speed or memory usage. It comes with a wealth of documentation describing
600     usage and implementation details.
601    
602     Linux-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
603     A Perl module that implements asynchronous I/O using <tt>clone</tt>
604     on Linux. Apart from AIO reading and writing, this module also allows
605     asynchronous <tt>stat</tt>, <tt>open</tt> and <tt>close</tt> (and more)
606     calls, which often are a substantial problem. See also its (newer) brother
607     <tt>IO-AIO</tt>.
608    
609     Linux-Inotify2 cpan cvs-pod(Inotify2.pm,) cvs-co(Changes)
610     A better/less buggy/more portable interface to the Linux Inotify
611     subsystem then what Linux::Inotify has to offer. Inotify lets you receive
612     file change, create, move etc. events for directories in files in a more
613     scalable fashion than dnotify, the older mechanism.
614    
615     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)
616     A Perl module that helps implementing netblock block device servers and
617     set up NBD instances. A sample application allowing you to mount most CD
618     images is included.
619    
620     Mozilla-Plugin
621     Undocumented, unreleased and unfinished-but-somewhat-working Perl plug-in
622     for Mozilla (Netscape, Opera, IE...), that allows embedding Tk, Gtk etc.
623     plugins directly in the browser.
624    
625     Net-FCP cpan cvs-pod(FCP.pm,) cvs-co(Changes)
626     Perl module implementing the <a href="http://www.freenetproject.org">Freenet</a>
627     client protocol, including client-side Metadata handling and CHK Key generation.
628     Includes a mass downloader (similar to fuqid) as sample application.
629    
630     Net-Whois-IP
631     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
632     that tries to find the corresponding whois entry for a given IP, by querying
633     various registries.
634    
635     OpenSSL
636     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
637     interfacing to libssl.
638    
639     PDL-Audio cpan cvs-pod(audio.pd,) cvs-co(Changes)
640     Perl module extending PDL with all sorts of audio functions for generating, analyzing,
641     loading and saving sounds. Ever so popular is the "birds" demo script :)
642    
643     Tree-M cpan
644     Perl interface to the broken M-Tree library by these italian guys...
645    
646     Video-Capture-V4l cpan cvs-co(README) cvs-co(Changes)
647     Full-featured interface to Video for Linux, including real-time grabbing
648     and jpeg compression, VPS etc. decoding and many sample scripts that
649     facilitate automatica sender search and detection, EPG decoding and
650     viewing and video grabbing.
651    
652     XML-DB
653     Undocumented, unreleased and unfinished Perl module implementing an "XML
654     database", i.e. a tree-based database, on top of a conventional SQL
655     database.
656    
657     basex
658     Very old, very portable ANSI-C program that implements something
659     that is similar to yencode. yencode is more "standard", so don't use this.
660    
661     dinfo
662     Undocumented and working tools to extract the data from the D-Info CD.
663    
664     syncmail
665     Unfinished, undocumented and not working.
666    
667     thttpd
668     A personally hacked version of thttpd, suitable for lots of file
669     transfers (normal thttpd has problems with this).
670    
671     wvsniff
672     Undocumented but nicely working wavelan sniffer that I wrote for use
673     with my cisco aironet card. If you get it working, praise yourself.
674    
675     ermyth cvs-pod(doc/poddoc/documentation.pod) cvs-co(Changes)
676     This is a fork of Atheme IRC Services.
677    
678     Ermyth IRC Services is a set of Services for IRC networks that allows
679     users to manage their channels in a secure and efficient way and
680     allows operators to manage various things about their networks.
681     Ermyth has been ported to C++ and goes its way using modern concepts
682     and the object oriented paradigm.
683    
684     dhcpping cvs-pod(dhcping.pod,)
685     A version of dhcpping enhanced by <a href="mailto:marco@nethype.de">Marco Maisenhelder</a>
686     to support passing dhcp options. Intended to test dhcp server implementations.
687    
688 elmex 1.4 AnyEvent-DNS cpan git-pod(lib/AnyEvent/DNS.pm,) git-co(Changes)
689 elmex 1.2 A non-blocking DNS resolver with AnyEvent using Net::DNS.
690    
691     This Perl module is a simple wrapper around Net::DNS, which provides
692     a non-blocking interface to make DNS queries with Net::DNS.
693    
694 elmex 1.4 AnyEvent-HTTPD cpan git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes)
695 elmex 1.2 A simple and plain event based http web application server Perl module.
696    
697     This is a very basic HTTP server that allows the user/programmer to install
698     hooks for URL paths to generate the output. It uses AnyEvent to be easily
699     embeddable into other applications. The main objective was to make it
700     easier to make simple HTTP frontends in Perl for Perl programs and Perl modules.
701    
702 elmex 1.4 Object-Event cpan git-pod(lib/Object/Event.pm,) git-co(Changes)
703 elmex 1.2 A simple event callback API for Perl.
704    
705     This is just a very simple event callback registration and call API
706     which new Perl classes can inherit. It's mainly used by Net::XMPP2.
707    
708 elmex 1.4 Text-Edit cpan git-pod(lib/Text/Edit.pm,) git-co(Text-Edit.git/Changes)
709 elmex 1.2 A Perl module which allows editing any text via an editor in a seperate process.
710    
711     A utility Perl module that will start a terminal/editor for you and will
712     wait non-blocking for you to finish editing that file. Very useful to embed
713     content edititing in event based programs that have a AnyEvent compatible
714     event loop.
715    
716     psycpp
717     A project that was aimed to implement a PSYC server in C++.
718    
719     This is a mostly abandoned project at the moment, however, the repository
720     contains interesting C++ code that might be useful to someone, especially
721     the C++ JSON implementation might be of interest. The project is mostly
722     dead at the moment though...