Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2000-05-17 21:21:36 +0400
committerDJ Delorie <dj@redhat.com>2000-05-17 21:21:36 +0400
commitd3d8c2db17912229eb96349f3cadd442f27f6362 (patch)
tree4dff135610eaf3924f416cfe7fad3f6444e387c5 /winsup/testsuite/winsup.api/iospeed.c
parent6201d15e3c588fe8b8db8381c329d09745dba908 (diff)
* testsuite/winsup.api/crlf.c: New
* testsuite/winsup.api/iospeed.c: New
Diffstat (limited to 'winsup/testsuite/winsup.api/iospeed.c')
-rw-r--r--winsup/testsuite/winsup.api/iospeed.c115
1 files changed, 115 insertions, 0 deletions
diff --git a/winsup/testsuite/winsup.api/iospeed.c b/winsup/testsuite/winsup.api/iospeed.c
new file mode 100644
index 000000000..d286f90bd
--- /dev/null
+++ b/winsup/testsuite/winsup.api/iospeed.c
@@ -0,0 +1,115 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <windows.h>
+
+int verbose = 0;
+
+void
+v(char *fmt, ...)
+{
+ va_list ap;
+ if (!verbose) return;
+ va_start(ap, fmt);
+ vfprintf(stdout, fmt, ap);
+ va_end(ap);
+}
+
+#define TSIZE (1024 * 1024 * 16)
+
+unsigned long start_tic;
+
+void
+start(FILE *f)
+{
+ fseek(f, 0, SEEK_SET);
+ start_tic = GetTickCount();
+}
+
+void
+end()
+{
+ unsigned long end_tic = GetTickCount();
+ printf("%6d", end_tic - start_tic);
+}
+
+void
+test(int linesz, int cr)
+{
+ FILE *f = fopen("iospeed.dat", "wb");
+ char buf[65536];
+ int i, fd;
+
+ memset(buf, 'x', linesz);
+ buf[linesz-1] = '\n';
+ if (cr)
+ buf[linesz-2] = '\r';
+ for (i=0; i<TSIZE; i += linesz)
+ fwrite(buf, 1, linesz, f);
+ fclose(f);
+
+ f = fopen("iospeed.dat", "rt");
+ fd = fileno(f);
+
+ printf("%6d%6d", linesz, cr);
+ for (i=0; i<TSIZE; i+= 65536)
+ read(fd, buf, 65536);
+
+ start(f);
+ while (getc(f) != EOF);
+ end();
+
+ start(f);
+ while (fread(buf, 1, 256, f) > 0);
+ end();
+
+ start(f);
+ while (fgets(buf, 64436, f));
+ end();
+
+ f = fopen("iospeed.dat", "rb");
+ fd = fileno(f);
+
+ for (i=0; i<TSIZE; i+= 65536)
+ read(fd, buf, 65536);
+
+ start(f);
+ while (getc(f) != EOF);
+ end();
+
+ start(f);
+ while (fread(buf, 1, 256, f) > 0);
+ end();
+
+ start(f);
+ while (fgets(buf, 64436, f));
+ end();
+
+ printf("\n");
+}
+
+int
+main(int argc, char **argv)
+{
+ if (argc > 1 && strcmp(argv[1],"-v") == 0)
+ verbose = 1;
+
+ setbuf(stdout, 0);
+
+ printf(" ----- text ----- ---- binary ----\n");
+ printf("linesz cr getc fread fgets getc fread fgets\n");
+
+ test(4, 0);
+ test(64, 0);
+ test(4096, 0);
+ test(4, 1);
+ test(64, 1);
+ test(4096, 1);
+
+ remove ("iospeed.dat");
+
+ return 0;
+}