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.
The manual pages
- Solnix: gencat(1) from
pkgs.solnix.illumos-world-man· illumos.org - FreeBSD: gencat(1) 15.1-RELEASE
- OpenBSD: gencat(1) 8.0
- NetBSD: gencat(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
gencat
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 with | Topic | What differs |
|---|---|---|
| FreeBSD, OpenBSD | source file format documented | The 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 msgfile | Solnix 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 |
| NetBSD | stdin handling | NetBSD'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, NetBSD | environment variables | The 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 rules | Solnix 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 numbers | Solnix 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 |
| NetBSD | unrecognised source lines | NetBSD 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, OpenBSD | blank input catalog bug | FreeBSD 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.