This page contains lots of little programs that you can download for linux.
All of them have been written by me and, where possible, I'll give you the
source code to play with. Unless otherwise specified, all software is covered
under the GNU General Public License.
| aquest |
auto-question is a basic multiple-choice question and answer program. It takes questions and a quiz configuration
in XML, then presents the quiz to the user on a VT220/ANSI capable terminal. The program uses libreadline for its
input handling, libexpat for reading XML files.
|
download/aquest-0.2.0.tar.gz (157.0k)
download/aquest-0.2.4.tar.gz (174.5k)
|
| asmframe |
asmframe is a simple C wrapper for small assembly programs.
It's main use is for playing around with assembly language
programs on Linux/i386. It provides basic input and output
routines. I have plans to make it do more in the future though.
|
download/asmframe-0.1.tar.gz (5k)
download/asmframe-0.1.README (1.4k)
|
| asmprofile |
asmprofile is a simple assembler profiler. It looks assembler source
files and generates instruction counts. The instructions it knows about
are hard-coded, but easily modified. The next version will generate some
more useful information, like instruction grouping info.
The bulk of this program was created by autoproject, which is suprisingly
useful.
|
download/asmprofile-0.1.tar.gz (124k)
|
| avrasm |
avrasm is an assembler for the Atmel AVR series of processors.
It's still fairly early days (haven't really touched it much since 1999), but it works enough for me to use it with my AT90S1200.
Updated 22/07/2002. Here's a slightly happier version. 0.5.0 had some instruction encoding errors, plus other
bugs. 0.5.1 is currently generating code which runs on the AT90S1200, AT90S2313 and AT90S8515.
Updated 27/03/2004. Added a tarball that contains fairly standard assembler include files for the AT90S1200, AT90S2313 and
AT90S8515.
|
download/avrasm-0.5.0.tar.gz (68.6k)
download/avrasm-0.5.1.tar.gz (73.1k)
download/avrasmincludes-0.5.1.tar.gz (0.7k)
|
| avrprog |
avrprog is a serial-programmer via the PC's parallel port. Currently, I've only had success in programming the AT90S8515 using
this, but other chips with the SPI logic in them should work too. Never managed to get it to program the AT90S1200.. The
programmer hardware is trivial, just straight-through connections:
| parport (pin) | AT90S8515 (pin) |
| nStrobe (1) | SCK/PB7 (8) |
| PE (12) | MISO/PB6 (7) |
| nSelect (17) | MOSI/PB5 (6) |
| ground (25) | ground (20) |
The current state of things requires manual intervention on the AVR's reset line, as such the program must always be run with
the `--nrc' option. I've also done a little diagram of the programmer. I'm powering
this off an external 5v supply (old AT PSU).
|
download/avrprog-0.1.0.tar.gz (55.1k)
download/avrprog-0.1.1.tar.gz (83.1k)
|
| bintohex |
bintohex is a program which converts between various number formats.
It currently supports binary, octal, decimal and hexidecimal. The
default output format is specified on the command line, defaulting to
decimal if not specified. The -s flag can be given to caused signed
decimal output, input can either be signed or unsigned.
|
download/bintohex-0.1.tar.gz (124k)
download/bintohex-0.1.1.tar.gz (97k)
|
| cdtool |
cdtool is the upgrade for chcd. It's still not very clever, but it's
a bit nicer. It'll change CDs on a juke-box, and eject discs. Edit the Makefile
to set stuff specific to your system.
|
download/cdtool-0.1.tar.gz (2.5k)
|
| datefix |
datefix turns dates from dd/mm/yyyy format into RFC-822 compliant dates. Very simple, but does the job. Used in
various scripts that need to produce RFC-822 style date outputs from simple input (e.g. changelogs).
|
download/datefix-0.0.1.tar.gz (84.9k)
|
| em |
em is a simple script to allow the editing of MH mail messages.
It can be run on it's own, em, or in the usual MH style,
em +inbox 1000.
|
download/em (2.2k)
|
| fakerup |
fakerup, a simple program to generate fake ruptime information. To get other hosts
to respond successfully, you'll need to run this as root and provide the option "-s 513"
so that remote (rwhod) servers allow the packet.
|
download/fakerup-0.9.0.tar.gz (58k)
|
| fbounce |
fbounce is a very simple port redirector. I wrote it in about 4 hours
so don't expect too much! It redirects ports quite nicely.
Updated 11/12/2002, now autoconf'd / automake'd and tidied
up the option processing. Got versionified, now 1.0.1.
|
download/fbounce-1.0.1.tar.gz (81k)
download/fbounce.tar.gz (4k)
|
| findleaks |
findleaks is a collection of functions that wrap over malloc(), calloc(), realloc() and
free(). When a program has finished you can read the log to view what activity happened,
and any leaks, if they occured. Look at the readme file herein for more.
|
download/findleaks.tar.gz (2.2k)
|
| fsupport |
These are my stock "support" functions for C. "dmem" is a dynamic memory
allocator, loosely based on Brinch Hansen's parallel allocator with address-mapping
for blocks smaller than 24k. The memory pools are arranged in "half-powers" of two,
starting at 32 bytes, e.g.: 32, 48, 64, 96, 128, ... up to 32 megs. Where possible
it will use anonymous memory mapping to get memory; the system malloc otherwise.
The "configure.ac" file provided shows what sort of thing is needed to
auto-guess the settings. The tests will not scan for a suitable memory-base, but
chooses 0x40000000 on solaris and cygwin, 0x80000000 on Linux and *BSD.
The other stuff in "support" provides dynamic arrays and string-based hash
tables.
|
download/fsupport-0.1.tar.gz (99.7k)
|
| gametest |
During the 1997 summer hols, I thought it would be a cool idea to try and write
a game in X. I toyed with some ideas for a while, and came up with 'game_test'.
It's an executable called 'igame' which is rather like Dune-II, but with about
90% functionality removed. Since it was only really to improve my X-Lib and C
skills, I never did any more to it.
To run it, extract the files from the archive, cd to the directory 'game_test',
type 'make' and off it should go quite happily. When it's finished, you'll have
an executable called 'igame', which you can then run and play with. Press 'Q' while
the pointer is on the 'Arena' to exit the game.
|
download/game_test.tar.gz (32k)
|
| l337 |
l337 is a program which l337ifies text (turns it into the gibberish used by
crackers and the like). There could be quite a lot more in this program, and
there are probably others out there, but it's a bit of amusement. For example,
the text:
There's a one-eyed yellow idol
To the north of Kathmandu;
ends up as:
7h3r3'5 4 0n3-3y3d y3ll0w 1d0l
70 7h3 n0r7h 0f K47hm4ndu;
|
download/l337-0.1.0.tar.gz (57k)
|
| lambda |
The lambda computer is a simple simulator for computing in the untyped lambda calculus. Go look at the lambda page
for more information!
|
download/lambda-0.1.tar.gz (14.1k)
|
| limitshell |
Limitshell is a wrapper for the standard shells (+other programs). It changes
the process limits before executing the real command, so that the user is
limited in the amount of resources they can consume. Restrictions can be placed
on CPU time, number of processes, number of open files, core file size, max file-size
and max memory size (various settings).
I'm using it on my machine, and as far as I can see, it works. Read the Install file
in the tar.gz archive on how to set it up. An example limits file is included.
|
download/limitshell-0.1.tar.gz (4.2k)
|
| mailinfo |
mailinfo is a client program to interact with a mailinfo server, which reports on the
state of a user's mailbox (last access, empty/non-empty). The client program will
interact with the UKC mailinfo server (as well as the in.mailinfod here). This client
doesn't understand the -C (change mail host) option, and neither does the server. This
might change at some point, but it's fraught with security hazards.
The client part (mailinfo) will look for the name of
a mailinfo server in /etc/mailinfohost and /etc/mail/mailinfohost.
Failing that, it'll use the name `mailinfo' assuming you put it in /etc/hosts, CNAME it, or
whatever. It'll also accept it on the command-line in the form `mailinfo @mailhost.my.net'.
the server (in.mailinfod) should be run from inetd (as any user which can stat maildrops
successfully). An example `mailinfo.inf' file is provided, which should be edited and
placed in /etc, /etc/mail, or /usr/local/etc. Simple format, looks like:
# user:name:sys-id:maildrop:alias,alias,...
root:root user:sys000:/var/spool/mail/root:w00t
fred:F.R.M.Barnes:usr000:/var/spool/mail/fred:
no manpage or any other useful documentation yet. Use the `--help' option to show the
various options and command-line syntax. Although the mailinfo.inf file supports re-directing
queries to other hosts (with a string like @mail01.thing.net), in.mailinfod doesn't (yet).
I'll get around to finishing it off sometime...
|
download/mailinfo-0.9.1.tar.gz (62k)
download/mailinfo-0.9.0.tar.gz (62k)
download/in.mailinfod-0.9.0.tar.gz (61k)
|
| menutool |
Menutool generates simple curses-based menus. Data is supplied in a label:result
format; result is printed on standard error. These lists can be specified on the command line,
be piped in, or be read from a file.
Version 0.1.1 contains a re-write of the menu drawing code, and handles page up/down correctly.
I've also debianized this one, sort of. There's no manual page, but it's not a very complicated
application.. The MD5-sum for the .deb is ``a0c328205491b0a72a56e87d40b5bf2c menutool_0.1.1-1_i386.deb''.
|
download/menutool-0.1.1.tar.gz (10.6k)
download/menutool.gz (5.0k)
download/menutool_0.1.1-1.dsc (0.7k)
download/menutool_0.1.1-1_i386.deb (7.0k)
|
| mhtidy |
mhtidy is used for handling silly MIME types. It's not very complicated;
allows you to save or less attachments. You still have to put the relevant
mhn line in your ~/.mh_profile.
|
download/mhtidy-0.1.tar.gz (9k)
|
| newsreel |
Quick MoinMoin Wiki hack, turns a simple line-by-line text file formatted as 'date login description'
into a nicely formatted list. Drop the script as 'newsreel.py' in your MoinMoin parser directory
(usually hiding under /usr/local/lib/pythonX.Y/site-packages/MoinMoin/parser/ or similar).
|
download/MoinMoin-parser-newsreel.py (1.5k)
|
| nuked |
Nuked is a simple server that sits on port 139. When somebody tries to send OOB data
at the port, ie, a nuke attempt, it nukes them back. If they're running Windows, it may
crash their machine, if their running UNIX, nuked will attempt an IDENT lookup on the user.
The source is gzipped and there is no Makefile. Typing "gcc -O -o nuked nuked.c" will do
the job nicely.
|
download/nuked.c.gz (7.2k)
|
| oat |
oat, the Obscure Administration Tool, is the client side of oatd, the server. Requests are
made to the server in the form oat server:file. The server responds with the
correct file (based on the client's IP address), which the client spits out.
|
download/oat-0.9.tar.gz (124k)
|
| oatd |
oatd, the Obscure Administration Tool Daemon, is the server for oat. Usually, this will be launched from
inetd with a line such as:
oat stream tcp nowait root /usr/local/sbin/oatd -v /etc/oat
Where the oat port number is defined in /etc/services as 942/tcp. If a client machine with IP address 192.168.1.4
requests a file with something like: oat wibble.net:foo, the server would respond with the
file /etc/oat/foo.192.168.1.4 (if the file exists). If the file does not exist, the server simply disconnects the
client without reporting an error.
|
download/oatd-0.9.tar.gz (124k)
|
| occam-syn |
This is an occam syntax-highlighting definition for the elvis vi clone.
It makes occam look pretty. You may want the occam system
to go with it.
I've done a vim syntax file now as well. It's functional, but not perfect. There's also a bit of a filetype.vim file.
I poked around with folding a bit, and have these bits in my .vimrc (binds {,shift} F2/F3 to {,recursively} close/open folds, F4/F5 to open-all/close-all folds)
and makes the fold highlighting a bit prettier (imo).
highlight Folded ctermbg=NONE ctermfg=LightBlue
highlight FoldColumn ctermbg=NONE ctermfg=LightRed
set foldmethod=marker
set fillchars=
map <F2> zc
map <S-F2> zC
map <F3> zo
map <S-F3> zO
map <F4> zM
map <F5> zR
|
download/occam-syn-elvis (0.5k)
download/occam.vim (2.1k)
download/filetype.vim (0.2k)
|
| openupsd |
openupsd is a daemon for Belkin UPS's that speak the "regulator pro smart protocol" over a serial-port. It's on the openupsd page really!
|
download/openupsd-0.2.0.tar.gz (111k)
|
| pmerge |
pmerge is a utility which merges the contents of files (sorting them as it does),
in such a way that the ordering of files on the command line determines what
happens when the same key is duplicated. In some ways, it behaves a bit like
the join/sort utilities. There ain't much documentation at the moment, but `--help'
produces something useful.
For example, to merge 2 password files on UID, with users info in then 2nd file
replacing the same user info in the 1st file (based on UID match), I would write:
pmerge -n -f 2 -s : passwd.first passwd.second
|
download/pmerge-0.1.tar.gz (51k)
|
| pollins |
pollins is a utility that inserts pre-emption statements into C and C++ code. The
package contains two additional utilties and some extra code. `pcc' is a gcc wrapper
that feeds files appropriately to `pollins'. `fudgedata' is used to fix timing data.
For the purposes of investigation, `pollins' can be made to generate analytical poll
calls (this is the default). This allows you to see the distribution of poll calls
in time, then adjust the pollins parameters, then loop.
Documentation can be found in the enclosed `cern-polling.ps.gz' file. This
can also be downloaded from the publications page.
|
download/pollins-0.1.0.tar.gz (287k)
|
| rawtohex |
A simple utility to turn raw binary files into Intel Hex format files (necessary for
UISP), but which may have other uses. Doesn't
try and do anything too fancy or clever. Compile with the usual "gcc -o rawtohex rawtohex.c".
|
download/rawtohex.c (3.4k)
|
| readline |
readline is a simple program which uses the GNU readline and history libraries to
read a line of text from the user, with an optional history file. Its intended use
if for shell scripts and the like. It's another autoproject, so the documentation
isn't exactly correct. (--help gives the right stuff tho).
|
download/readline-0.1.0.tar.gz (117k)
|
| rmsem |
rmsem is a simple program which removes sysv semaphore identifiers. Without any arguments, it will attempt to remove all
semaphore identifiers, or you can pass semaphore ids on the command-line and it will remove those ones. Be careful about
running it when other programs are using semaphores...
A C source-file is provided. To compile it, do something like:
gcc -O3 -Wall -o ./rmsem ./rmsem.c
|
download/rmsem.c (2.1k)
|
| rmshm |
rmshm is a simple program which removes sysv shared memory segments. Without any arguments, it will attempt to remove all
SHM segments (probably not what you want!), or you can pass it segment identifiers on the command-line. Be careful about
running it when other programs are using shared-memory segments (check the size field of IDs in /proc/sysvipc/shm)...
A C source-file is provided. To compile it, do something like:
gcc -O3 -Wall -o ./rmshm ./rmshm.c
|
download/rmshm.c (1.8k)
|
| runas |
runas is a simple program that invokes another program (without arguments)
under a different name. I wrote it because I needed to be able to launch
bash as a login-session from a machine which only had csh/tcsh.
Here's the line I had in my .tcshrc file:
/home/frmb/bin/runas /bin/bash -bash && logout
|
download/runas-0.1.tar.gz (1k)
|
| s3m2xm |
s3m2xm is a utility to convert .s3m (scream-tracker 3) module files into .xm (sound-tracker/fast-tracker)
files. It doesn't manage a perfect conversion, but what comes out can be tweaked by hand. A large number
of s3m effects are unsupported and some may get converted incorrectly (portamento slides don't seem too
happy).
Usual autoconf/automake package with a sparse README file.
|
download/s3m2xm-0.2.0.tar.gz (60.9k)
download/s3m2xm-0.2.0.tar.bz2 (55.5k)
|
| s3minfo |
s3minfo is a simple program that prints the contents of an s3m (scream-tracker) file. It'll
display the header information, samples, orders and patterns from the file. The play-sample option
doesn't work yet.
The sources are tar'ed/gzip'ed, and there is no Makefile. Type "gcc -O -o s3minfo s3minfo.c" will
compile it nicely. There's also a nice gzip'ed static binary, should compilation fail horribly.
Finally got found to doing some more on this. Added a sample-ripper thing (to S3M samplefile format
or just the raw (unsigned) data). Also autoconf'd and automake'd it.
|
download/s3minfo-0.1.tar.gz (4.8k)
download/s3minfo-0.1.static.gz (66.2k)
download/s3minfo-0.1.1.tar.gz (61.8k)
|
| sermon2 |
sermon2 (and associated client programs) are used to interface with the RS422 devices
dotted around the house/office.
|
download/sermon2-0.1.1.tar.gz (139.9k)
download/sermon2-0.1.4.tar.gz (296.2k)
|
| smpstuff |
These patches provide some additional features for SMP linux kernels. Three additional system-calls
are provided:
int smp_processor( void ) returns the processor the current process is running on
int smp_lockto( int proc_id ) locks the current process to the specified processor
int smp_num_cpus( void ) returns the number of available CPUs
These are some patches for the 2.0.37, 2.2.10 and 2.2.14 linux kernels. It's unlikely that I'll do any more
patches on this, as I'm looking at Tim Hockin's sysmp() patch, which is a bit more standard,
and can be found here.
Update: there are some patches for RedHat kernels here as well now, for 2.2.12-20 and
2.2.16-3.
|
download/smp-2.0.37.tar.gz (1.7k)
download/smp-2.2.10.tar.gz (2.5k)
download/smp-locking-2.2.12-20.patch (5.4k)
download/smp-locking-2.2.14.patch (5.2k)
download/smp-locking-2.2.16-3.patch (5.7k)
download/smpstuff.h (0.8k)
|
| srec2bin |
srec2bin is a simple converter for turning Motorola S-record files into
binary images. It appears to work for 16-bit S-record addresses, and should
handle 24-bit and 32-bit, but I've not tried these.
|
download/srec2bin-0.1.0.tar.gz (184k)
|
| stat |
Stat is a similar program to stat on solaris. You pass it
file-names and it tells you a bit about the file.
|
download/stat-0.2.tar.gz (2.2k)
|
| ubounce |
ubounce is a port redirector which tunnels UDP over TCP. It is fairly static in nature, designed for single point-to-point
connections. An arbitrary number of UDP ports may be tunnelled.
The TCP connection doesn't use encryption or anything like that. If you want to do that, feed ubounce through an ssh tunnel
or something. The source archive is autoconf/automake, so just ./configure then make.
|
download/ubounce-0.1.0.tar.gz (83k)
|
| xdmchoose |
xdmchoose is a replacement chooser for XDM. but it's really on the xdmchoose page!
|
download/xdmchoose-1.2.1.tar.gz (181)
download/xdmchoose-1.1.3.tar.gz (163k)
download/xdmchoose-1.1.2.tar.gz (143k)
download/xdmchoose-1.1.2.tar.bz2 (125k)
|
| xloadapp |
Xloadapp is a little program which creates a window on your
display (48x48). The idea is that you run afterstep, and
swallow this into the Wharf. The window is filled with memory
usage, the three uptime values (1 min, 5 mins and 15 mins) plus
the current time.
|
download/xloadapp.tar.gz (5.4k)
|
| xsel2sel |
xsel2sel is a program that will run on one machine, connecting to many
X-servers. The purpose is to allow the transfer of selection data
between servers. It's only really useful if you've got two X-servers
on your desk, or if you want to be able to send selections to friends.
The README file explains how to use it. The asthetics are a bit poor at
the moment but I'm planning on fluffing it up.
You really need a 3 button mouse to use all the nice features (look in README).
|
download/xsel2sel.tar.gz (8.3k)
|
| xtree |
xtree is a program which allows you to manipulate windows on an X server's
display. The main purpose is to allow window operations to be performed,
without having a graphical interface. It also facilitates the abuse of
unprotected X-servers.
|
download/xtree-0.1.tar.gz (125k)
|
Here are some bits of software in the pipeline...