Free source code

This page provides links to source code that I have created myself with the explicit intent, at the time of its creation, to give it away -- that is to make it freely available without charge.

My source code is always copyrighted so as to declare ownership and to protect your right to use it freely. I have no intention of ever changing the copyright with the intent to make it "not free."

My copyright exists to insure free use forever, not trick people into paying me royalties at some point down the line. And most certainly not to make the statement that companies have to do things my way or do it themselves.

Please read my copyright then use this source code as you see fit.

But remember, this code is free -- and sometimes you get what you pay for.

Links to source code

BRASH
A recoding of the bourne shell from scratch to run as multithreaded program on Microsoft Windows 7.0 and higher.

This is a windows program that lets bourne shell programers feel comfortable in a windows environment. Make good use of the TAB-completion feature of the console reader to make it easier to get used to backslashes and case insensitive file names!

The implementation contains a sub-set of the functions in the CXX package, described below.

CXX
CXX is a package of C++ source code that is portable to unix, linux, and windows -- though it does require a unix style make facility on windows to build it easily. See for the source code to one such implementation.

Warning: not all of the source in this package is mine. I have included GNU code along side some of my own creations. Basically, you have to check the copyright for every file you use to be safe.

Use "make doc" to get full doxygen documentation, but the source directory contains some interesting pieces:

  • cca.exe -- a cyclomatic complexity analyzer, a la McCabe with extensions. This one is much easier to integrate into a normal build process than some others I have seen on the web.
  • editor.exe -- a screen oriened like text editor, like vi, but with a much simpler keyboard interface. It is portable to windows. Your mileage may vary. It is integrated with etags, cpptagdb.exe, and has some way to write shell scripts that run form-line applications of your own design.
  • cpptagdb.exe -- a program database generator that lets you quickly produce a description of the classes, functions, and variables in your program.
  • libtools.a -- a collection of application portability function. Notable components:
    • etags.h -- lets you read TAGS files
    • cpptagsdb.h -- lets you read the output of cpptagdb.exe
    • file.h -- portable file i/o classes
    • fmtio.h -- a faster version of boot::format
    • fmtd.h -- a really fast C++ style number to string formatter. Only does numbers.
lbsplit
lbsplit is a scripting helper program similar to csplit but pumped up on steroids. A sed expert won't need this but it can be useful if you just can't stand some of the while looping constructs in sed. It was fun to write.
Yelt
Yelt is a SED-like program written in C++ that gives you 10 string variables, not just the 2 buffers that SED provides. Further, if you want to add your own commands that's pretty easy too. The source is simple and easy to understand -- so adding your own commands should be a snap. Works pretty good, but a sed expert can get by without this. Once I wrote it, I realized that most tasks could be done in gsed anyway, so... It was fun to write.
glob
A portable implementation of the unix file name pattern matching tools. It is roughly equivalent to the glob library provided by GNU but does not depend on gnu source code. Although I did get an idea for how to read windows directories from Mr. Kwai Ewe Rommel back in 1992 or so in some source code that he gave away under the GNU copyright. But I only used his idea, not the source code.
NOTE: this is an interesting C++ exmaple, but there are better functioning versions. This one works pretty well but is not as "full featured" as some other."
myOstream
myOstream is an example, not a completely working implementation, of how you could create your own "ostream" style class for use in a ROM situation. The example code handles all the major pieces of the ostream interface but with no dependence on any std:: functionality.

As I said, this is an example implementation, not a complete tool that you can use. Plus the names I chose are attrocious.

gmake for windows
This version of GNU make was slightly modified to work better with cygwin. Unfortunately, I don't remember the details and they probably don't matter anyway. Feel free to use the official copy if you prefer. My Makefiles should work with it.