1
0
mirror of https://github.com/moparisthebest/curl synced 2025-02-28 17:31:46 -05:00

curl: move fprintf outputs to warnf

For setting and getting time of the download. To make the outputs
respect --silent etc.

Reported-by: Viktor Szakats
Fixes #6533
Closes #6535
This commit is contained in:
Daniel Stenberg 2021-01-26 16:52:03 +01:00
parent d3ca0771d2
commit 71acece933
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
4 changed files with 41 additions and 47 deletions

View File

@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@ -20,7 +20,8 @@
*
***************************************************************************/
#include "tool_filetime.h"
#include "tool_cfgable.h"
#include "tool_msgs.h"
#include "curlx.h"
#ifdef HAVE_UTIME_H
@ -34,7 +35,7 @@
#pragma GCC diagnostic ignored "-Wformat"
#endif
curl_off_t getfiletime(const char *filename, FILE *error_stream)
curl_off_t getfiletime(const char *filename, struct GlobalConfig *global)
{
curl_off_t result = -1;
@ -57,24 +58,21 @@ curl_off_t getfiletime(const char *filename, FILE *error_stream)
| ((curl_off_t)ft.dwHighDateTime) << 32;
if(converted < CURL_OFF_T_C(116444736000000000)) {
fprintf(error_stream,
"Failed to get filetime: underflow\n");
warnf(global, "Failed to get filetime: underflow\n");
}
else {
result = (converted - CURL_OFF_T_C(116444736000000000)) / 10000000;
}
}
else {
fprintf(error_stream,
"Failed to get filetime: "
warnf(global, "Failed to get filetime: "
"GetFileTime failed: GetLastError %u\n",
(unsigned int)GetLastError());
}
CloseHandle(hfile);
}
else if(GetLastError() != ERROR_FILE_NOT_FOUND) {
fprintf(error_stream,
"Failed to get filetime: "
warnf(global, "Failed to get filetime: "
"CreateFile failed: GetLastError %u\n",
(unsigned int)GetLastError());
}
@ -84,8 +82,7 @@ curl_off_t getfiletime(const char *filename, FILE *error_stream)
result = (curl_off_t)statbuf.st_mtime;
}
else if(errno != ENOENT) {
fprintf(error_stream,
"Failed to get filetime: %s\n", strerror(errno));
warnf(global, "Failed to get filetime: %s\n", strerror(errno));
}
#endif
return result;
@ -94,7 +91,7 @@ curl_off_t getfiletime(const char *filename, FILE *error_stream)
#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
(defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
void setfiletime(curl_off_t filetime, const char *filename,
FILE *error_stream)
struct GlobalConfig *global)
{
if(filetime >= 0) {
/* Windows utime() may attempt to adjust the unix GMT file time by a daylight
@ -107,8 +104,7 @@ void setfiletime(curl_off_t filetime, const char *filename,
/* 910670515199 is the maximum unix filetime that can be used as a
Windows FILETIME without overflow: 30827-12-31T23:59:59. */
if(filetime > CURL_OFF_T_C(910670515199)) {
fprintf(error_stream,
"Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
" on outfile: overflow\n", filetime);
curlx_unicodefree(tchar_filename);
return;
@ -126,16 +122,14 @@ void setfiletime(curl_off_t filetime, const char *filename,
ft.dwLowDateTime = (DWORD)(converted & 0xFFFFFFFF);
ft.dwHighDateTime = (DWORD)(converted >> 32);
if(!SetFileTime(hfile, NULL, &ft, &ft)) {
fprintf(error_stream,
"Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
" on outfile: SetFileTime failed: GetLastError %u\n",
filetime, (unsigned int)GetLastError());
}
CloseHandle(hfile);
}
else {
fprintf(error_stream,
"Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
" on outfile: CreateFile failed: GetLastError %u\n",
filetime, (unsigned int)GetLastError());
}
@ -145,8 +139,7 @@ void setfiletime(curl_off_t filetime, const char *filename,
times[0].tv_sec = times[1].tv_sec = (time_t)filetime;
times[0].tv_usec = times[1].tv_usec = 0;
if(utimes(filename, times)) {
fprintf(error_stream,
"Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
" on outfile: %s\n", filetime, strerror(errno));
}
@ -155,8 +148,7 @@ void setfiletime(curl_off_t filetime, const char *filename,
times.actime = (time_t)filetime;
times.modtime = (time_t)filetime;
if(utime(filename, &times)) {
fprintf(error_stream,
"Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
" on outfile: %s\n", filetime, strerror(errno));
}
#endif

View File

@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@ -23,12 +23,14 @@
***************************************************************************/
#include "tool_setup.h"
curl_off_t getfiletime(const char *filename, FILE *error_stream);
struct GlobalConfig;
curl_off_t getfiletime(const char *filename, struct GlobalConfig *global);
#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
(defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
void setfiletime(curl_off_t filetime, const char *filename,
FILE *error_stream);
struct GlobalConfig *global);
#else
#define setfiletime(a,b,c) Curl_nop_stmt
#endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \

View File

@ -2253,7 +2253,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
config->condtime = (curl_off_t)curl_getdate(nextarg, &now);
if(-1 == config->condtime) {
/* now let's see if it is a file name to get the time from instead! */
curl_off_t filetime = getfiletime(nextarg, config->global->errors);
curl_off_t filetime = getfiletime(nextarg, global);
if(filetime >= 0) {
/* pull the time out from the file */
config->condtime = filetime;

View File

@ -644,7 +644,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
/* Ask libcurl if we got a remote file time */
curl_off_t filetime = -1;
curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
setfiletime(filetime, outs->filename, config->global->errors);
setfiletime(filetime, outs->filename, global);
}
/* Close function-local opened file descriptors */