Open Source


System Integration


Open-source software patches

This list provides a record of a number of my contributions to open-source software. I hastily wrote some of the patches here to solve some problem; I wrote others more carefully, and many were accepted into their upstream projects.
A patch for the Advanced Linux Sound Architecture utilities which adds mute toggling to amixer. This really makes sence when a user wishes to use a remote control or joystick to control his sound device. For example, the command amixer set Master toggle could be run whenever the mute button is pressed on a remote control.
Asterisk's realtime LDAP module, with fixes from subversion, backported to Asterisk 1.6 Beta 9. This bug is documented in Asterisk bug #12572.
A patch for Red Hat's authconfig tool that adds the ability to configure pam_mount.
A simple patch for Miklos Szeredi's AVFS that makes avfscoda work with /dev/coda/0, a devfs style device name, out of the box.
A patch for Jay Painter and Stuart Parmenter's Balsa. When this patch is applied, a user may specify mail attachments on the command line using the -a or --attachment option.
Incidentally, this patch allows one to integrate Balsa very nicely with the graphical shell Nautilus. One can right click on selected files, scale them to a reasonable size, and open a new mail message with them attached if one places my mail_file script in their Nautilus scripts directory. Mail_file is distributed in my nautilus_scripts package.
balsa-2.1.0-ab-window.c.dnotify balsa-2.1.0-ab-window.h.dnotify
A patch for the balsa email client that reloads a user's address book automatically when a dnotify event indicates that it has changed. This replaces the reload button.
A patch for the balsa email client that fixes some issues with attaching files from the command line.
A patch for the balsa email client that causes the program to ask if it should be the default email client when run for the first time.
bluefish-0.12-desktop.patch.gz gnome-vfs.keys-bluefish.patch.gz
Patches that integrate Bluefish into the GNOME MIME system more effectively.
A patch that allows one to input a key into cryptsetup using hexadecimal notation.
A patch for dia that allows one to use dia's -t and -e options together.
A patch for dia that begins to add support for GNOME VFS.
A patch for the DirectFB library which allows it to work with new-style Linux joystick device names (/dev/input/js?).
A patch for EsounD which adds the two command line options which permit non-owners to control the dæmon.
A patch for the Linux kernel's gamecon joystick driver that causes the driver to manage its usage count correctly.
A patch for gdm that ensures the X server is reset (and all X programs exit) before calling pam_session_close. This is required if a PAM module like pam_mount is to unmount a user's home directory upon logging out because programs like xscreensaver will block an unmount with open file descriptors.
ghostscript-7.07-gtk2 ghostscript-7.07-omni-glib2 ghostscript.spec-glib2
Three patches that cause Red Hat's ghostscript 7.07 packages to build against glib2.
A patch for gnome-keyring that adds command line utilities to manipulate keyrings.
A patch for gnome-session that ensures gconfd-2 quits when a user logs out.
A patch for gnome-session that ensures gnome-keyring-daemon is not executed if it is already running.
A patch for gnome-volume-manager that adds LUKS encrypted volume support.
gpdf-20031022-highlights gpdf-20031022-tools
Patches that add the ability to add highlights to a PDF file using gpdf.
A patch for Grilo that adds support for the DMAP family of protocols.
grub-1.96-20080813-dmi.patch.gz cryptsetup-1.0.5-dmi-v2.patch.gz
Patches for grub and cryptsetup that add the ability to read an encryption key from an SMBIOS record. The grub modification is dependent on Michael Gorven's encryption patch. Gustavo Duarte wrote some great documentation on the Intel Architecture boot process that I used while writing this patch. Documentation covering the SMBIOS records may be found here.
A patch for GNOME Snes9x which adds three useful features. First, support for configurable joystick device names is added. This makes it easiy to use GSnes9x on a system which manages its devices using devfs. Second, the patch causes GSnes9x to honor the standard --geometry option. Finally, the patch allows the basic controlling of GSnes9x with a joystick device.
Patch that helps gst-launch-ext create pipelines to play QuickTime files.
gst-ffmpeg-0.7.1-cinepak.patch.gz gst-plugins-0.7.5-cinepak.patch.gz
Patches that enable FFmpeg's cinepak support in GStreamer.
hal-20050211-luks-1 hal-20050211-luks-2 hal-20050301-luks-3 hal-20050302-luks-4 hal-20050312-luks-5 hal-set-strlist-1.patch.gz
A series of patches that add support for encrypted volumes to HAL.
A patch for Fedora's initscripts that adds support for mouse emulation. This is useful with one-mouse-button Apple laptops.
A patch for Fedora's initscripts that adds support for encrypted swap.
A patch for Dr. Rainer Johanni's lavtools. When applied, lavtools will use a more modern QuickTime for Linux distribution, allowing lavtools to be used with the Broadcast 2000 video editing application.
A patch for libgphoto that allows it to run on OpenBSD.
A kludge which allows the use of libnice on an OpenVPN client. See libnice task #7583.
A patch for the Linux kernel that enables passive profiling of unprivileged Xen domains.
Development of Gratien D'haese's Make CD-ROM Recovery utility is now performed using SourceForge. I have been given write access to the project's CVS tree, so you can get my contributions there.
A patch for the movespam Roundcube plugin which modifies the plugin to permit moving spam messages based on an arbitrary IMF header.
A patch for ncpfs that adds the ability to read passwords from the environment variable PASSWD to ncpmount. This makes ncpmount play nicely with pam_mount.
Because environment variables are not a safe way to transmit passwords, pam_mount now uses a new technique. This patch is no longer required. All that is required is ncpfs >=
Fixes Netatalk's configure script to support building in a cross-compile environment.
A patch for OpenPAM. When applied, OpenPAM should build on OpenBSD. The patch also fixes a few bugs in OpenPAM's su.
A trivial patch for openssh which makes the -q quiet mode a little more quiet. I wrote this because I was tired of cron emailing unnecessary error output from ssh every time ssh was run.
A patch for devfsd that allows it to work nicely with pam_console.
A patch for pam_ccreds that adds a setuid helper utility. This allows portions of the PAM module to execute with higher privileges than the calling application (e.g., xscreensaver).

A patch for the PLIP driver contained in the 2.4.3 version of the Linux kernel. This patch allows one to use PLIP with computers which have an interrupt-less parallel port and a slow processor. The stock PLIP driver constantly times out on my 80486-based laptop. This patch adds the ability to specify two key values, trigger_wait and nibble_wait, when loading the PLIP driver.

Using this patch and adding the following entry to the modules.conf file on the computers on either side of my PLIP link makes the connection work nicely:

 ## Because my laptop is so slow.
options plip                    trigger_wait=50000 nibble_wait=300000
A patch for Heroine Virtual's QuickTime for Linux library which, in my opinion, improves its build process. The project now uses autoconf, automake, etc. and shared libraries and RPMs are now easily built. The mainstream distribution includes copies of libraries such as libdv to build; this patch causes QuickTime for Linux to build against shared libraries already existing on a system.
The Libquicktime project now exists to bring some modern features to QuickTime for Linux. These include the same build process changes that are in my patch.
Patch to replace DAAP-related code in Rhythmbox with libdmapsharing.
A patch for SDL that fixes support for Linux's modern joystick device names (/dev/input/js?).
A patch for SDL. When applied, SDL provides a cross-platform means of enabling and disabling screensavers.
A patch for Theodore Ts'o's Linux serial driver which adds very ugly support for Actiontec's 56K Internal PCI Call Waiting Modem. This patch causes the driver to be hard-wired to auto-detect this modem. I believe that the Lucent Venus chipset may be buggy, and am currently working with Lucent, Actiontec, and Theodore Ts'o to fix it.
I have written open letters to Agere and Actiontec.
I wrote a kernel module to demonstrate the problems I am having with the Venus chipset. The module writes a value to the interrupt enable register (IER) on one's modem. It then immediately reads the value stored in the IER. Reading a value from the IER that does not equal the value written to it seems to represent a bug in the chipset. Theodore Ts'o's serial driver makes extensive use of a modem's IER when it performs detection operations; thus detecting a Venus-based modem often fails.
To try this test on your own machine, download the kernel module and read the directions included in the source file.
A patch for the standard linux shadow utilities that casues login to retain its root privileges until it call PAM's close session code. This allows pam_mount to work properly with login and is correct behavior. Gdm, su, etc. already do this.
A patch for Gary Henderson's snes9x which allows the SNES emulator to play sound through EsounD. The patch currently causes a lag in the emulator's audio, due to latency in EsounD.
A patch for Jeffrey Stedfast's Spruce email client. This patch allows one to use the external program fetchmail to retrieve one's mail when Spruce's Check button is pressed. Once the patch is applied, look for the Use External Fetchmail Program check button under the accounts tab of the options menu. Fetchmail has a few added benefits, such as allowing one to encrypt a connection to a pop server using ssh.
Another patch for Spruce. This patch allows MIME encoded attachments to be displayed using metamail. Look for the Display item in the Attachments menu.
Development of TuxNES is now performed using SourceForge. I have been given write access to the project's CVS tree, so you can get my contributions there.
A patch for util-linux that fixes umount's behavior when dealing with volumes remounted using --bind. When looking up data in /etc/mtab in order to unmount a volume, any mnt_dir match should take priority because unmounting by fsname is obsolete. Otherwise unmounting a volume that was also mounted with --bind will misbehave (Parent's mnt_dir is child's mnt_fsname).
A patch for Gerd Knorr's xawtv. When applied, streamer will be able to save captured video using the QuickTime format.
A patch for Gerd Knorr's xawtv. When applied, streamer will be able to save YUV2 captured video using the QuickTime format. YUV2 is 16 bits per pixel, rather than 24 like QuickTime's raw encoding. I can capture 30 frames per second at a resolution of 640x480 pixels when using YUV2 and SGI's XFS filesystem on my machine.
A patch for Gerd Knorr's xawtv. When applied, streamer will accept a time, such as 3:52, as the argument to its -t option.
A patch for Gerd Knorr's xawtv. With this patch applied, fbtv may be controlled with a joystick.
A patch for Xen that modifies xl to allow the use of /dev/null as the domain configuration argument to its create option. xl treats the configuration argument /dev/null as a special case. This allows specifying an entire domain configuration on the command line.
A patch for Xen that allows the specification of local vif scripts that augment that standard scripts such as vif-bridge.
A trivial patch for xine which adds support for QuickTime files which contain twos encoded audio.
A patch for xine-lib that allows it to run on OpenBSD.
A patch for xine-ui that allows it to run on OpenBSD.
A patch for XMMS which adds the standard --geometry command line option.
A patch for Adam Williams' Xmovie. When applied, Xmovie will choose and switch to the most appropriate X video mode when playing back full screen video. This can save a lot of CPU cycles, as the CPU may not need to scale the video to the screen.
A patch for Adam Williams' Xmovie that fixes the vidmode scaling code. As an added bonus, it fixes two lines in mpeg3io.h that were illegal in C, though fine in C++.
A nasty patch for the zsnes Super Nintendo emulator which allows one to quit the application by pressing L-R-Start on one's gamepad.
Email: webpage@flyn.org — ✉ 315A South Moore Loop; West Point, New York 10996; USA