I making a port (not much really) of Irit (http://www.cs.technion.ac.il/~irit/) a modelling environment.
I am having some problems with terminal handling, so all termios guru out there, please help ! :-) At stratup, irit does the following Termio.c_cc[VEOF] = 0; /* MIN = 0, no minimal length to wait for. */ Termio.c_cc[VEOL] = 1; /* TIME - 1 tenth of a second as time o which seems wrong, I think it should be Termio.c_cc[VMIN] = 0; /* MIN = 0, no minimal length to wait for. */ Termio.c_cc[VTIME] = 1; /* TIME - 1 tenth of a second as time o then later: Termio.c_lflag &= ~ICANON; basically, irit wants to manage line editing itself, to manage the irit command prompt. There is some code doing the ^A, ^H, etc handling and line printing, and reading periodically stdin. What I see happening, is that usually at the very beginning, input seems locked. Running in the debugger, I see that characters are fgetc'ed periodically, but fgetc always returns -1 even when there should be characters available. I then tried using fcntl(0, F_SETFL, O_NONBLOCK) instead of the above 2 lines. which I thought would do the right thing, ie: non blocking IO, but anything available from stdin is buffered and provided on the next read. This works, however I am seeing something strange on stdout now: when outputting lots of lines, outputs stalls after a few dozen lines. Adding a usleep between each fwrite() solves the problem but slows it all down... (and is inherently wrong) What is going on here ? I do not understand very well all the terminal/IO discipline here. I agree that this is all bad design, and should probably multithread or use select() but I am not Irit's author... bruno To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message