Blog Project Updates and Random Thoughts

How I Improve My (C) Code Quality December 31, 2020

I periodically get bug reports and pull requests concerning the quality or patterns in my code. While some of my projects provide some documentation on the coding standards and tools I use, I’ve never bothered to write this up before. So here is a snapshot of my strategy for producing quality C code that I have honed over the last 35 years (!) of writing C.

More + Comments
 

codedoc v3.6 December 31, 2020

This release of codedoc adds syntax highlighting, literal link, image dimensions, and block quote in comments support as well as fixing a number of bugs. Changes include:

  • Added support for syntax highlighting of C and C++ code.
  • Added support for literal links (functions, types, etc.) using the “@@” target.
  • Added support for ::WIDTHxHEIGHT in image (ALT) text.
  • Added support for markdown-style block quotes in comments.
  • Fixed support for embedded images in EPUB output.
  • Fixed some parsing issues for the public typedef - private struct design pattern, resulting in undocumented typedefs.
  • Fixed a few Cppcheck and LGTM-detected bugs.
  • No longer output unnecessary whitespace in HTML/EPUB output, for a modest savings in file size.

Enjoy!

Download codedoc 3.6 Install codedoc 3.6 Snap Home Page

Comments
 

HTMLDOC 1.9.11 December 24, 2020

HTMLDOC 1.9.11 fixes some bugs and adds high-resolution desktop icons for Linux. Changes include:

  • Added high-resolution desktop icons for Linux.
  • Updated the internal HTTP library to fix truncation of redirection URLs (Issue #396)
  • Fixed a regression in the handling of character entities for UTF-8 input (Issue #401)
  • The --numbered option did not work when the table-of-contents was disabled (Issue #405)

Enjoy!

Download HTMLDOC 1.9.11 Install HTMLDOC 1.9.11 Snap Home Page

Comments
 

PAPPL v1.0.0 December 11, 2020

The first stable release of PAPPL is now available for download. PAPPL is a simple C-based framework/library for developing CUPS Printer Applications, which are the recommended replacement for printer drivers.

Download PAPPL v1.0.0 Home Page

More + Comments
 

Code Signing and Notarization on macOS December 10, 2020

Over the past several years, Apple has been increasing the security requirements of macOS applications. Besides the macOS binaries I’ve been building of my software, I also have been helping other open source projects get their macOS binaries to be acceptable on users’ systems while still allowing the build process to be as automated as possible…

More + Comments
 

Sponsoring Me Through Liberapay December 04, 2020

By popular request, I’ve created a second way to financially support my open source development through Liberapay. Thank you for any assistance you choose to provide, whether it is financial or in the form of a bug report, pull request, or other feedback that helps make my software better!

Comments
 

PAPPL v1.0rc1 November 30, 2020

The first release candidate of PAPPL 1.0 is now available for download. PAPPL is a simple C-based framework/library for developing CUPS Printer Applications, which are the recommended replacement for printer drivers.

Download PAPPL v1.0rc1 Home Page

More + Comments
 

EPM v5.0.0 November 20, 2020

In case you blinked, here is EPM v5.0.0 from Jim Jagielski. With my blessing, the license is now Apache 2.0 (like many of my other projects) and Jim has brought support for the platforms I dropped in v4.5 back as well!

Download EPM 5.0.0 (New) Home Page

Comments
 

EPM v4.5.1 and a New Maintainer! November 18, 2020

Today brings two changes for EPM. First a quick (final) bug fix release (v4.5.1) from me with the following changes:

  • Fixed Debian dependencies for min/max version (Issue #64)
  • Fixed a typo in the epm.list file (Issue #78)
  • Fixed macro usage in the setup.types man page (Issue #81)
  • Fixed @INSTALL@ macro in makefile (Issue #84)
  • Fixed Debian init script support (Issue #85)

Second, I am pleased to announce that Jim Jagielski has volunteered to take over development of EPM. Among other things, Jim is an Apache OpenOffice developer who has been using EPM to create the community builds of AOO. He has also been maintaining a fork of EPM with his own changes and fixes that would benefit all developers and that I, quite frankly, haven’t had the time to look at or integrate. In short, I think Jim will do a great job moving EPM forward and giving the project the “love” it deserves!

Download EPM 4.5.1 (New) Home Page

Comments
 

PAPPL v1.0b1 November 11, 2020

The first beta release of PAPPL 1.0 is now available for download. PAPPL is a simple C-based framework/library for developing CUPS Printer Applications, which are the recommended replacement for printer drivers.

Enjoy!

Download PAPPL v1.0b1 Home Page

Comments
 

Mini-XML 3.2 October 09, 2020

Mini-XML 3.2 adds support for the Haiku operating system and fixes bugs. Changes include:

  • Added support for shared libraries on Haiku (Issue #262)
  • Fixed handling of unquoted attribute values that start with a Unicode character (Issue #264)
  • Fixed handling of elements that start with a Unicode character (Issue #267)
  • Fixed some minor issues identified by the LGTM security scanner.

Enjoy!

Download Mini-XML 3.2 Home Page

Comments
 

codedoc v3.5 October 09, 2020

This release of codedoc adds C++ block comment support and fixes a number of bugs. Changes include:

  • Added support for C++ block comments.
  • Fixed support for function types.
  • Fixed support for private typedef struct/class/union constructions.
  • Fixed support for markdown bullet lists.
  • Fixed output of Unicode text.
  • Now use the “title” class for the cover image in HTML and EPUB output.
  • Now place the table of contents along the side for HTML output.
  • No longer strip quoted text (‘text’) in comments unless the text ends with ‘()’.

Enjoy!

Download codedoc 3.5 Install codedoc 3.5 Snap Home Page

Comments
 

HTMLDOC 1.9.10 September 05, 2020

HTMLDOC 1.9.10 fixes packaging and crash bugs. Changes include:

  • Updated local zlib to v1.2.11.
  • Updated local libpng to v1.6.37.
  • Fixed packaging issues on macOS and Windows (Issue #377, Issue #386)
  • Now ignore sRGB profile errors in PNG files (Issue #390)
  • The GUI would crash when saving (Issue #391)
  • Page comments are now allowed in pre text (Issue #394)

Enjoy!

Download HTMLDOC 1.9.10 Install HTMLDOC 1.9.10 Snap Home Page

Comments
 

Getting a Raspberry Pi to Pass BCT June 17, 2020

Over the past few weeks I have been working with Yocto, specifically to put together a layer containing PAPPL and other necessary bits to build headless Raspberry Pi-based print servers. And since I’m a standards guy I want this setup to more-or-less pass all of the network certification tests, including Apple’s Bonjour Conformance Tests. Unfortunately, this has taken a bit longer than I’d hoped…

More + Comments
 

HTMLDOC 1.9.9 June 11, 2020

HTMLDOC 1.9.9 fixes some URL and formatting bugs, as well as fixing the macOS and Windows packages. Changes include:

  • Fixed a redirection issue - some sites (incorrectly) provide an incomplete Location: URL in the HTTP response.
  • Fixed https: support on newer versions of Windows (Issue #378)
  • Fixed a problem with remote URLs containing spaces (Issue #379)
  • Fixed a UTF-8 processing bug for Markdown files (Issue #383)
  • Added support for <FONT FACE="monospace"> (Issue #385)

Enjoy!

(June 17, 2020 Update: I re-posted the Windows binaries with a fix for the problems some people reported on Windows…)

Download HTMLDOC 1.9.9 Install HTMLDOC 1.9.9 Snap Home Page

Comments
 

Announcing PAPPL, A Printer Application Framework March 23, 2020

PAPPL is a C-based Printer Application framework/library. I am developing it to support future features in LPrint as well as making a Printer Application for Gutenprint. My hope is that it will accelerate the adoption of IPP Everywhere™ and make it easier for people to support other IPP-based licensing programs like AirPrint™ and Mopria®.

PAPPL is licensed under the Apache License Version 2.0 with an exception to allow linking against GPL2/LGPL2 software (like older versions of CUPS), so it can be used freely in any project you’d like. If you want to support the development of this framework financially, please consider sponsoring me through Github. I am also available to do consulting and/or development through my company Lakeside Robotics.

Home Page Github Project

More + Comments
 

EPM v4.5 March 13, 2020

EPM v4.5 is a bug fix release and also removes support for some old platforms that I can no longer support. Changes include:

  • Dropped support for AIX, AT&T (Solaris), Tru64, HP-UX, IRIX, LSB, and Slackware packages.
  • “make install” failed due to the README filename changing (Issue #59)
  • The mkepmlist utility did not correctly handle filenames containing the $ character (Issue #62)
  • The configure script incorrectly substituted “NONE” for the installation prefix (Issue #67)
  • Fixed some over-zealous permissions on temporary build directories (Issue #71)
  • Fixed the mantohtml helper program - was depending on private CUPS headers for some reason (Issue #72)
  • Fixed some build system issues (Issue #75, Issue #76)
  • Documentation updates (Issue #74, Issue #77)
  • Cleaned up old sprintf and strcpy usage in many places.

Enjoy!

Download EPM 4.5 Home Page

Comments
 

Some Parody Logos for Your Entertainment March 07, 2020

I’m no graphic designer, but I’ve spent enough time fiddling with icons and other graphical elements to at least know how to use the software to produce passable images. I’ve recently made a few parody logos for use in some PWG documentation, which I thought I’d share for your amusement…

More + Comments
 

Sponsoring Me Through Github February 29, 2020

Over the years, many people have asked whether they can financially support the development of LPrint, HTMLDOC, and other projects I make available freely on Github. Until recently there hasn’t been a simple way for me to do this, but Github now has a “sponsors” program that allows you to provide monthly donations to developers and projects, and will even match your donations for the first year!

I’ve created a Github sponsor profile to allow you to contribute financially to any of my open source projects and help set the direction and priority of future bug fixes, features, and supported hardware. Thank you for any assistance you choose to provide, whether it is financial or in the form of a bug report, pull request, or other feedback that helps make my software better!

Become a Sponsor

Comments
 

LPrint v1.0 February 17, 2020

LPrint version 1.0 is now available. LPrint is a Label Printer Application for macOS® and Linux®.

Enjoy!

Download LPrint 1.0 Install lprint Snap Home Page

Comments
 

HTMLDOC 1.9.8 February 15, 2020

HTMLDOC 1.9.8 adds a CGI file naming feature, adds support for letterhead images, and fixes some formatting bugs. Changes include:

  • Added support for a HTMLDOC.filename META keyword that controls the filename reported in CGI mode; the default remains “htmldoc.pdf” (Issue #367)
  • Fixed a paragraph formatting issue with large inline images (Issue #369)
  • Fixed a buffer underflow issue (Issue #370)
  • Fixed PDF page numbers (Issue #371)
  • Added support for a new L header/footer format ($LETTERHEAD), which inserts a letterhead image at its full size (Issue #372, Issue #373, Issue #375)
  • Updated the build documentation (Issue #374)

Enjoy!

Download HTMLDOC 1.9.8 Install HTMLDOC 1.9.8 Snap Home Page

Comments
 

LPrint v1.0rc1 February 10, 2020

This is the first candidate release of LPrint 1.0, a Label Printer Application for macOS® and Linux®. Changes include:

  • Updated media documentation (Issue #13)
  • The lprint options command now reports both English and metric dimensions for all supported sizes (Issue #14)
  • Now support setting the default media source, top offset, tracking, and type values.
  • Now save and load next job-id value for each printer, along with the printer-config-change-[date-]time and printer-impressions-completed values.
  • Fixed some small memory leaks.

Enjoy!

Download LPrint 1.0rc1 Install lprint Snap Home Page

Comments
 

LPrint v1.0b2 January 26, 2020

This is the second beta release of LPrint, a Label Printer Application for macOS® and Linux®. Changes include:

  • Added support for authentication of remote administrative requests (Issue #1)
  • Added support for managing printers via web browser (Issue #1)
  • The add, default, delete, and modify sub-commands now support the “-u” option (Issue #1)
  • Fixed an ASLR issue with some Linux compilers (Issue #5)
  • Added code to detach the Linux usblp kernel driver since apparently there are still Linux distributions shipping the old (and broken) usblp kernel driver (Issue #7)
  • Device errors are now logged to stderr (for lprint devices) or the server log (for lprint server) so that it is possible to see permission and other access errors (Issue #8)
  • Job attributes are now validated properly against the driver attributes (Issue #9)
  • Fixed an issue in server mode - a failed IPv6 listener would prevent the server from starting (Issue #12)
  • Added a “spool-directory” option for the server sub-command.
  • Added a spec file for building RPMs.

Enjoy!

Download LPrint 1.0b2 Install lprint Snap Home Page

Comments
 

LPrint v1.0b1 January 15, 2020

This is the first beta release of LPrint, a Label Printer Application for macOS® and Linux®.

Download LPrint 1.0b1 Install lprint Snap Home Page

Comments
 

Announcing LPrint, a Label Printer Application January 13, 2020

LPrint is a label printer application for macOS® and Linux®. I wrote it in response to criticism that coming changes in CUPS will leave users of label printers in the cold…

More + Comments