Carl Banks' Software

This page lists some minor packages I've written, including a minor Emacs for editing Fortran 77, a utility to synchronize an FTP site with a local directory, and a patch for a news server.


Prune Patch for Leafnode

  • Language: C
  • Licence: Public Domain

This is a patch I wrote for Leafnode, which is a lightweight news server. It is only of interest to people running Leafnode.

It adds pruning capability to the filters. Leafnode will maintain a blacklist of killed articles, and will kill and blacklist any article that references a blacklisted article. This means that Leafnode kills not only the articles that match its filter criteria, but also followups to them. This is great for when you want to forget someone exists.

The patch is against version 1.9.19, but it might work for other versions.

FCAP Minor Mode for Emacs

  • Language: Emacs Lisp
  • Platform: Emacs
  • Licence: Public Domain

This is a minor mode for Emacs that automatically capitalizes in Fortran 77, without needing to resort to CAPS LOCK. Also, it conveniently doesn't capitalize inside strings and comments. I find it extremely helpful and never program in Fortran without it.

ftpupsync

  • Language: Python 2.1
  • Platform: Unix
  • Licence: Public Domain

This is a small script that can synchronize an FTP directory tree with a directory tree on the local disk. It does this by maintaining a catalog of everything it believes is on the FTP server; and updating the catalog whenever it updates the files on the server.

In this way, you can have a mirror of (for example) your website on your local disk, and whenever you make a change to the local mirror, you can run this script to update the pages on your server. It will make and remove directories as needed, and upload and remove files as needed. Only the new and changed files are uploaded. Renaming a file in the local mirror will usually result in that file being renamed on the server.

Unfortunately, it only works in one direction: independently changing a file on the server will not cause it to be downloaded to your local mirror.

I put this script on my web page because I think people will find it useful. However, it has a lot of loose ends untied. There's no documentation; you'll have to read the source to figure out how to use it. It won't work on Windows as is, for it uses some Unix-specific calls, but it shouldn't be hard to modify it so that it will. Finally, there is no built-in way to create the catalog. You'll have to create the initial catalog yourself (maybe by modifying the script to just output a check file).

I hope I don't have to say that I use this script keep this web site up-to-date.