( Interface to catgets

Info Catalog ( catgets ( catgets ( Problems with catgets
 11.1.1 The Interface
 The interface to the `catgets' implementation consists of three
 functions which correspond to those used in file access: `catopen' to
 open the catalog for using, `catgets' for accessing the message tables,
 and `catclose' for closing after work is done.  Prototypes for the
 functions and the needed definitions are in the `<nl_types.h>' header
    `catopen' is used like in this:
      nl_catd catd = catopen ("catalog_name", 0);
    The function takes as the argument the name of the catalog.  This
 usual refers to the name of the program or the package.  The second
 parameter is not further specified in the standard.  I don't even know
 whether it is implemented consistently among various systems.  So the
 common advice is to use `0' as the value.  The return value is a handle
 to the message catalog, equivalent to handles to file returned by
    This handle is of course used in the `catgets' function which can be
 used like this:
      char *translation = catgets (catd, set_no, msg_id, "original string");
    The first parameter is this catalog descriptor.  The second parameter
 specifies the set of messages in this catalog, in which the message
 described by `msg_id' is obtained.  `catgets' therefore uses a
 three-stage addressing:
      catalog name => set number => message ID => translation
    The fourth argument is not used to address the translation.  It is
 given as a default value in case when one of the addressing stages
 fail.  One important thing to remember is that although the return type
 of catgets is `char *' the resulting string _must not_ be changed.  It
 should better be `const char *', but the standard is published in 1988,
 one year before ANSI C.
 The last of these functions is used and behaves as expected:
      catclose (catd);
    After this no `catgets' call using the descriptor is legal anymore.
Info Catalog ( catgets ( catgets ( Problems with catgets
automatically generated byinfo2html