From 3ee12395e01d1288527a4124caad64626f7f3639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Sun, 7 Apr 2024 20:51:27 +0900 Subject: [PATCH] chore: adapt to MSVC --- base1464.c | 24 ++++++++++++------------ base16384.h | 17 +++++++++++++---- binary.h | 4 ++++ file.c | 20 +++++++++++++++++--- test/file_test.h | 6 ++++++ 5 files changed, 52 insertions(+), 19 deletions(-) diff --git a/base1464.c b/base1464.c index 80bc49c..d05d1c0 100644 --- a/base1464.c +++ b/base1464.c @@ -264,20 +264,20 @@ int base16384_decode_safe(const char* data, int dlen, char* buf) { #else register uint64_t sum = valbuf.val - 0x000000000000004e; #endif - buf[i++] = ((sum & 0x000000000000003f) << 2) | ((sum & 0x000000000000c000) >> 14); + buf[i++] = (char)(((sum & 0x000000000000003f) << 2) | ((sum & 0x000000000000c000) >> 14)); if(offset--) { sum -= 0x00000000004e0000; - buf[i++] = ((sum & 0x0000000000003f00) >> 6) | ((sum & 0x0000000000300000) >> 20); + buf[i++] = (char)(((sum & 0x0000000000003f00) >> 6) | ((sum & 0x0000000000300000) >> 20)); if(offset--) { - buf[i++] = ((sum & 0x00000000000f0000) >> 12) | ((sum & 0x00000000f0000000) >> 28); + buf[i++] = (char)(((sum & 0x00000000000f0000) >> 12) | ((sum & 0x00000000f0000000) >> 28)); if(offset--) { sum -= 0x0000004e00000000; - buf[i++] = ((sum & 0x000000000f000000) >> 20) | ((sum & 0x0000003c00000000) >> 34); + buf[i++] = (char)(((sum & 0x000000000f000000) >> 20) | ((sum & 0x0000003c00000000) >> 34)); if(offset--) { - buf[i++] = ((sum & 0x0000000300000000) >> 26) | ((sum & 0x0000fc0000000000) >> 42); + buf[i++] = (char)(((sum & 0x0000000300000000) >> 26) | ((sum & 0x0000fc0000000000) >> 42)); if(offset--) { sum -= 0x004e000000000000; - buf[i] = ((sum & 0x0000030000000000) >> 34) | ((sum & 0x003f000000000000) >> 48); + buf[i] = (char)(((sum & 0x0000030000000000) >> 34) | ((sum & 0x003f000000000000) >> 48)); } } } @@ -328,20 +328,20 @@ int base16384_decode(const char* data, int dlen, char* buf) { #else register uint64_t sum = vals[n] - 0x000000000000004e; #endif - buf[i++] = ((sum & 0x000000000000003f) << 2) | ((sum & 0x000000000000c000) >> 14); + buf[i++] = (char)(((sum & 0x000000000000003f) << 2) | ((sum & 0x000000000000c000) >> 14)); if(offset--) { sum -= 0x00000000004e0000; - buf[i++] = ((sum & 0x0000000000003f00) >> 6) | ((sum & 0x0000000000300000) >> 20); + buf[i++] = (char)(((sum & 0x0000000000003f00) >> 6) | ((sum & 0x0000000000300000) >> 20)); if(offset--) { - buf[i++] = ((sum & 0x00000000000f0000) >> 12) | ((sum & 0x00000000f0000000) >> 28); + buf[i++] = (char)(((sum & 0x00000000000f0000) >> 12) | ((sum & 0x00000000f0000000) >> 28)); if(offset--) { sum -= 0x0000004e00000000; - buf[i++] = ((sum & 0x000000000f000000) >> 20) | ((sum & 0x0000003c00000000) >> 34); + buf[i++] = (char)(((sum & 0x000000000f000000) >> 20) | ((sum & 0x0000003c00000000) >> 34)); if(offset--) { - buf[i++] = ((sum & 0x0000000300000000) >> 26) | ((sum & 0x0000fc0000000000) >> 42); + buf[i++] = (char)(((sum & 0x0000000300000000) >> 26) | ((sum & 0x0000fc0000000000) >> 42)); if(offset--) { sum -= 0x004e000000000000; - buf[i] = ((sum & 0x0000030000000000) >> 34) | ((sum & 0x003f000000000000) >> 48); + buf[i] = (char)(((sum & 0x0000030000000000) >> 34) | ((sum & 0x003f000000000000) >> 48)); } } } diff --git a/base16384.h b/base16384.h index b63b0a8..6cb1270 100644 --- a/base16384.h +++ b/base16384.h @@ -23,10 +23,6 @@ #include #include #endif -#ifdef _MSC_VER -#include -typedef SSIZE_T ssize_t; -#endif enum base16384_err_t { base16384_err_ok, @@ -63,6 +59,13 @@ typedef enum base16384_err_t base16384_err_t; // forcely do sumcheck without checking data length #define BASE16384_FLAG_DO_SUM_CHECK_FORCELY (1<<2) +#ifdef _MSC_VER +#include +#ifndef ssize_t + #define SSIZE_T ssize_t; +#endif +#endif + /** * @brief custom reader function interface * @param client_data the data pointer defined by the client @@ -81,6 +84,12 @@ typedef ssize_t (*base16384_reader_t)(const void *client_data, void *buffer, siz */ typedef ssize_t (*base16384_writer_t)(const void *client_data, const void *buffer, size_t count); +#ifdef _MSC_VER +#ifdef ssize_t + #undef ssize_t +#endif +#endif + union base16384_io_function_t { base16384_reader_t reader; base16384_writer_t writer; diff --git a/binary.h b/binary.h index 46c7039..011ea7e 100644 --- a/binary.h +++ b/binary.h @@ -90,7 +90,11 @@ // initial sum value used in BASE16384_FLAG_SUM_CHECK_ON_REMAIN #define BASE16384_SIMPLE_SUM_INIT_VALUE (0x8e29c213) +#ifdef _MSC_VER +static inline uint32_t calc_sum(uint32_t sum, int cnt, const char* encbuf) { +#else static inline uint32_t calc_sum(uint32_t sum, size_t cnt, const char* encbuf) { +#endif size_t i; uint32_t buf; for(i = 0; i < cnt; i++) { diff --git a/file.c b/file.c index 3d9d872..72c3714 100644 --- a/file.c +++ b/file.c @@ -16,6 +16,12 @@ * along with this program. If not, see . */ +#ifdef _MSC_VER +#ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS +#endif +#endif + #ifndef __cosmopolitan #include #include @@ -91,7 +97,11 @@ base16384_err_t base16384_encode_file_detailed(const char* input, const char* ou fputc(0xFE, fpo); fputc(0xFF, fpo); } - size_t cnt; + #ifdef _MSC_VER + int cnt; + #else + size_t cnt; + #endif uint32_t sum = BASE16384_SIMPLE_SUM_INIT_VALUE; while((cnt = fread(encbuf, sizeof(char), inputsize, fp)) > 0) { int n; @@ -159,7 +169,11 @@ base16384_err_t base16384_encode_fp_detailed(FILE* input, FILE* output, char* en } off_t inputsize = _BASE16384_ENCBUFSZ; uint32_t sum = BASE16384_SIMPLE_SUM_INIT_VALUE; - size_t cnt; + #ifdef _MSC_VER + int cnt; + #else + size_t cnt; + #endif while((cnt = fread(encbuf, sizeof(char), inputsize, input)) > 0) { int n; while(cnt%7) { @@ -228,7 +242,7 @@ base16384_err_t base16384_encode_stream_detailed(base16384_stream_t* input, base uint32_t sum = BASE16384_SIMPLE_SUM_INIT_VALUE; if(!(flag&BASE16384_FLAG_NOHEADER)) call_writer(output, "\xfe\xff", 2); while((cnt = call_reader(input, encbuf, inputsize)) > 0) { - int n; + ssize_t n; while(cnt%7) { n = call_reader(input, encbuf+cnt, sizeof(char)); if(n > 0) cnt++; diff --git a/test/file_test.h b/test/file_test.h index 4fc165c..445163b 100644 --- a/test/file_test.h +++ b/test/file_test.h @@ -19,6 +19,12 @@ * along with this program. If not, see . */ +#ifdef _MSC_VER +#ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS +#endif +#endif + #include #define ok(has_failed, reason) \