ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/schmorpforge/genpage
Revision: 1.3
Committed: Tue Apr 29 13:48:13 2008 UTC (16 years, 2 months ago) by elmex
Branch: MAIN
Changes since 1.2: +4 -1 lines
Log Message:
git-co support via the just written gitco.cgi script

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