Software Archive

Here is a list of some programs I have written. This page is mainly meant as a personal backup space, but you're welcome to use any code you find here. I use a GNU/Linux desktop at home, so all these programs are tested on that machine (Fedora 19 on amd64 as of Feb2014).

Most programs below were generated using some preprocessor tools. Links to original sources are also listed. You will need my t2c tool to build stuff from the original packages.

abu is a program which builds android APKs.

alib is a weird program. It's a self-extracting archive which can also update itself. This package contains several handy little libraries for C. I lost the original package, but I believe it's included in this archive.

android-ssh is a package containing libssh2 for android.

androR2P converts images between the PNG format and Android boot logo image format, which is just a dump of RGB values without any header or anything.

amalgam processes

   #include "file"
directives in a C program, inserts the contents of those files at the position of the directive and produces a single C file.

bfont can be used to embed a TrueType font in a program, with a given size and in bitmap format.

bff is a binary file format tool.

bkedit is bookmark list editor.

bkscan is a set of tools to aid in scanning books using the Fujitsu fi-5015c scanner. It also includes a viewer for the resulting files, which are simple indexed tar files of png images.

btstack is my Bluetooth stack.

cartoonscan is a tool I use for scanning cartoons from magazines.

cmp3 is a program which fills a MP3 player with a random selection of songs from a pre-defined directory tree. The history of such fillings is maintained and the program tries to fill the player in a fair way. This package is more up-to-date than the original sources. A couple of bugs were fixed which were due to architecture change (32 to 64 bit). Just respect the compiler warnings and you should be able to use the 'original' package as well.

coth.c is a single-file library for cooperative threads.

dfag encodes a DFA as C arrays.

dsync is a backup tool.

EasyPrint is an Android/Linux tool which lets the user print something over the network.

fixtable converts a Gnumeric table into an editable FOX table. Here is an older version.

font-5x7 is a small bitmap font.

foxhelpc is a help compiler for the FOX toolkit. If you're feeling adventurous, you can get the source code here. There is also a statically compiled binary package here for GNU/Linux on amd64. Don't forget to chmod +x it.

fxform creates some GUI code from a structured description.

gfx is a graphics library.

gencon takes a configuration file specification and creates C code which can parse a configuration file as specified.

genser is a tool for serializing C structs.

IMGDOC is a PDF-like format for documents, but in raster format. Here is version 1.1. The main change here is that, while looking for horizontal or vertical lines, I no longer insist that these lines are black. Any color will do. This results in more lines but this is necessary to process some really thin lines and underlines resulting from colored text.

Version 1.2 has a few changes in the build system. A simple anti-watermarking is introduced. The bmkrange program is integrated into the source tree. The provided script no longer uses pdftk but the pdfTOC program available here.

Version 1.3 now uses xpdf to render the pages as well as extracting the bookmarks from a PDF file directly. IMGDOC-encode is now sufficient by itself to do basic encoding. GhostScript is not needed anymore except for watermark removal.

Version 1.4 is a bugfix. There was some memory leak which kept segfaulting on big input files.

inthash computes a dense hash function for a fixed set of integers.

iro is a small template program for operating on images. It simply loads a PNG file and lets you run some functions on it. It's basicly a template.

itf2 is a tool for making inter-thread communications easier.

ipftool is similar to itf2 above, but for inter-process communication over sockets.

jj is a make replacement. It has function definitions, loops, etc. It correctly handles the case where multiple files depend on one file. Unfortunately, I lost some of the libraries for developing it and can't really develop it more. This C file contains everything, but it's not very hackable. It has the README and other stuff in it as well. Also, I have modified it since I had extracted it from the original sources.

This package contains the original sources and can be used to re-build it from somewhat scratch. As I told above, this package isn't up to date completely.

Now, here is an updated source package. However, this package still doesn't have the new sources, but some documentation stuff such as a PDF file etc. which I collected from depths of my hard disk. For the latest actual source, just download the jj.c.bz2 file.

Alright, here is a much better version.

lexer is a small piece of code which does lexical analysis.

LibXPDF is a library I extracted from xpdf sources.

logo-android is a program which encodes and decodes image files for android bootup sequence.

m5 is a macro processor based on lua. Macros are defined in the lua language and can be used like regular CPP macros. You will need the lua development package in order to compile it.

make_quine adds self-printing capability to C programs. It's somewhat simplistic (all source files have to be in the same directory etc), but it does the job.

mkbut is a program which makes the buttons on this website. I used this config for creating the buttons you see.

mkpak creates tarballs for distribution.

mudesk is a simple desktop manager which recognizes GNOME style .desktop files.

mupager is an X11 pager. It works with openbox and fvwm4. It doesn't require any libraries other than X11.

mupanel is a desktop panel with editable start menu, taskbar, shortcut areas, pager and clock.

muterm is a terminal emulator for X11.

patedit is a pattern editor.

PhoneMouse is an app that lets you use your phone as a wireless mouse. Here is the server you need to run on the PC.

rxsheyi compiles a regular expression from a BNF-like specification. The resultant string can be used with regcomp() etc.

selfmod.c Sometimes life makes you do weird things.

SICALC is a basic calculator for Android and Linux.

simfi is a simple file transfer utility. You run the server on some machine and then use the client on another machine to put the files on the server. Like this:

on the server:
  $ simfi-get &
The program doesn't exit, it just keeps on going until you kill it. 

On the client:
  simfi-put server_address local-file remote-path

simplewm is a blackbox fork.

sfnotes is a notebook program for Android tablets with stylii.

t2c is a literate programming tool. It lets you write programs in a human readable order instead of compiler order.

tssh is a single file SSH client library.

txar is a note taking program with hypertext support. It works with a wiki-like syntax and doesn't need any kind of web server etc.

usbcam displays images captured via an USB camera.

UsbDisks is a graphical frontend for the "pmount" utility. I wrote it to get rid of the gvfsd crap. You will still need the udev stuff, it uses the 'udevadm' utility to find more about the devices.

Vtack is a simple turtle graphics language for kids.

wadir watches a given directory and moves new files to another directory.

xalsavol adjusts the master playback volume for ALSA. It uses only X11 and ALSA libs.

zooming stickies lets you create some sticky notes on a panel. The catch is that, the panel can be zoomed in or out in order to create smaller/bigger sticky notes. Kind of like the excellent eve program, but geared towards maintaining todo lists etc.

Here are some small programs.