From ea674bd3111f9f623fa94bd910e6d158ecdf8eb0 Mon Sep 17 00:00:00 2001 From: fumiama Date: Tue, 1 Jun 2021 15:53:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E5=88=B7=E6=96=B0md5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dict.c | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/dict.c b/dict.c index a78ecf7..2336a62 100644 --- a/dict.c +++ b/dict.c @@ -8,8 +8,34 @@ static FILE *fp = NULL; static int lock = 0; static char* filepath; static uint8_t* dict_md5; -#define _dict_md5_4 ((uint32_t*)dict_md5) -#define _dict_md5_2 ((uint64_t*)dict_md5) + +#ifdef CPUBIT64 + #define _dict_md5_2 ((uint64_t*)dict_md5) +#else + #define _dict_md5_4 ((uint32_t*)dict_md5) +#endif + + +static int fill_md5() { + size_t size = get_dict_size(); + uint8_t* dict_buff = (uint8_t*)malloc(size); + if(dict_buff) { + rewind(fp); + if(fread(dict_buff, size, 1, fp) == 1) { + if(dict_md5) free(dict_md5); + dict_md5 = md5(dict_buff, size); + free(dict_buff); + return 1; + } else { + free(dict_buff); + puts("Read dict error"); + return 0; + } + } else { + puts("Allocate memory error"); + return 0; + } +} uint32_t last_nonnull(char* p, uint32_t max_size) { if(max_size > 1) while(!p[max_size - 1]) max_size--; @@ -21,23 +47,7 @@ int init_dict(char* file_path) { if(fp) { lock = LOCK_UN; filepath = file_path; - size_t size = get_dict_size(); - uint8_t* dict_buff = (uint8_t*)malloc(size); - if(dict_buff) { - if(fread(dict_buff, size, 1, fp) == 1) { - if(dict_md5) free(dict_md5); - dict_md5 = md5(dict_buff, size); - free(dict_buff); - return 1; - } else { - free(dict_buff); - puts("Read dict error"); - return 0; - } - } else { - puts("Allocate memory error"); - return 0; - } + return fill_md5(); } else { puts("Open dict error"); return 0; @@ -50,6 +60,7 @@ FILE *open_dict(int lock_type) { if(!fp) fp = fopen(filepath, "rb+"); if(fp) { lock = lock_type; + fill_md5(); rewind(fp); return fp; } else {