repo.or.cz
/
mono.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
* mini-s390.c (add_general): Adjust offset calculation to take into account of roundi...
[mono.git]
/
eglib
/
src
/
vasprintf.c
blob
142c9908fcd423b3ab5f3a8bc07b137b5cc9df10
1
#include <stdarg.h>
2
#include <stdio.h>
3
#include <stdlib.h>
4
5
int
vasprintf
(
char
**
ret
,
const char
*
fmt
,
va_list
ap
)
6
{
7
char
*
buf
;
8
int
len
;
9
size_t
buflen
;
10
va_list
ap2
;
11
12
#ifdef _MSC_VER
13
ap2
=
ap
;
14
#else
15
va_copy
(
ap2
,
ap
);
16
#endif
17
18
len
=
vsnprintf
(
NULL
,
0
,
fmt
,
ap2
);
19
20
if
(
len
>
0
&& (
buf
=
malloc
((
buflen
= (
size_t
) (
len
+
1
)))) !=
NULL
) {
21
len
=
vsnprintf
(
buf
,
buflen
,
fmt
,
ap
);
22
*
ret
=
buf
;
23
}
else
{
24
*
ret
=
NULL
;
25
len
= -
1
;
26
}
27
28
va_end
(
ap2
);
29
return
len
;
30
}