From d639eb3599490c3f5f8af27dca04398fa8ce4d9d Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 9 May 2024 04:14:26 +0200 Subject: [PATCH] test-programs: New directory. --- test-programs/README | 2 ++ test-programs/stdioext-flags.c | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 test-programs/README create mode 100644 test-programs/stdioext-flags.c diff --git a/test-programs/README b/test-programs/README new file mode 100644 index 00000000..618d81b9 --- /dev/null +++ b/test-programs/README @@ -0,0 +1,2 @@ +The test programs in this directory extract information about the internals +of a system. Needed especially for closed-source systems. diff --git a/test-programs/stdioext-flags.c b/test-programs/stdioext-flags.c new file mode 100644 index 00000000..20b2951a --- /dev/null +++ b/test-programs/stdioext-flags.c @@ -0,0 +1,40 @@ +/* Source: https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html */ + +#include + +int main() +{ + FILE *fp; + int flags1, flags2, flags3, flags4, flags5, flags6, flags7; + int i; + char buf[80]; + + fp = fopen ("test1234", "w"); + flags1 = fp->_flag; + fwrite ("foo", 1, 3, fp); + flags2 = fp->_flag; + for (i = 0; i < 10000; i++) + fwrite ("x", 1, 1, fp); + fclose (fp); + fp = fopen ("test1234", "r"); + flags3 = fp->_flag; + fgetc (fp); + flags4 = fp->_flag; + close (fp->_file); + for (i = 0; i < 10000; i++) + fread (buf, 1, 1, fp); + flags5 = fp->_flag; + fclose (fp); + fp = fopen ("test1234", "r+w"); + flags6 = fp->_flag; + fgetc (fp); + flags7 = fp->_flag; + + printf ("#define _IOERR 0x%X\n", flags5 & ~flags4); + printf ("#define _IOREAD 0x%X\n", flags3); + printf ("#define _IOWRT 0x%X\n", flags1); + printf ("#define _IORW 0x%X\n", flags6); + printf ("#define _IORW 0x%X\n", flags7 & ~flags4); + + return 0; +} -- 2.39.5