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:
Viktor Szakats 2025-10-17 18:31:52 +02:00
parent b9b8a7a5df
commit f32451c12b
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
8 changed files with 24 additions and 36 deletions

View file

@ -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 */

View file

@ -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);

View file

@ -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

View file

@ -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;
}

View file

@ -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,