1 /* Copyright (C) 2000-2022 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3 
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public License as
6    published by the Free Software Foundation; either version 2.1 of the
7    License, or (at your option) any later version.
8 
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; see the file COPYING.LIB.  If
16    not, see <https://www.gnu.org/licenses/>.  */
17 
18 #include <stdint.h>
19 
20 
21 typedef uint16_t gidx_t;
22 
23 
24 struct gconvcache_header
25 {
26   uint32_t magic;
27   gidx_t string_offset;
28   gidx_t hash_offset;
29   gidx_t hash_size;
30   gidx_t module_offset;
31   gidx_t otherconv_offset;
32 };
33 
34 struct hash_entry
35 {
36   gidx_t string_offset;
37   gidx_t module_idx;
38 };
39 
40 struct module_entry
41 {
42   gidx_t canonname_offset;
43   gidx_t fromdir_offset;
44   gidx_t fromname_offset;
45   gidx_t todir_offset;
46   gidx_t toname_offset;
47   gidx_t extra_offset;
48 };
49 
50 struct extra_entry
51 {
52   gidx_t module_cnt;
53   struct extra_entry_module
54   {
55     gidx_t outname_offset;
56     gidx_t dir_offset;
57     gidx_t name_offset;
58   } module[0];
59 };
60 
61 
62 #define GCONVCACHE_MAGIC	0x20010324
63 
64 
65 #define GCONV_MODULES_CACHE	GCONV_DIR "/gconv-modules.cache"
66