catopen, catclose - open/close a message catalog


     #include <features.h>
     #include <nl_types.h>

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

     void catclose(catalog)
     nl_catd catalog;


     catopen() opens a message  catalog  and  returns  a  catalog
     descriptor.   name specifies the name of the message catalog
     to be opened.  If name specifies and  absolute  path,  (i.e.
     contains  a `/') then name specifies a pathname for the mes-
     sage catalog.  Otherwise, the environment  variable  NLSPATH
     is  used  with  name substituted for %N (see locale(7)).  If
     NLSPATH does not exist in the environment, or if  a  message
     catalog  cannot  be  opened in any of the paths specified by
     NLSPATH, then the following paths are searched in order


     In all cases LC_MESSAGES stands for the current  setting  of
     the  LC_MESSAGES  category of locale from a previous call to
     setlocale() and defaults to the  "C"  locale.  In  the  last
     search path name refers to the catalog name.

     The flag argument to catopen is used to indicate the type of
     loading  desired.  This  should  be  either  MCLoadBySet  or
     MCLoadAll.   The  former  value  indicates  that  only   the
     required  set  from  the  catalog is loaded into memory when
     needed, whereas the latter causes the initial call to  cato-
     pen() to load the entire catalog into memory.

     catclose() closes the message catalog identified by catalog.
     It  invalidates  any  subsequent  references  to the message
     catalog defined by catalog.


     catopen() returns  a  message  catalog  descriptor  of  type
     nl_catd on success.  On failure, it returns -1.

     catclose() returns 0 on success, or -1 on failure.


     These functions are only  available  in  and
     above.  In the case of linux, the catalog descriptor nl_catd
     is actually a mmap()'ed  area  of  memory  and  not  a  file
     descriptor, thus allowing catalogs to be shared.


     catgets(3), setlocale(3)