Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
e8674399
Commit
e8674399
authored
Nov 03, 2013
by
Damien
Browse files
Add vprintf, vsnprintf to STM code.
parent
96a0addb
Changes
1
Hide whitespace changes
Inline
Side-by-side
stm/printf.c
View file @
e8674399
...
...
@@ -232,9 +232,15 @@ void stdout_print_strn(void *data, const char *str, unsigned int len) {
static
const
pfenv_t
pfenv_stdout
=
{
0
,
stdout_print_strn
};
int
printf
(
const
char
*
fmt
,
...)
{
va_list
args
;
va_start
(
args
,
fmt
);
return
pfenv_printf
(
&
pfenv_stdout
,
fmt
,
args
);
va_list
ap
;
va_start
(
ap
,
fmt
);
int
ret
=
pfenv_printf
(
&
pfenv_stdout
,
fmt
,
ap
);
va_end
(
ap
);
return
ret
;
}
int
vprintf
(
const
char
*
fmt
,
va_list
ap
)
{
return
pfenv_printf
(
&
pfenv_stdout
,
fmt
,
ap
);
}
// need this because gcc optimises printf("%c", c) -> putchar(c), and printf("a") -> putchar('a')
...
...
@@ -267,16 +273,14 @@ void strn_print_strn(void *data, const char *str, unsigned int len) {
strn_pfenv
->
remain
-=
len
;
}
int
snprintf
(
char
*
str
,
size_t
size
,
const
char
*
fmt
,
...
)
{
int
v
snprintf
(
char
*
str
,
size_t
size
,
const
char
*
fmt
,
va_list
ap
)
{
strn_pfenv_t
strn_pfenv
;
strn_pfenv
.
cur
=
str
;
strn_pfenv
.
remain
=
size
;
pfenv_t
pfenv
;
pfenv
.
data
=
&
strn_pfenv
;
pfenv
.
print_strn
=
strn_print_strn
;
va_list
args
;
va_start
(
args
,
fmt
);
int
len
=
pfenv_printf
(
&
pfenv
,
fmt
,
args
);
int
len
=
pfenv_printf
(
&
pfenv
,
fmt
,
ap
);
// add terminating null byte
if
(
size
>
0
)
{
if
(
strn_pfenv
.
remain
==
0
)
{
...
...
@@ -287,3 +291,11 @@ int snprintf(char *str, size_t size, const char *fmt, ...) {
}
return
len
;
}
int
snprintf
(
char
*
str
,
size_t
size
,
const
char
*
fmt
,
...)
{
va_list
ap
;
va_start
(
ap
,
fmt
);
int
ret
=
vsnprintf
(
str
,
size
,
fmt
,
ap
);
va_end
(
ap
);
return
ret
;
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment