sdcc-gas/sim/ucsim/ftest.cc

102 lines
1.5 KiB
C++

#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;
}