This page contains source code to miscellaneous pieces of open source software that I (Matthew Ogilvie) have worked on.
mkdep.c (2016-03-13) - Generate include file dependencies for makefiles. The original was written by Linus Torvolds for use by the Linux 2.0.X source distribution. This version is substantially enhanced to support high-performance "auto-update" dependencies using a cache file, as well as other operating modes. See comments in file. (TBD: Release full makefile rules framework that uses this tool...)
files.cgi (2014-07-30) - This is a small self-contained web/CGI utility for managing a temporary file exchange site. You can create "area"s with secret randomized names (tokens), upload and download files to an area, and areas will automatically be deleted after a few days of inactivity. My personal instance is running here, although I don't need it much. The company I work for runs a couple of instances (different divisions); it is really handy for sharing files with customers that are too big to email.
checkDiffWhitespace (2012-02-13) - This is a small script for checking for and warning about violation of various whitespace conventions. As a script, it can be fairly easily customized for conventions you actually care about. The intention is to use it with git, by wrapping it with small scripts in .git/hooks/prepare-commit-msg and/or .git/hooks/post-receive. See also cvsHtmlDiff under the cvsenhancements link below.
dbug-2012-09-07.tar.bz2 - Binary file examination tool.
It includes a 386 dissassembler.
It includes a partial FAT16 filesystem decoder that I used to recover data from a partially corrupted hard disk image once. It can save the recovered files to a .cpio file.
Limitation: It makes a lot of 32 bit assumptions. That was gigantic when I wrote it...
As of 2012, I've made a few small tweaks so I can build it with modern versions of gcc. But other than that, it hasn't changed since 1996.
doscc-2012-09-07.tar.bz2 - 32 bit DOS C compiler. Also includes an assembler, linker, test programs, etc. Uses (and includes) a custom DOS extender wrapper program.
It is fairly good (it can compile itself; I did some of my college homework using it; etc), but of course it isn't as good as gcc.
I wrote this in the early 1990's. Developed on a Microport UNIX System V/386 v2.1 (ca 1987) system, and it targets DOS. It probably needs tweaks to build under Linux/gcc; I've never tried. The only recent change was the addition of a README file.
i8259-imr-test-2012-09-02.tar.bz2 - Boot sector test program to demonstrate a bug in qemu. Also useful as an example of how to build a boot sector with the GNU toolchain. (Specifically, show that if an active interrupt line in a real i8259 slave chip is masked off with the IMR register, then the master chip should cancel the forwarded IRQ2 as well. Originally I thought there was a special case to treat IRQ2 as level triggered, but actually edge triggered ONLY effects rising edges, not trailing edges. Trailing edges always act level triggered.)
cvsenhancements (home page) - Various small support scripts and enhancements for CVS. I still occasionally use cvsHtmlDiff (it supports git as well), and cvsChangeLocation.
xrpn (19sep2002) - A small RPN-style calculator GUI. It uses the GTK+ toolkit. (The tar file was created in 2002, from source that hadn't been touched since 2000.)
Instead, you can set up a rule to "forward as attachment", and then use a combination of this tool, some procmail rules, and a shell script (included) to read your mail on any UNIX system with any standard mail reader.
You can also just download a patch.
A "redirect" rule is a poor solution because it scraps the "From" and "To" addresses in the message's header.
See the included "README.extractMsg" for more information.
zoneTool (download) (30jun2006) - a simple tool for maintaining DNS databases. It allows you to maintain the bulk of your DNS database in your /etc/hosts file, while still providing ways to customize DNS-specific entries.
I have a lot of other little things I've done; I'll try to gradually add them here.