diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2012-12-17 22:44:09 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2012-12-17 22:44:09 +0000 |
commit | 0a95d80385577a26d6bfcf431b86e7be6fae29e3 (patch) | |
tree | 9a4b52f5b72659deaeee57ca9d6b045220ebb950 /newlib/libc/stdio/puts.c | |
parent | 3c90302d41f972220f0fb404b7726f5981d12361 (diff) | |
download | cygnal-0a95d80385577a26d6bfcf431b86e7be6fae29e3.tar.gz cygnal-0a95d80385577a26d6bfcf431b86e7be6fae29e3.tar.bz2 cygnal-0a95d80385577a26d6bfcf431b86e7be6fae29e3.zip |
2012-12-17 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdio/puts.c: Add fp locking and use _stdout_r macro
to refer to the stream rather than stdout.
Diffstat (limited to 'newlib/libc/stdio/puts.c')
-rw-r--r-- | newlib/libc/stdio/puts.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/newlib/libc/stdio/puts.c b/newlib/libc/stdio/puts.c index 66291cd13..0c6740a14 100644 --- a/newlib/libc/stdio/puts.c +++ b/newlib/libc/stdio/puts.c @@ -78,6 +78,7 @@ _DEFUN(_puts_r, (ptr, s), struct _reent *ptr _AND _CONST char * s) { + int result; size_t c = strlen (s); struct __suio uio; struct __siov iov[2]; @@ -89,9 +90,14 @@ _DEFUN(_puts_r, (ptr, s), uio.uio_resid = c + 1; uio.uio_iov = &iov[0]; uio.uio_iovcnt = 2; + _REENT_SMALL_CHECK_INIT (ptr); - ORIENT (stdout, -1); - return (__sfvwrite_r (ptr, _stdout_r (ptr), &uio) ? EOF : '\n'); + + _newlib_flockfile_start (_stdout_r (ptr)); + ORIENT (_stdout_r (ptr), -1); + result = (__sfvwrite_r (ptr, _stdout_r (ptr), &uio) ? EOF : '\n'); + _newlib_flockfile_start (_stdout_r (ptr)); + return result; } #ifndef _REENT_ONLY |