ReactOS
0.4.17-dev-573-g8315b8c
c99_printf_hacks.c
Go to the documentation of this file.
1
/*
2
* PROJECT: ReactOS SDK
3
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4
* PURPOSE: C99 printf-family shims for llvm-mingw runtime libraries
5
* COPYRIGHT: Copyright 2026 Ahmed Arif <arif.ing@outlook.com>
6
*/
7
8
#include <stdio.h>
9
#include <stdarg.h>
10
11
/* llvm-mingw's libc++ needs the C99 vsnprintf/snprintf contract, which msvcrt's _vsnprintf (aliased onto
12
* these names by the crt headers) does not follow: undo the mapping and bridge over _vsnprintf/_vscprintf */
13
#undef vsnprintf
14
#undef snprintf
15
16
int
vsnprintf
(
char
*
buffer
,
size_t
count
,
const
char
*
format
,
va_list
argptr)
17
{
18
va_list
ap
;
19
int
result
;
20
21
va_copy
(
ap
, argptr);
22
result
=
_vsnprintf
(
buffer
,
count
,
format
,
ap
);
23
va_end
(
ap
);
24
25
if
(
result
>= 0 && (
size_t
)
result
<
count
)
26
return
result
;
27
28
/* Truncated: terminate and return the would-be length */
29
if
(
count
!= 0)
30
buffer
[
count
- 1] =
'\0'
;
31
32
va_copy
(
ap
, argptr);
33
result
=
_vscprintf
(
format
,
ap
);
34
va_end
(
ap
);
35
36
return
result
;
37
}
38
39
int
snprintf
(
char
*
buffer
,
size_t
count
,
const
char
*
format
, ...)
40
{
41
va_list
argptr;
42
int
result
;
43
44
va_start
(argptr,
format
);
45
result
=
vsnprintf
(
buffer
,
count
,
format
, argptr);
46
va_end
(argptr);
47
48
return
result
;
49
}
vsnprintf
#define vsnprintf
Definition:
acwin.h:108
va_copy
#define va_copy(d, s)
Definition:
stdarg.h:29
va_end
#define va_end(v)
Definition:
stdarg.h:28
va_start
#define va_start(v, l)
Definition:
stdarg.h:26
va_list
char * va_list
Definition:
vadefs.h:50
count
GLuint GLuint GLsizei count
Definition:
gl.h:1545
buffer
GLuint buffer
Definition:
glext.h:5915
result
GLuint64EXT * result
Definition:
glext.h:11304
_vscprintf
#define _vscprintf
Definition:
_vscprintf.c:25
_vsnprintf
#define _vsnprintf
Definition:
_vsnprintf.c:28
format
Definition:
format.c:58
ap
void int int ULONGLONG int va_list * ap
Definition:
winesup.h:36
snprintf
#define snprintf
Definition:
wintirpc.h:48
sdk
lib
llvm-compat
c99_printf_hacks.c
Generated on Sat Aug 1 2026 06:20:40 for ReactOS by
1.9.6