From 3b9569c3e2b6c35c915a1760a71c3434e570f49c Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 28 May 2024 16:16:01 +0200 Subject: [PATCH] lib: prefer `var = time(NULL)` over `time(&var)` Following up on previous occurrences showing up as gcc warnings, replace the remaining `time(&var)` calls with `var = time(NULL)`, though these aren't specifically causing compiler warnings. These are in the TFTP client code (`lib/tftp.c`), except one which is in a debug branch in `lib/http_aws_sigv4.c`. What's unexplainable is that this patch seems to mitigate TFTP tests often hanging or going into an infinite loop on GHA windows workflows with MSYS2, mingw-w64 and MSVC (Cygwin is unaffected): https://github.com/curl/curl/pull/13599#issuecomment-2119372376 TFTP hangs did not entirely disappear though, so could be unrelated. `time()` docs: https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/time-time32-time64 https://manpages.debian.org/bookworm/manpages-dev/time.2.en.html Follow-up to 58ca0a2f0743a586716ca357c382b29e3f08db69 #13800 Follow-up to d0728c9109629ee82b855b350a4c3f1f52ee61df #13643 Closes #13815 --- lib/http_aws_sigv4.c | 2 +- lib/tftp.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/http_aws_sigv4.c b/lib/http_aws_sigv4.c index 4cc397dfed..9d8e407d9b 100644 --- a/lib/http_aws_sigv4.c +++ b/lib/http_aws_sigv4.c @@ -694,7 +694,7 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy) if(force_timestamp) clock = 0; else - time(&clock); + clock = time(NULL); } #else clock = time(NULL); diff --git a/lib/tftp.c b/lib/tftp.c index 310a0faba7..7f26ab6f31 100644 --- a/lib/tftp.c +++ b/lib/tftp.c @@ -245,7 +245,7 @@ static CURLcode tftp_set_timeouts(struct tftp_state_data *state) (int)state->state, timeout_ms, state->retry_time, state->retry_max); /* init RX time */ - time(&state->rx_time); + state->rx_time = time(NULL); return CURLE_OK; } @@ -626,7 +626,7 @@ static CURLcode tftp_rx(struct tftp_state_data *state, else { state->state = TFTP_STATE_RX; } - time(&state->rx_time); + state->rx_time = time(NULL); break; case TFTP_EVENT_OACK: @@ -646,7 +646,7 @@ static CURLcode tftp_rx(struct tftp_state_data *state, /* we're ready to RX data */ state->state = TFTP_STATE_RX; - time(&state->rx_time); + state->rx_time = time(NULL); break; case TFTP_EVENT_TIMEOUT: @@ -753,7 +753,7 @@ static CURLcode tftp_tx(struct tftp_state_data *state, tftp_event_t event) } /* This is the expected packet. Reset the counters and send the next block */ - time(&state->rx_time); + state->rx_time = time(NULL); state->block++; } else @@ -1208,7 +1208,7 @@ static timediff_t tftp_state_timeout(struct Curl_easy *data, if(current > state->rx_time + state->retry_time) { if(event) *event = TFTP_EVENT_TIMEOUT; - time(&state->rx_time); /* update even though we received nothing */ + state->rx_time = time(NULL); /* update even though we received nothing */ } return timeout_ms; -- 2.47.2