jjong@nysnet.nys.GOV (Jaeson Jong) (03/28/91)
We recently installed trn on our machine and experienced some
trouble runing it on some type of devices. We really appreciate
any help to determine the cause. Here's our story:
We installed trn on our AT&T 3B2 1000 runing system V release 3.2.
It works perfectly on tty terminal or xterm. However, when it is
executed from a window over the local area network, it hangs at the first
prompt ( xxx unread article(s) in xxxxxxx--read now? [+ynq] )
We use AT&T 730 MTG terminals over an AT&T starLAN IEEE 802.3 (Ethernet)
implementation. The OSI network protocol is implemented.
After spending some time on source codes, I found the followings;
* The the "read()" system call in the "circfill()" function, defined in
"term.c", returns -1 when it is executed on a starLAN window.
* Which makes "nextin" and the return value of "circfill()" -1.
* Which also makes macro function "input_pending()" true.
#define input_pending() ( nextin!=nextout || circfill() )
* Which makes the while loop in "eat_typeahead()" keep calling
"read_tty()" infinitely.
while ( input_pending() )
read_tty ( buf, sizeof (buf) );
* Since "nextin" is -1, "nextin" and "nextout" never get a chance
to be equal.
I temporary solved this problem by modifying
* int
circfill()
{
register int Howmany = read ( devtty, circlebuf+nextin, 1 );
if ( Howmany ) {
.
.
:
int
circfill()
{
register int Howmany = read ( devtty, circlebuf+nextin, 1 );
if ( Howmany > 0 ) {
.
.
* #define input_pending() ( nextin!=nextout || circfill() )
to;
#define input_pending() ( nextin!=nextout || circfill() > 0 )
My question is;
Has anybody out there had the same experience?
Does anybody know why the read() system call returns -1 over /dev/slan
(the local area network terminal driver) while returning 0 on other tty's.
Jaeson Jong jjong@nysnet.uunet.uu.net
New York State uunet!nysnet!jjong
Office of General Services
Strategic Systems Laboratory