DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

catopen(S)


catopen, catclose -- open/close a message catalog

Syntax

cc . . . -lc

#include  <nl_types.h>

nl_catd catopen (name, oflag) char *name; int oflag;

int catclose (catd) nl_catd catd;

Description

catopen(S) opens a message catalog generated by the gencat(CP) utility and returns a catalog descriptor for use by catgets(S). The name argument is the name of the message catalog to be opened.

catclose( ) closes the message catalog identified by the catd catalog descriptor.

If name contains a ``/'' then name specifies a pathname for the message catalog. Otherwise, name must be of the form

filename[@archivename]

The pathname for the message catalog in this case is constructed from the environment variable $NLSPATH (see environ(M)) by substituting the %N component of $NLSPATH by filename and the optional %A component by archivename. If archivename is specified, catgets( ) accesses the message catalog in an archived directory.

If the environment variable $NLSPATH is not set, or if a message catalog can not be opened in any of the paths specified by $NLSPATH, then the default paths matching the following templates are used:

/usr/lib/nls/msg/%L/%A/%N
/usr/lib/nls/msg/%l_%t/%A/%N
/usr/lib/nls/msg/%l/%A/%N

/etc/nls/msg/%L/%A/%N
/etc/nls/msg/%l_%t/%A/%N
/etc/nls/msg/%l/%A/%N

In these templates,


%L
is the current value of the LC_MESSAGES category, or, if not set, C by default

%l
is the language component from the LC_MESSAGES category

%t
is the territory component from the LC_MESSAGES category

%A
is the optional archive component (archivename) of the message catalog name

%N
is the file component (filename) of the message catalog name
If the optional archive component, archivename, is not specified in name, %A is omitted when constructing pathnames for the message catalog from these templates.

The pathnames for the message catalog constructed from these templates or the environment variable $NLSPATH may be affected by the current setting of LC_MESSAGES if oflag has the value NL_CAT_LOCALE, or by the current setting of the LANG if oflag is 0.

oflag must have one of the following values. Setting oflag to any other values causes undefined behavior.


0
The current value of LANG is used to locate the catalog and the value of LC_MESSAGES is ignored.

NL_CAT_LOCALE
The current value of LC_MESSAGES is used to locate the message catalog.

NL_USE_NLSPATH
The environment variable $NLSPATH is used to locate the message catalog even if name contains a ``/''.

Return values

If successful, catopen( ) returns a message catalog descriptor for use on subsequent calls to catgets(S) and catclose( ). If unsuccessful, catopen( ) returns (nl_catd)-1.

catclose( ) returns 0 if successful; otherwise it returns -1.

Diagnostics

The catopen( ) routine fails if one of the following is true:

ENOMEM
Insufficient storage space is available.

I_EIBNV
The LANG variable is not defined or contains incorrect data.

I_ENOOP
No message file was found according to $NLSPATH.

I_ENMEM
Out of memory.

The catclose( ) routine fails if the following is true:


I_EBADC
The message file could not be found or the message catalog file descriptor has already been closed.

Notes

Using catopen( ) may cause another file descriptor to be allocated by the calling process, in addition to stdin, stdout and stderr. Applications should take care not to close this file descriptor by mistake.

See also

catgets(S), environ(M), gencat(CP), mkmsgs(CP)

``Constructing and using message catalogs'' in Developer's Topics

Standards conformance

catopen(S) and catclose(S) are conformant with:

X/Open Portability Guide, Issue 3, 1989 .


© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003