[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] Add accurate check for console stdio + add associated primitive (#254)
akgrant43
notifications at github.com
Fri Apr 27 07:16:41 UTC 2018
Hi Vincent & Eliot,
> Ugh. I didn't realize one couldn't use the same code in both :-(. I guess we have to test to find out what the context is and use dread in one and ReadConsole in the other.
I think it is worse than that. If I use the following test code in a
cygwin terminal:
```
#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[1024];
char *bufp;
int cread;
int count = 0;
bufp = &buf[0];
do {
cread = fread(bufp, 1, 1, stdin);
count += cread;
bufp += cread;
if (count > 16) break; }
while (cread > 0);
buf[count] = 0;
if (! feof(stdin))
fprintf(stderr, "Error, not at end of file\n");
printf("--\n");
printf("%s\n", buf);
printf("--\n");
printf("Read %d characters\n", count);
exit(0);
}
```
And compile it with mingw:
```
$ i686-w64-mingw32-gcc -m32 consolestdio.c
```
It won't recognise EOF (Control-D).
```
$ ./a.exe
hello world
<Ctrl-D>
asdfasdfasdfasdfasdf
--
hello world
asdf
--
Read 17 characters
Error, not at end of file
```
If I compile it with gcc:
```
$ gcc -m32 consolestdio.c
```
It works as expected:
```
$ ./a.exe
hello world
<Ctrl-D>
--
hello world
--
Read 12 characters
```
So the best option I see for supporting both cygwin terminals and dos
boxes is to make our own dll that wraps around the cygwin1.dll functions
and to load it as required. Although I'm a bit concerned that I haven't
found any mention of doing this elsewhere (and it's a lot of work for
one specific use case).
> But I don't get it. IIRC, it used to be the case that ReadConsole/WriteConsole worked in both.
I'd still like to be proved wrong...
Thanks,
Alistair
--
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/254#issuecomment-384886716
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20180427/c00badd3/attachment.html>
More information about the Vm-dev
mailing list