# HG changeset patch # User Michael Goffioul # Date 1372044821 14400 # Node ID 6f7c1f4e9b2b49c3253174eeead710e665265c1e # Parent 1f1e0dc9a1352b46dfc93bf61db881c0980b7c76 [MSVC] enable libcrypt compilation and update to 1.5.2 diff -r 1f1e0dc9a135 -r 6f7c1f4e9b2b index.html --- a/index.html Sun Jun 23 23:33:41 2013 -0400 +++ b/index.html Sun Jun 23 23:33:41 2013 -0400 @@ -1450,7 +1450,7 @@ libgcrypt - 1.5.0 + 1.5.2 libgcrypt diff -r 1f1e0dc9a135 -r 6f7c1f4e9b2b src/libgcrypt.mk --- a/src/libgcrypt.mk Sun Jun 23 23:33:41 2013 -0400 +++ b/src/libgcrypt.mk Sun Jun 23 23:33:41 2013 -0400 @@ -3,7 +3,7 @@ PKG := libgcrypt $(PKG)_IGNORE := -$(PKG)_CHECKSUM := 3e776d44375dc1a710560b98ae8437d5da6e32cf +$(PKG)_CHECKSUM := c9998383532ba3e8bcaf690f2f0d65e814b48d2f $(PKG)_SUBDIR := libgcrypt-$($(PKG)_VERSION) $(PKG)_FILE := libgcrypt-$($(PKG)_VERSION).tar.bz2 $(PKG)_URL := ftp://ftp.gnupg.org/gcrypt/libgcrypt/$($(PKG)_FILE) @@ -21,7 +21,9 @@ $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \ $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \ $(ENABLE_SHARED_OR_STATIC) \ - --prefix='$(HOST_PREFIX)' + --prefix='$(HOST_PREFIX)' && $(CONFIGURE_POST_HOOK) + $(if $(filter msvc,$(MXE_SYSTEM)), \ + $(SED) -i -e '/^LTCPPASCOMPILE/ {s/$$(LIBTOOL)/& --tag=CC/;}' '$(1)/mpi/Makefile') $(MAKE) -C '$(1)' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= $(LN_SF) '$(HOST_BINDIR)/libgcrypt-config' '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)libgcrypt-config' endef diff -r 1f1e0dc9a135 -r 6f7c1f4e9b2b src/msvc-libgcrypt-1.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/msvc-libgcrypt-1.patch Sun Jun 23 23:33:41 2013 -0400 @@ -0,0 +1,602 @@ +diff -ur libgcrypt-1.5.2-orig/cipher/ecc.c libgcrypt-1.5.2/cipher/ecc.c +--- libgcrypt-1.5.2-orig/cipher/ecc.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/cipher/ecc.c 2013-06-23 21:41:30 -0400 +@@ -60,6 +60,10 @@ + #include "mpi.h" + #include "cipher.h" + ++#ifdef _MSC_VER ++# define snprintf _snprintf ++#endif ++ + /* Definition of a curve. */ + typedef struct + { +diff -ur libgcrypt-1.5.2-orig/cipher/md.c libgcrypt-1.5.2/cipher/md.c +--- libgcrypt-1.5.2-orig/cipher/md.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/cipher/md.c 2013-06-23 21:41:30 -0400 +@@ -30,6 +30,10 @@ + + #include "rmd.h" + ++#ifdef _MSC_VER ++# define snprintf _snprintf ++#endif ++ + /* A dummy extraspec so that we do not need to tests the extraspec + field from the module specification against NULL and instead + directly test the respective fields of extraspecs. */ +diff -ur libgcrypt-1.5.2-orig/cipher/pubkey.c libgcrypt-1.5.2/cipher/pubkey.c +--- libgcrypt-1.5.2-orig/cipher/pubkey.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/cipher/pubkey.c 2013-06-23 21:41:30 -0400 +@@ -29,6 +29,9 @@ + #include "cipher.h" + #include "ath.h" + ++#ifdef _MSC_VER ++#define snprintf _snprintf ++#endif + + static gcry_err_code_t pubkey_decrypt (int algo, gcry_mpi_t *result, + gcry_mpi_t *data, gcry_mpi_t *skey, +diff -ur libgcrypt-1.5.2-orig/mpi/Makefile.in libgcrypt-1.5.2/mpi/Makefile.in +--- libgcrypt-1.5.2-orig/mpi/Makefile.in 2013-04-18 11:06:03 -0400 ++++ libgcrypt-1.5.2/mpi/Makefile.in 2013-06-23 21:41:30 -0400 +@@ -128,7 +128,7 @@ + am__mv = mv -f + CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +-LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++LTCPPASCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +diff -ur libgcrypt-1.5.2-orig/random/random-csprng.c libgcrypt-1.5.2/random/random-csprng.c +--- libgcrypt-1.5.2-orig/random/random-csprng.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/random/random-csprng.c 2013-06-23 21:41:30 -0400 +@@ -37,7 +37,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -62,6 +61,12 @@ + #include "cipher.h" /* Required for the rmd160_hash_buffer() prototype. */ + #include "ath.h" + ++#ifdef _MSC_VER ++# define S_IRUSR _S_IREAD ++# define S_IWUSR _S_IWRITE ++# define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG) ++#endif ++ + #ifndef RAND_MAX /* For SunOS. */ + #define RAND_MAX 32767 + #endif +diff -ur libgcrypt-1.5.2-orig/random/rndw32.c libgcrypt-1.5.2/random/rndw32.c +--- libgcrypt-1.5.2-orig/random/rndw32.c 2013-03-19 11:50:25 -0400 ++++ libgcrypt-1.5.2/random/rndw32.c 2013-06-23 21:41:30 -0400 +@@ -78,8 +78,13 @@ + #include + #endif + ++#define WIN32_LEAN_AND_MEAN + #include ++#include + ++#ifdef _MSC_VER ++# define snprintf _snprintf ++#endif + + #include "types.h" + #include "g10lib.h" +diff -ur libgcrypt-1.5.2-orig/src/ath.c libgcrypt-1.5.2/src/ath.c +--- libgcrypt-1.5.2-orig/src/ath.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/src/ath.c 2013-06-23 21:41:30 -0400 +@@ -27,7 +27,9 @@ + #ifdef HAVE_SYS_SELECT_H + # include + #else +-# include ++# ifndef _MSC_VER ++# include ++# endif + #endif + #include + #ifndef _WIN32 +diff -ur libgcrypt-1.5.2-orig/src/ath.h libgcrypt-1.5.2/src/ath.h +--- libgcrypt-1.5.2-orig/src/ath.h 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/src/ath.h 2013-06-23 21:41:54 -0400 +@@ -24,6 +24,7 @@ + #include + + #ifdef _WIN32 ++# define WIN32_LEAN_AND_MEAN + # include + #else /* !_WIN32 */ + # ifdef HAVE_SYS_SELECT_H +@@ -39,6 +40,9 @@ + #endif /* !_WIN32 */ + #include + ++#ifdef _MSC_VER ++typedef long ssize_t; ++#endif + + + /* Define _ATH_EXT_SYM_PREFIX if you want to give all external symbols +diff -ur libgcrypt-1.5.2-orig/src/fips.c libgcrypt-1.5.2/src/fips.c +--- libgcrypt-1.5.2-orig/src/fips.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/src/fips.c 2013-06-23 21:41:30 -0400 +@@ -35,6 +35,10 @@ + #include "cipher-proto.h" + #include "hmac256.h" + ++#if defined(_MSC_VER) && !defined(F_OK) ++# define F_OK 0 ++#endif ++ + + /* The name of the file used to foce libgcrypt into fips mode. */ + #define FIPS_FORCE_FILE "/etc/gcrypt/fips_enabled" +diff -ur libgcrypt-1.5.2-orig/src/gcrypt.h.in libgcrypt-1.5.2/src/gcrypt.h.in +--- libgcrypt-1.5.2-orig/src/gcrypt.h.in 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/src/gcrypt.h.in 2013-06-23 21:41:30 -0400 +@@ -37,8 +37,12 @@ + # include + # include + # ifndef __GNUC__ +- typedef long ssize_t; +- typedef int pid_t; ++# ifndef ssize_t ++ typedef long ssize_t; ++# endif ++# ifndef pid_t ++ typedef int pid_t; ++# endif + # endif /*!__GNUC__*/ + #else + # include +diff -ur libgcrypt-1.5.2-orig/src/libgcrypt.def libgcrypt-1.5.2/src/libgcrypt.def +--- libgcrypt-1.5.2-orig/src/libgcrypt.def 2013-06-23 21:40:28 -0400 ++++ libgcrypt-1.5.2/src/libgcrypt.def 2013-06-23 21:41:30 -0400 +@@ -1,215 +1,193 @@ +-EXPORTS +- gcry_check_version @1 +- gcry_control @2 +- +- gcry_malloc @3 +- gcry_calloc @4 +- gcry_malloc_secure @5 +- gcry_calloc_secure @6 +- gcry_realloc @7 +- gcry_strdup @8 +- gcry_xmalloc @9 +- gcry_xcalloc @10 +- gcry_xmalloc_secure @11 +- gcry_xcalloc_secure @12 +- gcry_xrealloc @13 +- gcry_xstrdup @14 +- gcry_is_secure @15 +- gcry_free @16 +- +- gcry_set_progress_handler @17 +- gcry_set_allocation_handler @18 +- gcry_set_outofcore_handler @19 +- gcry_set_fatalerror_handler @20 +- gcry_set_log_handler @21 +- gcry_set_gettext_handler @22 +- +- gcry_strerror @23 +- gcry_strsource @24 +- gcry_err_code_from_errno @25 +- gcry_err_code_to_errno @26 +- gcry_err_make_from_errno @27 +- gcry_error_from_errno @28 +- +- gcry_sexp_new @29 +- gcry_sexp_create @30 +- gcry_sexp_sscan @31 +- gcry_sexp_build @32 +- gcry_sexp_build_array @33 +- gcry_sexp_release @34 +- gcry_sexp_canon_len @35 +- gcry_sexp_sprint @36 +- gcry_sexp_dump @37 +- gcry_sexp_cons @38 +- gcry_sexp_alist @39 +- gcry_sexp_vlist @40 +- gcry_sexp_append @41 +- gcry_sexp_prepend @42 +- gcry_sexp_find_token @43 +- gcry_sexp_length @44 +- gcry_sexp_nth @45 +- gcry_sexp_car @46 +- gcry_sexp_cdr @47 +- gcry_sexp_cadr @48 +- gcry_sexp_nth_data @49 +- gcry_sexp_nth_mpi @50 +- +- gcry_mpi_new @51 +- gcry_mpi_snew @52 +- gcry_mpi_release @53 +- gcry_mpi_copy @54 +- gcry_mpi_set @55 +- gcry_mpi_set_ui @56 +- gcry_mpi_swap @57 +- gcry_mpi_cmp @58 +- gcry_mpi_cmp_ui @59 +- gcry_mpi_scan @60 +- gcry_mpi_print @61 +- gcry_mpi_aprint @62 +- gcry_mpi_dump @63 +- gcry_mpi_add @64 +- gcry_mpi_add_ui @65 +- gcry_mpi_addm @66 +- gcry_mpi_sub @67 +- gcry_mpi_sub_ui @68 +- gcry_mpi_subm @69 +- gcry_mpi_mul @70 +- gcry_mpi_mul_ui @71 +- gcry_mpi_mulm @72 +- gcry_mpi_mul_2exp @73 +- gcry_mpi_div @74 +- gcry_mpi_mod @75 +- gcry_mpi_powm @76 +- gcry_mpi_gcd @77 +- gcry_mpi_invm @78 +- gcry_mpi_get_nbits @79 +- gcry_mpi_test_bit @80 +- gcry_mpi_set_bit @81 +- gcry_mpi_clear_bit @82 +- gcry_mpi_set_highbit @83 +- gcry_mpi_clear_highbit @84 +- gcry_mpi_rshift @85 +- gcry_mpi_set_opaque @86 +- gcry_mpi_get_opaque @87 +- gcry_mpi_set_flag @88 +- gcry_mpi_clear_flag @89 +- gcry_mpi_get_flag @90 +- +- +- gcry_cipher_open @92 +- gcry_cipher_close @93 +- gcry_cipher_ctl @94 +- gcry_cipher_info @95 +- gcry_cipher_algo_info @96 +- gcry_cipher_algo_name @97 +- gcry_cipher_map_name @98 +- gcry_cipher_mode_from_oid @99 +- gcry_cipher_encrypt @100 +- gcry_cipher_decrypt @101 +- gcry_cipher_get_algo_keylen @102 +- gcry_cipher_get_algo_blklen @103 +- gcry_cipher_list @104 +- +- gcry_pk_encrypt @105 +- gcry_pk_decrypt @106 +- gcry_pk_sign @107 +- gcry_pk_verify @108 +- gcry_pk_testkey @109 +- gcry_pk_genkey @110 +- gcry_pk_ctl @111 +- gcry_pk_algo_info @112 +- gcry_pk_algo_name @113 +- gcry_pk_map_name @114 +- gcry_pk_get_nbits @115 +- gcry_pk_get_keygrip @116 +- gcry_pk_list @117 +- +- gcry_ac_data_new @118 +- gcry_ac_data_destroy @119 +- gcry_ac_data_set @120 +- gcry_ac_data_copy @121 +- gcry_ac_data_length @122 +- gcry_ac_data_get_name @123 +- gcry_ac_data_get_index @124 +- gcry_ac_data_clear @125 +- gcry_ac_open @126 +- gcry_ac_close @127 +- gcry_ac_key_init @128 +- gcry_ac_key_pair_generate @129 +- gcry_ac_key_pair_extract @130 +- gcry_ac_key_data_get @131 +- gcry_ac_key_test @132 +- gcry_ac_key_get_nbits @133 +- gcry_ac_key_get_grip @134 +- gcry_ac_key_destroy @135 +- gcry_ac_key_pair_destroy @136 +- gcry_ac_data_encrypt @137 +- gcry_ac_data_decrypt @138 +- gcry_ac_data_sign @139 +- gcry_ac_data_verify @140 +- gcry_ac_id_to_name @141 +- gcry_ac_name_to_id @142 +- +- gcry_md_open @143 +- gcry_md_close @144 +- gcry_md_enable @145 +- gcry_md_copy @146 +- gcry_md_reset @147 +- gcry_md_ctl @148 +- gcry_md_write @149 +- gcry_md_read @150 +- gcry_md_hash_buffer @151 +- gcry_md_get_algo @152 +- gcry_md_get_algo_dlen @153 +- gcry_md_is_enabled @154 +- gcry_md_is_secure @155 +- gcry_md_info @156 +- gcry_md_algo_info @157 +- gcry_md_algo_name @158 +- gcry_md_map_name @159 +- gcry_md_setkey @160 +- gcry_md_list @161 +- +- gcry_randomize @162 +- gcry_random_add_bytes @163 +- gcry_random_bytes @164 +- gcry_random_bytes_secure @165 +- gcry_mpi_randomize @166 +- +- gcry_prime_generate @167 +- gcry_prime_group_generator @168 +- gcry_prime_release_factors @169 +- gcry_prime_check @170 +- +- gcry_create_nonce @171 +- +- gcry_md_debug @172 +- +- gcry_cipher_register @173 +- gcry_cipher_unregister @174 +- gcry_md_register @175 +- gcry_md_unregister @176 +- gcry_pk_register @177 +- gcry_pk_unregister @178 +- +- gcry_ac_data_from_sexp @179 +- gcry_ac_data_to_sexp @180 +- gcry_ac_io_init @181 +- gcry_ac_io_init_va @182 +- gcry_ac_data_encrypt_scheme @183 +- gcry_ac_data_decrypt_scheme @184 +- gcry_ac_data_sign_scheme @185 +- gcry_ac_data_verify_scheme @186 +- +- gcry_sexp_nth_string @187 +- +- gcry_cipher_setkey @188 +- gcry_cipher_setiv @189 +- gcry_cipher_setctr @190 +- +- gcry_mpi_lshift @191 +- +- gcry_pk_get_curve @192 +- gcry_pk_get_param @193 +- +- gcry_kdf_derive @194 ++gcry_check_version ++gcry_control ++gcry_malloc ++gcry_calloc ++gcry_malloc_secure ++gcry_calloc_secure ++gcry_realloc ++gcry_strdup ++gcry_xmalloc ++gcry_xcalloc ++gcry_xmalloc_secure ++gcry_xcalloc_secure ++gcry_xrealloc ++gcry_xstrdup ++gcry_is_secure ++gcry_free ++gcry_set_progress_handler ++gcry_set_allocation_handler ++gcry_set_outofcore_handler ++gcry_set_fatalerror_handler ++gcry_set_log_handler ++gcry_set_gettext_handler ++gcry_strerror ++gcry_strsource ++gcry_err_code_from_errno ++gcry_err_code_to_errno ++gcry_err_make_from_errno ++gcry_error_from_errno ++gcry_sexp_new ++gcry_sexp_create ++gcry_sexp_sscan ++gcry_sexp_build ++gcry_sexp_build_array ++gcry_sexp_release ++gcry_sexp_canon_len ++gcry_sexp_sprint ++gcry_sexp_dump ++gcry_sexp_cons ++gcry_sexp_alist ++gcry_sexp_vlist ++gcry_sexp_append ++gcry_sexp_prepend ++gcry_sexp_find_token ++gcry_sexp_length ++gcry_sexp_nth ++gcry_sexp_car ++gcry_sexp_cdr ++gcry_sexp_cadr ++gcry_sexp_nth_data ++gcry_sexp_nth_mpi ++gcry_mpi_new ++gcry_mpi_snew ++gcry_mpi_release ++gcry_mpi_copy ++gcry_mpi_set ++gcry_mpi_set_ui ++gcry_mpi_swap ++gcry_mpi_cmp ++gcry_mpi_cmp_ui ++gcry_mpi_scan ++gcry_mpi_print ++gcry_mpi_aprint ++gcry_mpi_dump ++gcry_mpi_add ++gcry_mpi_add_ui ++gcry_mpi_addm ++gcry_mpi_sub ++gcry_mpi_sub_ui ++gcry_mpi_subm ++gcry_mpi_mul ++gcry_mpi_mul_ui ++gcry_mpi_mulm ++gcry_mpi_mul_2exp ++gcry_mpi_div ++gcry_mpi_mod ++gcry_mpi_powm ++gcry_mpi_gcd ++gcry_mpi_invm ++gcry_mpi_get_nbits ++gcry_mpi_test_bit ++gcry_mpi_set_bit ++gcry_mpi_clear_bit ++gcry_mpi_set_highbit ++gcry_mpi_clear_highbit ++gcry_mpi_rshift ++gcry_mpi_set_opaque ++gcry_mpi_get_opaque ++gcry_mpi_set_flag ++gcry_mpi_clear_flag ++gcry_mpi_get_flag ++gcry_cipher_open ++gcry_cipher_close ++gcry_cipher_ctl ++gcry_cipher_info ++gcry_cipher_algo_info ++gcry_cipher_algo_name ++gcry_cipher_map_name ++gcry_cipher_mode_from_oid ++gcry_cipher_encrypt ++gcry_cipher_decrypt ++gcry_cipher_get_algo_keylen ++gcry_cipher_get_algo_blklen ++gcry_cipher_list ++gcry_pk_encrypt ++gcry_pk_decrypt ++gcry_pk_sign ++gcry_pk_verify ++gcry_pk_testkey ++gcry_pk_genkey ++gcry_pk_ctl ++gcry_pk_algo_info ++gcry_pk_algo_name ++gcry_pk_map_name ++gcry_pk_get_nbits ++gcry_pk_get_keygrip ++gcry_pk_list ++gcry_ac_data_new ++gcry_ac_data_destroy ++gcry_ac_data_set ++gcry_ac_data_copy ++gcry_ac_data_length ++gcry_ac_data_get_name ++gcry_ac_data_get_index ++gcry_ac_data_clear ++gcry_ac_open ++gcry_ac_close ++gcry_ac_key_init ++gcry_ac_key_pair_generate ++gcry_ac_key_pair_extract ++gcry_ac_key_data_get ++gcry_ac_key_test ++gcry_ac_key_get_nbits ++gcry_ac_key_get_grip ++gcry_ac_key_destroy ++gcry_ac_key_pair_destroy ++gcry_ac_data_encrypt ++gcry_ac_data_decrypt ++gcry_ac_data_sign ++gcry_ac_data_verify ++gcry_ac_id_to_name ++gcry_ac_name_to_id ++gcry_md_open ++gcry_md_close ++gcry_md_enable ++gcry_md_copy ++gcry_md_reset ++gcry_md_ctl ++gcry_md_write ++gcry_md_read ++gcry_md_hash_buffer ++gcry_md_get_algo ++gcry_md_get_algo_dlen ++gcry_md_is_enabled ++gcry_md_is_secure ++gcry_md_info ++gcry_md_algo_info ++gcry_md_algo_name ++gcry_md_map_name ++gcry_md_setkey ++gcry_md_list ++gcry_randomize ++gcry_random_add_bytes ++gcry_random_bytes ++gcry_random_bytes_secure ++gcry_mpi_randomize ++gcry_prime_generate ++gcry_prime_group_generator ++gcry_prime_release_factors ++gcry_prime_check ++gcry_create_nonce ++gcry_md_debug ++gcry_cipher_register ++gcry_cipher_unregister ++gcry_md_register ++gcry_md_unregister ++gcry_pk_register ++gcry_pk_unregister ++gcry_ac_data_from_sexp ++gcry_ac_data_to_sexp ++gcry_ac_io_init ++gcry_ac_io_init_va ++gcry_ac_data_encrypt_scheme ++gcry_ac_data_decrypt_scheme ++gcry_ac_data_sign_scheme ++gcry_ac_data_verify_scheme ++gcry_sexp_nth_string ++gcry_cipher_setkey ++gcry_cipher_setiv ++gcry_cipher_setctr ++gcry_mpi_lshift ++gcry_pk_get_curve ++gcry_pk_get_param ++gcry_kdf_derive +diff -ur libgcrypt-1.5.2-orig/tests/benchmark.c libgcrypt-1.5.2/tests/benchmark.c +--- libgcrypt-1.5.2-orig/tests/benchmark.c 2013-04-18 10:48:42 -0400 ++++ libgcrypt-1.5.2/tests/benchmark.c 2013-06-23 21:41:30 -0400 +@@ -25,7 +25,11 @@ + #include + #include + #ifdef _WIN32 ++#define WIN32_LEAN_AND_MEAN + #include ++#ifdef _MSC_VER ++#define snprintf _snprintf ++#endif + #else + #include + #endif +diff -ur libgcrypt-1.5.2-orig/tests/fipsdrv.c libgcrypt-1.5.2/tests/fipsdrv.c +--- libgcrypt-1.5.2-orig/tests/fipsdrv.c 2013-03-19 11:50:25 -0400 ++++ libgcrypt-1.5.2/tests/fipsdrv.c 2013-06-23 21:41:30 -0400 +@@ -34,6 +34,10 @@ + #include + #include + ++#if defined(_MSC_VER) && !defined(R_OK) ++# define R_OK 4 ++#endif ++ + #ifdef _GCRYPT_IN_LIBGCRYPT + # include "../src/gcrypt.h" + #else