gencat(1) on Solnix vs Linux and the BSDs

On Solnix, gencat is the illumos gencat at /usr/bin/gencat, with the same basic synopsis as the BSDs: gencat catfile msgfile.... The Solnix page also documents the source file format, accepts - for standard input and output, and lists the locale environment variables. FreeBSD and OpenBSD describe none of this in their pages.

What Solnix runs

A default Solnix system runs the illumos gencat at /usr/bin/gencat. No other variants are shipped. The package is pkgs.solnix.illumos-world-man. The bundle text of the ATTRIBUTES table is cut off, but it begins with CSI enabled and Interface Stability Standard.

Differences

Compared withTopicWhat differs
FreeBSD, OpenBSDsource file format documentedThe Solnix page defines the message source syntax: $set, $delset, $quote, comment lines, escape sequences and backslash line continuation. The FreeBSD and OpenBSD pages say nothing about the source syntax.
Source: Solnix gencat(1) Message Text Source File Format; FreeBSD gencat(1) DESCRIPTION; OpenBSD gencat(1) DESCRIPTION
FreeBSD, OpenBSD- as catfile or msgfileSolnix documents that a catfile of - writes the catalog to standard output and a msgfile of - reads standard input. The FreeBSD and OpenBSD pages do not mention - for either operand.
Source: Solnix gencat(1) OPERANDS catfile, msgfile; FreeBSD gencat(1) SYNOPSIS; OpenBSD gencat(1) SYNOPSIS
NetBSDstdin handlingNetBSD's synopsis is gencat catfile [msgfile|- ...] and its text says the catalog is generated from stdin or from msgfile arguments. Solnix requires at least one msgfile operand in its synopsis, and reads stdin only when - is given as a msgfile.
Source: NetBSD gencat(1) SYNOPSIS, DESCRIPTION; Solnix gencat(1) SYNOPSIS, OPERANDS msgfile
FreeBSD, OpenBSD, NetBSDenvironment variablesThe Solnix page lists LANG, LC_ALL, LC_CTYPE, LC_MESSAGES and NLSPATH as affecting gencat, with a pointer to environ(7). The FreeBSD, OpenBSD and NetBSD pages have no ENVIRONMENT section.
Source: Solnix gencat(1) ENVIRONMENT VARIABLES; FreeBSD, OpenBSD, NetBSD gencat(1) (no ENVIRONMENT section)
NetBSD$quote rulesSolnix says that by default, or with an empty $quote, no quoting is recognised. NetBSD says the quote character may be any non-white-space character. If one is set, messages must begin and end with it, and an empty $quote unsets it. NetBSD also lets a backslash escape the quote character. The Solnix text does not say that.
Source: Solnix gencat(1) $quote c; NetBSD gencat(1) $quote c and escape sequences paragraph
NetBSD$delset and invalid set numbersSolnix says $delset of an invalid set is ignored. NetBSD says the directive removes a set created earlier in the current file or in a file already read by gencat. The NetBSD page does not say what happens for an invalid set.
Source: Solnix gencat(1) $delset n comment; NetBSD gencat(1) $delset n comment
NetBSDunrecognised source linesNetBSD says leading blanks are ignored and that any line starting with an unlisted character is ignored as a syntax error. The Solnix page says only that empty lines are ignored. It says nothing about leading blanks or unrecognised lines.
Source: NetBSD gencat(1) after $quote c; Solnix gencat(1) Message Text Source File Format
FreeBSD, OpenBSDblank input catalog bugFreeBSD and OpenBSD document that a catalog created from a blank input file cannot be revised; it must be deleted and recreated. The Solnix page, in the part present in the bundle, has no BUGS section and does not say this.
Source: FreeBSD gencat(1) BUGS; OpenBSD gencat(1) BUGS; Solnix gencat(1) (no BUGS section in bundle)

Standards

  • POSIX: gencat is a POSIX.1-2024 utility.
  • Solnix: ATTRIBUTES: Interface Stability is Standard. CSI is enabled. The bundle text is cut off after this.
  • FreeBSD: The gencat utility is compliant with the X/Open Portability Guide Issue 4 (“XPG4”) standard.
  • OpenBSD: The gencat utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.

Writing portable scripts

  • Use only the form gencat catfile msgfile... with plain file names. Do not rely on - for standard input or output, and do not rely on reading stdin with no msgfile. Only Solnix and NetBSD document the use of - or stdin.
  • Keep source files to the common directives and escapes ($set, $delset, $quote, \n \t \ddd). Avoid depending on a quote character being escapable inside messages, since only NetBSD documents that.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.