#!/usr/bin/perl
umask 022;
mkdir "software.schmorp.de", 0755;
mkdir "software.schmorp.de/pkg", 0755;
mkdir "software.schmorp.de/img", 0755;
system "rsync -av *.jpg software.schmorp.de/img/";
sub hdr($$) {
print < Schmorpforge Ta-Sa Software Repository$_[0]
EOF
}
sub ftr {
print < ";
open STDOUT, ">", "software.schmorp.de/pkg/$name.html"
or die "software.schmorp.de/pkg/$name.html: $!";
if (grep /cpan/, @args) {
hdr $name, "bg-perl";
} else {
hdr $name, "bg-ede";
}
print <$name $short
$desc
The warning cvs checkout: warning: cannot write to history file /schmorpforge/CVSROOT/history: Permission denied is expected and harmless, just ignore it. It simply means you have no write access to the repository.
The CVS server moved again on 2008-02-21, you can use the following (untested) snippet to update your CVS checkout. Run it in the top level checked out directory: br>
find . -name CVS | xargs -I% find % -name Root | xargs perl -i -pe 's%:pserver:anonymous\\\@cvs.schmorp.de:636/schmorpforge%:pserver:anonymous\\\@cvs.schmorp.de:/schmorpforge%'
Projects listed on this page:
If you have a problem, please have a look at the FAQ first.
Its main features (many of them unique) over rxvt are:
my $st = sql_exec \my ($id, $name),
"select id, name from db where name like %",
"pfx%";
while ($st->fetch) {
print "$id $name\n";
}
libcoro cvs-co(README) cvs-co(coro.h)
This C-library implements coroutines (cooperative multitasking) in a
portable fashion.
As long as your system implements the ucontext (Unix) or the
older sigaltstack interfaces it should work out of the box, with
minimal configuration (it consists of only a single .h and a
single .c file). It is known to run on a wide variety of unix
systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use
any assembly language and is architecture-independent.
deliantra/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero)
The Deliantra game server.
Follow the link to Deliantra for background info.
deliantra/maps cvs-co(Changes) cvs-co(COPYING.Affero)
The Deliantra game maps.
Follow the link to Deliantra for background info.
deliantra/arch cvs-co(Changes) cvs-co(COPYING.Affero)
The Deliantra game resources.
Follow the link to Deliantra for background info.
deliantra/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes)
A modern, fullscreen client for Deliantra, written using Perl
and leveraging only OpenGL for display and thus being easily portable.
See its homepage.
To install it, you need SDL, SDL_mixer,
SDL_image, PanGo (with freetype2 and
cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and
Deliantra perl modules.
deliantra/Deliantra
Perl module family for the Deliantra game.
They can be used to read/write/cache archetypes, image packs and map files.
Follow the link to Deliantra for background info.
deliantra/gcrossedit cvs-pod(bin/gde,)
The Deliantra editor, written in Perl + Gtk2.
The editor for the game Deliantra, written in Perl.
Follow the link to Deliantra for background info.
deliantra
Deliantra server, archetypes, maps,
editor, client and support modules distribution.
Follow the link to Deliantra for background info.
cfmaps
This is a collection of scripts that I use to create the Deliantra maps at maps.deliantra.net.
They are not documented and somewhat specialised, but the scripts might
be of some use.
Faster cpan cvs-pod(Faster.pm,)
A perl module that makes perl run, well, faster, using a very primitive just in time compiler.
As the name implies, using this module makes your perl program run
faster. Actually, much slower initially, as it compiles every function
to C and later to a shared object, but then you can expect a performance
increase by 10-50%, depending on what your program does.
liblzf cvs-co(README) cvs-co(lzf.h)
LibLZF is a very small data compression library.
It consists of only two .c and two .h files and is very easy to
incorporate into your own programs. The compression algorithm is very,
very fast, yet still written in portable C. More info and the latest
release can be found at the LibLZF
Homepage.
root-tail cvs-co(README) cvs-co(Changes)
Full-featured program to print text directly to the X11 root window.
More info, screenshots, documentation and current releases can be found
at the root-tail homepage.
xcb cvs-co(README) cvs-co(Changes)
A fork of the unmaintained xcb (x cut buffers) program implementing better i18n.
lmainit cvs-co(NEWS)
A sysvinit replacement that can even be configured to be sysvinit-compliant.
See its homepage for more info.
Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes)
Perl module implementing forward error correction using Vandermonde matrices
AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-co(Changes) cvs-pod (lib/AnyEvent/Util.pm,AnyEvent::Util) 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)
This module offers a simple API for I/O, timer, signal, child process
and completion events, independent of a specific event loop.
This module allows module authors to use those events internally without
forcing users of the module to use a specific event loop, without adding
noticable overhead. Currently supported event loops are EV, Event,
Glib/Gtk2, Tk, Qt, Event::Lib and POE (and thus also WxWidgets and
Prima). It contains a very fast (see benchmarks in the main manual page)
Pure Perl event loop and doesn't rely on XS, which ensures that your
program will always run even when no C-based event loop is available.
AnyEvent-FastPing cpan cvs-pod(FastPing.pm,)
This module implements a very fast and relatively flexible
ping (ping as in icmp echo request).
This module allows you to quickly send ipv4 and ipv6 pings at a defined
rate to whole address ranges. It is fully event-driven (doesn't block
the perl interpreter) and can easily generate hundreds of thousands of
pings per second. Target specification is done by specifying one or
more address ranges, to which pings will be distributed according to a
least-load principle.
A command line utility (fastping) is included.
Audio-Play-MPG123 cpan cvs-pod(MPG123.pm,) cvs-co(Changes)
A Perl module implementing an interface to mpg123.
Compress-LZV1 cpan cvs-pod(LZV1.pm,) cvs-co(Changes)
A Perl module implementing the LZV1 compression algorithm. See
Compress::LZF for a better algorithm and module.
Convert-CD cvs-pod(lib/Convert/CD.pm,) cvs-pod(bin/cvtiso,cvtiso) cvs-co(doc/) cvs-co(Changes)
Unfinished Perl project implementing CD image formats. Extracting ISO images
already works.
Convert-Scalar cpan cvs-pod(Scalar.pm,) cvs-co(Changes)
Perl module to convert between different representations of Perl scalars.
Convert-UUlib cpan cvs-pod(UUlib.pm,) cvs-co(Changes)
Perl interface to the uulib library (a.k.a. uudeview/uuenview), which
allows easy decoding of multipart mime, uuencode and a whole lot of
differently encoded messages. You basically throw files at it, and
it extracts the files in them. This module is used by the popular amavis virus scanner.
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)
A large Perl module family that implements cooperative multitasking in
Perl. It supports filehandle and event abstraction and also implements
continuations as well as the necessary directives to implement a slightly
limited call/cc in Perl.
Crypt-Twofish2 cpan cvs-pod(Twofish2.pm,) cvs-co(Changes)
A Perl module implementing the twofish encryption algorithm in Perl. It has
mostly been superceded by the Crypt::Twofish module. However, it supports
an easy and fast CBC mode natively.
Digest-Hashcash cpan cvs-pod(Hashcash.pm,) cvs-co(Changes)
Perl module to generate and parse hashcashes.
Follow the link to learn more. This module is currently faster than
the hashcash reference library.
EV cpan cvs-pod(EV.pm,) cvs-pod(../libev/ev.pod,libev-documentation) cvs-pod(EV/MakeMaker.pm) cvs-co(Changes)
A thin wrapper around libev,
a high-performance event loop. Intended as a faster and less
buggy replacement for the Event perl module. Efficiently supports
very high number of timers, scalable operating system APIs such as
epoll, kqueue, solaris's ports, inotify, child/pid watchers and
much more.
A mailing
list for discussion and support is now available.
EV-ADNS cpan cvs-pod(ADNS.pm,) cvs-co(Changes)
An asynchronous stub resolver that integrates efficiently into
the EV event loop. Uses adns/libadns as backend.
Net-SNMP-EV cpan cvs-pod(EV.pm,) cvs-co(Changes)
An adaptor that integrates the Net-SNMP Perl module into the EV event loop.
Loading it suffices to make background requests in EV programs.
libev cvs-co(README) cvs-pod(ev.pod) dist
A full-featured and high-performance (see benchmark) event loop that
is loosely modelled after libevent, but without its limitations and bugs. It is
used, among others, in the GNU Virtual Private Ethernet and
rxvt-unicode packages, and in
the Deliantra MORPG Server and Client.
Features include child/pid watchers, periodic timers based on
wallclock (absolute) time (in addition to timers using relative
timeouts), as well as epoll/kqueue/event ports/inotify (for file watchers) support,
fast timer management, time jump detection and correction, and ease-of-use.
It can be used as a libevent replacement using its emulation API or
directly embedded into your programs without the need for complex
configuration support. A full-featured and well-documented
perl interface is also available.
A mailing
list for discussion and support is now available.
libeio dist cvs-pod(eio.pod,) cvs-co(eio.h) cvs-co(demo.c) cvs-co(Changes)
Event-based fully asynchronous I/O library for C (used by IO::AIO).
Currently in BETA!
Libeio is a full-featured asynchronous I/O library for C, modelled in similar style and spirit as libev. Features include: asynchronous read, write, open, close, stat, unlink, fdatasync, mknod, readdir etc. (basically the full POSIX API). sendfile (native on solaris, linux, hp-ux, freebsd, emulated everywehere else), readahead (emulated where not available).
It is fully event-library agnostic and can easily be integrated into any event-library (or used standalone, even in polling mode). It is very portable and relies only on POSIX threads.
Its code, documentation, integration and portability quality is currently below that of libev, but should soon be ready for use in production environments.
libspf cvs-co(README) Libspf is a C library that implements the Sender Policy Framework. It allows software to identify and reject forged envelope-from addresses, a typical nuisance in e-mail spam. SPF is defined in Experimental RFC 4408. This is not the original home of libspf, but its author (apparently) has vanished for a few years now, and this place took over as a central place to collect patches and possibly make releases. James Couzens, if you read this and want to take over, feel free to contact me, I'd be thrilled :) File-Rdiff cpan cvs-pod(Rdiff.pm,) cvs-co(Changes) A Perl module that generates remote signatures and patches files using librsync: basically your interface to librsync. EV-Glib cpan cvs-pod(Glib.pm,) cvs-co(Changes) This perl module embeds the default Glib mainloop into the EV event loop. This makes it possible to use callbacks or modules using the Glib module (e.g. Gtk2 programs) within EV programs. Just loading it suffices. See the Glib::EV module for the reverse approach. Glib-EV cpan cvs-pod(EV.pm,) cvs-co(Changes) This perl module patches the default libglib main loop context to use the EV module. This makes it possible to use callbacks or modules using the EV module within Glib and Gtk2 programs. Just loading it suffices. See the EV::Glib module for the reverse approach. Glib-Event cpan cvs-pod(Event.pm,) cvs-co(Changes) This perl module patches the default libglib main loop context to use the Event module. This makes it possible to use callbacks or modules using the Event module within Glib and Gtk2 programs. Just loading it suffices. GPS Undocumented, unreleased and unfinished-but-working interface to some GPS devices in Perl. Linux-DVB cpan cvs-pod(DVB.pm,) cvs-co(Changes) A perl module that implements a very direct interface to the Linux DVB API. Also contains utility functions to decode SI data. Devel-FindRef cpan cvs-pod(FindRef.pm,) cvs-co(Changes) A Perl module that tries to track down references to perl values. Can be a great aid in debugging leak problems by showing where a value is still being referenced. BDB cpan cvs-pod(BDB.pm,) cvs-co(Changes) A Perl module implementing an interface to BerkeleyDB versions 4.4 and later. Unlike the BerkeleyDB and DB_File modules, this module has a much more C-like interface exposing all the features of the underlying library and also executes all database changes asynchronously using a thread pool. IO-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes) A Perl module that implements asynchronous I/O using pthreads. Apart from AIO reading and writing, this module also allows asynchronous stat, open, unlink (and more) calls, which often are a substantial blocking problem. See also its (outdated) brother Linux-AIO. JSON-XS cpan cvs-pod(XS.pm,) cvs-co(Changes) JSON::XS implements JSON (http://www.json.org) for Perl. Unlike other modules, its primary goal is to encode to syntactically correct JSON and flag invalid JSON while decoding. It ensures round-trip integrity of datatypes while being intuitive to use. Currently being the fastest of the JSON encoders available for Perl, it supports a variety of format options, such as single-line, ASCII-only or pretty-printed and can be tuned for speed or memory usage. It comes with a wealth of documentation describing usage and implementation details. Linux-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes) A Perl module that implements asynchronous I/O using clone on Linux. Apart from AIO reading and writing, this module also allows asynchronous stat, open and close (and more) calls, which often are a substantial problem. See also its (newer) brother IO-AIO. Linux-Inotify2 cpan cvs-pod(Inotify2.pm,) cvs-co(Changes) A better/less buggy/more portable interface to the Linux Inotify subsystem then what Linux::Inotify has to offer. Inotify lets you receive file change, create, move etc. events for directories in files in a more scalable fashion than dnotify, the older mechanism. 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) A Perl module that helps implementing netblock block device servers and set up NBD instances. A sample application allowing you to mount most CD images is included. Mozilla-Plugin Undocumented, unreleased and unfinished-but-somewhat-working Perl plug-in for Mozilla (Netscape, Opera, IE...), that allows embedding Tk, Gtk etc. plugins directly in the browser. Net-FCP cpan cvs-pod(FCP.pm,) cvs-co(Changes) Perl module implementing the Freenet client protocol, including client-side Metadata handling and CHK Key generation. Includes a mass downloader (similar to fuqid) as sample application. Net-Whois-IP Undocumented, unreleased and unfinished-but-somewhat-working Perl module that tries to find the corresponding whois entry for a given IP, by querying various registries. OpenSSL Undocumented, unreleased and unfinished-but-somewhat-working Perl module interfacing to libssl. PDL-Audio cpan cvs-pod(audio.pd,) cvs-co(Changes) Perl module extending PDL with all sorts of audio functions for generating, analyzing, loading and saving sounds. Ever so popular is the "birds" demo script :) Tree-M cpan Perl interface to the broken M-Tree library by these italian guys... Video-Capture-V4l cpan cvs-co(README) cvs-co(Changes) Full-featured interface to Video for Linux, including real-time grabbing and jpeg compression, VPS etc. decoding and many sample scripts that facilitate automatica sender search and detection, EPG decoding and viewing and video grabbing. XML-DB Undocumented, unreleased and unfinished Perl module implementing an "XML database", i.e. a tree-based database, on top of a conventional SQL database. basex Very old, very portable ANSI-C program that implements something that is similar to yencode. yencode is more "standard", so don't use this. dinfo Undocumented and working tools to extract the data from the D-Info CD. syncmail Unfinished, undocumented and not working. thttpd A personally hacked version of thttpd, suitable for lots of file transfers (normal thttpd has problems with this). wvsniff Undocumented but nicely working wavelan sniffer that I wrote for use with my cisco aironet card. If you get it working, praise yourself. ermyth cvs-pod(doc/poddoc/documentation.pod) cvs-co(Changes) This is a fork of Atheme IRC Services. Ermyth IRC Services is a set of Services for IRC networks that allows users to manage their channels in a secure and efficient way and allows operators to manage various things about their networks. Ermyth has been ported to C++ and goes its way using modern concepts and the object oriented paradigm. dhcpping cvs-pod(dhcping.pod,) A version of dhcpping enhanced by Marco Maisenhelder to support passing dhcp options. Intended to test dhcp server implementations. AnyEvent-HTTPD cpan-elmex git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes) A simple and plain event based http web application server Perl module. This is a very basic HTTP server that allows the user/programmer to install hooks for URL paths to generate the output. It uses AnyEvent to be easily embeddable into other applications. The main objective was to make it easier to make simple HTTP frontends in Perl for Perl programs and Perl modules. Object-Event cpan-elmex git-pod(lib/Object/Event.pm,) git-co(Changes) A simple event callback API for Perl. This is just a very simple event callback registration and call API which new Perl classes can inherit. It's mainly used by Net::XMPP2. AnyEvent-EditText cpan-elmex git-pod(lib/AnyEvent/EditText.pm,) git-co(Changes) A Perl module which allows editing any text via an editor in a seperate process. A utility Perl module that will start a terminal/editor for you and will wait non-blocking for you to finish editing that file. Very useful to embed content edititing in event based programs that have a AnyEvent compatible event loop. psycpp A project that was aimed to implement a PSYC server in C++. This is a mostly abandoned project at the moment, however, the repository contains interesting C++ code that might be useful to someone, especially the C++ JSON implementation might be of interest. The project is mostly dead at the moment though... gtm git-co(README) GT.M Database GT.M is a a vetted, industrial strength, transaction processing application platform consisting of a database engine optimized for high TP throughput and a compiler for the M (aka MUMPS) programming language.