annotate intl/loadinfo.h @ 993:a9ac4beb4e15 trunk

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