mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   @file lzma.h
 | |
|   This service provides dynamic access to LZMA.
 | |
| */
 | |
| 
 | |
| #ifndef LZMA_INCLUDED
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #ifndef MYSQL_ABI_CHECK
 | |
| #include <stdbool.h>
 | |
| #include <stdint.h>
 | |
| #include <stddef.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef MYSQL_DYNAMIC_PLUGIN
 | |
| #define provider_service_lzma provider_service_lzma_static
 | |
| #endif
 | |
| 
 | |
| #ifndef LZMA_VERSION
 | |
| typedef enum
 | |
| {
 | |
|     LZMA_OK                 = 0,
 | |
|     LZMA_STREAM_END         = 1,
 | |
|     LZMA_NO_CHECK           = 2,
 | |
|     LZMA_UNSUPPORTED_CHECK  = 3,
 | |
|     LZMA_GET_CHECK          = 4,
 | |
|     LZMA_MEM_ERROR          = 5,
 | |
|     LZMA_MEMLIMIT_ERROR     = 6,
 | |
|     LZMA_FORMAT_ERROR       = 7,
 | |
|     LZMA_OPTIONS_ERROR      = 8,
 | |
|     LZMA_DATA_ERROR         = 9,
 | |
|     LZMA_BUF_ERROR          = 10,
 | |
|     LZMA_PROG_ERROR         = 11,
 | |
| } lzma_ret;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     void *(*alloc)(void *opaque, size_t nmemb, size_t size);
 | |
|     void (*free)(void *opaque, void *ptr);
 | |
|     void *opaque;
 | |
| } lzma_allocator;
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
|     LZMA_CHECK_NONE     = 0,
 | |
|     LZMA_CHECK_CRC32    = 1,
 | |
|     LZMA_CHECK_CRC64    = 4,
 | |
|     LZMA_CHECK_SHA256   = 10
 | |
| } lzma_check;
 | |
| 
 | |
| #define lzma_stream_buffer_decode(...) provider_service_lzma->lzma_stream_buffer_decode_ptr (__VA_ARGS__)
 | |
| #define lzma_easy_buffer_encode(...)   provider_service_lzma->lzma_easy_buffer_encode_ptr   (__VA_ARGS__)
 | |
| #elif LZMA_VERSION < 50010030
 | |
| #define lzma_maybe_const
 | |
| #endif
 | |
| 
 | |
| #ifndef lzma_maybe_const
 | |
| #define lzma_maybe_const const
 | |
| #endif
 | |
| 
 | |
| #define DEFINE_lzma_stream_buffer_decode(NAME) NAME( \
 | |
|     uint64_t *memlimit,                              \
 | |
|     uint32_t flags,                                  \
 | |
|     lzma_maybe_const lzma_allocator *allocator,      \
 | |
|     const uint8_t *in,                               \
 | |
|     size_t *in_pos,                                  \
 | |
|     size_t in_size,                                  \
 | |
|     uint8_t *out,                                    \
 | |
|     size_t *out_pos,                                 \
 | |
|     size_t out_size                                  \
 | |
| )
 | |
| 
 | |
| #define DEFINE_lzma_easy_buffer_encode(NAME) NAME(   \
 | |
|     uint32_t preset,                                 \
 | |
|     lzma_check check,                                \
 | |
|     lzma_maybe_const lzma_allocator *allocator,      \
 | |
|     const uint8_t *in,                               \
 | |
|     size_t in_size,                                  \
 | |
|     uint8_t *out,                                    \
 | |
|     size_t *out_pos,                                 \
 | |
|     size_t out_size                                  \
 | |
| )
 | |
| 
 | |
| struct provider_service_lzma_st
 | |
| {
 | |
|   lzma_ret DEFINE_lzma_stream_buffer_decode((*lzma_stream_buffer_decode_ptr));
 | |
|   lzma_ret DEFINE_lzma_easy_buffer_encode((*lzma_easy_buffer_encode_ptr));
 | |
| 
 | |
|   bool is_loaded;
 | |
| };
 | |
| 
 | |
| extern struct provider_service_lzma_st *provider_service_lzma;
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #define LZMA_INCLUDED
 | |
| #endif
 | 
