catopen(3)

catopen3

Open message catalog

Usage

#include <nl_types.h>

nl_catd

catopen(const char *name, int oflag);

Library

Standard C Library (libc, -lc)

Overview

The catopen() function opens the message catalog specified by name and returns a message catalog descriptor. If name contains a ‘/’ then name specifies the full pathname for the message catalog, otherwise the value of the environment variable NLSPATH is used with the following substitutions:

%N

The value of the name argument.

%L

The value of the LANG environment variable or the LC_MESSAGES category (see below).

%l

The language element from the LANG environment variable or from the LC_MESSAGES category.

%t

The territory element from the LANG environment variable or from the LC_MESSAGES category.

%c

The codeset element from the LANG environment variable or from the LC_MESSAGES category.

%%

A single % character.

An empty string is substituted for undefined values.

Path names templates defined in NLSPATH are separated by colons (‘:’). A leading or two adjacent colons is equivalent to specifying %N.

If the oflag argument is set to the NL_CAT_LOCALE constant, LC_MESSAGES locale category used to open the message catalog; using NL_CAT_LOCALE conforms to the X/Open Portability Guide Issue 4 (“XPG4”) standard. You can specify 0 for compatibility with X/Open Portability Guide Issue 3 (“XPG3”); when oflag is set to 0, the LANG environment variable determines the message catalog locale.

A message catalog descriptor remains valid in a process until that process closes it, or until a successful call to one of the exec(3) function.

Return values

Upon successful completion, catopen() returns a message catalog descriptor. Otherwise, (nl_catd) -1 is returned and errno is set to indicate the error.

Errors

[ENAMETOOLONG]

An entire path to the message catalog exceeded 1024 characters.

[ENOENT]

Argument name does not point to a valid message catalog name, or it points to an empty string.

[ENOENT]

The named message catalog does not exist.

[ENOENT]

The named message catalog file is in wrong format.

[ENOMEM]

Insufficient memory is available.

Releases

87 releases since FreeBSD 2.0.5-RELEASE; the text changed 49 times.

  1. 2.0.5
  2. 2.1.5–2.1.7.1
  3. 2.2.2–2.2.6
  4. 2.2.7–2.2.8
  5. 2.2.9
  6. 3.0–3.2
  7. 3.3
  8. 3.4
  9. 3.5–3.5.1
  10. 4.0
  11. 4.1
  12. 4.1.1–4.2
  13. 4.3
  14. 4.4
  15. 4.5–4.11
  16. 5.0–5.5
  17. 6.0–6.3
  18. 6.4
  19. 7.0
  20. 7.1
  21. 7.2
  22. 7.3
  23. 7.4
  24. 8.0
  25. 8.1
  26. 8.2
  27. 8.3
  28. 8.4
  29. 9.0
  30. 9.1
  31. 9.2
  32. 9.3
  33. 10.0
  34. 10.1
  35. 10.2
  36. 10.3
  37. 10.4
  38. 11.0
  39. 11.1
  40. 11.2
  41. 11.3
  42. 11.4
  43. 12.0
  44. 12.1
  45. 12.2
  46. 12.3
  47. 12.4
  48. 13.0–13.2
  49. 13.3–14.2
  50. 14.3–16.0

Standards

The catopen() function conforms to IEEE Std 1003.1-2001 (“POSIX.1”).

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.