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