From: Viktor Szakats Date: Sun, 21 Dec 2025 14:45:53 +0000 (+0100) Subject: checksrc: ensure using `ifdef`/`ifndef` when possible, fix fallouts X-Git-Tag: rc-8_18_0-3~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ad87f2cb8a9b4f57bbe6e3b2af06e87f4307ae3;p=thirdparty%2Fcurl.git checksrc: ensure using `ifdef`/`ifndef` when possible, fix fallouts Follow-up to 89771d19d58d16cfe6e1d7fda7acd65a0a316eba #18018 Closes #20065 --- diff --git a/lib/amigaos.c b/lib/amigaos.c index 4e5960b8f5..76d67b08fe 100644 --- a/lib/amigaos.c +++ b/lib/amigaos.c @@ -30,7 +30,7 @@ #include "amigaos.h" #ifdef HAVE_PROTO_BSDSOCKET_H -# if defined(__amigaos4__) +# ifdef __amigaos4__ # include # elif !defined(USE_AMISSL) # include diff --git a/lib/setopt.c b/lib/setopt.c index 2bdb6a3473..118c4d0555 100644 --- a/lib/setopt.c +++ b/lib/setopt.c @@ -521,7 +521,7 @@ static CURLcode setopt_bool(struct Curl_easy *data, CURLoption option, case CURLOPT_HTTP09_ALLOWED: s->http09_allowed = enabled; break; -#if !defined(CURL_DISABLE_COOKIES) +#ifndef CURL_DISABLE_COOKIES case CURLOPT_COOKIESESSION: /* * Set this option to TRUE to start a new "cookie session". It will diff --git a/lib/url.c b/lib/url.c index 7f439b5449..5340f5a4c9 100644 --- a/lib/url.c +++ b/lib/url.c @@ -1527,7 +1527,7 @@ const struct Curl_handler *Curl_getn_scheme_handler(const char *scheme, #else NULL, #endif -#if defined(USE_SSH) +#ifdef USE_SSH &Curl_handler_scp, #else NULL, diff --git a/lib/vssh/libssh.c b/lib/vssh/libssh.c index 327f3ee661..7d5905c83d 100644 --- a/lib/vssh/libssh.c +++ b/lib/vssh/libssh.c @@ -204,7 +204,7 @@ static CURLcode sftp_error_to_CURLE(int err) return CURLE_SSH; } -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) +#ifndef CURL_DISABLE_VERBOSE_STRINGS static const char *myssh_statename(sshstate state) { static const char * const names[] = { @@ -287,7 +287,7 @@ static void myssh_set_state(struct Curl_easy *data, struct ssh_conn *sshc, sshstate nowstate) { -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) +#ifndef CURL_DISABLE_VERBOSE_STRINGS if(sshc->state != nowstate) { CURL_TRC_SSH(data, "[%s] -> [%s]", myssh_statename(sshc->state), diff --git a/lib/vssh/libssh2.c b/lib/vssh/libssh2.c index 3f81dbd853..4d43ddd9f1 100644 --- a/lib/vssh/libssh2.c +++ b/lib/vssh/libssh2.c @@ -274,7 +274,7 @@ static LIBSSH2_FREE_FUNC(my_libssh2_free) Curl_cfree(ptr); } -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) +#ifndef CURL_DISABLE_VERBOSE_STRINGS static const char *myssh_statename(sshstate state) { static const char * const names[] = { @@ -357,7 +357,7 @@ static void myssh_set_state(struct Curl_easy *data, struct ssh_conn *sshc, sshstate nowstate) { -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) +#ifndef CURL_DISABLE_VERBOSE_STRINGS if(sshc->state != nowstate) { CURL_TRC_SSH(data, "[%s] -> [%s]", myssh_statename(sshc->state), diff --git a/lib/vtls/apple.c b/lib/vtls/apple.c index f076caf5ff..0b81e95e86 100644 --- a/lib/vtls/apple.c +++ b/lib/vtls/apple.c @@ -225,7 +225,7 @@ CURLcode Curl_vtls_apple_verify(struct Curl_cfilter *cf, #endif #ifdef SUPPORTS_SecTrustEvaluateWithError -#if defined(HAVE_BUILTIN_AVAILABLE) +#ifdef HAVE_BUILTIN_AVAILABLE if(__builtin_available(macOS 10.14, iOS 12, tvOS 12, watchOS 5, *)) { #else if(1) { diff --git a/scripts/checksrc.pl b/scripts/checksrc.pl index 33cd4bb246..8839f38bf6 100755 --- a/scripts/checksrc.pl +++ b/scripts/checksrc.pl @@ -162,6 +162,7 @@ my %warnings = ( 'EXCLAMATIONSPACE' => 'Whitespace after exclamation mark in expression', 'FIXME' => 'FIXME or TODO comment', 'FOPENMODE' => 'fopen needs a macro for the mode string', + 'IFDEFSINGLE', => 'use ifdef/ifndef for single macro checks', 'INCLUDEDUP', => 'same file is included again', 'INDENTATION' => 'wrong start column for code', 'LONGLINE' => "Line longer than $max_column", @@ -658,6 +659,11 @@ sub scanfile { $line, length($1), $file, $l, "\/\/ comment"); } + if($l =~ /^\s*#\s*if\s+!?\s*defined\([a-zA-Z0-9_]+\)$/) { + checkwarn("IFDEFSINGLE", + $line, length($1), $file, $l, "use ifdef/ifndef for single macro checks"); + } + if($l =~ /^(\#\s*include\s+)([\">].*[>}"])/) { my ($pre, $path) = ($1, $2); if($includes{$path}) { diff --git a/src/tool_cb_soc.c b/src/tool_cb_soc.c index d89870297c..0df0a1e6fb 100644 --- a/src/tool_cb_soc.c +++ b/src/tool_cb_soc.c @@ -45,7 +45,7 @@ curl_socket_t tool_socket_open_mptcp_cb(void *clientp, (void)purpose; if(protocol == IPPROTO_TCP) -#if defined(__linux__) +#ifdef __linux__ # ifndef IPPROTO_MPTCP # define IPPROTO_MPTCP 262 # endif diff --git a/tests/data/test1185 b/tests/data/test1185 index 71654f7ba7..7af7b79a2f 100644 --- a/tests/data/test1185 +++ b/tests/data/test1185 @@ -79,6 +79,13 @@ void startfunc(int a, int b) { if(sprintf(buffer, "%s", moo)) {} *buffer_len = (ssize_t)alsobad((char *)buffer, NULL, 16); +# if defined(SINGLE_MACRO) + #if ! defined(__macro_10) +#elif !defined(TESTMACRO) +#endif +#endif +#endif + // CPP comment ? /* comment does not end @@ -205,7 +212,13 @@ void startfunc(int a, int b) { ./%LOGDIR/code1185.c:62:25: warning: use of alsobad is banned (BANNEDFUNC) *buffer_len = (ssize_t)alsobad((char *)buffer, NULL, 16); ^ -./%LOGDIR/code1185.c:64:2: warning: // comment (CPPCOMMENTS) +./%LOGDIR/code1185.c:64:1: warning: use ifdef/ifndef for single macro checks (IFDEFSINGLE) + # if defined(SINGLE_MACRO) + ^ +./%LOGDIR/code1185.c:65:1: warning: use ifdef/ifndef for single macro checks (IFDEFSINGLE) + #if ! defined(__macro_10) + ^ +./%LOGDIR/code1185.c:71:2: warning: // comment (CPPCOMMENTS) // CPP comment ? ^ ./%LOGDIR/code1185.c:1:1: error: Missing copyright statement (COPYRIGHT) @@ -214,7 +227,7 @@ void startfunc(int a, int b) { ./%LOGDIR/code1185.c:1:1: error: Missing closing comment (OPENCOMMENT) %SP ^ -checksrc: 0 errors and 42 warnings +checksrc: 0 errors and 44 warnings 5