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