Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 1 | /* mz.h -- Errors codes, zip flags and magic |
Nathan Moinvaziri | db95894 | 2021-01-23 16:18:11 -0800 | [diff] [blame] | 2 | part of the minizip-ng project |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 3 | |
Nathan Moinvaziri | db95894 | 2021-01-23 16:18:11 -0800 | [diff] [blame] | 4 | Copyright (C) 2010-2021 Nathan Moinvaziri |
| 5 | https://github.com/zlib-ng/minizip-ng |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 6 | |
| 7 | This program is distributed under the terms of the same license as zlib. |
| 8 | See the accompanying LICENSE file for the full text of the license. |
| 9 | */ |
| 10 | |
Nathan Moinvaziri | b5fb125 | 2018-05-09 09:52:43 -0700 | [diff] [blame] | 11 | #ifndef MZ_H |
| 12 | #define MZ_H |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 13 | |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 14 | /***************************************************************************/ |
| 15 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 16 | /* MZ_VERSION */ |
Nathan Moinvaziri | f3d400e | 2022-03-05 14:53:32 -0800 | [diff] [blame] | 17 | #define MZ_VERSION ("3.0.5") |
| 18 | #define MZ_VERSION_BUILD (030005) |
Nathan Moinvaziri | 79ac338 | 2017-10-23 17:22:36 -0700 | [diff] [blame] | 19 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 20 | /* MZ_ERROR */ |
| 21 | #define MZ_OK (0) /* zlib */ |
| 22 | #define MZ_STREAM_ERROR (-1) /* zlib */ |
| 23 | #define MZ_DATA_ERROR (-3) /* zlib */ |
| 24 | #define MZ_MEM_ERROR (-4) /* zlib */ |
| 25 | #define MZ_BUF_ERROR (-5) /* zlib */ |
| 26 | #define MZ_VERSION_ERROR (-6) /* zlib */ |
Nathan Moinvaziri | 05e03ca | 2018-10-28 16:15:13 -0700 | [diff] [blame] | 27 | |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 28 | #define MZ_END_OF_LIST (-100) |
Nathan Moinvaziri | cda3600 | 2017-10-21 09:37:18 -0700 | [diff] [blame] | 29 | #define MZ_END_OF_STREAM (-101) |
Nathan Moinvaziri | 05e03ca | 2018-10-28 16:15:13 -0700 | [diff] [blame] | 30 | |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 31 | #define MZ_PARAM_ERROR (-102) |
| 32 | #define MZ_FORMAT_ERROR (-103) |
| 33 | #define MZ_INTERNAL_ERROR (-104) |
| 34 | #define MZ_CRC_ERROR (-105) |
| 35 | #define MZ_CRYPT_ERROR (-106) |
| 36 | #define MZ_EXIST_ERROR (-107) |
Nathan Moinvaziri | 18a3065 | 2017-12-07 06:59:53 -0800 | [diff] [blame] | 37 | #define MZ_PASSWORD_ERROR (-108) |
Nathan Moinvaziri | 0a9282d | 2018-06-19 11:59:07 -0700 | [diff] [blame] | 38 | #define MZ_SUPPORT_ERROR (-109) |
Nathan Moinvaziri | 21a3102 | 2018-10-24 09:50:16 -0700 | [diff] [blame] | 39 | #define MZ_HASH_ERROR (-110) |
Nathan Moinvaziri | 05e03ca | 2018-10-28 16:15:13 -0700 | [diff] [blame] | 40 | #define MZ_OPEN_ERROR (-111) |
| 41 | #define MZ_CLOSE_ERROR (-112) |
| 42 | #define MZ_SEEK_ERROR (-113) |
| 43 | #define MZ_TELL_ERROR (-114) |
| 44 | #define MZ_READ_ERROR (-115) |
| 45 | #define MZ_WRITE_ERROR (-116) |
Nathan Moinvaziri | 703b3df | 2018-10-28 16:41:20 -0700 | [diff] [blame] | 46 | #define MZ_SIGN_ERROR (-117) |
Nathan Moinvaziri | 3249eac | 2019-05-02 21:07:39 -0700 | [diff] [blame] | 47 | #define MZ_SYMLINK_ERROR (-118) |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 48 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 49 | /* MZ_OPEN */ |
Nathan Moinvaziri | 79ac338 | 2017-10-23 17:22:36 -0700 | [diff] [blame] | 50 | #define MZ_OPEN_MODE_READ (0x01) |
| 51 | #define MZ_OPEN_MODE_WRITE (0x02) |
| 52 | #define MZ_OPEN_MODE_READWRITE (MZ_OPEN_MODE_READ | MZ_OPEN_MODE_WRITE) |
| 53 | #define MZ_OPEN_MODE_APPEND (0x04) |
| 54 | #define MZ_OPEN_MODE_CREATE (0x08) |
| 55 | #define MZ_OPEN_MODE_EXISTING (0x10) |
| 56 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 57 | /* MZ_SEEK */ |
Nathan Moinvaziri | a45b34f | 2017-10-23 21:54:47 -0700 | [diff] [blame] | 58 | #define MZ_SEEK_SET (0) |
Nathan Moinvaziri | 79ac338 | 2017-10-23 17:22:36 -0700 | [diff] [blame] | 59 | #define MZ_SEEK_CUR (1) |
| 60 | #define MZ_SEEK_END (2) |
Nathan Moinvaziri | 79ac338 | 2017-10-23 17:22:36 -0700 | [diff] [blame] | 61 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 62 | /* MZ_COMPRESS */ |
Nathan Moinvaziri | fa146ad | 2018-08-07 23:50:31 -0700 | [diff] [blame] | 63 | #define MZ_COMPRESS_METHOD_STORE (0) |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 64 | #define MZ_COMPRESS_METHOD_DEFLATE (8) |
| 65 | #define MZ_COMPRESS_METHOD_BZIP2 (12) |
| 66 | #define MZ_COMPRESS_METHOD_LZMA (14) |
Force Charlie | 32ccb3e | 2020-06-24 10:55:18 +0800 | [diff] [blame] | 67 | #define MZ_COMPRESS_METHOD_ZSTD (93) |
Nathan Moinvaziri | c4668ed | 2020-10-25 11:56:19 -0700 | [diff] [blame] | 68 | #define MZ_COMPRESS_METHOD_XZ (95) |
Nathan Moinvaziri | 6e21e86 | 2017-10-19 09:57:54 -0700 | [diff] [blame] | 69 | #define MZ_COMPRESS_METHOD_AES (99) |
Nathan Moinvaziri | a45b34f | 2017-10-23 21:54:47 -0700 | [diff] [blame] | 70 | |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 71 | #define MZ_COMPRESS_LEVEL_DEFAULT (-1) |
Nathan Moinvaziri | 91a76f6 | 2017-11-10 07:39:06 -0800 | [diff] [blame] | 72 | #define MZ_COMPRESS_LEVEL_FAST (2) |
Nathan Moinvaziri | a45b34f | 2017-10-23 21:54:47 -0700 | [diff] [blame] | 73 | #define MZ_COMPRESS_LEVEL_NORMAL (6) |
| 74 | #define MZ_COMPRESS_LEVEL_BEST (9) |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 75 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 76 | /* MZ_ZIP_FLAG */ |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 77 | #define MZ_ZIP_FLAG_ENCRYPTED (1 << 0) |
| 78 | #define MZ_ZIP_FLAG_LZMA_EOS_MARKER (1 << 1) |
| 79 | #define MZ_ZIP_FLAG_DEFLATE_MAX (1 << 1) |
| 80 | #define MZ_ZIP_FLAG_DEFLATE_NORMAL (0) |
| 81 | #define MZ_ZIP_FLAG_DEFLATE_FAST (1 << 2) |
| 82 | #define MZ_ZIP_FLAG_DEFLATE_SUPER_FAST (MZ_ZIP_FLAG_DEFLATE_FAST | \ |
| 83 | MZ_ZIP_FLAG_DEFLATE_MAX) |
| 84 | #define MZ_ZIP_FLAG_DATA_DESCRIPTOR (1 << 3) |
Nathan Moinvaziri | 4b8e4b3 | 2018-08-20 09:06:23 -0700 | [diff] [blame] | 85 | #define MZ_ZIP_FLAG_UTF8 (1 << 11) |
Nathan Moinvaziri | c565fa8 | 2018-10-19 08:48:33 -0700 | [diff] [blame] | 86 | #define MZ_ZIP_FLAG_MASK_LOCAL_INFO (1 << 13) |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 87 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 88 | /* MZ_ZIP_EXTENSION */ |
Nathan Moinvaziri | e1f68fc | 2018-10-23 09:04:04 -0700 | [diff] [blame] | 89 | #define MZ_ZIP_EXTENSION_ZIP64 (0x0001) |
| 90 | #define MZ_ZIP_EXTENSION_NTFS (0x000a) |
| 91 | #define MZ_ZIP_EXTENSION_AES (0x9901) |
| 92 | #define MZ_ZIP_EXTENSION_UNIX1 (0x000d) |
| 93 | #define MZ_ZIP_EXTENSION_SIGN (0x10c5) |
| 94 | #define MZ_ZIP_EXTENSION_HASH (0x1a51) |
| 95 | #define MZ_ZIP_EXTENSION_CDCD (0xcdcd) |
| 96 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 97 | /* MZ_ZIP64 */ |
Nathan Moinvaziri | a56a08c | 2018-05-03 09:35:37 -0700 | [diff] [blame] | 98 | #define MZ_ZIP64_AUTO (0) |
| 99 | #define MZ_ZIP64_FORCE (1) |
| 100 | #define MZ_ZIP64_DISABLE (2) |
| 101 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 102 | /* MZ_HOST_SYSTEM */ |
Nathan Moinvaziri | 4b8e4b3 | 2018-08-20 09:06:23 -0700 | [diff] [blame] | 103 | #define MZ_HOST_SYSTEM(VERSION_MADEBY) ((uint8_t)(VERSION_MADEBY >> 8)) |
Nathan Moinvaziri | 4a41245 | 2018-05-02 09:24:09 -0700 | [diff] [blame] | 104 | #define MZ_HOST_SYSTEM_MSDOS (0) |
Nathan Moinvaziri | e33916b | 2018-05-01 13:45:08 -0700 | [diff] [blame] | 105 | #define MZ_HOST_SYSTEM_UNIX (3) |
Viktor Szakats | 447dd06 | 2018-05-02 19:59:38 +0000 | [diff] [blame] | 106 | #define MZ_HOST_SYSTEM_WINDOWS_NTFS (10) |
Cameron Cawley | 28f78ff | 2019-08-06 14:14:14 +0100 | [diff] [blame] | 107 | #define MZ_HOST_SYSTEM_RISCOS (13) |
Nathan Moinvaziri | e33916b | 2018-05-01 13:45:08 -0700 | [diff] [blame] | 108 | #define MZ_HOST_SYSTEM_OSX_DARWIN (19) |
| 109 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 110 | /* MZ_PKCRYPT */ |
Nathan Moinvaziri | 4445966 | 2018-08-16 15:08:59 -0700 | [diff] [blame] | 111 | #define MZ_PKCRYPT_HEADER_SIZE (12) |
| 112 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 113 | /* MZ_AES */ |
Nathan Moinvaziri | 6e21e86 | 2017-10-19 09:57:54 -0700 | [diff] [blame] | 114 | #define MZ_AES_VERSION (1) |
| 115 | #define MZ_AES_ENCRYPTION_MODE_128 (0x01) |
| 116 | #define MZ_AES_ENCRYPTION_MODE_192 (0x02) |
| 117 | #define MZ_AES_ENCRYPTION_MODE_256 (0x03) |
Nathan Moinvaziri | eff49b8 | 2018-11-01 10:32:42 -0700 | [diff] [blame] | 118 | #define MZ_AES_KEY_LENGTH(MODE) (8 * (MODE & 3) + 8) |
| 119 | #define MZ_AES_KEY_LENGTH_MAX (32) |
Nathan Moinvaziri | 5f09188 | 2018-10-24 18:06:08 -0700 | [diff] [blame] | 120 | #define MZ_AES_BLOCK_SIZE (16) |
Nathan Moinvaziri | 4445966 | 2018-08-16 15:08:59 -0700 | [diff] [blame] | 121 | #define MZ_AES_HEADER_SIZE(MODE) ((4 * (MODE & 3) + 4) + 2) |
| 122 | #define MZ_AES_FOOTER_SIZE (10) |
Nathan Moinvaziri | 6e21e86 | 2017-10-19 09:57:54 -0700 | [diff] [blame] | 123 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 124 | /* MZ_HASH */ |
Nathan Moinvaziri | e1f68fc | 2018-10-23 09:04:04 -0700 | [diff] [blame] | 125 | #define MZ_HASH_MD5 (10) |
| 126 | #define MZ_HASH_MD5_SIZE (16) |
| 127 | #define MZ_HASH_SHA1 (20) |
| 128 | #define MZ_HASH_SHA1_SIZE (20) |
Sergey Markelov | 9896383 | 2022-01-17 12:37:25 -0700 | [diff] [blame] | 129 | #define MZ_HASH_SHA224 (22) |
| 130 | #define MZ_HASH_SHA224_SIZE (28) |
Nathan Moinvaziri | e1f68fc | 2018-10-23 09:04:04 -0700 | [diff] [blame] | 131 | #define MZ_HASH_SHA256 (23) |
| 132 | #define MZ_HASH_SHA256_SIZE (32) |
Sergey Markelov | 9896383 | 2022-01-17 12:37:25 -0700 | [diff] [blame] | 133 | #define MZ_HASH_SHA384 (24) |
| 134 | #define MZ_HASH_SHA384_SIZE (48) |
| 135 | #define MZ_HASH_SHA512 (25) |
| 136 | #define MZ_HASH_SHA512_SIZE (64) |
Nathan Moinvaziri | 915c513 | 2018-10-26 20:00:52 -0700 | [diff] [blame] | 137 | #define MZ_HASH_MAX_SIZE (256) |
Nathan Moinvaziri | e1f68fc | 2018-10-23 09:04:04 -0700 | [diff] [blame] | 138 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 139 | /* MZ_ENCODING */ |
Nathan Moinvaziri | ea5e45d | 2018-10-30 13:59:17 -0700 | [diff] [blame] | 140 | #define MZ_ENCODING_CODEPAGE_437 (437) |
| 141 | #define MZ_ENCODING_CODEPAGE_932 (932) |
| 142 | #define MZ_ENCODING_CODEPAGE_936 (936) |
| 143 | #define MZ_ENCODING_CODEPAGE_950 (950) |
| 144 | #define MZ_ENCODING_UTF8 (65001) |
| 145 | |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 146 | /* MZ_UTILITY */ |
Nathan Moinvaziri | 5244fc0 | 2018-05-02 20:01:35 -0700 | [diff] [blame] | 147 | #define MZ_UNUSED(SYMBOL) ((void)SYMBOL) |
| 148 | |
| 149 | #ifndef MZ_CUSTOM_ALLOC |
Nathan Moinvaziri | 1840ad0 | 2020-06-19 21:29:06 -0700 | [diff] [blame] | 150 | #define MZ_ALLOC(SIZE) (malloc((SIZE))) |
Nathan Moinvaziri | 5244fc0 | 2018-05-02 20:01:35 -0700 | [diff] [blame] | 151 | #endif |
| 152 | #ifndef MZ_CUSTOM_FREE |
Nathan Moinvaziri | c546a57 | 2018-05-02 20:02:30 -0700 | [diff] [blame] | 153 | #define MZ_FREE(PTR) (free(PTR)) |
Nathan Moinvaziri | 5244fc0 | 2018-05-02 20:01:35 -0700 | [diff] [blame] | 154 | #endif |
| 155 | |
Uilian Ries | 9fb1dc2 | 2021-04-13 18:34:06 -0300 | [diff] [blame] | 156 | #if defined(_WIN32) && defined(MZ_EXPORTS) |
Nathan Moinvaziri | ce5be0f | 2019-01-24 17:34:24 -0800 | [diff] [blame] | 157 | #define MZ_EXPORT __declspec(dllexport) |
| 158 | #else |
| 159 | #define MZ_EXPORT |
| 160 | #endif |
| 161 | |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 162 | /***************************************************************************/ |
| 163 | |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 164 | #include <stdlib.h> /* size_t, NULL, malloc */ |
| 165 | #include <time.h> /* time_t, time() */ |
| 166 | #include <string.h> /* memset, strncpy, strlen */ |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 167 | #include <limits.h> |
| 168 | |
Fabrice Fontaine | 9400c1d | 2020-07-25 14:36:11 +0200 | [diff] [blame] | 169 | #if defined(HAVE_STDINT_H) |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 170 | # include <stdint.h> |
Fabrice Fontaine | 9400c1d | 2020-07-25 14:36:11 +0200 | [diff] [blame] | 171 | #elif defined(__has_include) |
| 172 | # if __has_include(<stdint.h>) |
| 173 | # include <stdint.h> |
| 174 | # endif |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 175 | #endif |
| 176 | |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 177 | #ifndef INT8_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 178 | typedef signed char int8_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 179 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 180 | #ifndef INT16_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 181 | typedef short int16_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 182 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 183 | #ifndef INT32_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 184 | typedef int int32_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 185 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 186 | #ifndef INT64_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 187 | typedef long long int64_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 188 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 189 | #ifndef UINT8_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 190 | typedef unsigned char uint8_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 191 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 192 | #ifndef UINT16_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 193 | typedef unsigned short uint16_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 194 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 195 | #ifndef UINT32_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 196 | typedef unsigned int uint32_t; |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 197 | #endif |
lawadr | a59538c | 2021-07-28 14:56:43 +0100 | [diff] [blame] | 198 | #ifndef UINT64_MAX |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 199 | typedef unsigned long long uint64_t; |
Nathan Moinvaziri | b16ab56 | 2018-11-20 16:56:21 -0800 | [diff] [blame] | 200 | #endif |
| 201 | |
Fabrice Fontaine | 9400c1d | 2020-07-25 14:36:11 +0200 | [diff] [blame] | 202 | #if defined(HAVE_INTTYPES_H) |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 203 | # include <inttypes.h> |
Fabrice Fontaine | 9400c1d | 2020-07-25 14:36:11 +0200 | [diff] [blame] | 204 | #elif defined(__has_include) |
| 205 | # if __has_include(<inttypes.h>) |
| 206 | # include <inttypes.h> |
| 207 | # endif |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 208 | #endif |
| 209 | |
| 210 | #ifndef PRId8 |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 211 | # define PRId8 "hhd" |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 212 | #endif |
Frederik Seiffert | ac8c990 | 2020-05-27 17:56:37 +0200 | [diff] [blame] | 213 | #ifndef PRIu8 |
| 214 | # define PRIu8 "hhu" |
| 215 | #endif |
| 216 | #ifndef PRIx8 |
| 217 | # define PRIx8 "hhx" |
| 218 | #endif |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 219 | #ifndef PRId16 |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 220 | # define PRId16 "hd" |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 221 | #endif |
Frederik Seiffert | ac8c990 | 2020-05-27 17:56:37 +0200 | [diff] [blame] | 222 | #ifndef PRIu16 |
| 223 | # define PRIu16 "hu" |
| 224 | #endif |
| 225 | #ifndef PRIx16 |
| 226 | # define PRIx16 "hx" |
| 227 | #endif |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 228 | #ifndef PRId32 |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 229 | # define PRId32 "d" |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 230 | #endif |
| 231 | #ifndef PRIu32 |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 232 | # define PRIu32 "u" |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 233 | #endif |
| 234 | #ifndef PRIx32 |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 235 | # define PRIx32 "x" |
Nathan Moinvaziri | 4ff891a | 2018-11-27 10:31:14 -0800 | [diff] [blame] | 236 | #endif |
Frederik Seiffert | ac8c990 | 2020-05-27 17:56:37 +0200 | [diff] [blame] | 237 | #if ULONG_MAX == 0xfffffffful |
Nathan Moinvaziri | c1fd2ed | 2018-12-01 09:15:22 -0800 | [diff] [blame] | 238 | # ifndef PRId64 |
| 239 | # define PRId64 "ld" |
| 240 | # endif |
| 241 | # ifndef PRIu64 |
| 242 | # define PRIu64 "lu" |
| 243 | # endif |
| 244 | # ifndef PRIx64 |
| 245 | # define PRIx64 "lx" |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 246 | # endif |
Frederik Seiffert | ac8c990 | 2020-05-27 17:56:37 +0200 | [diff] [blame] | 247 | #else |
| 248 | # ifndef PRId64 |
| 249 | # define PRId64 "lld" |
| 250 | # endif |
| 251 | # ifndef PRIu64 |
| 252 | # define PRIu64 "llu" |
| 253 | # endif |
| 254 | # ifndef PRIx64 |
| 255 | # define PRIx64 "llx" |
| 256 | # endif |
Nathan Moinvaziri | 00cca9f | 2017-10-16 07:37:11 -0700 | [diff] [blame] | 257 | #endif |
| 258 | |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 259 | #ifndef INT16_MAX |
| 260 | # define INT16_MAX 32767 |
| 261 | #endif |
Nathan Moinvaziri | 32fd805 | 2019-07-04 10:32:02 -0700 | [diff] [blame] | 262 | #ifndef INT32_MAX |
Nathan Moinvaziri | 6ac5fe6 | 2018-11-23 08:37:19 -0800 | [diff] [blame] | 263 | # define INT32_MAX 2147483647L |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 264 | #endif |
| 265 | #ifndef INT64_MAX |
| 266 | # define INT64_MAX 9223372036854775807LL |
| 267 | #endif |
| 268 | #ifndef UINT16_MAX |
| 269 | # define UINT16_MAX 65535U |
| 270 | #endif |
Nathan Moinvaziri | 32fd805 | 2019-07-04 10:32:02 -0700 | [diff] [blame] | 271 | #ifndef UINT32_MAX |
| 272 | # define UINT32_MAX 4294967295UL |
Nathan Moinvaziri | e849627 | 2018-11-21 15:05:58 -0800 | [diff] [blame] | 273 | #endif |
| 274 | #ifndef UINT64_MAX |
Nathan Moinvaziri | 6ac5fe6 | 2018-11-23 08:37:19 -0800 | [diff] [blame] | 275 | # define UINT64_MAX 18446744073709551615ULL |
Nathan Moinvaziri | 1ee609b | 2018-11-19 21:34:35 -0800 | [diff] [blame] | 276 | #endif |
| 277 | |
| 278 | /***************************************************************************/ |
Nathan Moinvaziri | c1fd2ed | 2018-12-01 09:15:22 -0800 | [diff] [blame] | 279 | |
Philippe Casgrain | 938936c | 2019-08-21 09:14:32 -0400 | [diff] [blame] | 280 | #endif |