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