--- a/spamc/libspamc.c +++ a/spamc/libspamc.c @@ -2049,6 +2049,18 @@ libspamc_sslversion() /* --------------------------------------------------------------------------- */ +char * +libspamc_sslversion() +{ +#ifdef SPAMC_SSL + return OPENSSL_VERSION_TEXT; +#else + return NULL; +#endif +} + +/* --------------------------------------------------------------------------- */ + /* * Unit tests. Must be built externally, e.g.: * --- a/spamc/spamc.c +++ a/spamc/spamc.c @@ -43,13 +43,6 @@ #include #endif -#ifdef SPAMC_SSL -#include -#ifndef OPENSSL_VERSION_TEXT -#define OPENSSL_VERSION_TEXT "OpenSSL" -#endif -#endif - #ifdef HAVE_SYSEXITS_H #include #endif @@ -115,10 +108,11 @@ check_malloc (void *ptr) void print_version(void) { + char *sslver = libspamc_sslversion(); printf("%s version %s\n", "SpamAssassin Client", VERSION_STRING); -#ifdef SPAMC_SSL - printf(" compiled with SSL support (%s)\n", OPENSSL_VERSION_TEXT); -#endif + if (sslver) { + printf(" compiled with SSL support (%s)\n", sslver); + } } static void @@ -143,9 +137,9 @@ print_usage(void) " hostname.\n"); usg(" -p, --port port Specify port for connection to spamd.\n" " [default: 783]\n"); -#ifdef SPAMC_SSL - usg(" -S, --ssl Use SSL to talk to spamd.\n"); -#endif + if (libspamc_sslversion()) { + usg(" -S, --ssl Use SSL to talk to spamd.\n"); + } #ifndef _WIN32 usg(" -U, --socket path Connect to spamd via UNIX domain sockets.\n"); #endif @@ -340,29 +334,32 @@ read_args(int argc, char **argv, *max_size = atoi(spamc_optarg); break; } -#ifdef SPAMC_SSL case 'S': { - flags |= SPAMC_USE_SSL; - if (!spamc_optarg || (strcmp(spamc_optarg,"sslv23") == 0)) { - /* this is the default */ - } - else if (strcmp(spamc_optarg,"sslv2") == 0) { - flags |= SPAMC_SSLV2; - } - else if (strcmp(spamc_optarg,"sslv3") == 0) { - flags |= SPAMC_SSLV3; - } - else if (strcmp(spamc_optarg,"tlsv1") == 0) { - flags |= (SPAMC_SSLV2 | SPAMC_SSLV3); - } - else { - libspamc_log(flags, LOG_ERR, "Please specifiy a legal ssl version (%s)", spamc_optarg); - ret = EX_USAGE; - } - break; + if (libspamc_sslversion()) { + flags |= SPAMC_USE_SSL; + if (!spamc_optarg || (strcmp(spamc_optarg,"sslv23") == 0)) { + /* this is the default */ + } + else if (strcmp(spamc_optarg,"sslv2") == 0) { + flags |= SPAMC_SSLV2; + } + else if (strcmp(spamc_optarg,"sslv3") == 0) { + flags |= SPAMC_SSLV3; + } + else if (strcmp(spamc_optarg,"tlsv1") == 0) { + flags |= (SPAMC_SSLV2 | SPAMC_SSLV3); + } + else { + libspamc_log(flags, LOG_ERR, "Please specifiy a legal ssl version (%s)", spamc_optarg); + ret = EX_USAGE; + } + break; + } + libspamc_log(flags, LOG_ERR, "invalid usage"); + print_usage(); + return(EX_USAGE); } -#endif case 't': { timeout = atoi(spamc_optarg); --- a/spamc/utils.h +++ a/spamc/utils.h @@ -30,6 +30,10 @@ extern int libspamc_timeout; /* default timeout in seconds */ #include #include #include +#ifndef OPENSSL_VERSION_TEXT +#define OPENSSL_VERSION_TEXT "OpenSSL" +#endif + #else typedef int SSL; /* fake type to avoid conditional compilation */ typedef int SSL_CTX;