Add __fseterr.
Trivial, obvious counterpart to the standard ferror(3) and clearerr(3),
and lets us build bison out of the box.
Bug: http://b/64273806
Test: ran tests
Change-Id: I20affabddb71210051165c41e86adfe5ae04f77f
diff --git a/libc/include/stdio_ext.h b/libc/include/stdio_ext.h
index 2f0f438..b8aa68d 100644
--- a/libc/include/stdio_ext.h
+++ b/libc/include/stdio_ext.h
@@ -45,6 +45,8 @@
size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
void _flushlbf(void) __INTRODUCED_IN(23);
+void __fseterr(FILE* __fp) __INTRODUCED_IN(28);
+
#define FSETLOCKING_QUERY 0
#define FSETLOCKING_INTERNAL 1
#define FSETLOCKING_BYCALLER 2
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
index 4586fdac..dc0eb93 100644
--- a/libc/libc.arm.map
+++ b/libc/libc.arm.map
@@ -1322,6 +1322,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/libc.arm64.map b/libc/libc.arm64.map
index 75436ff..fdae8f1 100644
--- a/libc/libc.arm64.map
+++ b/libc/libc.arm64.map
@@ -1242,6 +1242,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index a8a52c3..07241d5 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1347,6 +1347,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
index 584807e..bbd599a 100644
--- a/libc/libc.mips.map
+++ b/libc/libc.mips.map
@@ -1306,6 +1306,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/libc.mips64.map b/libc/libc.mips64.map
index 75436ff..fdae8f1 100644
--- a/libc/libc.mips64.map
+++ b/libc/libc.mips64.map
@@ -1242,6 +1242,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
index 4498d6d..6e9acc0 100644
--- a/libc/libc.x86.map
+++ b/libc/libc.x86.map
@@ -1304,6 +1304,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/libc.x86_64.map b/libc/libc.x86_64.map
index 75436ff..fdae8f1 100644
--- a/libc/libc.x86_64.map
+++ b/libc/libc.x86_64.map
@@ -1242,6 +1242,7 @@
global:
__freading;
__free_hook;
+ __fseterr;
__fwriting;
__malloc_hook;
__memalign_hook;
diff --git a/libc/stdio/stdio_ext.cpp b/libc/stdio/stdio_ext.cpp
index 8cf4f4b..e17b62a 100644
--- a/libc/stdio/stdio_ext.cpp
+++ b/libc/stdio/stdio_ext.cpp
@@ -72,6 +72,10 @@
fflush(NULL);
}
+void __fseterr(FILE* fp) {
+ fp->_flags |= __SERR;
+}
+
int __fsetlocking(FILE* fp, int type) {
int old_state = _EXT(fp)->_caller_handles_locking ? FSETLOCKING_BYCALLER : FSETLOCKING_INTERNAL;
if (type == FSETLOCKING_QUERY) {