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:
parent
d3ca0771d2
commit
71acece933
@ -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, ×)) {
|
||||
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
|
||||
|
@ -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) || \
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user