diff --git a/libc/include/stdio.h b/libc/include/stdio.h index f8f6961d..4a955650 100644 --- a/libc/include/stdio.h +++ b/libc/include/stdio.h @@ -132,8 +132,6 @@ extern "C" /* Clear the error and end-of-file indicators in stream. */ void clearerr(FILE* stream); - void setbuf(FILE*, char*); - /* Write formatted output to a file. */ int fprintf(FILE* stream, const char* format, ...); @@ -191,6 +189,15 @@ extern "C" /* Change a file's buffering mode and internal buffer. */ int setvbuf(FILE* stream, char* buf, int mode, size_t size); + /* Change a file's internal buffer. */ + void setbuf(FILE* stream, char* buf); + + /* Change a file's internal buffer. */ + void setbuffer(FILE* stream, char* buf, size_t size); + + /* Change a file's buffering mode to line buffered. */ + void setlinebuf(FILE* stream); + #ifdef __cplusplus } #endif diff --git a/libc/src/stdio.cpp b/libc/src/stdio.cpp index 6e84e267..e48e2900 100644 --- a/libc/src/stdio.cpp +++ b/libc/src/stdio.cpp @@ -729,4 +729,19 @@ extern "C" return 0; } + + void setbuf(FILE* stream, char* buf) + { + setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); + } + + void setbuffer(FILE* stream, char* buf, size_t size) + { + setvbuf(stream, buf, buf ? _IOFBF : _IONBF, size); + } + + void setlinebuf(FILE* stream) + { + setvbuf(stream, NULL, _IOLBF, 0); + } }