mirror of
https://github.com/curl/curl.git
synced 2026-08-01 19:40:32 +03:00
build: avoid overriding system symbols for fopen functions
By introducing wrappers for them in the curlx namespace: `curlx_fopen()`, `curlx_fdopen()`, `curlx_fclose()`. The undefine/redefine/`(function)()` methods broke on systems implementing these functions as macros. E.g. AIX 32-bit's `fopen()`. Also: - rename `lib/fopen.*` to `lib/curl_fopen.*` (for `Curl_fopen()`) to make room for the newly added `curlx/fopen.h`. - curlx: move file-related functions from `multibyte.c` to `fopen.c`. - tests/server: stop using the curl-specific `fopen()` implementation on Windows. Unicode isn't used by runtests, and it isn't critical to run tests on longs path. It can be re-enabled if this becomes necessary, or if the wrapper receives a feature that's critical for test servers. Reported-by: Andrew Kirillov Bug: https://github.com/curl/curl/issues/18510#issuecomment-3274393640 Follow-up tobf7375ecc5#18503 Follow-up to9863599d69#18502 Follow-up to3bb5e58c10#17827 Closes #18634
This commit is contained in:
parent
10bac43b87
commit
20142f5d06
65 changed files with 568 additions and 484 deletions
|
|
@ -29,6 +29,7 @@
|
|||
#include <curl/curl.h>
|
||||
|
||||
#include "urldata.h"
|
||||
#include "curlx/fopen.h" /* for CURLX_FOPEN_LOW() */
|
||||
|
||||
/* The last 3 #include files should be in this order */
|
||||
#include "curl_printf.h"
|
||||
|
|
@ -68,7 +69,8 @@ static void curl_dbg_cleanup(void)
|
|||
if(curl_dbg_logfile &&
|
||||
curl_dbg_logfile != stderr &&
|
||||
curl_dbg_logfile != stdout) {
|
||||
(fclose)(curl_dbg_logfile);
|
||||
/* !checksrc! disable BANNEDFUNC 1 */
|
||||
fclose(curl_dbg_logfile);
|
||||
}
|
||||
curl_dbg_logfile = NULL;
|
||||
}
|
||||
|
|
@ -78,11 +80,7 @@ void curl_dbg_memdebug(const char *logname)
|
|||
{
|
||||
if(!curl_dbg_logfile) {
|
||||
if(logname && *logname)
|
||||
#ifdef CURL_FOPEN
|
||||
curl_dbg_logfile = CURL_FOPEN(logname, FOPEN_WRITETEXT);
|
||||
#else
|
||||
curl_dbg_logfile = (fopen)(logname, FOPEN_WRITETEXT);
|
||||
#endif
|
||||
curl_dbg_logfile = CURLX_FOPEN_LOW(logname, FOPEN_WRITETEXT);
|
||||
else
|
||||
curl_dbg_logfile = stderr;
|
||||
#ifdef MEMDEBUG_LOG_SYNC
|
||||
|
|
@ -424,13 +422,7 @@ ALLOC_FUNC
|
|||
FILE *curl_dbg_fopen(const char *file, const char *mode,
|
||||
int line, const char *source)
|
||||
{
|
||||
FILE *res;
|
||||
#ifdef CURL_FOPEN
|
||||
res = CURL_FOPEN(file, mode);
|
||||
#else
|
||||
res = (fopen)(file, mode);
|
||||
#endif
|
||||
|
||||
FILE *res = CURLX_FOPEN_LOW(file, mode);
|
||||
if(source)
|
||||
curl_dbg_log("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
|
||||
source, line, file, mode, (void *)res);
|
||||
|
|
@ -442,7 +434,8 @@ ALLOC_FUNC
|
|||
FILE *curl_dbg_fdopen(int filedes, const char *mode,
|
||||
int line, const char *source)
|
||||
{
|
||||
FILE *res = (fdopen)(filedes, mode);
|
||||
/* !checksrc! disable BANNEDFUNC 1 */
|
||||
FILE *res = fdopen(filedes, mode);
|
||||
if(source)
|
||||
curl_dbg_log("FILE %s:%d fdopen(\"%d\",\"%s\") = %p\n",
|
||||
source, line, filedes, mode, (void *)res);
|
||||
|
|
@ -459,7 +452,8 @@ int curl_dbg_fclose(FILE *file, int line, const char *source)
|
|||
curl_dbg_log("FILE %s:%d fclose(%p)\n",
|
||||
source, line, (void *)file);
|
||||
|
||||
res = (fclose)(file);
|
||||
/* !checksrc! disable BANNEDFUNC 1 */
|
||||
res = fclose(file);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue