This Space for Rent

New Code!

Discount has been pushed up to version 2.1.3 with a small collection of bugfixes and some tweaks to the build process a bit for better compilation with the LLVM C compiler, mingw, and cygwin.

The bugfixes are

  1. Stop tripping over tables with leading |s; the first implementation of tables treated leading |s as the end of an empty table cell. 2.1.3 corrects this to properly be merely decoration.

    As a side-effect, you now need to have all the rows of the table either with a leading | or not; you cannot mix and match them, sorry.

  2. For some mysterious reason I was treating the <br> tag as a block-level html tag, so my html blockifier would split paragraphs with explicit <br>s in them.

  3. The table of contents code was apparently generating bad html (something I never noticed, because I never use that feature, alas!) but Stefano D'Angelo contributed a patch to clean up the generated html to make it correct.

The build tweaks are mainly in the makefiles to stop it from accidentally creating Windows-style nfs (prefixed with //) paths, and to work around a mingw makefile peculiarity where it attempts to apply a default rule to compile version.c (the module that contains the discount version# in a nice string format for programs to display) into VERSION (the text file that contains the version number) but I had to modify some of the source code to make it work with clang, because clang is not gcc-compatable like it claims to be; where gcc whines about float main() being an unnatural function, clang just falls down screaming on the floor. Since clang is what MacOS Xcode uses on MacOS 10.6 (and 10.7?), this means that a lot of people now have the opportunity of seeing their C compiler scream like a baby who just spilled their milk.

And clang is a whole bunch faster than gcc, so the “lot of people” includes me. Siiiiiigh – fine, I’ll use a g-dd-mned int main() like the nitpickers want. I don’t like it, but it’s in the code now.

There are some more far-reaching changes I’m poking at, but I don’t want to light the codebase on fire just yet, so what you see is the New Code! you get.