Blog Project Updates and Random Thoughts

PAPPL v1.2.2 September 21, 2022

PAPPL v1.2.2 is now available for download and is a general bug fix release. Changes in 1.2.2 include:

  • Added debug logging for device management.
  • Fixed a device race condition with job processing.
  • Fixed a potential value overflow when reading SNMP OIDs (Issue #210)
  • Fixed more CUPS 2.2.x compatibility issues (Issue #212)
  • Fixed a 100% CPU usage bug when cleaning the job history (Issue #218)
  • Fixed the default values of --with-papplstatedir and --with-papplsockdir to use the localstatedir value (Issue #219)
  • Fixed a initialization timing issue with USB gadgets on newer Linux kernels.

Enjoy!

Download PAPPL v1.2.2 Home Page

Comments
 

Mini-XML 3.3.1 July 25, 2022

Mini-XML 3.3.1 fixes a POSIX thread cleanup bug.

Enjoy!

Download Mini-XML 3.3.1 Home Page

Comments
 

PAPPL v1.2.1 May 26, 2022

PAPPL v1.2.1 is now available for download and fixes some key issues with localization, client limits, and compiling against older versions of CUPS. Changes in 1.2.1 include:

  • Fixed a bug in the max-clients support code (Issue #205)
  • Fixed compiler warnings (Issue #206, Issue #207)
  • Fixed corruption in the English localization file.
  • PAPPL didn’t compile against CUPS 2.2.6 and earlier.

Enjoy!

Download PAPPL v1.2.1 Home Page

Comments
 

HTMLDOC 1.9.16 May 19, 2022

HTMLDOC 1.9.16 adds new time and date support and fixes bugs. Changes include:

  • Added support for $DATE(format) and $TIME(format) header/footer strings (Issue #472)
  • Fixed a potential image overflow bug with JPEG and PNG images (Issue #471)
  • Fixed potential heap overflow bugs with pages (Issue #477, Issue #478, Issue #480, Issue #482, Issue #483)
  • Fixed potential use-after-free in blocks (Issue #484)
  • Updated the GNU TLS HTTPS support code to use a faster connection shutdown mode (Issue #487)
  • Fixed some minor Coverity warnings.
  • Updated the GUI interface for current display fonts.

Binaries are available from Github for Windows and macOS, and through the Snapcraft store for Linux.

Enjoy!

Download HTMLDOC 1.9.16 Install HTMLDOC 1.9.16 Snap Home Page

Comments
 

PAPPL v1.2.0 May 15, 2022

PAPPL v1.2.0 is now available for download. PAPPL v1.2 adds full localization, support for additional IPP features, and some other improvements. Changes in 1.2.0 include:

  • Added papplMainloopShutdown API to trigger a shutdown of the system that was started by papplMainloop.
  • Fixed mapping of MIME media types to IEEE-1284 Command Set values.
  • Fixed a crash bug when no printers are added.
  • Fixed compatibility issues with libcups3.
  • The macOS menu extra did not update the list of available printers.
  • No longer try to show the macOS menu extra when running from a root launchd service (Issue #201)

Enjoy!

Download PAPPL v1.2.0 Home Page

Comments
 

HP Printer Application v1.2.0 May 15, 2022

HP Printer Application v1.2.0 is now available for download as an “officially supported” printer application for older PCL laser and inkjet printers. Changes in 1.2.0 include:

  • Fixed default listen address when running as a server (Issue #7)
  • Fixed the media size list which prevented A4 from showing up (Issue #8)
  • Fixed dropped connections in the web browser when switching to HTTPS (Issue #9)
  • Now offer more appropriate printer icons (Issue #10)
  • Fixed a bug in the HP DeskJet driver (Issue #11)
  • Fixed draft output (Issue #12)
  • Fixed a crash bug when there was no default printer (Issue #14)

Enjoy!

Download PAPPL v1.2.0 Home Page

Comments
 

PAPPL v1.2rc1 May 03, 2022

PAPPL v1.2rc1 is now available for download. PAPPL v1.2 adds full localization, support for additional IPP features, and some other improvements. Changes in 1.2rc1 include:

  • Added explicit support for running macOS printer applications as a server.
  • Added unit test support for the new SNMP-based supply level and status monitoring code.
  • Updated USB gadget code to not enable gadget until system is started or USB options are set.
  • Updated default spool directory to use a persistent, per-user location.
  • Fixed DNS-SD advertising when adding a printer from the web interface.
  • Fixed double “Supplies” buttons in the web interface.
  • Fixed human-readable location fields in web interfaces.
  • Fixed an issue with the default system callback for papplMainloop.
  • Fixed an issue with papplDeviceList and DNS-SD discovery when there was no active system.
  • Fixed printer compatibility issues with the new papplDeviceGetSupplies API.
  • Fixed some locking issues with the macOS menubar icon.

Enjoy!

Download PAPPL v1.2rc1 Home Page

Comments
 

PAPPL v1.2b1 April 23, 2022

PAPPL v1.2b1 is now available for download. PAPPL v1.2 adds full localization, support for additional IPP features, and some other improvements. Changes include:

  • Added macOS menubar icon/menu (Issue #27)
  • Added support for localization, with base localizations for English, French, German, Italian, Japanese, and Spanish (Issue #58)
  • Added interpolation when printing JPEG images or when using the papplJobFilterImage function with smoothing enabled (Issue #64)
  • Added papplDeviceGetSupplies API to query supply levels via SNMP (Issue #83)
  • Added support for custom media sizes in millimeters (Issue #118)
  • Added papplPrinterGet/SetMaxPreservedJobs API and reprint web interface (Issue #189)
  • Added IPP notifications support with papplSystemAddEvent and papplSubscriptionXxx functions (Issue #191)
  • Added papplPrinterDisable and papplPrinterEnable functions and proper support for the IPP “printer-is-accepting-jobs” attribute.
  • Added OpenSSL/LibreSSL support (Issue #195)
  • Added papplSystemGet/SetMaxClients API (Issue #198)
  • Updated papplPrinterSetReadyMedia to support up to PAPPL_MAX_SOURCE media entries, regardless of the number of sources.

Enjoy!

Download PAPPL v1.2b1 Home Page

Comments
 

StringsUtil v1.0 April 16, 2022

StringsUtil v1.0 is now available for download. StringsUtil provides a library for using Apple “.strings” localization files and a utility for managing those files.

Download StringsUtil v1.0 Home Page Github Project

Comments
 

Announcing StringsUtil, a Strings File Library and Utility April 14, 2022

StringsUtil provides a library for using Apple “.strings” localization files and a utility for managing those files. It is intended as a free, smaller, embeddable, and more flexible alternative to GNU gettext. Key features include:

  • Support for localizing using both Apple “.strings” and GNU gettext “.po” files.
  • Simple C/C++ library with support for embedding localization data in an executable and/or loading localizations from external files.
  • Tools for exporting, importing, and merging localization files.
  • Tool for reporting on the quality of a localization.
  • Tool for scanning C/C++ source files for localization strings.
  • Coming Soon: Tool for doing a first pass machine translation.

I’m providing StringsUtil under the Apache License Version 2.0 with an (optional) exception to allow linking against GPL2/LGPL2 software.

Home Page Github Project

Comments
 

PDFio 1.0.1 March 02, 2022

PDFio 1.0.1 is a bug fix release. Changes include:

  • Added missing pdfioPageGetNumStreams and pdfioPageOpenStream functions.
  • Added demo pdfiototext utility.
  • Fixed bug in pdfioStreamGetToken.

Enjoy!

Download PDFio v1.0.1 Home Page

Comments
 

mmd v1.9 March 01, 2022

This release of mmd adds support for task lists as well as resolving a few minor issues reported by the Clang static code analysis tool. Changes include:

  • Added support for the Github-flavored markdown task list extension (check boxes in lists)
  • Addressed some issues found by the Clang static analyzer.

Enjoy!

Download mmd 1.9 Install mmdutil 1.9 Snap Home Page

Comments
 

HTMLDOC Now Available on Flathub February 09, 2022

HTMLDOC is now available on Flathub, another Linux app store.

Enjoy!

Install HTMLDOC 1.9.15 from Flathub

Comments
 

HTMLDOC 1.9.15 February 05, 2022

HTMLDOC 1.9.15 is a bug fix release. Changes include:

  • Fixed a potential heap overflow bug with GIF images (Issue #461)
  • Fixed a potential double-free bug with PNG images (Issue #462)
  • Fixed a potential stack overflow bug with GIF images (Issue #463)
  • Fixed a potential heap underflow bug with empty attributes (Issue #464)
  • Fixed a potential stack overflow bug with BMP images (Issue #466)
  • Fixed a potential heap overflow bug with the table-of-contents (Issue #467)
  • Fixed a potential heap overflow bug with headings (Issue #468)
  • Fixed a potential stack overflow bug with GIF images (Issue #470)

Binaries are available from Github for Windows and macOS, and through the Snapcraft store for Linux.

Enjoy!

Download HTMLDOC 1.9.15 Install HTMLDOC 1.9.15 Snap Home Page

Comments
 

LPrint v1.1.0 December 23, 2021

LPrint v1.1.0 adds support for EPL and 600dpi ZPL label printers, adds status reporting and automatic label configuration for ZPL label printers, adds auto-setup and test labels for printers, adds system service files for macOS and Linux, and fixes all known bugs in the previous release. Changes include:

  • Switched to PAPPL (Issue #20, #35)
  • Fixed lprint default and lprint delete not working (Issue #17, Issue #40)
  • Fixed server crashes on SIGINT (Issue #18)
  • Fixed the reported date and time information when no printers were added (Issue #26)
  • Fixed a startup bug on macOS (Issue #34)
  • Now support auto-detection of printer drivers and auto-add USB printers the first time LPrint is run.
  • Added the missing macOS binary package (Issue #33)
  • Added launchd and systemd service files for running lprint as a service.
  • Added support for Zebra/Eltron EPL2 printers (Issue #38)
  • Added support for 600dpi ZPL thermal transfer printers.
  • Added support for ZPL status/ready media updates.
  • Added support for test pages.
  • Temporarily removed support for DYMO LabelWriter Wireless printer (Issue #23)

Enjoy!

Download LPrint 1.1.0 Install lprint Snap Home Page

Comments
 

HTMLDOC 1.9.14 December 22, 2021

HTMLDOC 1.9.14 is a bug fix release. Changes include:

  • BMP image support is now deprecated and will be removed in a future release of HTMLDOC.
  • Fixed a potential stack overflow bug with GIF images.
  • Fixed the PDF creation date (Issue #455)
  • Fixed a potential stack overflow bug with BMP images (Issue #456)
  • Fixed a compile issue when libpng was not available (Issue #458)

Binaries are available from Github for Windows and macOS, and through the Snapcraft store for Linux.

Enjoy!

Download HTMLDOC 1.9.14 Install HTMLDOC 1.9.14 Snap Home Page

Comments
 

PAPPL v1.1.0 December 15, 2021

PAPPL v1.1.0 is now available for download. PAPPL v1.1 adds support for Wi-Fi configuration, IPP-USB, printer driver lookup and auto-add functionality, improves management of multiple printers, and adds support for Microsoft® Windows® 10 and higher.

Enjoy!

Download PAPPL v1.1.0 Home Page

Comments
 

PDFio 1.0.0 December 14, 2021

The first stable release of PDFio is now available! PDFio is a simple C library for reading and writing PDF files. The primary goals of PDFio are:

  • Read and write any version of PDF file
  • Provide access to pages, objects, and streams within a PDF file
  • Support reading and writing of encrypted PDF files
  • Extract or embed useful metadata (author, creator, page information, etc.)
  • “Filter” PDF files, for example to extract a range of pages or to embed fonts that are missing from a PDF
  • Provide access to objects used for each page

PDFio is not concerned with rendering or viewing a PDF file, although a PDF RIP or viewer could be written using it.

Enjoy!

Download PDFio v1.0.0 Home Page

Comments
 

PDFio 1.0rc1 November 30, 2021

PDFio 1.0rc1 is the first candidate release of PDFio. Changes include:

  • Fixed a few stack/buffer overflow bugs discovered via fuzzing.

Enjoy!

Download PDFio v1.0rc1 Home Page

Comments
 

PAPPL v1.1rc1 November 22, 2021

The release candidate for PAPPL v1.1 is now available for download. PAPPL v1.1 adds support for Wi-Fi configuration, IPP-USB, printer driver lookup and auto- add functionality, improves management of multiple printers, and adds support for Microsoft® Windows® 10 and higher.

Changes in 1.1rc1 include:

  • Fixed a bug in the printer configuration web page.

Enjoy!

Download PAPPL v1.1rc1 Home Page

Comments
 

PDFio 1.0b2 November 07, 2021

PDFio 1.0b2 is the second beta release of PDFio. Changes include:

  • Added pdfioFileCreateOutput API to support streaming output of PDF (Issue #21)
  • Fixed all-shared target (Issue #22)
  • Fixed memory leaks (Issue #23)
  • Updated pdfioContentSetDashPattern to accept double values (Issue #25)
  • Added support for reading and writing encrypted PDFs (Issue #26)
  • Fixed some issues identified by a Coverity scan.

Enjoy!

Download PDFio v1.0b2 Home Page

Comments
 

Mini-XML 3.3 November 06, 2021

Mini-XML 3.3 is a bug fix release. Changes include:

  • Cleaned up usage of free throughout the library (Issue #276)
  • Added more error handling to the library (Issue #277)
  • Fixed potential memory leak in mxmlLoad* functions (Issue #278, Issue #279)
  • Fixed mxmlSaveString with a buffer size of 0 (Issue #284)
  • Fixed MXML_MINOR_VERSION value in “mxml.h” (Issue #285)
  • Fixed POSIX threading support for MingW (Issue #287)
  • Fixed some minor memory leaks found by Coverity.

Enjoy!

Download Mini-XML 3.3 Home Page

Comments
 

HTMLDOC 1.9.13 November 05, 2021

HTMLDOC 1.9.13 is a bug fix release. Changes include:

  • Now install a 32x32 icon for Linux (Issue #432)
  • Fixed an issue with large values for roman numerals and letters in headings (Issue #433)
  • Fixed a crash bug when a HTML comment contains an invalid nul character (Issue #439)
  • Fixed a crash bug with bogus BMP images (Issue #444)
  • Fixed a potential heap overflow bug with bogus GIF images (Issue #451)
  • Fixed a potential stack overflow bug with bogus BMP images (Issue #453)

Binaries are available from Github for Windows and macOS, and through the Snapcraft store for Linux.

Enjoy!

Download HTMLDOC 1.9.13 Install HTMLDOC 1.9.13 Snap Home Page

Comments
 

PAPPL v1.1b3 November 04, 2021

The third beta release of PAPPL v1.1 is now available for download. PAPPL v1.1 adds support for Wi-Fi configuration, IPP-USB, printer driver lookup and auto- add functionality, improves management of multiple printers, and adds support for Microsoft® Windows® 10 and higher.

Changes in 1.1b3 include:

  • Added a new papplSystemSetAuthCallback API to support alternate authentication mechanisms (Issue #185)
  • Added papplCreateTempFile and papplPrinterOpenFile file creation functions (Issue #186)
  • Added support for a server-options option for the server sub-command (Issue #187)
  • Added an optional callback for processing USB gadget print data.
  • Added papplCopyString, papplGetRand, and papplGetTempDir utility functions.
  • Calling papplSystemSetHostName did not also update the default TLS common name.
  • Now map file:///dev/null to NUL: on Windows.

Enjoy!

Download PAPPL v1.1b3 Home Page

Comments
 

PAPPL v1.1b2 September 24, 2021

The second beta release of PAPPL v1.1 is now available for download. PAPPL v1.1 adds support for Wi-Fi configuration, IPP-USB, printer driver lookup and auto- add functionality, improves management of multiple printers, and adds support for Microsoft® Windows® 10 and higher.

Changes in 1.1b2 include:

  • Added support for papplDeviceGetID with network devices (Issue #95)
  • Added support for the “compression” option.
  • Added English names for Tabloid and A3 media sizes in the web interface.
  • Added “server-hostname” and “listen-hostname” server options to the default mainloop system callback.
  • Fixed support for default printers, added indicator in web interface (Issue #182)
  • Fixed support for printers with spaces in their names.
  • Fixed the “jobs” subcommand.
  • Fixed support for page-ranges.
  • Fixed support for printers that do PDF beyond converting it to raster.
  • Fixed support for mainloop subcommands on Windows.
  • Fixed error message when Bonjour for Windows is not installed.

Enjoy!

Download PAPPL v1.1b2 Home Page

Comments
 

OpenPrinting at the Linux Plumber's Conference September 21, 2021

The OpenPrinting group of the Linux Foundation had a session at the 2021 (virtual) Linux Plumber’s Conference yesterday. I led a discussion about the upcoming CUPS 2.4 release, next year’s planned CUPS 2.5 release, and 2023’s planned CUPS 3.0 release which will (finally) eliminate printer drivers on Linux. Till presented developments in printer management and packaging on Linux, print dialogs, and printer applications. And Bhavna talked about her Google Summer of Code work to extend PAPPL with scanning support.

Comments
 

Version Numbering September 01, 2021

I recently got some push-back on my latest beta releases, specifically on the format of my version numbers (1.0b1 for PDFio, and 1.1b1 for PAPPL). I’ve been using this scheme for many years now, and it is hardly unique. What follows is a short summary of the history, standards, and best practices for version numbers…

More + Comments
 

PAPPL v1.1b1 August 31, 2021

The first beta release of PAPPL v1.1 is now available for download. PAPPL v1.1 adds support for Wi-Fi configuration, IPP-USB, printer driver lookup and auto- add functionality, improves management of multiple printers, and adds support for Microsoft® Windows® 10 and higher.

Changes in 1.1b1 include:

  • Added support for Windows 10 and higher.
  • Added PAPPL_SOPTIONS_NO_TLS option to disable TLS support.
  • Added Wi-Fi callbacks to support configuration over IPP-USB (Issue #45)
  • Added buttons and sub-commands to pause and resume printers (Issue #124)
  • papplMainLoop now uses a persistent location for state and spool files by default (Issue #128)
  • papplMainLoop now supports clients talking to a system-wide server running as root (Issue #148)
  • Added a “set default” button to the web interface (Issue #150)
  • The drivers sub-command now reports the IEEE-1284 device ID for a given driver (Issue #157)
  • Jobs can now be canceled and printers deleted when a processing job is trying to connect to a printer (Issue #163)
  • The default media is now updated if the ready media for a given tray is updated (Issue #164)
  • Fixed an issue with the “drivers” sub-command not working if you don’t have a system callback.
  • Fixed a deadlock issue on macOS.
  • Added a new papplJobCreateWithFile API to allow printer applications to submit print jobs internally.
  • Refactored the papplSystem hostname/port APIs to be consistent with the naming used for the papplClient APIs.

Enjoy!

Download PAPPL v1.1b1 Home Page

Comments
 

PDFio 1.0b1 August 30, 2021

PDFio 1.0b1 is the first beta release of PDFio.

Download PDFio v1.0b1 Home Page

Comments
 

Ubuntu Desktop Team Indaba August 27, 2021

I had the privilege of being a guest with Till Kamppeter on this month’s Ubuntu Desktop Team Indaba to talk about open source printing - the early history, where we are today, and where we are headed. Be sure to check out the video and the OpenPrinting web sites for more information and links to all of the projects that are being worked on.

Comments
 

RasterView 1.8 July 17, 2021

RasterView 1.8 includes some minor improvements and bug fixes. Changes include:

  • Fixed HiDPI support on Linux (Issue #11)
  • Fixed macOS 11 (Big Sur) issues (Issue #15)
  • Can now view page bitmaps up to 2GB in size (Issue #16)
  • Color picker mode now copies the hex RGB color to the clipboard.
  • Zoom gestures are now supported on macOS.
  • Addressed a few warnings from LGTM.
  • Fixed macOS bundle information and now provide fat binaries for Intel and Apple Silicon.

Enjoy!

Download RasterView 1.8 Install RasterView 1.8 Snap Home Page

Comments
 

Announcing PDFio, a Simple PDF Read/Write Library May 30, 2021

PDFio is a simple C library for reading and writing PDF files. I’ve been working on it sporadically for the last few weeks to prototype some new printing features and support a future version of HTMLDOC. The primary goals of PDFio are:

  • Read and write any version of PDF file
  • Provide access to pages, objects, and streams within a PDF file
  • Support reading encrypted PDF files
  • Support writing PDF files with digital signatures
  • Extract or embed useful metadata (author, creator, page information, etc.)
  • “Filter” PDF files, for example to extract a range of pages or to embed fonts that are missing from a PDF
  • Provide access to objects used for each page

PDFio is not concerned with rendering or viewing a PDF file, although a PDF RIP or viewer could be written using it. And while it is far from complete, the current code is sufficient to manipulate PDF files and create page content.

I’m providing PDFio under the Apache License Version 2.0 with an (optional) exception to allow linking against GPL2/LGPL2 software.

Home Page Github Project

Comments
 

HTMLDOC 1.9.12 May 17, 2021

HTMLDOC 1.9.12 is a bug fix release. Changes include:

  • Fixed a crash bug with “data:” URIs and EPUB output (Issue #410)
  • Fixed crash bugs for books (Issue #412, Issue #414)
  • Fixed a number-up crash bug (Issue #413)
  • Fixed JPEG error handling (Issue #415)
  • Fixed crash bugs with bogus table attributes (Issue #416, Issue #417)
  • Fixed a crash bug with malformed URIs (Issue #418)
  • Fixed a crash bug with malformed GIF files (Issue #423)
  • Fixed a crash bug with empty titles (Issue #425)
  • Fixed crash bugs with bogus text (Issue #426, Issue #429, Issue #430, Issue #431)
  • Fixed some issues reported by Coverity.
  • Removed the bundled libjpeg, libpng, and zlib.

Enjoy!

Download HTMLDOC 1.9.12 Install HTMLDOC 1.9.12 Snap Home Page

Comments
 

PAPPL v1.0.3 April 21, 2021

PAPPL v1.0.3 is a general bug fix release and is now available for download.

Download PAPPL v1.0.3 Home Page

More + Comments
 

PAPPL v1.0.2 February 20, 2021

PAPPL v1.0.2 is a general bug fix release and is now available for download.

Download PAPPL v1.0.2 Home Page

More + Comments
 

PAPPL v1.0.1 January 12, 2021

PAPPL v1.0.1 is a general bug fix release and is now available for download.

Download PAPPL v1.0.1 Home Page

More + Comments
 

zipc v1.3 January 09, 2021

zipc v1.3 is a bug fix release. Changes include:

  • Fixed some issues when building using Visual Studio.
  • Switched to using localtime_r/s to avoid potential thread safety issues.
  • Fixed some issues reported by Coverity.

Enjoy!

Download zipc v1.3 Home Page

 

mmd v1.8 January 04, 2021

This release of mmd fixes a link parsing bug as well as resolving several minor issues reported by various static code analysis tools.

Enjoy!

Download mmd 1.8 Install mmdutil 1.8 Snap Home Page

More + Comments
 

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
 

codedoc v3.4 December 28, 2019

This release of codedoc adds C++ namespace support. Changes include:

  • Added support for C++ namespaces (Issue #7)
  • Silenced some warnings from the LGTM security scanner.

Enjoy!

Download codedoc 3.4 Install codedoc 3.4 Snap Home Page

Comments
 

Thoughts on Leaving Apple... December 20, 2019

So today was my last day at Apple. Apple has been a great company to work for and I’m grateful for my time there. I accomplished most of the things I’d hoped for, particularly getting solid Internet Printing Protocol support in almost all network and USB printers sold over the last 10 years. I chaired the Printer Working Group for about half of my time at Apple, met and worked with a lot of really talented and considerate people, and mentored a few young engineers that have either excelled within Apple or moved on to their next challenges.

Going forward I’ll be taking a little time to reboot and start a new company with my amazing wife. I’ve missed working with her every day these last 13 years and I’m really excited to see where our new journey will take us.

Comments
 

codedoc v3.3 November 17, 2019

This release of codedoc adds basic markdown support in comments and some other minor improvements.

Enjoy!

Download codedoc 3.3 Install codedoc 3.3 Snap Home Page

More
 

ABNF to REGEX v2019.10 October 10, 2019

I’ve updated the ABNF to REGEX web page with a number of bug fixes and improvements.

Enjoy!

Download ABNF to REGEX Online Form Home Page

More
 

HTMLDOC 1.9.7 October 09, 2019

HTMLDOC 1.9.7 is primarily a bug fix release with added support for PDF links with targets.

Enjoy!

Download HTMLDOC 1.9.7 Install HTMLDOC 1.9.7 Snap Home Page

More
 

HTMLDOC 1.9.6 September 25, 2019

HTMLDOC 1.9.6 adds support for wrapping with &shy;, improves markdown support, fixes some issues, and optimizes font and PDF handling.

Enjoy!

Download HTMLDOC 1.9.6 Install HTMLDOC 1.9.6 Snap Home Page

More
 

Mini-XML 3.1 August 28, 2019

Mini-XML 3.1 fixes some installation issues and adds better error reporting.

Enjoy!

Download Mini-XML 3.1 Home Page

More
 

mmd v1.7 August 28, 2019

This release of mmd fixes some regressions in the markdown parser.

Enjoy!

Download mmd 1.7 Install mmdutil 1.7 Snap Home Page

More
 

codedoc v3.2 August 28, 2019

This release of codedoc fixes some buffer overflow issues and improves HTML and markdown support.

Enjoy!

Download codedoc 3.2 Install codedoc 3.2 Snap Home Page

More
 

mmd v1.6 August 18, 2019

This release of mmd adds support for link titles and code languages, adds functions for controlling which markdown extensions are supported, and fixes a number of parsing bugs.

Enjoy!

Download mmd 1.6 Install mmdutil 1.6 Snap Home Page

More
 

Mini-XML 3.0 March 02, 2019

Mini-XML 3.0 is a major release that changes the license to Apache 2.0 with exceptions for linking to GPL2-only code, hides the definition of the internal mxml_node_t structure, removes the “mxmldoc” utility (which is now maintained in the separate “codedoc” project), and fixes several bugs.

Enjoy!

Download Mini-XML 3.0 Home Page

More
 

codedoc v3.1 February 19, 2019

This release of codedoc improves markdown and HTML support.

Enjoy!

Download codedoc 3.1 Install codedoc 3.1 Snap Home Page

More
 

mmd v1.5 February 17, 2019

This release of mmd adds support for referenced links, additional inline text markup, and hard line breaks.

Enjoy!

Download mmd 1.5 Install mmdutil 1.5 Snap Home Page

More
 

HTMLDOC 1.9.5 January 23, 2019

HTMLDOC 1.9.5 fixes some GUI, markdown, and EPUB issues.

Enjoy!

Download HTMLDOC 1.9.5 Install HTMLDOC 1.9.5 Snap Home Page

More
 

mOAuth v1.1 January 19, 2019

mOAuth 1.1 adds support for dynamic client registration and PAM-based authentication backends.

Enjoy!

Download mOAuth 1.1 Install mOAuth 1.1 Snap Home Page

More
 

mOAuth v1.0 January 15, 2019

This is the first stable release of mOAuth, a basic OAuth 2.0 client/server implementation for testing and development of OAuth-based services.

Enjoy!

Download mOAuth 1.0 Install mOAuth 1.0 Snap Home Page

 

mmd v1.4 January 04, 2019

This release of mmd fixes some problems found with Clang static analyzer and with the mmdutil program.

Enjoy!

Download mmd 1.4 Install mmdutil 1.4 Snap Home Page

More
 

codedoc v3.0 January 04, 2019

This is the first release of codedoc, a replacement for the mxmldoc utility that was provided with Mini-XML with several enhancements and bug fixes.

Enjoy!

Download codedoc 3.0 Install codedoc 3.0 Snap Home Page

More
 

Mini-XML 2.12 October 02, 2018

Mini-XML 2.12 fixes several bugs, updates the build system on macOS and Windows, and updates the markdown and EPUB support.

Enjoy!

Download Mini-XML 2.12 Home Page

More
 

HTMLDOC 1.9.4 August 31, 2018

HTMLDOC 1.9.4 fixes a font sizing bug and reduces startup time.

Enjoy!

Download HTMLDOC 1.9.4 Install HTMLDOC 1.9.4 Snap Home Page

More
 

Updates for macOS Binaries July 04, 2018

I’ve posted updated HTMLDOC and RasterView binaries for macOS to Github that fix a library dependency issue reported by some users.

Enjoy!

Download HTMLDOC 1.9.3 Download RasterView 1.7.1

 

RasterView 1.7.1 July 02, 2018

RasterView 1.7.1 fixes a crash bug on macOS.

Enjoy!

Download RasterView 1.7.1 Install RasterView 1.7.1 Snap Home Page

 

RasterView 1.7 June 05, 2018

RasterView 1.7 updates the page controls to allow navigation to any page and adds mode buttons for zoom, pan, and color (to show the current mode).

Enjoy!

Download RasterView 1.7 Install RasterView 1.7 Snap Home Page

 

RasterView 1.6 May 04, 2018

RasterView 1.6 fixes support for 16-bit per color files, adds support for gzip’d files, and changes the license to the Apache License Version 2.0.

Enjoy!

Download RasterView 1.6 Install RasterView 1.6 Snap Home Page

 

HTMLDOC 1.9.3 April 10, 2018

HTMLDOC 1.9.3 fixes some formatting, markdown, and build issues on specific platforms.

Enjoy!

Download HTMLDOC 1.9.3 Install HTMLDOC 1.9.3 Snap Home Page

More
 

mmd v1.3 March 10, 2018

This release of mmd adds the mmdCopyAllText function and a new conversion utility called mmdutil.

Enjoy!

Download mmd 1.3 Install mmdutil 1.3 Snap Home Page

More
 

HTMLDOC 1.9.2 February 03, 2018

HTMLDOC 1.9.2 fixes parsing of HTML 4.0 tables and adds support for markdown tables.

Enjoy!

Download HTMLDOC 1.9.2 Install HTMLDOC 1.9.2 Snap Home Page

More
 

mmd v1.2 February 02, 2018

This release of mmd adds support for the common table extension to Markdown and is provided under the terms of the Apache License Version 2.0.

Enjoy!

Download mmd 1.2 Home Page

More
 

Building Snaps for GUI Applications January 23, 2018

Snaps are a convenient way to build binaries for Linux on multiple architectures and for multiple distributions. However, the current documentation for creating snaps is a bit obtuse, making it hard to get a working snap that can be distributed.

More
 

HTMLDOC Now Available as a Snap January 22, 2018

After a bunch of experimentation I have finally resolved the GUI bug in the HTMLDOC snap, so you can now get HTMLDOC on Linux as a snap package! Run snap install htmldoc to install the official binaries on Linux.

Enjoy!

Home Page

 

mmd v1.1 October 30, 2017

This release of mmd fixes a number of bugs, adds C++ support, and adds a mmdLoadFile function that loads Markdown content from the FILE pointer.

Enjoy!

Download mmd 1.1 Home Page

More
 

HTMLDOC 1.9.1 October 29, 2017

HTMLDOC 1.9.1 is primarily a bug fix release that also adds limited support for UTF-8.

Enjoy!

Download HTMLDOC 1.9.1 Home Page

More
 

Mini-XML 2.11 October 28, 2017

Mini-XML 2.11 fixes a number of bugs, adds support for reproducible builds, cross-compilation, and enumeration of element attributes, and adds support for generating EPUB documentation using mxmldoc.

Enjoy!

Download Mini-XML 2.11 Home Page

More
 

zipc v1.2 October 26, 2017

zipc v1.2 adds ZIP read support using the zipcOpenFile, zipcFileGets, zipcFileRead, zipcFileXMLGets, and zipcXMLGetAttribute functions. It also fixes use from C++ code, fixes Visual C++ support, and adds support for the %f format in the zipcFileXMLPrintf function.

Enjoy!

Download zipc v1.2 Home Page

 

EPM 4.4 October 11, 2017

EPM 4.4 is a maintenance release that fixes RPM packaging and several build issues.

More
 

HTMLDOC 1.9 July 04, 2017

HTMLDOC 1.9 is a limited feature release that adds support for Markdown input and EPUB output.

More
 

zipc v1.1 April 23, 2017

zipc v1.1 adds a zipcCopyFile function to efficiently copy files into ZIP containers and fixes an issue with some EPUB and OPC applications.

Download zipc v1.1 Home Page

 

mmd v1.0 April 23, 2017

mmd v1.0 is a miniature markdown parsing “library” consisting of a single C source file and accompanying header file. mmd v1.0 mostly conforms to the CommonMark version of markdown syntax and supports a couple (otherwise undocumented) CommonMark extensions.

Download mmd v1.0 Home Page

 

zipc v1.0 April 05, 2017

zipc is a simple ZIP container “library” consisting of a C source file and accompanying header file. Version 1.0 implements writing of ZIP containers with files smaller than 4GB. Files can be stored as-is or compressed with deflate (gzip) compression.

Download zipc v1.0 Home Page

 

HTMLDOC 1.8.30 March 24, 2017

HTMLDOC 1.8.30 fixes some known build and formatting issues. Changes include:

  • Updated documentation to reflect new project page on Github.
  • Dropped old CDE and IRIX desktop integration files.
  • Cleaned up the GUI and adopted new default text editors for Linux and macOS.
  • PAGE BREAK comments at the end of a file in web page mode would lose the first page (Issue #251)
  • Fixed the scaling of header/footer images to limit them to the height of the header or footer (Issue #273)
  • Fixed an issue with the top-level makefile not exiting with an error as needed (Issue #282)
  • Fixed a URL referencing bug when the same hostname but a different port was used (Issue #290)
  • Fixed build issue on macOS (Issue #291)
  • Fixed handling of indexed+alpha PNG images (Issue #295)

Download HTMLDOC 1.8.30 Home Page

 

RasterView 1.5 March 22, 2017

RasterView 1.5 adds support for Apple raster files.

Download RasterView 1.5 Home Page

 

Bug Migration Complete March 03, 2017

All of the bug reports from the old server have been migrated to the Github issue tracker.

 

Moved the Site to Github February 27, 2017

I have moved the main msweet.org web site and projects to Github in order to spend less time maintaining servers and more time programming. All of the recent releases are already available in the corresponding Github projects, and I will be migrating the bug reports to the Github issue tracker over the next couple days.

In lieu of mailing lists, please use the Github issue tracker to ask questions or report problems with the new web site.

 

Mini-XML 2.10 June 13, 2016

Mini-XML 2.10 is now available for download from:

https://github.com/michaelrsweet/mxml/releases

Mini-XML 2.10 fixes some stack overflow, XML, and API issues.

More
 

HTMLDOC 1.8.29 January 03, 2016

HTMLDOC 1.8.29 is now available for download from:

https://github.com/michaelrsweet/htmldoc/releases

HTMLDOC 1.8.29 fixes some known build and formatting issues, updates support libraries, and drops support for OpenSSL.

More
 

EPM 4.3 September 01, 2015

EPM 4.3 is now available for download from:

https://www.msweet.org/downloads.php/epm

The new release fixes several issues on Linux and OS X and adds support for signed packages.

More
 

RasterView 1.4.1 August 27, 2015

RasterView 1.4.1 fixes builds on Linux and includes binaries for OS X and Linux.

Download RasterView v1.4.1 Home Page

 

RasterView 1.4 August 26, 2015

RasterView 1.4 adds support for viewing Device-N files and improves the display of PWG Raster page attributes.

Download RasterView v1.4 Home Page

 

Mini-XML 2.9 October 19, 2014

Mini-XML 2.9 is now available for download from:

https://github.com/michaelrsweet/mxml/releases

Mini-XML 2.9 fixes a bug in the mxmlLoad* functions when using the default (MXML_NO_CALLBACK or MXML_TEXT_CALLBACK) callback.

Download Mini-XML v2.9 Home Page

 

HTMLDOC 1.8.28 January 06, 2014

HTMLDOC 1.8.28 is now available for download from:

https://github.com/michaelrsweet/htmldoc/releases

HTMLDOC 1.8.28 fixes some known security issues and formatting bugs.

More
 

Mini-XML 2.8 January 05, 2014

Mini-XML 2.8 is now available for download from:

https://github.com/michaelrsweet/mxml/releases

Mini-XML 2.8 fixes some minor platform and XML issues.

More