]> Savannah Git Hosting - gnulib/maint-tools.git/commitdiff
test-programs: New directory.
authorBruno Haible <bruno@clisp.org>
Thu, 9 May 2024 02:14:26 +0000 (04:14 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 9 May 2024 02:15:22 +0000 (04:15 +0200)
test-programs/README [new file with mode: 0644]
test-programs/stdioext-flags.c [new file with mode: 0644]

diff --git a/test-programs/README b/test-programs/README
new file mode 100644 (file)
index 0000000..618d81b
--- /dev/null
@@ -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 (file)
index 0000000..20b2951
--- /dev/null
@@ -0,0 +1,40 @@
+/* Source: https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html  */
+
+#include <stdio.h>
+
+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;
+}