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