Skip to content

Commit a95dca0

Browse files
bagderptitSeb
authored andcommittedSep 25, 2023
include/curl/mprintf.h: add __attribute__ for the prototypes
- if gcc or clang is used - if __STDC_VERSION__ >= 199901L, which means greater than C90 - if not using mingw - if CURL_NO_FMT_CHECKS is not defined Closes curl#11589
1 parent caa4c30 commit a95dca0

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed
 

‎include/curl/mprintf.h

+28-10
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,36 @@
3232
extern "C" {
3333
#endif
3434

35-
CURL_EXTERN int curl_mprintf(const char *format, ...);
36-
CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
37-
CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
35+
#if (defined(__GNUC__) || defined(__clang__)) && \
36+
defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
37+
!defined(__MINGW32__) && !defined(CURL_NO_FMT_CHECKS)
38+
#define CURL_TEMP_PRINTF(a,b) __attribute__ ((format(printf, a, b)))
39+
#else
40+
#define CURL_TEMP_PRINTF(a,b)
41+
#endif
42+
43+
CURL_EXTERN int curl_mprintf(const char *format, ...) CURL_TEMP_PRINTF(1, 2);
44+
CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...)
45+
CURL_TEMP_PRINTF(2, 3);
46+
CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...)
47+
CURL_TEMP_PRINTF(2, 3);
3848
CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
39-
const char *format, ...);
40-
CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
41-
CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
42-
CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
49+
const char *format, ...) CURL_TEMP_PRINTF(3, 4);
50+
CURL_EXTERN int curl_mvprintf(const char *format, va_list args)
51+
CURL_TEMP_PRINTF(1, 0);
52+
CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args)
53+
CURL_TEMP_PRINTF(2, 0);
54+
CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args)
55+
CURL_TEMP_PRINTF(2, 0);
4356
CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
44-
const char *format, va_list args);
45-
CURL_EXTERN char *curl_maprintf(const char *format, ...);
46-
CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
57+
const char *format, va_list args)
58+
CURL_TEMP_PRINTF(3, 0);
59+
CURL_EXTERN char *curl_maprintf(const char *format, ...)
60+
CURL_TEMP_PRINTF(1, 2);
61+
CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args)
62+
CURL_TEMP_PRINTF(1, 0);
63+
64+
#undef CURL_TEMP_PRINTF
4765

4866
#ifdef __cplusplus
4967
} /* end of extern "C" */

0 commit comments

Comments
 (0)
Please sign in to comment.