From 460fe31f0c0a780005d58f5872177984d640791d Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Tue, 20 Feb 2001 19:13:46 +0000 Subject: [PATCH] With later version of DEC C on VMS, some functions (strcmp(), for example) are declared with some extra linkage information. This generates a warning when using the function name as a value to a regular function pointer with the "correct" definition of the function. Therefore, use a macro to cast the appropriate function on VMS. --- crypto/objects/o_names.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/crypto/objects/o_names.c b/crypto/objects/o_names.c index 5e70508d9a..2b80243256 100644 --- a/crypto/objects/o_names.c +++ b/crypto/objects/o_names.c @@ -5,6 +5,18 @@ #include #include #include +#include + +/* Later versions of DEC C has started to add lnkage information to certain + * functions, which makes it tricky to use them as values to regular function + * pointers. One way is to define a macro that takes care of casting them + * correctly. + */ +#ifdef OPENSSL_SYS_VMS_DECC +# define OPENSSL_strcmp (int (*)(const char *,const char *))strcmp +#else +# define OPENSSL_strcmp strcmp +#endif /* I use the ex_data stuff to manage the identifiers for the obj_name_types * that applications may define. I only really use the free function field. @@ -68,7 +80,7 @@ int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *), MemCheck_off(); name_funcs = OPENSSL_malloc(sizeof(NAME_FUNCS)); name_funcs->hash_func = lh_strhash; - name_funcs->cmp_func = strcmp; + name_funcs->cmp_func = OPENSSL_strcmp; name_funcs->free_func = 0; /* NULL is often declared to * ((void *)0), which according * to Compaq C is not really -- 2.25.1