Xref: utzoo news.admin:12957 news.misc:6340 comp.unix.questions:29865 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!sdd.hp.com!spool.mu.edu!uunet!nysnet!jjong From: jjong@nysnet.nys.GOV (Jaeson Jong) Newsgroups: news.admin,news.misc,comp.unix.questions Subject: trn problem Keywords: trn,read,starLAN Message-ID: <534@nysnet.nys.GOV> Date: 28 Mar 91 14:05:55 GMT Article-I.D.: nysnet.534 Followup-To: news.admin Organization: New York State Government, Albany, New York Lines: 74 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