Mercurial > emacs
comparison src/process.c @ 621:eca8812e61cd
*** empty log message ***
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Fri, 24 Apr 1992 08:11:54 +0000 |
parents | 63a8e7b3c547 |
children | 2bb7f23b7ea5 |
comparison
equal
deleted
inserted
replaced
620:88a29c720fa7 | 621:eca8812e61cd |
---|---|
401 else | 401 else |
402 return Fcopy_sequence (Fsymbol_name (symbol)); | 402 return Fcopy_sequence (Fsymbol_name (symbol)); |
403 } | 403 } |
404 | 404 |
405 #ifdef HAVE_PTYS | 405 #ifdef HAVE_PTYS |
406 static pty_process; | 406 static int pty_process; |
407 | 407 |
408 /* Open an available pty, returning a file descriptor. | 408 /* Open an available pty, returning a file descriptor. |
409 Return -1 on failure. | 409 Return -1 on failure. |
410 The file name of the terminal corresponding to the pty | 410 The file name of the terminal corresponding to the pty |
411 is left in the variable pty_name. */ | 411 is left in the variable pty_name. */ |
1801 to give it higher priority than subprocesses */ | 1801 to give it higher priority than subprocesses */ |
1802 | 1802 |
1803 if (read_kbd && detect_input_pending ()) | 1803 if (read_kbd && detect_input_pending ()) |
1804 break; | 1804 break; |
1805 | 1805 |
1806 #ifdef SIGIO | |
1806 /* If we think we have keyboard input waiting, but didn't get SIGIO | 1807 /* If we think we have keyboard input waiting, but didn't get SIGIO |
1807 go read it. This can happen with X on BSD after logging out. | 1808 go read it. This can happen with X on BSD after logging out. |
1808 In that case, there really is no input and no SIGIO, | 1809 In that case, there really is no input and no SIGIO, |
1809 but select says there is input. */ | 1810 but select says there is input. */ |
1810 | 1811 |
1811 /* | 1812 /* |
1812 if (read_kbd && interrupt_input && (Available & fileno (stdin))) | 1813 if (read_kbd && interrupt_input && (Available & fileno (stdin))) |
1813 */ | 1814 */ |
1814 if (read_kbd && interrupt_input && (FD_ISSET (fileno (stdin), &Available))) | 1815 if (read_kbd && interrupt_input && (FD_ISSET (fileno (stdin), &Available))) |
1815 kill (0, SIGIO); | 1816 kill (0, SIGIO); |
1817 #endif | |
1816 | 1818 |
1817 #ifdef vipc | 1819 #ifdef vipc |
1818 /* Check for connection from other process */ | 1820 /* Check for connection from other process */ |
1819 | 1821 |
1820 if (Available & ChannelMask (comm_server)) | 1822 if (Available & ChannelMask (comm_server)) |
2104 #else | 2106 #else |
2105 if (!setjmp (send_process_frame)) | 2107 if (!setjmp (send_process_frame)) |
2106 while (len > 0) | 2108 while (len > 0) |
2107 { | 2109 { |
2108 int this = len; | 2110 int this = len; |
2111 SIGTYPE (*old_sigpipe)(); | |
2112 | |
2109 /* Don't send more than 500 bytes at a time. */ | 2113 /* Don't send more than 500 bytes at a time. */ |
2110 if (this > 500) | 2114 if (this > 500) |
2111 this = 500; | 2115 this = 500; |
2112 signal (SIGPIPE, send_process_trap); | 2116 old_sigpipe = signal (SIGPIPE, send_process_trap); |
2113 rv = write (XFASTINT (XPROCESS (proc)->outfd), buf, this); | 2117 rv = write (XFASTINT (XPROCESS (proc)->outfd), buf, this); |
2114 signal (SIGPIPE, SIG_DFL); | 2118 signal (SIGPIPE, old_sigpipe); |
2115 if (rv < 0) | 2119 if (rv < 0) |
2116 { | 2120 { |
2117 if (0 | 2121 if (0 |
2118 #ifdef EWOULDBLOCK | 2122 #ifdef EWOULDBLOCK |
2119 || errno == EWOULDBLOCK | 2123 || errno == EWOULDBLOCK |