about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/stdio.h2
-rw-r--r--src/stdio/setbuf.c2
-rw-r--r--src/stdio/setbuffer.c7
-rw-r--r--src/stdio/setlinebuf.c7
4 files changed, 17 insertions, 1 deletions
diff --git a/include/stdio.h b/include/stdio.h
index 186fdf2c..69178cc8 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -156,6 +156,8 @@ char *cuserid(char *);
 #define off64_t off_t
 int asprintf(char **, const char *, ...);
 int vasprintf(char **, const char *, va_list);
+void setlinebuf(FILE *);
+void setbuffer(FILE *, char *, size_t);
 #endif
 
 #ifdef __cplusplus
diff --git a/src/stdio/setbuf.c b/src/stdio/setbuf.c
index 205afcfe..1b98d503 100644
--- a/src/stdio/setbuf.c
+++ b/src/stdio/setbuf.c
@@ -1,4 +1,4 @@
-#include "stdio_impl.h"
+#include <stdio.h>
 
 void setbuf(FILE *f, char *buf)
 {
diff --git a/src/stdio/setbuffer.c b/src/stdio/setbuffer.c
new file mode 100644
index 00000000..71233d2e
--- /dev/null
+++ b/src/stdio/setbuffer.c
@@ -0,0 +1,7 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+
+void setbuffer(FILE *f, char *buf, size_t size)
+{
+	setvbuf(f, buf, buf ? _IOFBF : _IONBF, size);
+}
diff --git a/src/stdio/setlinebuf.c b/src/stdio/setlinebuf.c
new file mode 100644
index 00000000..b93c4d6a
--- /dev/null
+++ b/src/stdio/setlinebuf.c
@@ -0,0 +1,7 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+
+void setlinebuf(FILE *f)
+{
+	setvbuf(f, 0, _IOLBF, 0);
+}