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.
I've written some OAUTH2 Instructions (with links to various scripts and patches) for getting fetchmail and postfix to support using OAUTH2 to receive and send email, such as may be required for some configurations of gmail.
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.