(root)/
gcc-13.2.0/
intl/
loadinfo.h
       1  /* Copyright (C) 1996-1999, 2000-2002 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3     Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
       4  
       5     This program is free software; you can redistribute it and/or modify it
       6     under the terms of the GNU Library General Public License as published
       7     by the Free Software Foundation; either version 2, or (at your option)
       8     any later version.
       9  
      10     This program is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Library General Public License for more details.
      14  
      15     You should have received a copy of the GNU Library General Public
      16     License along with this program; if not, write to the Free Software
      17     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
      18     USA.  */
      19  
      20  #ifndef _LOADINFO_H
      21  #define _LOADINFO_H	1
      22  
      23  /* Declarations of locale dependent catalog lookup functions.
      24     Implemented in
      25  
      26       localealias.c    Possibly replace a locale name by another.
      27       explodename.c    Split a locale name into its various fields.
      28       l10nflist.c      Generate a list of filenames of possible message catalogs.
      29       finddomain.c     Find and open the relevant message catalogs.
      30  
      31     The main function _nl_find_domain() in finddomain.c is declared
      32     in gettextP.h.
      33   */
      34  
      35  #ifndef PARAMS
      36  # if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
      37  #  define PARAMS(args) args
      38  # else
      39  #  define PARAMS(args) ()
      40  # endif
      41  #endif
      42  
      43  #ifndef internal_function
      44  # define internal_function
      45  #endif
      46  
      47  /* Tell the compiler when a conditional or integer expression is
      48     almost always true or almost always false.  */
      49  #ifndef HAVE_BUILTIN_EXPECT
      50  # define __builtin_expect(expr, val) (expr)
      51  #endif
      52  
      53  /* Separator in PATH like lists of pathnames.  */
      54  #if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
      55    /* Win32, OS/2, DOS */
      56  # define PATH_SEPARATOR ';'
      57  #else
      58    /* Unix */
      59  # define PATH_SEPARATOR ':'
      60  #endif
      61  
      62  /* Encoding of locale name parts.  */
      63  #define CEN_REVISION		1
      64  #define CEN_SPONSOR		2
      65  #define CEN_SPECIAL		4
      66  #define XPG_NORM_CODESET	8
      67  #define XPG_CODESET		16
      68  #define TERRITORY		32
      69  #define CEN_AUDIENCE		64
      70  #define XPG_MODIFIER		128
      71  
      72  #define CEN_SPECIFIC	(CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
      73  #define XPG_SPECIFIC	(XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
      74  
      75  
      76  struct loaded_l10nfile
      77  {
      78    const char *filename;
      79    int decided;
      80  
      81    const void *data;
      82  
      83    struct loaded_l10nfile *next;
      84    struct loaded_l10nfile *successor[1];
      85  };
      86  
      87  
      88  /* Normalize codeset name.  There is no standard for the codeset
      89     names.  Normalization allows the user to use any of the common
      90     names.  The return value is dynamically allocated and has to be
      91     freed by the caller.  */
      92  extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
      93  						  size_t name_len));
      94  
      95  /* Lookup a locale dependent file.
      96     *L10NFILE_LIST denotes a pool of lookup results of locale dependent
      97     files of the same kind, sorted in decreasing order of ->filename.
      98     DIRLIST and DIRLIST_LEN are an argz list of directories in which to
      99     look, containing at least one directory (i.e. DIRLIST_LEN > 0).
     100     MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER,
     101     SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as
     102     produced by _nl_explode_name().  FILENAME is the filename suffix.
     103     The return value is the lookup result, either found in *L10NFILE_LIST,
     104     or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL.
     105     If the return value is non-NULL, it is added to *L10NFILE_LIST, and
     106     its ->next field denotes the chaining inside *L10NFILE_LIST, and
     107     furthermore its ->successor[] field contains a list of other lookup
     108     results from which this lookup result inherits.  */
     109  extern struct loaded_l10nfile *
     110  _nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
     111  			    const char *dirlist, size_t dirlist_len, int mask,
     112  			    const char *language, const char *territory,
     113  			    const char *codeset,
     114  			    const char *normalized_codeset,
     115  			    const char *modifier, const char *special,
     116  			    const char *sponsor, const char *revision,
     117  			    const char *filename, int do_allocate));
     118  
     119  /* Lookup the real locale name for a locale alias NAME, or NULL if
     120     NAME is not a locale alias (but possibly a real locale name).
     121     The return value is statically allocated and must not be freed.  */
     122  extern const char *_nl_expand_alias PARAMS ((const char *name));
     123  
     124  /* Split a locale name NAME into its pieces: language, modifier,
     125     territory, codeset, special, sponsor, revision.
     126     NAME gets destructively modified: NUL bytes are inserted here and
     127     there.  *LANGUAGE gets assigned NAME.  Each of *MODIFIER, *TERRITORY,
     128     *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a
     129     pointer into the old NAME string, or NULL.  *NORMALIZED_CODESET
     130     gets assigned the expanded *CODESET, if it is different from *CODESET;
     131     this one is dynamically allocated and has to be freed by the caller.
     132     The return value is a bitmask, where each bit corresponds to one
     133     filled-in value:
     134       XPG_MODIFIER, CEN_AUDIENCE  for *MODIFIER,
     135       TERRITORY                   for *TERRITORY,
     136       XPG_CODESET                 for *CODESET,
     137       XPG_NORM_CODESET            for *NORMALIZED_CODESET,
     138       CEN_SPECIAL                 for *SPECIAL,
     139       CEN_SPONSOR                 for *SPONSOR,
     140       CEN_REVISION                for *REVISION.
     141   */
     142  extern int _nl_explode_name PARAMS ((char *name, const char **language,
     143  				     const char **modifier,
     144  				     const char **territory,
     145  				     const char **codeset,
     146  				     const char **normalized_codeset,
     147  				     const char **special,
     148  				     const char **sponsor,
     149  				     const char **revision));
     150  
     151  /* Split a locale name NAME into a leading language part and all the
     152     rest.  Return a pointer to the first character after the language,
     153     i.e. to the first byte of the rest.  */
     154  extern char *_nl_find_language PARAMS ((const char *name));
     155  
     156  #endif	/* loadinfo.h */