Module: xenomai-head Branch: master Commit: c30280ba95a4cb41b091d6b8272663fcc2c4dd43 URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=c30280ba95a4cb41b091d6b8272663fcc2c4dd43
Author: Jan Kiszka <jan.kis...@siemens.com> Date: Thu Jul 21 12:44:47 2011 +0200 posix: Wrap puts The compiler uses puts for printing format-free strings. Wrap this service to avoid user surprises. Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- include/posix/stdio.h | 2 ++ src/skins/posix/posix.wrappers | 1 + src/skins/posix/printf.c | 11 +++++++++++ src/skins/posix/wrappers.c | 6 ++++++ 4 files changed, 20 insertions(+), 0 deletions(-) diff --git a/include/posix/stdio.h b/include/posix/stdio.h index 775742b..e4ad01c 100644 --- a/include/posix/stdio.h +++ b/include/posix/stdio.h @@ -19,6 +19,8 @@ int __real_fprintf(FILE *stream, const char *fmt, ...); int __real_printf(const char *fmt, ...); +int __real_puts(const char *s); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/src/skins/posix/posix.wrappers b/src/skins/posix/posix.wrappers index 636e6d8..2aa3d33 100644 --- a/src/skins/posix/posix.wrappers +++ b/src/skins/posix/posix.wrappers @@ -93,6 +93,7 @@ --wrap vprintf --wrap fprintf --wrap printf +--wrap puts --wrap syslog --wrap vsyslog --wrap malloc diff --git a/src/skins/posix/printf.c b/src/skins/posix/printf.c index 5343808..d838b8a 100644 --- a/src/skins/posix/printf.c +++ b/src/skins/posix/printf.c @@ -44,6 +44,17 @@ int __wrap_printf(const char *fmt, ...) return rc; } +int __wrap_puts(const char *s) +{ + if (unlikely(xeno_get_current() != XN_NO_HANDLE && + !(xeno_get_current_mode() & XNRELAX))) + return rt_puts(s); + else { + rt_print_flush_buffers(); + return puts(s); + } +} + void __wrap_vsyslog(int priority, const char *fmt, va_list ap) { if (unlikely(xeno_get_current() != XN_NO_HANDLE && diff --git a/src/skins/posix/wrappers.c b/src/skins/posix/wrappers.c index dedf238..8b7a872 100644 --- a/src/skins/posix/wrappers.c +++ b/src/skins/posix/wrappers.c @@ -352,6 +352,12 @@ int __real_printf(const char *fmt, ...) } __attribute__ ((weak)) +int __real_puts(const char *s) +{ + return puts(s); +} + +__attribute__ ((weak)) void __real_syslog(int priority, const char *fmt, ...) { va_list args; _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git