summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim J. Robbins <tjr@FreeBSD.org>2004-03-17 01:43:08 +0000
committerTim J. Robbins <tjr@FreeBSD.org>2004-03-17 01:43:08 +0000
commit567d74a5eced82896bce42c1181f3335f45cbcac (patch)
treea146c0d7f2efde65782926d4c69016d3b4715398
parent25f740b790ffe968dd8eb2c8169035bcad5fa85e (diff)
Notes
-rw-r--r--include/stdio.h16
-rw-r--r--lib/libc/stdio/feof.c8
-rw-r--r--lib/libc/stdio/ferror.c8
-rw-r--r--lib/libc/stdio/fileno.c8
-rw-r--r--lib/libc/stdio/getc.c2
-rw-r--r--lib/libc/stdio/putc.c10
-rw-r--r--lib/libc/stdio/putchar.c10
7 files changed, 28 insertions, 34 deletions
diff --git a/include/stdio.h b/include/stdio.h
index 58f49958be25..90428b917024 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -416,6 +416,22 @@ static __inline int __sputc(int _c, FILE *_p) {
#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
#define __sfileno(p) ((p)->_file)
+extern int __isthreaded;
+
+#define feof(p) (!__isthreaded ? __sfeof(p) : feof(p))
+#define ferror(p) (!__isthreaded ? __sferror(p) : ferror(p))
+#define clearerr(p) (!__isthreaded ? __sclearerr(p) : clearerr(p))
+
+#if __POSIX_VISIBLE
+#define fileno(p) (!__isthreaded ? __sfileno(p) : fileno(p))
+#endif
+
+#define getc(fp) (!__isthreaded ? __sgetc(fp) : getc(fp))
+#define putc(x, fp) (!__isthreaded ? __sputc(x, fp) : putc(x, fp))
+
+#define getchar() getc(stdin)
+#define putchar(x) putc(x, stdout)
+
#if __BSD_VISIBLE
/*
* See ISO/IEC 9945-1 ANSI/IEEE Std 1003.1 Second Edition 1996-07-12
diff --git a/lib/libc/stdio/feof.c b/lib/libc/stdio/feof.c
index 6ad14aa9bcea..0bb12bead991 100644
--- a/lib/libc/stdio/feof.c
+++ b/lib/libc/stdio/feof.c
@@ -45,12 +45,8 @@ __FBSDID("$FreeBSD$");
#include "un-namespace.h"
#include "libc_private.h"
-/*
- * feof has traditionally been a macro in <stdio.h>. That is no
- * longer true because it needs to be thread-safe.
- *
- * #undef feof
- */
+#undef feof
+
int
feof(FILE *fp)
{
diff --git a/lib/libc/stdio/ferror.c b/lib/libc/stdio/ferror.c
index c0fdecd03e7a..5d4c187dd1df 100644
--- a/lib/libc/stdio/ferror.c
+++ b/lib/libc/stdio/ferror.c
@@ -45,12 +45,8 @@ __FBSDID("$FreeBSD$");
#include "un-namespace.h"
#include "libc_private.h"
-/*
- * ferror has traditionally been a macro in <stdio.h>. That is no
- * longer true because it needs to be thread-safe.
- *
- * #undef ferror
- */
+#undef ferror
+
int
ferror(FILE *fp)
{
diff --git a/lib/libc/stdio/fileno.c b/lib/libc/stdio/fileno.c
index d7bf93deeaa9..51c0464ecb6c 100644
--- a/lib/libc/stdio/fileno.c
+++ b/lib/libc/stdio/fileno.c
@@ -45,12 +45,8 @@ __FBSDID("$FreeBSD$");
#include "un-namespace.h"
#include "libc_private.h"
-/*
- * fileno has traditionally been a macro in <stdio.h>. That is
- * no longer true because it needs to be thread-safe.
- *
- * #undef fileno
- */
+#undef fileno
+
int
fileno(FILE *fp)
{
diff --git a/lib/libc/stdio/getc.c b/lib/libc/stdio/getc.c
index 8fb30576f658..573256886280 100644
--- a/lib/libc/stdio/getc.c
+++ b/lib/libc/stdio/getc.c
@@ -46,6 +46,8 @@ __FBSDID("$FreeBSD$");
#include "libc_private.h"
#include "local.h"
+#undef getc
+
int
getc(FILE *fp)
{
diff --git a/lib/libc/stdio/putc.c b/lib/libc/stdio/putc.c
index 95a9cac5b5d2..b42f878bbdea 100644
--- a/lib/libc/stdio/putc.c
+++ b/lib/libc/stdio/putc.c
@@ -46,14 +46,8 @@ __FBSDID("$FreeBSD$");
#include "local.h"
#include "libc_private.h"
-/*
- * putc has traditionally been a macro in <stdio.h>. That is no
- * longer true because POSIX requires it to be thread-safe. POSIX
- * does define putc_unlocked() which is defined as a macro and is
- * probably what you want to use instead.
- *
- * #undef putc
- */
+#undef putc
+
int
putc(c, fp)
int c;
diff --git a/lib/libc/stdio/putchar.c b/lib/libc/stdio/putchar.c
index 5a775ece1c58..fe97d01c54cf 100644
--- a/lib/libc/stdio/putchar.c
+++ b/lib/libc/stdio/putchar.c
@@ -46,14 +46,8 @@ __FBSDID("$FreeBSD$");
#include "local.h"
#include "libc_private.h"
-/*
- * putchar has traditionally been a macro in <stdio.h>. That is no
- * longer true because POSIX requires it to be thread-safe. POSIX
- * does define putchar_unlocked() which is defined as a macro and is
- * probably what you want to use instead.
- *
- * #undef putchar
- */
+#undef putchar
+
/*
* A subroutine version of the macro putchar
*/