From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from tweety.bhp.com.au ([192.83.224.130]) by hawkwind.utcs.utoronto.ca with SMTP id <24646>; Tue, 30 Sep 1997 15:33:21 -0400 Received: from gossamer.itmel.bhp.com.au (gossamer.itmel.bhp.com.au [134.18.115.254]) by tweety.bhp.com.au (8.8.4/8.8.4) with ESMTP id PAA20415 for ; Tue, 30 Sep 1997 15:22:28 +1000 (EST) Received: from nc.itntl.bhp.com.au (nc.itntl.bhp.com.au [134.18.16.178]) by gossamer.itmel.bhp.com.au (8.8.6/8.8.6) with ESMTP id PAA23315 for ; Tue, 30 Sep 1997 15:21:56 +1000 (EST) Received: from nc.itntl.bhp.com.au (localhost [127.0.0.1]) by nc.itntl.bhp.com.au (8.8.6/8.8.6) with ESMTP id PAA23897; Tue, 30 Sep 1997 15:21:44 +1000 (EST) Message-Id: <199709300521.PAA23897@nc.itntl.bhp.com.au> To: rc@hawkwind.utcs.toronto.edu Subject: rc-1.5b2 and SIGQUIT cc: j@nc.itntl.bhp.com.au Date: Tue, 30 Sep 1997 01:21:43 -0400 From: Jason Tyler On many platforms (at least Solaris, Linux, and OSF3.2), rc-1.5b2 dies if it receives a SIGQUIT whilst inside rc_read(). Adding the following code (which was removed sometime between 1.4 and 1.5b2) back into fdgchar() fixes this: *** input.c.old Tue Sep 30 14:27:28 1997 --- input.c Tue Sep 30 15:07:15 1997 *************** *** 140,145 **** --- 140,147 ---- long /*ssize_t*/ r = rc_read(istack->fd, inbuf + 2, BUFSIZE); sigchk(); if (r < 0) { + if (errno == EINTR) + continue; uerror("read"); rc_exit(1); } However, this may be bad; was the EINTR check taken out for a good reason? If so, how else can I fix the problem? j