summaryrefslogtreecommitdiff
path: root/sim/ucsim/ftest.cc
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /sim/ucsim/ftest.cc
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'sim/ucsim/ftest.cc')
-rw-r--r--sim/ucsim/ftest.cc101
1 files changed, 101 insertions, 0 deletions
diff --git a/sim/ucsim/ftest.cc b/sim/ucsim/ftest.cc
new file mode 100644
index 0000000..eda8f34
--- /dev/null
+++ b/sim/ucsim/ftest.cc
@@ -0,0 +1,101 @@
+#include <stdio.h>
+#include <unistd.h>
+
+#include "fiocl.h"
+#include "utils.h"
+#include "charscl.h"
+
+
+void
+regular_ftest(char *fn)
+{
+ int i;
+ class cl_f *f;
+
+ printf("Testing regular file access: %s\n", fn);
+ printf("Write test\n");
+ f= mk_io(fn, cchars("w"));
+ f->init();
+ f->write_str("proba\n");
+
+ printf("Read test\n");
+ f->open(fn, cchars("r"));
+ while (f->input_avail())
+ {
+ char buf[100];
+ i= f->read(buf, 99);
+ printf("read=%d\n", i);
+ if (i)
+ buf[i]= 0;
+ else
+ break;
+ printf("data:%s\n", buf);
+ }
+ f->close();
+
+ delete f;
+}
+
+void
+stdin_ftest()
+{
+ class cl_f *f= mk_io(NULL, chars(""));
+ char buf[100];
+ int i, p= 0, done= 0;
+
+ printf("STDIN test\n");
+ f->use_opened(0, (char*)"r");
+ printf("istty= %d\n", f->tty);
+ i= f->read(buf, 99);
+ buf[i]= '\0';
+ printf("Got: %s\n", buf);
+ while (done<10)
+ {
+ p= 0;
+ while (f->input_avail())
+ {
+ char c;
+ i= f->read(&c, 1);
+ printf("read=%d\n", i);
+ if ((c == '\n') ||
+ (c == '\r'))
+ break;
+ if (i == 0)
+ break;
+ if (p<99)
+ buf[p++]= c;
+ }
+ buf[p]= '\0';
+ printf("data:%s\n", buf);
+ //done= strcmp(buf, "exit") == 0;
+ done++;
+ }
+ delete f;
+}
+
+int
+main(int argc, char *argv[])
+{
+ char *fn;
+
+ if (argc > 1)
+ fn= argv[1];
+ else
+ fn= (char*)"ftest.txt";
+ regular_ftest(fn);
+ stdin_ftest();
+
+ double last= dnow();
+ int cnt= 0;
+ while (1)
+ {
+ if (dnow() - last > 0.5)
+ {
+ last= dnow();
+ printf("HUKK\n");
+ if (++cnt > 5)
+ return 0;
+ }
+ }
+ return 0;
+}