mirror of
https://github.com/curl/curl.git
synced 2026-04-14 21:31:42 +03:00
curlx: promote Curl_fseeko() to curlx_fseek(), use it in src
- tool_formparse: replace truncated `fseek` with `curlx_fseek`.
- tool_operate: replace truncated `fseek` with `curlx_fseek`.
- tool_paramhlp: replace local duplicate `myfseek`, with `curlx_fseek`.
Follow-up to 4fb12f2891 #19100
Closes #19107
This commit is contained in:
parent
b9b8a7a5df
commit
f32451c12b
8 changed files with 24 additions and 36 deletions
|
|
@ -32,9 +32,23 @@
|
|||
|
||||
#include "../curl_setup.h"
|
||||
|
||||
#include "fopen.h"
|
||||
|
||||
int curlx_fseek(void *stream, curl_off_t offset, int whence)
|
||||
{
|
||||
#if defined(_WIN32) && defined(USE_WIN32_LARGE_FILES)
|
||||
return _fseeki64(stream, (__int64)offset, whence);
|
||||
#elif defined(HAVE_FSEEKO) && defined(HAVE_DECL_FSEEKO)
|
||||
return fseeko(stream, (off_t)offset, whence);
|
||||
#else
|
||||
if(offset > LONG_MAX)
|
||||
return -1;
|
||||
return fseek(stream, (long)offset, whence);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(_WIN32) && !defined(UNDER_CE)
|
||||
|
||||
#include "fopen.h"
|
||||
#include "multibyte.h"
|
||||
|
||||
/* declare GetFullPathNameW for mingw-w64 UWP builds targeting old windows */
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#include <fcntl.h> /* for open() and attributes */
|
||||
#endif
|
||||
|
||||
int curlx_fseek(void *stream, curl_off_t offset, int whence);
|
||||
|
||||
#if defined(_WIN32) && !defined(UNDER_CE)
|
||||
FILE *curlx_win32_fopen(const char *filename, const char *mode);
|
||||
int curlx_win32_stat(const char *path, struct_stat *buffer);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ struct Curl_easy;
|
|||
#include "sendf.h"
|
||||
#include "strdup.h"
|
||||
#include "rand.h"
|
||||
#include "curlx/fopen.h"
|
||||
#include "curlx/warnless.h"
|
||||
|
||||
/* The last 2 #include files should be in this order */
|
||||
|
|
@ -860,7 +861,7 @@ CURLcode Curl_getformdata(CURL *data,
|
|||
#endif
|
||||
result = curl_mime_data_cb(part, (curl_off_t) -1,
|
||||
(curl_read_callback) fread,
|
||||
Curl_fseeko,
|
||||
curlx_fseek,
|
||||
NULL, (void *) stdin);
|
||||
#if defined(__clang__) && __clang_major__ >= 16
|
||||
#pragma clang diagnostic pop
|
||||
|
|
|
|||
15
lib/mime.c
15
lib/mime.c
|
|
@ -271,19 +271,6 @@ static char *Curl_basename(char *path)
|
|||
#define basename(x) Curl_basename((x))
|
||||
#endif
|
||||
|
||||
int Curl_fseeko(void *stream, curl_off_t offset, int whence)
|
||||
{
|
||||
#if defined(_WIN32) && defined(USE_WIN32_LARGE_FILES)
|
||||
return _fseeki64(stream, (__int64)offset, whence);
|
||||
#elif defined(HAVE_FSEEKO) && defined(HAVE_DECL_FSEEKO)
|
||||
return fseeko(stream, (off_t)offset, whence);
|
||||
#else
|
||||
if(offset > LONG_MAX)
|
||||
return -1;
|
||||
return fseek(stream, (long)offset, whence);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* Set readback state. */
|
||||
static void mimesetstate(struct mime_state *state,
|
||||
|
|
@ -750,7 +737,7 @@ static int mime_file_seek(void *instream, curl_off_t offset, int whence)
|
|||
if(mime_open_file(part))
|
||||
return CURL_SEEKFUNC_FAIL;
|
||||
|
||||
return Curl_fseeko(part->fp, offset, whence) ?
|
||||
return curlx_fseek(part->fp, offset, whence) ?
|
||||
CURL_SEEKFUNC_CANTSEEK : CURL_SEEKFUNC_OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,6 @@ CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...)
|
|||
!defined(CURL_DISABLE_IMAP))
|
||||
|
||||
/* Prototypes. */
|
||||
int Curl_fseeko(void *stream, curl_off_t offset, int whence);
|
||||
void Curl_mime_initpart(struct curl_mimepart *part);
|
||||
void Curl_mime_cleanpart(struct curl_mimepart *part);
|
||||
CURLcode Curl_mime_duppart(struct Curl_easy *data,
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ int tool_mime_stdin_seek(void *instream, curl_off_t offset, int whence)
|
|||
if(offset < 0)
|
||||
return CURL_SEEKFUNC_CANTSEEK;
|
||||
if(!sip->data) {
|
||||
if(fseek(stdin, (long) (offset + sip->origin), SEEK_SET))
|
||||
if(curlx_fseek(stdin, offset + sip->origin, SEEK_SET))
|
||||
return CURL_SEEKFUNC_CANTSEEK;
|
||||
}
|
||||
sip->curpos = offset;
|
||||
|
|
|
|||
|
|
@ -584,10 +584,8 @@ static CURLcode retrycheck(struct OperationConfig *config,
|
|||
rc = fseek(outs->stream, 0, SEEK_END);
|
||||
#else
|
||||
/* ftruncate is not available, so just reposition the file
|
||||
to the location we would have truncated it. This will not
|
||||
work properly with large files on 32-bit systems, but
|
||||
most of those will have ftruncate. */
|
||||
rc = fseek(outs->stream, (long)outs->init, SEEK_SET);
|
||||
to the location we would have truncated it. */
|
||||
rc = curlx_fseek(outs->stream, outs->init, SEEK_SET);
|
||||
#endif
|
||||
if(rc) {
|
||||
errorf("Failed seeking to end of file");
|
||||
|
|
|
|||
|
|
@ -119,19 +119,6 @@ ParameterError file2string(char **bufp, FILE *file)
|
|||
return PARAM_OK;
|
||||
}
|
||||
|
||||
static int myfseek(void *stream, curl_off_t offset, int whence)
|
||||
{
|
||||
#if defined(_WIN32) && defined(USE_WIN32_LARGE_FILES)
|
||||
return _fseeki64(stream, (__int64)offset, whence);
|
||||
#elif defined(HAVE_FSEEKO) && defined(HAVE_DECL_FSEEKO)
|
||||
return fseeko(stream, (off_t)offset, whence);
|
||||
#else
|
||||
if(offset > LONG_MAX)
|
||||
return -1;
|
||||
return fseek(stream, (long)offset, whence);
|
||||
#endif
|
||||
}
|
||||
|
||||
ParameterError file2memory_range(char **bufp, size_t *size, FILE *file,
|
||||
curl_off_t starto, curl_off_t endo)
|
||||
{
|
||||
|
|
@ -143,7 +130,7 @@ ParameterError file2memory_range(char **bufp, size_t *size, FILE *file,
|
|||
|
||||
if(starto) {
|
||||
if(file != stdin) {
|
||||
if(myfseek(file, starto, SEEK_SET))
|
||||
if(curlx_fseek(file, starto, SEEK_SET))
|
||||
return PARAM_READ_ERROR;
|
||||
offset = starto;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue