This is archived content, mostly untouched since 2003. For newer content/updated versions, see

  W and AWaldvogel & Aschwanden
   Roman Pletka
   Nicola Aschwanden
   Lars Waldvogel
   Marcel Waldvogel


Public Sources

All the sources below come with no warranty whatsoever. They are provided for your entertainment, and did work for me at the time I wrote them. Many of them are just quick hacks. I have not tested them anywhere else, and what they do on your setup is something I cannot foresee, although I honestly think they are harmless and useful. They are copyright © Marcel Waldvogel. Please let me know if you find any of them useful. Please note that the contact information in the files included here is outdated.

If you like this, consider spending some time visiting John Chambers' source tree.



  • Importing environment variables from ~/.MacOSX/environment.plist into shells: Tools such as SSHAgent allow you to manipulate the environment.plist file which defines the environment that will be set on MacOS X console logins. Besides the uses for SSHAgent, it is also helpful for embedded svn clients, which require LC_CTYPE to be set before they allow the handling of non-ASCII filenames. To avoid having to also add (and maintain!) this information in ~/.cshrc, ~/.profile etc. files, importenv allows you to set the shell's environment according to environment.plist, even when doing remote logins via e.g. ssh. Instructions can be found inside the short script.
  • More complete MacStumbler Vendor.plist file: This is an autogenerated file using from Wireshark's /etc/manuf. As such, it recognizes many more actual vendors of IEEE802.11 gear, especially motivated by the lack of Airport Express recognition. To use this list, replace the existing Vendor.plist in the wrapper directory, more specifically in Contents/Resources/Vendor.plist. After the next launch, it will recognize many more devices and vendors.
  • is a small script to convert an Wireshark /etc/manuf file into a MacOSX Property List, to be used by MacStumbler.


Some weird tools and one debugging library that are probably only useful to a select few:
  • converts an EPS file created by any of the Ghostscript converters (such as eps2eps, pdf2ps using PDFWriter) to a Ruby script using the Ruby PDF::Writer library. Feel free to use it.
    An alternate output format using PDF::Writer's polygon functions can be found as
  • 404 (404.cgi) is an example CGI (in Perl) for handling HTTP 404 "Not Found" error messages. Its original purpose was to display a Google search dialog which has useful search keywords already filled in, as determined from the failed URL. It is localized for German and English, adding your own localization language should be simple.
    404 was later extended to augment the mod_speling Apache module to work with content negotiation. mod_speling has support for content negotiation. But it is off by default and requires recompilation to enable, breaking automatic upgrade paths and making it a hassle for web hosters that want to serve non-content-negotiated sites/pages as well. This script provides this and also does not add extensions that were not provided (unlike mod_speling).
  • error (tarball) is a versatile, completely configurable logging library. Using compile time and run time options, the verbosity of the output can be easily tuned using multiple parameters. At compile time, the overhead associated with the debugging statements can also be controlled. Error further provides a syslog()-compatible interface to run syslog() clients at different debugging levels without the need to have root access to /etc/syslogd.conf.
  • mlock (C source, tarball) makes physical memory inaccessible to other applications in a running system (if you have the appropriate permissions, usually "root"). You can use that to compare the performance of applications under different amounts of available memory.
  • fullsleep (C source, part of the mlock tarball) sleeps for the full specified amount of time. Unlike regular "sleep", it does not terminate when receiving a suspend signal (i.e., when the user would like to background it).
  • memperf (C source, tarball) is a weak attempt at checking access speed to memory using sequential and random accesses.
  • pidwrap (C source, tarball) makes the process IDs wrap. You can use that to give your process a neat, small process ID. Other uses include verifying PID-based locking or interprocess communication (IPC) mechanisms. Unfortunately, it doesn't spare resources.
  • planter (Perl script, tarball) "plants" a lot of menu trees in your web pages. This is used to automatically generate the navigational bar all my web pages have from a single config file. Unfolding and ollapsing of the subtrees is done automagically.
  • mounted (C source) runs a given program while making sure the given list of automounted directories remains mounted during the process. This is useful for some activities (typically involving find or tar): Often you don't want to name the automounted directories themselves, when the directory scan also involves higher-level directories (then, the directories that would already "naturally" be mounted would be traversed and possibly archived twice).
  • unman (sed script; same without comments (to impress your friends and have them confess their cluelessness :-) )) post-processes formatted manual pages into Rich Text Format (RTF). Without the comments, it might be suitable for an "obfuscated sed scripting contest", if sed scripts were not obfuscated by definition :-).
  • cpfacl (shell script) copies the Sun-style NFS file access control lists (ACL) from one file or directory tree to another.
  • count_mcast_senders (shell script) counts the number of senders per MBone multicast group. It requires access to a dump of mrouted's cache (named mrouted.cache).
  • f (shell script) simple script converting from degrees Fahrenheit to degrees Centigrade (or, as we Europeans say, Celsius), or vice versa.
  • spr, dpr, tpr (shell scripts: spr, dpr, tpr) are wrappers for lpr, adding a simple PostScript header selecting single-sided (spr), duplex (dpr), or tumble duplex printing (tpr, duplex for a long binding edge). The only parameter they understand is "-P" (with the printer name immediately following, no white space allowed).
  • dhcpcd-plex (shell script) provides multiplexing for the dhcpcd DHCP Client Daemon. Instead of only remembering the last address assigned to a particular interface and reusing it later, it remembers the address per network card (as determined by the Ethernet MAC address). This is useful when you roam between multiple locations and would like to retain the previous address (and use a network adapter per location, i.e. a wireless card at home and an Ethernet card at work). It becomes necessary if one of the network's DHCP server(s) are misconfigured in that none of them consider themselves authoritative. When your DHCP client then tries to renew the lease on an outside IP address, your client will have to wait indefinitely for an answer, as none of the local servers refuses your address. By multiplexing multiple "configurations" and multiple network cards with dhcpcd-plex, this problem can be avoided, in addition to your keeping an assigned (and remembered and maybe even beloved) DHCP address for longer.
  • icon2xbm (shell script) converts a Sun monochrome 64x64 .icon file into an .xbm file.
  • openURL (aka open) (shell script) opens the file or (partial) URL in KDE, using the correct application (kfm/konqueror, kedit, ...).
  • sofix (shell script) fixes slide directories generated by StarOffice to look nicer (IMHO): All HTML files end in .html, carriage returns are removed, the table of contents are reformatted to look more compact, there are no references to "index" files, but instead to the directory itself, an uplink to the parent directory is generated. In addition, the image is annotated with an automatically generated ALT tag containing the text from the slide (the text is limited to what StarOffice outputs for the ASCII version of the document). The same text also gets put into a META tag.
  • sumup (shell script) sums up all the values from stdin or the given file. The separator between the numbers should be tabs, spaces, or linefeeds.
  • tablist2html (shell script) converts a tab-separated list into an HTML table (with a few features).
  • redir (perl script, tarball) provides a minimalistic ad banner filter. For more documentation, see the README in the tarball.
  • reiserfsdump (perl script, tarball, README) provides a dump-style interface to (GNU) tar. This is useful if you have file systems for which there is no native dump for your file system, but your backup administrator can/will only call dump on your machine. For file systems with native dump capability, it forwards the call to the real dump (which needs to be renamed to /sbin/dump.bin. I used this to allow our backup operator to dump ext2 and reiserfs partitions on a single machine with a common interface. reiserfsdump only provides a crude parser for the dump command line.


Here you find a few tools that are (or were?) useful on NeXTs:
  • idled (C source, tarball) was written to have my NEXTSTEP computers display a reasonable idle time on the console when you do finger, w, or rusers.
  • evs (C source, tarball) is a small tool to get the status from and give commands to the event status driver, the driver controlling mouse, keyboard, speaker volume, screen brightness and dimming.

    It is nice to use if you want to find out more about your system or get/set the information from the command line (most of the information can already be set from You can also look at the source on how to do this programmatically.

  • setautodimlevel (C source) sets the autodimlevel to the first parameter (ranging from 0.0 to 1.0) or 0.0 if none is given. This is used to make the screen as black as possible when nobody is logged in (e.g. in the logoutHook). With the availability of evs (see above), we could also use a shell wrapper around evs to perform this function.
  • pp (C source, tarball) is a small tool to get the status from and give commands to the parallel port driver. It is nice to experiment with and find out the optimal retransmit timeouts, but I also used it as a general debugging tool when attaching my printer.

Atari ST/m68k assembly

The charset used is Atari-specific (IBM DOS charset with some modifications). All the documentation (including comments in the sources) is in German. May Babelfish be with you :-). The directly-referenced source files have been changed to ISOLatin1, the tarballs are in their original format. If you would like to translate a file in the tarball, use something along the lines of my dos2unix. There is much more, but this is only useful to people that still own and use an Atari ST/TT (I doubt there is still a large enough population out there).
  • Guck (m68k assembly, tarball) is a pretty universal viewer for the text, image, and vector graphics file formats then (1990) used on the Atari ST. And that in 11KB binary (no shared libraries or DLLs)! The program itself is coded in Assembly language. If you are looking for some archaic stuff or need to read an old document, this may be useful for you.

    Binary packages of this (including newer stuff added by Patrick Seemann) can be found on LEO, featuring browsable contents. There is also an English version available.

  • Faithful image rotation (m68k assembly) rotates the given image and allows to zoom out at the same time (zoom in would require a small modification). At the time I wrote the source originally, this gave by far the best results of any other monochrome (1-bit) rotation routine I had seen. And the best of all: it was realtime on an 8MHz-mc68000!

Copyright 2000-2002 Marcel Waldvogel.