comparison src/event-unixoid.c @ 5027:22179cd0fe15

merge
author Ben Wing <ben@xemacs.org>
date Wed, 10 Feb 2010 07:25:19 -0600
parents 2ade80e8c640
children 308d34e9f07d
comparison
equal deleted inserted replaced
5026:46cf825f6158 5027:22179cd0fe15
98 98
99 if (CONSOLE_TTY_P (con)) 99 if (CONSOLE_TTY_P (con))
100 ch = Lstream_get_ichar (XLSTREAM (CONSOLE_TTY_DATA (con)->instream)); 100 ch = Lstream_get_ichar (XLSTREAM (CONSOLE_TTY_DATA (con)->instream));
101 else 101 else
102 { 102 {
103 Ibyte byte; 103 Ibyte ibyte;
104 /* #### Definitely something strange here. We should be setting 104 /* #### Definitely something strange here. We should be setting
105 the stdio handle unbuffered and reading from it instead of mixing 105 the stdio handle unbuffered and reading from it instead of mixing
106 stdio and raw io calls. */ 106 stdio and raw io calls. */
107 int nread = retry_read (fileno (CONSOLE_STREAM_DATA (con)->in), 107 int nread = retry_read (fileno (CONSOLE_STREAM_DATA (con)->in),
108 &byte, 1); 108 &ibyte, 1);
109 if (nread <= 0) 109 if (nread <= 0)
110 ch = -1; 110 ch = -1;
111 else 111 else
112 ch = byte; 112 ch = ibyte;
113 } 113 }
114 114
115 if (ch < 0) 115 if (ch < 0)
116 { 116 {
117 /* deleting the console might not be safe right now ... */ 117 /* deleting the console might not be safe right now ... */
130 } 130 }
131 131
132 void 132 void
133 signal_fake_event (void) 133 signal_fake_event (void)
134 { 134 {
135 char byte = 0; 135 Rawbyte rbyte = 0;
136 /* We do the write always. Formerly I tried to "optimize" this 136 /* We do the write always. Formerly I tried to "optimize" this
137 by setting a flag indicating whether we're blocking and only 137 by setting a flag indicating whether we're blocking and only
138 doing the write in that case, but there is a race condition 138 doing the write in that case, but there is a race condition
139 if the signal occurs after we've checked for the signal 139 if the signal occurs after we've checked for the signal
140 occurrence (which could occur in many places throughout 140 occurrence (which could occur in many places throughout
146 146
147 if (signal_event_pipe_initialized) 147 if (signal_event_pipe_initialized)
148 /* In case a signal comes through while we're dumping */ 148 /* In case a signal comes through while we're dumping */
149 { 149 {
150 int old_errno = errno; 150 int old_errno = errno;
151 retry_write (signal_event_pipe[1], &byte, 1); 151 retry_write (signal_event_pipe[1], &rbyte, 1);
152 errno = old_errno; 152 errno = old_errno;
153 } 153 }
154 } 154 }
155 155
156 void 156 void
157 drain_signal_event_pipe (void) 157 drain_signal_event_pipe (void)
158 { 158 {
159 char chars[128]; 159 Rawbyte chars[128];
160 /* The input end of the pipe has been set to non-blocking. */ 160 /* The input end of the pipe has been set to non-blocking. */
161 while (retry_read (signal_event_pipe[0], chars, sizeof (chars)) > 0) 161 while (retry_read (signal_event_pipe[0], chars, sizeof (chars)) > 0)
162 ; 162 ;
163 } 163 }
164 164