1 2 /* (C)opyleft 2001-2019 Frank DENIS <j at pureftpd dot org> */ 3 4 #ifndef __PUREDB_WRITE_H__ 5 #define __PUREDB_WRITE_H__ 1 6 7 #include <limits.h> 8 9 #define PUREDBW_VERSION "PDB2" 10 #define PUREDBW_LIB_VERSION 1 11 12 #ifndef PUREDB_U32_T 13 # if SHRT_MAX >= 2147483647 14 typedef unsigned short puredb_u32_t; 15 # elif INT_MAX >= 2147483647 16 typedef unsigned int puredb_u32_t; 17 # else 18 typedef unsigned long puredb_u32_t; 19 # endif 20 # define PUREDB_U32_T 1 21 #endif 22 23 typedef struct Hash1_ { 24 puredb_u32_t hash; 25 puredb_u32_t offset_data; 26 } Hash1; 27 28 typedef struct Hash0_ { 29 Hash1 *hash1_list; 30 size_t hash1_list_size; 31 } Hash0; 32 33 typedef struct PureDBW_ { 34 FILE *fpindex; 35 FILE *fpdata; 36 char *file_index; 37 char *file_data; 38 char *file_final; 39 puredb_u32_t data_offset_counter; 40 puredb_u32_t offset_first_data; 41 Hash0 hash_table0[256]; 42 } PureDBW; 43 44 int puredbw_open(PureDBW * const dbw, 45 const char * const file_index, 46 const char * const file_data, 47 const char * const file_final); 48 49 int puredbw_close(PureDBW * const dbw); 50 51 void puredbw_free(PureDBW * const dbw); 52 53 int puredbw_add(PureDBW * const dbw, 54 const char * const key, const size_t key_len, 55 const char * const content, const size_t content_len); 56 57 int puredbw_add_s(PureDBW * const dbw, 58 const char * const key, const char * const content); 59 60 #endif 61