#!/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/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.
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-DNS cpan-elmex git-pod(lib/AnyEvent/DNS.pm,) git-co(Changes)
A non-blocking DNS resolver with AnyEvent using Net::DNS.
This Perl module is a simple wrapper around Net::DNS, which provides
a non-blocking interface to make DNS queries with Net::DNS.
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.